MCPcopy Create free account
hub / github.com/TheRealMJP/DeferredTexturing / RenderSunShadowMap

Method RenderSunShadowMap

BindlessDeferred/MeshRenderer.cpp:680–709  ·  view source on GitHub ↗

Renders meshes using cascaded shadow mapping

Source from the content-addressed store, hash-verified

678
679// Renders meshes using cascaded shadow mapping
680void MeshRenderer::RenderSunShadowMap(ID3D12GraphicsCommandList* cmdList, const Camera& camera)
681{
682 PIXMarker marker(cmdList, L"Sun Shadow Map Rendering");
683 CPUProfileBlock cpuProfileBlock("Sun Shadow Map Rendering");
684 ProfileBlock profileBlock(cmdList, "Sun Shadow Map Rendering");
685
686 OrthographicCamera cascadeCameras[NumCascades];
687 PrepareShadowCascades(AppSettings::SunDirection, SunShadowMapSize, true, camera, sunShadowConstants.Data, cascadeCameras);
688
689 sunShadowMap.MakeWritable(cmdList);
690
691 // Render the meshes to each cascade
692 for(uint64 cascadeIdx = 0; cascadeIdx < NumCascades; ++cascadeIdx)
693 {
694 PIXMarker cascadeMarker(cmdList, MakeString(L"Rendering Shadow Map Cascade %u", cascadeIdx).c_str());
695
696 // Set the viewport
697 DX12::SetViewport(cmdList, SunShadowMapSize, SunShadowMapSize);
698
699 // Set the shadow map as the depth target
700 D3D12_CPU_DESCRIPTOR_HANDLE dsv = sunShadowMap.ArrayDSVs[cascadeIdx].CPUHandle;
701 cmdList->OMSetRenderTargets(0, nullptr, false, &dsv);
702 cmdList->ClearDepthStencilView(dsv, D3D12_CLEAR_FLAG_DEPTH | D3D12_CLEAR_FLAG_STENCIL, 1.0f, 0, 0, nullptr);
703
704 // Draw the mesh with depth only, using the new shadow camera
705 RenderSunShadowDepth(cmdList, cascadeCameras[cascadeIdx]);
706 }
707
708 sunShadowMap.MakeReadable(cmdList);
709}
710
711// Render shadows for all spot lights
712void MeshRenderer::RenderSpotLightShadowMap(ID3D12GraphicsCommandList* cmdList, const Camera& camera)

Callers 1

RenderMethod · 0.80

Calls 6

PrepareShadowCascadesFunction · 0.85
MakeStringFunction · 0.85
SetViewportFunction · 0.85
MakeWritableMethod · 0.80
c_strMethod · 0.80
MakeReadableMethod · 0.80

Tested by

no test coverage detected