diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/baseclientrendertargets.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'game/client/baseclientrendertargets.cpp')
| -rw-r--r-- | game/client/baseclientrendertargets.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/game/client/baseclientrendertargets.cpp b/game/client/baseclientrendertargets.cpp new file mode 100644 index 0000000..3aa642c --- /dev/null +++ b/game/client/baseclientrendertargets.cpp @@ -0,0 +1,78 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Implementation for CBaseClientRenderTargets class. +// Provides Init functions for common render textures used by the engine. +// Mod makers can inherit from this class, and call the Create functions for +// only the render textures the want for their mod. +//=============================================================================// + +#include "cbase.h" +#include "baseclientrendertargets.h" // header +#include "materialsystem/imaterialsystemhardwareconfig.h" // Hardware config checks +#include "tier0/icommandline.h" + +ITexture* CBaseClientRenderTargets::CreateWaterReflectionTexture( IMaterialSystem* pMaterialSystem, int iSize ) +{ + return pMaterialSystem->CreateNamedRenderTargetTextureEx2( + "_rt_WaterReflection", + iSize, iSize, RT_SIZE_PICMIP, + pMaterialSystem->GetBackBufferFormat(), + MATERIAL_RT_DEPTH_SHARED, + TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT, + CREATERENDERTARGETFLAGS_HDR ); +} + +ITexture* CBaseClientRenderTargets::CreateWaterRefractionTexture( IMaterialSystem* pMaterialSystem, int iSize ) +{ + return pMaterialSystem->CreateNamedRenderTargetTextureEx2( + "_rt_WaterRefraction", + iSize, iSize, RT_SIZE_PICMIP, + // This is different than reflection because it has to have alpha for fog factor. + IMAGE_FORMAT_RGBA8888, + MATERIAL_RT_DEPTH_SHARED, + TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT, + CREATERENDERTARGETFLAGS_HDR ); +} + +ITexture* CBaseClientRenderTargets::CreateCameraTexture( IMaterialSystem* pMaterialSystem, int iSize ) +{ + return pMaterialSystem->CreateNamedRenderTargetTextureEx2( + "_rt_Camera", + iSize, iSize, RT_SIZE_DEFAULT, + pMaterialSystem->GetBackBufferFormat(), + MATERIAL_RT_DEPTH_SHARED, + 0, + CREATERENDERTARGETFLAGS_HDR ); +} + +//----------------------------------------------------------------------------- +// Purpose: Called by the engine in material system init and shutdown. +// Clients should override this in their inherited version, but the base +// is to init all standard render targets for use. +// Input : pMaterialSystem - the engine's material system (our singleton is not yet inited at the time this is called) +// pHardwareConfig - the user hardware config, useful for conditional render target setup +//----------------------------------------------------------------------------- +void CBaseClientRenderTargets::InitClientRenderTargets( IMaterialSystem* pMaterialSystem, IMaterialSystemHardwareConfig* pHardwareConfig, int iWaterTextureSize, int iCameraTextureSize ) +{ + // Water effects + m_WaterReflectionTexture.Init( CreateWaterReflectionTexture( pMaterialSystem, iWaterTextureSize ) ); + m_WaterRefractionTexture.Init( CreateWaterRefractionTexture( pMaterialSystem, iWaterTextureSize ) ); + + // Monitors + m_CameraTexture.Init( CreateCameraTexture( pMaterialSystem, iCameraTextureSize ) ); +} + +//----------------------------------------------------------------------------- +// Purpose: Shut down each CTextureReference we created in InitClientRenderTargets. +// Called by the engine in material system shutdown. +// Input : - +//----------------------------------------------------------------------------- +void CBaseClientRenderTargets::ShutdownClientRenderTargets() +{ + // Water effects + m_WaterReflectionTexture.Shutdown(); + m_WaterRefractionTexture.Shutdown(); + + // Monitors + m_CameraTexture.Shutdown(); +}
\ No newline at end of file |