| 276 | } |
| 277 | |
| 278 | Tr2GpuResourcePool::Texture Tr2ShadowMap::DrawToShadowMapResult( Tr2RenderContext& renderContext, Tr2GpuResourcePool& gpuResourcePool, const Tr2TextureAL& depthMap, const Tr2TextureAL& cascadedShadowDepth, float upscaling ) |
| 279 | { |
| 280 | CCP_STATS_ZONE( __FUNCTION__ ); |
| 281 | |
| 282 | auto shadowMapResult = gpuResourcePool.GetTempTexture( "shadowMapResult", depthMap.GetWidth(), depthMap.GetHeight(), PixelFormat::PIXEL_FORMAT_R8_UNORM, Tr2GpuUsage::RENDER_TARGET | Tr2GpuUsage::SHADER_RESOURCE ); |
| 283 | |
| 284 | GPU_REGION( renderContext, "Denoising" ); |
| 285 | renderContext.m_esm.PushRenderTarget( shadowMapResult ); |
| 286 | renderContext.m_esm.PushDepthStencilBuffer( Tr2TextureAL() ); |
| 287 | |
| 288 | m_shadowEffect->SetParameter( BlueSharedString( "EveSpaceSceneCascadedShadowMap" ), cascadedShadowDepth ); |
| 289 | m_shadowEffect->SetParameter( BlueSharedString( "DepthMap" ), depthMap ); |
| 290 | Tr2Renderer::DrawScreenQuad( renderContext, m_shadowEffect ); |
| 291 | m_shadowEffect->SetParameter( BlueSharedString( "EveSpaceSceneCascadedShadowMap" ), Tr2TextureAL{} ); |
| 292 | m_shadowEffect->SetParameter( BlueSharedString( "DepthMap" ), Tr2TextureAL{} ); |
| 293 | |
| 294 | { |
| 295 | CCP_STATS_ZONE( "DO_DENOISER" ); |
| 296 | if( m_denoiser && m_useDenoiser && depthMap.IsValid() ) |
| 297 | { |
| 298 | shadowMapResult = m_denoiser->Apply( std::move( shadowMapResult ), depthMap, {}, Tr2Renderer::GetReversedDepthProjectionTransform(), upscaling, gpuResourcePool, renderContext ); |
| 299 | } |
| 300 | } |
| 301 | |
| 302 | renderContext.m_esm.PopRenderTarget(); |
| 303 | renderContext.m_esm.PopDepthStencilBuffer(); |
| 304 | |
| 305 | return shadowMapResult; |
| 306 | } |
| 307 | |
| 308 | const unsigned int Tr2ShadowMap::GetShadowSplitCount() const |
| 309 | { |
no test coverage detected