13 #ifndef hifi_DebugDeferredBuffer_h
14 #define hifi_DebugDeferredBuffer_h
18 #include <render/DrawTask.h>
19 #include "DeferredFrameTransform.h"
20 #include "DeferredFramebuffer.h"
21 #include "SurfaceGeometryPass.h"
22 #include "AmbientOcclusionEffect.h"
24 #include "LightStage.h"
26 class DebugDeferredBufferConfig :
public render::Job::Config {
28 Q_PROPERTY(
int mode MEMBER mode WRITE setMode)
29 Q_PROPERTY(glm::vec4 size MEMBER size NOTIFY dirty)
31 DebugDeferredBufferConfig() : render::Job::Config(false) {}
33 void setMode(
int newMode);
36 glm::vec4 size{ 0.0f, -1.0f, 1.0f, 1.0f };
41 class DebugDeferredBuffer {
43 using Inputs = render::VaryingSet7<DeferredFramebufferPointer,
44 LinearDepthFramebufferPointer,
45 SurfaceGeometryFramebufferPointer,
46 AmbientOcclusionFramebufferPointer,
47 DeferredFrameTransformPointer,
48 LightStage::ShadowFramePointer,
50 using Config = DebugDeferredBufferConfig;
51 using JobModel = render::Job::ModelI<DebugDeferredBuffer, Inputs, Config>;
53 DebugDeferredBuffer(uint transformSlot);
54 ~DebugDeferredBuffer();
56 void configure(
const Config& config);
57 void run(
const render::RenderContextPointer& renderContext,
const Inputs& inputs);
60 friend class DebugDeferredBufferConfig;
82 ShadowCascadeIndicesMode,
88 DiffusedCurvatureMode,
89 DiffusedNormalCurvatureMode,
90 CurvatureOcclusionMode,
93 AmbientOcclusionBlurredMode,
94 AmbientOcclusionNormalMode,
96 AntialiasingIntensityMode,
107 #include "debug_deferred_buffer_shared.slh"
109 using ParametersBuffer = gpu::StructBuffer<DebugParameters>;
111 struct CustomPipeline {
112 gpu::PipelinePointer pipeline;
115 using StandardPipelines = std::array<gpu::PipelinePointer, NumModes>;
116 using CustomPipelines = std::unordered_map<std::string, CustomPipeline>;
118 static bool pipelineNeedsUpdate(Mode mode,
const std::string& customFile = std::string());
119 static gpu::PipelinePointer& getPipeline(Mode mode,
const std::string& customFile = std::string());
120 static std::string getShaderSourceCode(Mode mode,
const std::string& customFile = std::string());
122 ParametersBuffer _parameters;
123 static StandardPipelines _pipelines;
124 static CustomPipelines _customPipelines;
125 int _geometryId{ 0 };