You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.2 KiB
146 lines
4.2 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
// $NoKeywords: $
|
||
|
//===========================================================================//
|
||
|
#if !defined( IVIEWRENDER_H )
|
||
|
#define IVIEWRENDER_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#include "ivrenderview.h"
|
||
|
|
||
|
|
||
|
// These are set as it draws reflections, refractions, etc, so certain effects can avoid
|
||
|
// drawing themselves in reflections.
|
||
|
enum DrawFlags_t
|
||
|
{
|
||
|
DF_RENDER_REFRACTION = 0x1,
|
||
|
DF_RENDER_REFLECTION = 0x2,
|
||
|
|
||
|
DF_CLIP_Z = 0x4,
|
||
|
DF_CLIP_BELOW = 0x8,
|
||
|
|
||
|
DF_RENDER_UNDERWATER = 0x10,
|
||
|
DF_RENDER_ABOVEWATER = 0x20,
|
||
|
DF_RENDER_WATER = 0x40,
|
||
|
|
||
|
DF_SSAO_DEPTH_PASS = 0x100,
|
||
|
DF_WATERHEIGHT = 0x200,
|
||
|
DF_DRAW_SSAO = 0x400,
|
||
|
DF_DRAWSKYBOX = 0x800,
|
||
|
|
||
|
DF_FUDGE_UP = 0x1000,
|
||
|
|
||
|
DF_DRAW_ENTITITES = 0x2000,
|
||
|
DF_UNUSED3 = 0x4000,
|
||
|
|
||
|
DF_UNUSED4 = 0x8000,
|
||
|
|
||
|
DF_UNUSED5 = 0x10000,
|
||
|
DF_SAVEGAMESCREENSHOT = 0x20000,
|
||
|
DF_CLIP_SKYBOX = 0x40000,
|
||
|
|
||
|
DF_SHADOW_DEPTH_MAP = 0x100000 // Currently rendering a shadow depth map
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: View setup and rendering
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CViewSetup;
|
||
|
class C_BaseEntity;
|
||
|
struct vrect_t;
|
||
|
class C_BaseViewModel;
|
||
|
struct WriteReplayScreenshotParams_t;
|
||
|
class IReplayScreenshotSystem;
|
||
|
|
||
|
abstract_class IViewRender
|
||
|
{
|
||
|
public:
|
||
|
// SETUP
|
||
|
// Initialize view renderer
|
||
|
virtual void Init( void ) = 0;
|
||
|
|
||
|
// Clear any systems between levels
|
||
|
virtual void LevelInit( void ) = 0;
|
||
|
virtual void LevelShutdown( void ) = 0;
|
||
|
|
||
|
// Shutdown
|
||
|
virtual void Shutdown( void ) = 0;
|
||
|
|
||
|
// RENDERING
|
||
|
// Called right before simulation. It must setup the view model origins and angles here so
|
||
|
// the correct attachment points can be used during simulation.
|
||
|
virtual void OnRenderStart() = 0;
|
||
|
|
||
|
// Called to render the entire scene
|
||
|
virtual void Render( vrect_t *rect ) = 0;
|
||
|
|
||
|
// Called to render just a particular setup ( for timerefresh and envmap creation )
|
||
|
virtual void RenderView( const CViewSetup &view, int nClearFlags, int whatToDraw ) = 0;
|
||
|
|
||
|
// What are we currently rendering? Returns a combination of DF_ flags.
|
||
|
virtual int GetDrawFlags() = 0;
|
||
|
|
||
|
// MISC
|
||
|
// Start and stop pitch drifting logic
|
||
|
virtual void StartPitchDrift( void ) = 0;
|
||
|
virtual void StopPitchDrift( void ) = 0;
|
||
|
|
||
|
// This can only be called during rendering (while within RenderView).
|
||
|
virtual VPlane* GetFrustum() = 0;
|
||
|
|
||
|
virtual bool ShouldDrawBrushModels( void ) = 0;
|
||
|
|
||
|
virtual const CViewSetup *GetPlayerViewSetup( void ) const = 0;
|
||
|
virtual const CViewSetup *GetViewSetup( void ) const = 0;
|
||
|
|
||
|
virtual void DisableVis( void ) = 0;
|
||
|
|
||
|
virtual int BuildWorldListsNumber() const = 0;
|
||
|
|
||
|
virtual void SetCheapWaterStartDistance( float flCheapWaterStartDistance ) = 0;
|
||
|
virtual void SetCheapWaterEndDistance( float flCheapWaterEndDistance ) = 0;
|
||
|
|
||
|
virtual void GetWaterLODParams( float &flCheapWaterStartDistance, float &flCheapWaterEndDistance ) = 0;
|
||
|
|
||
|
virtual void DriftPitch (void) = 0;
|
||
|
|
||
|
virtual void SetScreenOverlayMaterial( IMaterial *pMaterial ) = 0;
|
||
|
virtual IMaterial *GetScreenOverlayMaterial( ) = 0;
|
||
|
|
||
|
virtual void WriteSaveGameScreenshot( const char *pFilename ) = 0;
|
||
|
virtual void WriteSaveGameScreenshotOfSize( const char *pFilename, int width, int height, bool bCreatePowerOf2Padded = false, bool bWriteVTF = false ) = 0;
|
||
|
|
||
|
virtual void WriteReplayScreenshot( WriteReplayScreenshotParams_t ¶ms ) = 0;
|
||
|
virtual void UpdateReplayScreenshotCache() = 0;
|
||
|
|
||
|
// Draws another rendering over the top of the screen
|
||
|
virtual void QueueOverlayRenderView( const CViewSetup &view, int nClearFlags, int whatToDraw ) = 0;
|
||
|
|
||
|
// Returns znear and zfar
|
||
|
virtual float GetZNear() = 0;
|
||
|
virtual float GetZFar() = 0;
|
||
|
|
||
|
virtual void GetScreenFadeDistances( float *min, float *max ) = 0;
|
||
|
|
||
|
virtual C_BaseEntity *GetCurrentlyDrawingEntity() = 0;
|
||
|
virtual void SetCurrentlyDrawingEntity( C_BaseEntity *pEnt ) = 0;
|
||
|
|
||
|
virtual bool UpdateShadowDepthTexture( ITexture *pRenderTarget, ITexture *pDepthTexture, const CViewSetup &shadowView ) = 0;
|
||
|
|
||
|
virtual void FreezeFrame( float flFreezeTime ) = 0;
|
||
|
|
||
|
virtual IReplayScreenshotSystem *GetReplayScreenshotSystem() = 0;
|
||
|
};
|
||
|
|
||
|
extern IViewRender *view;
|
||
|
|
||
|
#endif // IVIEWRENDER_H
|