diff options
Diffstat (limited to 'game/client/tf/tf_rendertargets.cpp')
| -rw-r--r-- | game/client/tf/tf_rendertargets.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/game/client/tf/tf_rendertargets.cpp b/game/client/tf/tf_rendertargets.cpp new file mode 100644 index 0000000..5f97bed --- /dev/null +++ b/game/client/tf/tf_rendertargets.cpp @@ -0,0 +1,73 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: L4D mod render targets are specified by and accessable through this singleton +// +// $NoKeywords: $ +//===========================================================================// +#include "cbase.h" +#include "tf_rendertargets.h" +#include "materialsystem/imaterialsystem.h" +#include "rendertexture.h" +#if defined( REPLAY_ENABLED ) +#include "replay/replay_screenshot.h" +#endif + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +ITexture *CTFRenderTargets::CreateItemModelPanelTexture( const char *pszName, IMaterialSystem* pMaterialSystem, int iSize ) +{ + return pMaterialSystem->CreateNamedRenderTargetTextureEx2( + pszName, + iSize, iSize, RT_SIZE_DEFAULT, + pMaterialSystem->GetBackBufferFormat(), + MATERIAL_RT_DEPTH_SHARED, + TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT, + 0 ); +} + +//----------------------------------------------------------------------------- +// Purpose: InitClientRenderTargets, interface called by the engine at material system init in the engine +// Input : pMaterialSystem - the interface to the material system from the engine (our singleton hasn't been set up yet) +// pHardwareConfig - the user's hardware config, useful for conditional render targets setup +//----------------------------------------------------------------------------- +extern const char *g_ItemModelPanelRenderTargetNames[]; +extern const char *g_pszModelImagePanelRTName; +void CTFRenderTargets::InitClientRenderTargets( IMaterialSystem* pMaterialSystem, IMaterialSystemHardwareConfig* pHardwareConfig ) +{ + BaseClass::InitClientRenderTargets( pMaterialSystem, pHardwareConfig ); + + // rt for item model panels + for ( int i = 0; i < ITEM_MODEL_IMAGE_CACHE_SIZE; i++ ) + { + int index = m_tfRenderTargets.AddToTail(); + m_tfRenderTargets[index].Init( CreateItemModelPanelTexture( g_ItemModelPanelRenderTargetNames[i], pMaterialSystem, 256 ) ); + } + + // rt for CModelImagePanel + int index = m_tfRenderTargets.AddToTail(); + m_tfRenderTargets[index].Init( CreateItemModelPanelTexture( g_pszModelImagePanelRTName, pMaterialSystem, 256 ) ); + + CReplayScreenshotTaker::CreateRenderTarget( pMaterialSystem ); +} + +//----------------------------------------------------------------------------- +// Purpose: Shutdown client render targets. This gets called during shutdown in the engine +// Input : - +//----------------------------------------------------------------------------- +void CTFRenderTargets::ShutdownClientRenderTargets() +{ + BaseClass::ShutdownClientRenderTargets(); + + for ( int i = 0; i < m_tfRenderTargets.Count(); i++ ) + { + m_tfRenderTargets[i].Shutdown(); + } + m_tfRenderTargets.Purge(); +} + + +static CTFRenderTargets g_TFRenderTargets; +EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CTFRenderTargets, IClientRenderTargets, + CLIENTRENDERTARGETS_INTERFACE_VERSION, g_TFRenderTargets ); +CTFRenderTargets* g_pTFRenderTargets = &g_TFRenderTargets;
\ No newline at end of file |