Files
Seele/src/Engine/Graphics/RenderPass/DepthCullingPass.h
T

61 lines
1.8 KiB
C++
Raw Normal View History

2021-05-06 17:02:10 +02:00
#pragma once
#include "MinimalEngine.h"
#include "RenderPass.h"
2024-06-17 16:21:41 +02:00
#include "Graphics/Pipeline.h"
2024-06-11 16:55:20 +02:00
#include "Graphics/Query.h"
2021-05-06 17:02:10 +02:00
2024-06-09 12:20:04 +02:00
namespace Seele {
2024-06-11 14:15:29 +02:00
class DepthCullingPass : public RenderPass {
2024-06-09 12:20:04 +02:00
public:
2024-06-11 14:15:29 +02:00
DepthCullingPass(Gfx::PGraphics graphics, PScene scene);
DepthCullingPass(DepthCullingPass&&) = default;
DepthCullingPass& operator=(DepthCullingPass&&) = default;
virtual ~DepthCullingPass();
2022-11-17 16:47:42 +01:00
virtual void beginFrame(const Component::Camera& cam) override;
2022-04-15 23:45:44 +02:00
virtual void render() override;
virtual void endFrame() override;
2021-05-06 17:02:10 +02:00
virtual void publishOutputs() override;
virtual void createRenderPass() override;
2024-06-09 12:20:04 +02:00
private:
2024-06-17 16:21:41 +02:00
constexpr static uint64 BLOCK_SIZE = 32;
struct MipParam {
uint32 srcMipOffset;
uint32 dstMipOffset;
UVector2 srcMipDim;
UVector2 dstMipDim;
};
2024-08-29 11:23:55 +02:00
struct DepthDebugData {
uint32 mipLevel;
uint32 mipOffset;
UVector2 mipDimensions;
UVector2 screenCornerMin;
UVector2 screenCornerMax;
};
2024-06-17 16:21:41 +02:00
Array<uint32> mipOffsets;
Array<UVector2> mipDims;
Gfx::OShaderBuffer depthMipBuffer;
2024-02-01 10:21:36 +01:00
Gfx::RenderTargetAttachment depthAttachment;
Gfx::RenderTargetAttachment visibilityAttachment;
2024-06-17 16:21:41 +02:00
Gfx::ODescriptorLayout depthAttachmentLayout;
Gfx::OPipelineLayout depthCullingLayout;
2024-06-15 21:47:20 +02:00
Gfx::OPipelineStatisticsQuery query;
2024-08-13 22:44:04 +02:00
Gfx::OTimestampQuery timestamps;
2024-06-07 09:19:47 +02:00
2024-06-17 16:21:41 +02:00
Gfx::OPipelineLayout depthComputeLayout;
Gfx::OComputeShader depthInitialReduceShader;
Gfx::PComputePipeline depthInitialReduce;
Gfx::OComputeShader depthMipGenShader;
Gfx::PComputePipeline depthMipGen;
2024-08-29 11:23:55 +02:00
//Gfx::OUniformBuffer debugUniform;
//Gfx::OShaderBuffer debugHead;
//Gfx::OShaderBuffer debugData;
2024-06-07 09:19:47 +02:00
Gfx::PShaderBuffer cullingBuffer;
2021-05-06 17:02:10 +02:00
};
2024-06-11 14:15:29 +02:00
DEFINE_REF(DepthCullingPass)
2021-05-06 17:02:10 +02:00
} // namespace Seele