12 #ifndef hifi_ZoneRenderer_h
13 #define hifi_ZoneRenderer_h
15 #include "render/Engine.h"
17 #include "DeferredFrameTransform.h"
19 #include "LightStage.h"
20 #include "BackgroundStage.h"
24 using Input = render::ItemBounds;
25 using JobModel = render::Job::ModelI<SetupZones, Input>;
29 void run(
const render::RenderContextPointer& context,
const Input& input);
32 class ZoneRendererConfig :
public render::Task::Config {
34 Q_PROPERTY(
int maxDrawn MEMBER maxDrawn NOTIFY dirty)
37 ZoneRendererConfig() : render::Task::Config(
48 class ZoneRendererTask {
51 static const render::Selection::Name ZONES_SELECTION;
53 using Input = render::ItemBounds;
54 using Output = render::ItemBounds;
55 using Config = ZoneRendererConfig;
56 using JobModel = render::Task::ModelIO<ZoneRendererTask, Input, Output, Config>;
60 void build(JobModel& task,
const render::Varying& input, render::Varying& output);
62 void configure(
const Config& config) { _maxDrawn = config.maxDrawn; }
68 class DebugZoneLighting {
70 class Config :
public render::JobConfig {
72 Config(
bool enabled =
false) : JobConfig(enabled) {}
75 using Inputs = render::VaryingSet3<DeferredFrameTransformPointer, LightStage::FramePointer, BackgroundStage::FramePointer>;
76 using JobModel = render::Job::ModelI<DebugZoneLighting, Inputs, Config>;
78 DebugZoneLighting() {}
80 void configure(
const Config& configuration) {}
81 void run(
const render::RenderContextPointer& context,
const Inputs& inputs);
85 static gpu::PipelinePointer _keyLightPipeline;
86 static gpu::PipelinePointer _ambientPipeline;
87 static gpu::PipelinePointer _backgroundPipeline;
89 static const gpu::PipelinePointer& getKeyLightPipeline();
90 static const gpu::PipelinePointer& getAmbientPipeline();
91 static const gpu::PipelinePointer& getBackgroundPipeline();