mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-28 09:03:01 +00:00
78 lines
3.3 KiB
C++
78 lines
3.3 KiB
C++
//========= 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();
|
|
} |