Add directional shadow integration coverage

This commit is contained in:
2026-04-05 00:03:22 +08:00
parent 96a44da2cb
commit 2ddbe24b82
13 changed files with 803 additions and 94 deletions

View File

@@ -145,10 +145,13 @@ private:
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12DescriptorHeap> m_shaderVisibleCbvSrvUavHeap;
ComPtr<ID3D12DescriptorHeap> m_shaderVisibleSamplerHeap;
std::vector<ComPtr<ID3D12DescriptorHeap>> m_retiredShaderVisibleHeaps;
ID3D12Device* m_device = nullptr;
CommandQueueType m_type;
uint32_t m_shaderVisibleCbvSrvUavHeapCapacity = 0;
uint32_t m_shaderVisibleSamplerHeapCapacity = 0;
uint32_t m_shaderVisibleCbvSrvUavCursor = 0;
uint32_t m_shaderVisibleSamplerCursor = 0;
std::unordered_map<ID3D12Resource*, ResourceStates> m_resourceStateMap;
std::vector<ID3D12Resource*> m_trackedResources;

View File

@@ -16,6 +16,7 @@ namespace Rendering {
class RenderSurface;
class RenderPipelineAsset;
struct RenderContext;
class CameraRenderer {
public:
@@ -43,7 +44,12 @@ public:
bool Render(const CameraRenderRequest& request);
private:
struct DirectionalShadowSurfaceResources;
void ResetPipeline(std::unique_ptr<RenderPipeline> pipeline);
DirectionalShadowSurfaceResources* AcquireDirectionalShadowSurface(
const RenderContext& context,
const DirectionalShadowRenderPlan& plan);
RenderSceneExtractor m_sceneExtractor;
std::shared_ptr<const RenderPipelineAsset> m_pipelineAsset;
@@ -51,6 +57,7 @@ private:
std::unique_ptr<ObjectIdPass> m_objectIdPass;
std::unique_ptr<RenderPass> m_depthOnlyPass;
std::unique_ptr<RenderPass> m_shadowCasterPass;
std::unique_ptr<DirectionalShadowSurfaceResources> m_directionalShadowSurface;
};
} // namespace Rendering