//----------------------------------------------------------------------------- // Sets a default env_cubemap for rendering materials w/ specularity //----------------------------------------------------------------------------- void CSceneViewerApp::InitDefaultEnvCubemap( ) { // Deal with the default cubemap CMatRenderContextPtr pRenderContext( g_pMaterialSystem ); ITexture *pCubemapTexture = g_pMaterialSystem->FindTexture( "editor/cubemap", NULL, true ); m_DefaultEnvCubemap.Init( pCubemapTexture ); pRenderContext->BindLocalCubemap( pCubemapTexture ); }
void C_GlobalLight::OnDataChanged( DataUpdateType_t updateType ) { if ( updateType == DATA_UPDATE_CREATED ) { m_SpotlightTexture.Init( m_TextureName, TEXTURE_GROUP_OTHER, true ); } BaseClass::OnDataChanged( updateType ); }
static ITexture *GetPowerOfTwoFrameBufferTexture( void ) { if( !s_pPowerOfTwoFrameBufferTexture ) { s_pPowerOfTwoFrameBufferTexture.Init( vgui::MaterialSystem()->FindTexture( "_rt_PowerOfTwoFB", TEXTURE_GROUP_RENDER_TARGET ) ); } return s_pPowerOfTwoFrameBufferTexture; }
ITexture *GetScopeTexture( void ) { if ( !s_pScopeTexture ) { s_pScopeTexture.Init( materials->FindTexture( "_rt_Scope", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pScopeTexture ) ); AddReleaseFunc(); } return s_pScopeTexture; }
ITexture *GetPlayerModelTexture( void ) { if ( !s_pPlayerModelTexture ) { s_pPlayerModelTexture.Init( materials->FindTexture( "_rt_playermodel", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pPlayerModelTexture ) ); AddReleaseFunc(); } return s_pPlayerModelTexture; }
ITexture *GetSmallBuffer1( void ) { if ( !s_pQuarterSizedFB1 ) { s_pQuarterSizedFB1.Init( materials->FindTexture( "_rt_SmallFB1", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pQuarterSizedFB1 ) ); AddReleaseFunc(); } return s_pQuarterSizedFB1; }
ITexture *GetSmallBufferHDR0( void ) { if ( !s_pSmallBufferHDR0 ) { s_pSmallBufferHDR0.Init( materials->FindTexture( "_rt_SmallHDR0", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pSmallBufferHDR0 ) ); AddReleaseFunc(); } return s_pSmallBufferHDR0; }
ITexture *GetWaterRefractionTexture( void ) { if ( !s_pWaterRefractionTexture ) { s_pWaterRefractionTexture.Init( materials->FindTexture( "_rt_WaterRefraction", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pWaterRefractionTexture ) ); AddReleaseFunc(); } return s_pWaterRefractionTexture; }
ITexture *GetFullFrameDepthTexture( void ) { if ( !s_pFullFrameDepthTexture ) { s_pFullFrameDepthTexture.Init( materials->FindTexture( "_rt_FullFrameDepth", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pFullFrameDepthTexture ) ); AddReleaseFunc(); } return s_pFullFrameDepthTexture; }
ITexture *GetPowerOfTwoFrameBufferTexture( void ) { if ( !s_pPowerOfTwoFrameBufferTexture ) { s_pPowerOfTwoFrameBufferTexture.Init( materials->FindTexture( "_rt_PowerOfTwoFB", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pPowerOfTwoFrameBufferTexture ) ); AddReleaseFunc(); } return s_pPowerOfTwoFrameBufferTexture; }
void CMiniViewportEngineRenderArea::InitSceneMaterials() { if ( m_ScreenBuffer ) return; if ( g_pMaterialSystem->IsTextureLoaded( "_rt_LayoffResult" ) ) { ITexture *pTexture = g_pMaterialSystem->FindTexture( "_rt_LayoffResult", TEXTURE_GROUP_RENDER_TARGET ); m_ScreenBuffer.Init( pTexture ); } else { // For now, layoff dimensions match aspect of back buffer int nBackBufferWidth, nBackBufferHeight; g_pMaterialSystem->GetBackBufferDimensions( nBackBufferWidth, nBackBufferHeight ); float flAspect = nBackBufferWidth / (float)nBackBufferHeight; int nPreviewWidth = min( DEFAULT_PREVIEW_WIDTH, nBackBufferWidth ); int nPreviewHeight = ( int )( nPreviewWidth / flAspect + 0.5f ); g_pMaterialSystem->BeginRenderTargetAllocation(); // Begin allocating RTs which IFM can scribble into // LDR final result of either HDR or LDR rendering m_ScreenBuffer.Init( g_pMaterialSystem->CreateNamedRenderTargetTextureEx2( "_rt_LayoffResult", nPreviewWidth, nPreviewHeight, RT_SIZE_OFFSCREEN, g_pMaterialSystem->GetBackBufferFormat(), MATERIAL_RT_DEPTH_SHARED, TEXTUREFLAGS_BORDER ) ); g_pMaterialSystem->EndRenderTargetAllocation(); // End allocating RTs which IFM can scribble into } KeyValues *pVMTKeyValues = NULL; pVMTKeyValues= new KeyValues( "UnlitGeneric" ); pVMTKeyValues->SetString( "$basetexture", m_ScreenBuffer->GetName() ); pVMTKeyValues->SetInt( "$nofog", 1 ); m_ScreenMaterial.Init( "MiniViewportEngineRenderAreaSceneMaterial", pVMTKeyValues ); m_ScreenMaterial->Refresh(); }
void InitDeferredRTs( bool bInitial ) { if( bInitial ) // TODO: Does not work correctly mid game { // First determine if we are using low or high if( GetGPUMemLevel() <= GPU_MEM_LEVEL_LOW || GetCPULevel() <= CPU_LEVEL_LOW ) { g_cms_comp_res_x = CSM_COMP_RES_X_LOW; g_cms_comp_res_y = CSM_COMP_RES_Y_LOW; g_cms_comp_res_islow = true; } else { g_cms_comp_res_x = CSM_COMP_RES_X_HIGH; g_cms_comp_res_y = CSM_COMP_RES_Y_HIGH; g_cms_comp_res_islow = false; } } if ( !bInitial ) materials->ReEnableRenderTargetAllocation_IRealizeIfICallThisAllTexturesWillBeUnloadedAndLoadTimeWillSufferHorribly(); // HAHAHAHA. No. //int screen_w, screen_h; int dummy = 128; //materials->GetBackBufferDimensions( screen_w, screen_h ); const ImageFormat fmt_gbuffer0 = #if DEFCFG_LIGHTCTRL_PACKING IMAGE_FORMAT_RGBA8888; #else IMAGE_FORMAT_RGB888; #endif #if !DEFCFG_LIGHTCTRL_PACKING const ImageFormat fmt_gbuffer2 = IMAGE_FORMAT_RGBA8888; #endif #if DEFCFG_DEFERRED_SHADING == 1 const ImageFormat fmt_gbuffer2 = IMAGE_FORMAT_RGBA8888; const ImageFormat fmt_gbuffer3 = IMAGE_FORMAT_RGB888; #endif const ImageFormat fmt_gbuffer1 = IMAGE_FORMAT_R32F; const ImageFormat fmt_lightAccum = #if DEFCFG_LIGHTACCUM_COMPRESSED IMAGE_FORMAT_RGBA8888; #else IMAGE_FORMAT_RGBA16161616F; #endif const ImageFormat fmt_volumAccum = IMAGE_FORMAT_RGB888; const ImageFormat fmt_projVGUI = IMAGE_FORMAT_RGB888; const bool bShadowUseColor = #ifdef SHADOWMAPPING_USE_COLOR true; #else false; #endif const ImageFormat fmt_depth = GetDeferredManager()->GetShadowDepthFormat(); const ImageFormat fmt_depthColor = bShadowUseColor ? IMAGE_FORMAT_R32F : g_pMaterialSystemHardwareConfig->GetNullTextureFormat(); #if DEFCFG_ENABLE_RADIOSITY == 1 const ImageFormat fmt_radAlbedo = IMAGE_FORMAT_RGB888; const ImageFormat fmt_radNormal = IMAGE_FORMAT_RGB888; const ImageFormat fmt_radBuffer = IMAGE_FORMAT_RGB888; #endif // DEFCFG_ENABLE_RADIOSITY if ( fmt_depth == IMAGE_FORMAT_D16_SHADOW ) g_flDepthScalar = pow( 2.0, 16 ); else if ( fmt_depth == IMAGE_FORMAT_D24X8_SHADOW ) g_flDepthScalar = pow( 2.0, 24 ); AssertMsg( fmt_depth == IMAGE_FORMAT_D16_SHADOW || fmt_depth == IMAGE_FORMAT_D24X8_SHADOW, "Unexpected depth format" ); unsigned int gbufferFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET | TEXTUREFLAGS_POINTSAMPLE; unsigned int lightAccumFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET | TEXTUREFLAGS_POINTSAMPLE; unsigned int volumAccumFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET; unsigned int depthFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET; unsigned int shadowColorFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET | TEXTUREFLAGS_POINTSAMPLE; unsigned int projVGUIFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET; #if DEFCFG_ENABLE_RADIOSITY == 1 unsigned int radAlbedoNormalFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET | TEXTUREFLAGS_POINTSAMPLE; unsigned int radBufferFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET; unsigned int radNormalFlags = TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_RENDERTARGET | TEXTUREFLAGS_POINTSAMPLE; #endif // DEFCFG_ENABLE_RADIOSITY materials->BeginRenderTargetAllocation(); shadowData_general_t generalShadowData; if ( bInitial ) { g_tex_Normals.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_GBUFFER0, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_gbuffer0, #if DEFCFG_DEFERRED_SHADING == 1 MATERIAL_RT_DEPTH_NONE, #else MATERIAL_RT_DEPTH_SHARED, #endif gbufferFlags, 0 ) ); g_tex_Depth.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_GBUFFER1, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_gbuffer1, MATERIAL_RT_DEPTH_NONE, gbufferFlags, 0 ) ); #if ( DEFCFG_LIGHTCTRL_PACKING == 0 ) g_tex_LightCtrl.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_GBUFFER2, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_gbuffer2, MATERIAL_RT_DEPTH_NONE, gbufferFlags, 0 ) ); #elif DEFCFG_DEFERRED_SHADING == 1 g_tex_Albedo.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_GBUFFER2, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_gbuffer2, MATERIAL_RT_DEPTH_SHARED, gbufferFlags, 0 ) ); g_tex_Specular.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_GBUFFER3, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_gbuffer3, MATERIAL_RT_DEPTH_NONE, gbufferFlags, 0 ) ); #endif g_tex_Lightaccum.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_LIGHTACCUM, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_lightAccum, MATERIAL_RT_DEPTH_NONE, lightAccumFlags, 0 ) ); g_tex_Lightaccum2.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_LIGHTACCUM2, dummy, dummy, RT_SIZE_FULL_FRAME_BUFFER_ROUNDED_UP, fmt_lightAccum, MATERIAL_RT_DEPTH_NONE, lightAccumFlags, 0 ) ); for ( int i = 0; i < 2; i++ ) g_tex_VolumetricsBuffer[ i ].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_VOLUMACCUM, i ), dummy, dummy, RT_SIZE_HDR, fmt_volumAccum, MATERIAL_RT_DEPTH_NONE, volumAccumFlags, 0 ) ); g_tex_VolumePrepass.Init( materials->CreateNamedRenderTargetTextureEx2( DEFRTNAME_VOLUMPREPASS, dummy, dummy, RT_SIZE_HDR, fmt_gbuffer1, MATERIAL_RT_DEPTH_NONE, gbufferFlags, 0 ) ); for ( int i = 0; i < MAX_SHADOW_ORTHO; i++ ) { #if CSM_USE_COMPOSITED_TARGET int iResolution_x = CSM_COMP_RES_X; int iResolution_y = CSM_COMP_RES_Y; #else const cascade_t &c = GetCascadeInfo( i ); int iResolution_x = c.iResolution; int iResolution_y = c.iResolution; #endif g_tex_ShadowDepth_Ortho[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWDEPTH_ORTHO, i ), iResolution_x, iResolution_y, RT_SIZE_NO_CHANGE, fmt_depth, MATERIAL_RT_DEPTH_NONE, depthFlags, 0 ) ); g_tex_ShadowColor_Ortho[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWCOLOR_ORTHO, i ), iResolution_x, iResolution_y, RT_SIZE_NO_CHANGE, fmt_depthColor, MATERIAL_RT_DEPTH_NONE, shadowColorFlags, 0 ) ); #if DEFCFG_ENABLE_RADIOSITY != 0 g_tex_ShadowRad_Albedo_Ortho[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWRAD_ALBEDO_ORTHO, i ), iResolution_x, iResolution_y, RT_SIZE_NO_CHANGE, fmt_radAlbedo, MATERIAL_RT_DEPTH_NONE, radAlbedoNormalFlags, 0 ) ); g_tex_ShadowRad_Normal_Ortho[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWRAD_NORMAL_ORTHO, i ), iResolution_x, iResolution_y, RT_SIZE_NO_CHANGE, fmt_radNormal, MATERIAL_RT_DEPTH_NONE, radAlbedoNormalFlags, 0 ) ); #endif Assert( iResolution_y == g_tex_ShadowDepth_Ortho[i]->GetActualHeight() ); Assert( iResolution_y == g_tex_ShadowColor_Ortho[i]->GetActualHeight() ); Assert( iResolution_x == g_tex_ShadowDepth_Ortho[i]->GetActualWidth() ); Assert( iResolution_x == g_tex_ShadowColor_Ortho[i]->GetActualWidth() ); } for ( int i = 0; i < NUM_PROJECTABLE_VGUI; i++ ) { g_tex_ProjectableVGUI[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_PROJECTABLE_VGUI, i ), PROJECTABLE_VGUI_RES, PROJECTABLE_VGUI_RES, RT_SIZE_NO_CHANGE, fmt_projVGUI, MATERIAL_RT_DEPTH_NONE, projVGUIFlags, 0 ) ); } #if DEFCFG_ENABLE_RADIOSITY for ( int i = 0; i < 2; i++ ) { g_tex_RadiosityBuffer[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_RADIOSITY_BUFFER, i ), RADIOSITY_BUFFER_RES_X, RADIOSITY_BUFFER_RES_Y, RT_SIZE_NO_CHANGE, fmt_radBuffer, MATERIAL_RT_DEPTH_NONE, radBufferFlags, 0 ) ); g_tex_RadiosityNormal[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_RADIOSITY_NORMAL, i ), RADIOSITY_BUFFER_RES_X, RADIOSITY_BUFFER_RES_Y, RT_SIZE_NO_CHANGE, fmt_radNormal, MATERIAL_RT_DEPTH_NONE, radNormalFlags, 0 ) ); } #endif } for ( int i = 0; i < MAX_SHADOW_PROJ; i++ ) { int res = GetShadowResolution_Spot(); generalShadowData.iPROJ_Res = res; bool bFirst = i == 0; if ( !bShadowUseColor || bFirst ) g_tex_ShadowDepth_Proj[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWDEPTH_PROJ, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depth, MATERIAL_RT_DEPTH_NONE, depthFlags, 0 ) ); else g_tex_ShadowDepth_Proj[i].Init( g_tex_ShadowDepth_Proj[0] ); if ( bShadowUseColor || bFirst ) g_tex_ShadowColor_Proj[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWCOLOR_PROJ, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depthColor, MATERIAL_RT_DEPTH_NONE, shadowColorFlags, 0 ) ); else g_tex_ShadowColor_Proj[i].Init( g_tex_ShadowColor_Proj[0] ); Assert( res == g_tex_ShadowDepth_Proj[i]->GetActualHeight() ); Assert( res == g_tex_ShadowColor_Proj[i]->GetActualHeight() ); Assert( res == g_tex_ShadowDepth_Proj[i]->GetActualWidth() ); Assert( res == g_tex_ShadowColor_Proj[i]->GetActualWidth() ); #if DEFCFG_ADAPTIVE_SHADOWMAP_LOD res = GetShadowResolution_Spot_LOD1(); generalShadowData.iPROJ_Res_LOD1 = res; if ( !bShadowUseColor || bFirst ) g_tex_ShadowDepth_Proj_LOD1[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWDEPTH_PROJ_LOD1, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depth, MATERIAL_RT_DEPTH_NONE, depthFlags, 0 ) ); else g_tex_ShadowDepth_Proj_LOD1[i].Init( g_tex_ShadowDepth_Proj_LOD1[0] ); if ( bShadowUseColor || bFirst ) g_tex_ShadowColor_Proj_LOD1[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWCOLOR_PROJ_LOD1, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depthColor, MATERIAL_RT_DEPTH_NONE, shadowColorFlags, 0 ) ); else g_tex_ShadowColor_Proj_LOD1[i].Init( g_tex_ShadowColor_Proj_LOD1[0] ); Assert( res == g_tex_ShadowDepth_Proj_LOD1[i]->GetActualHeight() ); Assert( res == g_tex_ShadowColor_Proj_LOD1[i]->GetActualHeight() ); Assert( res == g_tex_ShadowDepth_Proj_LOD1[i]->GetActualWidth() ); Assert( res == g_tex_ShadowColor_Proj_LOD1[i]->GetActualWidth() ); res = GetShadowResolution_Spot_LOD2(); generalShadowData.iPROJ_Res_LOD2 = res; if ( !bShadowUseColor || bFirst ) g_tex_ShadowDepth_Proj_LOD2[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWDEPTH_PROJ_LOD2, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depth, MATERIAL_RT_DEPTH_NONE, depthFlags, 0 ) ); else g_tex_ShadowDepth_Proj_LOD2[i].Init( g_tex_ShadowDepth_Proj_LOD2[0] ); if ( bShadowUseColor || bFirst ) g_tex_ShadowColor_Proj_LOD2[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWCOLOR_PROJ_LOD2, i ), res, res, RT_SIZE_NO_CHANGE, fmt_depthColor, MATERIAL_RT_DEPTH_NONE, shadowColorFlags, 0 ) ); else g_tex_ShadowColor_Proj_LOD2[i].Init( g_tex_ShadowColor_Proj_LOD2[0] ); Assert( res == g_tex_ShadowDepth_Proj_LOD2[i]->GetActualHeight() ); Assert( res == g_tex_ShadowColor_Proj_LOD2[i]->GetActualHeight() ); Assert( res == g_tex_ShadowDepth_Proj_LOD2[i]->GetActualWidth() ); Assert( res == g_tex_ShadowColor_Proj_LOD2[i]->GetActualWidth() ); #endif } for ( int i = 0; i < MAX_SHADOW_DP; i++ ) { int res_x = GetShadowResolution_Point(); int res_y = res_x * 2; generalShadowData.iDPSM_Res_x = res_x; generalShadowData.iDPSM_Res_y = res_y; bool bFirst = i == 0; if ( !bShadowUseColor || bFirst ) g_tex_ShadowDepth_DP[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWDEPTH_DP, i ), res_x, res_y, RT_SIZE_NO_CHANGE, fmt_depth, MATERIAL_RT_DEPTH_NONE, depthFlags, 0 ) ); else g_tex_ShadowDepth_DP[i].Init( g_tex_ShadowDepth_DP[0] ); if ( bShadowUseColor || bFirst ) g_tex_ShadowColor_DP[i].Init( materials->CreateNamedRenderTargetTextureEx2( VarArgs( "%s%02i", DEFRTNAME_SHADOWCOLOR_DP, i ), res_x, res_y, RT_SIZE_NO_CHANGE, fmt_depthColor, MATERIAL_RT_DEPTH_NONE, shadowColorFlags, 0 ) ); else g_tex_ShadowColor_DP[i].Init( g_tex_ShadowColor_DP[0] ); Assert( res_y == g_tex_ShadowDepth_DP[i]->GetActualHeight() ); Assert( res_y == g_tex_ShadowColor_DP[i]->GetActualHeight() ); Assert( res_x == g_tex_ShadowDepth_DP[i]->GetActualWidth() ); Assert( res_x == g_tex_ShadowColor_DP[i]->GetActualWidth() ); } materials->EndRenderTargetAllocation(); if( !bInitial ) { materials->FinishRenderTargetAllocation(); } GetDeferredExt()->CommitTexture_General( g_tex_Normals, g_tex_Depth, #if ( DEFCFG_LIGHTCTRL_PACKING == 0 ) g_tex_LightCtrl, #elif DEFCFG_DEFERRED_SHADING == 1 g_tex_Albedo, g_tex_Specular, #endif g_tex_Lightaccum, g_tex_Lightaccum2 ); for ( int i = 0; i < MAX_SHADOW_ORTHO; i++ ) GetDeferredExt()->CommitTexture_CascadedDepth( i, bShadowUseColor ? g_tex_ShadowColor_Ortho[i] : g_tex_ShadowDepth_Ortho[i] ); for ( int i = 0; i < MAX_SHADOW_DP; i++ ) GetDeferredExt()->CommitTexture_DualParaboloidDepth( i, bShadowUseColor ? g_tex_ShadowColor_DP[i] : g_tex_ShadowDepth_DP[i] ); for ( int i = 0; i < MAX_SHADOW_PROJ; i++ ) GetDeferredExt()->CommitTexture_ProjectedDepth( i, bShadowUseColor ? g_tex_ShadowColor_Proj[i] : g_tex_ShadowDepth_Proj[i] ); GetDeferredExt()->CommitTexture_VolumePrePass( g_tex_VolumePrepass ); GetDeferredExt()->CommitShadowData_General( generalShadowData ); #if DEFCFG_ENABLE_RADIOSITY AssertMsg( MAX_SHADOW_ORTHO == 1, "You gotta fix the commit func now.." ); GetDeferredExt()->CommitTexture_ShadowRadOutput_Ortho( g_tex_ShadowRad_Albedo_Ortho[0], g_tex_ShadowRad_Normal_Ortho[0] ); GetDeferredExt()->CommitTexture_Radiosity( g_tex_RadiosityBuffer[0], g_tex_RadiosityBuffer[1], g_tex_RadiosityNormal[0], g_tex_RadiosityNormal[1] ); #endif }