aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/client/baseclientrendertargets.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/client/baseclientrendertargets.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/client/baseclientrendertargets.cpp')
-rw-r--r--mp/src/game/client/baseclientrendertargets.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/mp/src/game/client/baseclientrendertargets.cpp b/mp/src/game/client/baseclientrendertargets.cpp
new file mode 100644
index 00000000..ebbd30cc
--- /dev/null
+++ b/mp/src/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