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.
73 lines
3.0 KiB
73 lines
3.0 KiB
//========= 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; |