diff --git a/interface/src/SecondaryCamera.cpp b/interface/src/SecondaryCamera.cpp index e71602b271..102f94b63d 100644 --- a/interface/src/SecondaryCamera.cpp +++ b/interface/src/SecondaryCamera.cpp @@ -206,12 +206,17 @@ void SecondaryCameraRenderTask::build(JobModel& task, const render::Varying& inp const auto cachedArg = task.addJob("SecondaryCamera"); const auto items = task.addJob("FetchCullSort", cullFunctor, render::ItemKey::TAG_BITS_1, render::ItemKey::TAG_BITS_1); assert(items.canCast()); + + // const auto lightingStageFramesAndZones = task.addJob("AssembleStages", items[0]); + const auto lightingStageFramesAndZones = task.addJob("AssembleStages", items); + if (isDeferred) { const render::Varying cascadeSceneBBoxes; - const auto renderInput = RenderDeferredTask::Input(items, cascadeSceneBBoxes).asVarying(); + const auto renderInput = RenderDeferredTask::Input(items, lightingStageFramesAndZones, cascadeSceneBBoxes).asVarying(); task.addJob("RenderDeferredTask", renderInput, false); } else { - task.addJob("Forward", items); + const auto renderInput = RenderForwardTask::Input(items, lightingStageFramesAndZones).asVarying(); + task.addJob("Forward", renderInput); } task.addJob("EndSecondaryCamera", cachedArg); } \ No newline at end of file diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp index 2c2a4e254c..555a0a1e41 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackendTransform.cpp @@ -29,9 +29,9 @@ void GLBackend::do_setProjectionTransform(const Batch& batch, size_t paramOffset } void GLBackend::do_setProjectionJitter(const Batch& batch, size_t paramOffset) { - _transform._projectionJitter.x = batch._params[paramOffset]._float; - _transform._projectionJitter.y = batch._params[paramOffset+1]._float; - _transform._invalidProj = true; + _transform._projectionJitter.x = batch._params[paramOffset]._float; + _transform._projectionJitter.y = batch._params[paramOffset+1]._float; + _transform._invalidProj = true; } void GLBackend::do_setViewportTransform(const Batch& batch, size_t paramOffset) { diff --git a/libraries/render-utils/src/AssembleLightingStageTask.cpp b/libraries/render-utils/src/AssembleLightingStageTask.cpp index 7ef5817edc..beb9f226d6 100644 --- a/libraries/render-utils/src/AssembleLightingStageTask.cpp +++ b/libraries/render-utils/src/AssembleLightingStageTask.cpp @@ -7,46 +7,49 @@ // #include "AssembleLightingStageTask.h" +#include -void FetchCurrentFrames::run(const render::RenderContextPointer& renderContext, Outputs& outputs) { +void FetchCurrentFrames::run(const render::RenderContextPointer& renderContext, Output& output) { auto lightStage = renderContext->_scene->getStage(); assert(lightStage); - outputs.edit0() = std::make_shared(lightStage->_currentFrame); + output.edit0() = std::make_shared(lightStage->_currentFrame); auto backgroundStage = renderContext->_scene->getStage(); assert(backgroundStage); - outputs.edit1() = std::make_shared(backgroundStage->_currentFrame); + output.edit1() = std::make_shared(backgroundStage->_currentFrame); auto hazeStage = renderContext->_scene->getStage(); assert(hazeStage); - outputs.edit2() = std::make_shared(hazeStage->_currentFrame); + output.edit2() = std::make_shared(hazeStage->_currentFrame); auto bloomStage = renderContext->_scene->getStage(); assert(bloomStage); - outputs.edit3() = std::make_shared(bloomStage->_currentFrame); + output.edit3() = std::make_shared(bloomStage->_currentFrame); } -void RenderUpdateLightingStagesTask::build(JobModel& task, const render::Varying& input, render::Varying& output) { - const auto& items = input.get(); +void AssembleLightingStageTask::build(JobModel& task, const render::Varying& input, render::Varying& output) { + const auto& fetchCullSortOut = input.get(); + const auto& items = fetchCullSortOut[0]; + //const auto& items = input.get(); + const auto& lights = items[RenderFetchCullSortTask::LIGHT]; const auto& metas = items[RenderFetchCullSortTask::META]; // Clear Light, Haze, Bloom, and Skybox Stages and render zones from the general metas bucket const auto zones = task.addJob("ZoneRenderer", metas); // Draw Lights just add the lights to the current list of lights to deal with. NOt really gpu job for now. - task.addJob("DrawLight", lights); + task.addJob("DrawLight", lights); // Fetch the current frame stacks from all the stages const auto currentStageFrames = task.addJob("FetchCurrentFrames"); - const auto lightFrame = currentStageFrames.getN(0); + /* const auto lightFrame = currentStageFrames.getN(0); const auto backgroundFrame = currentStageFrames.getN(1); const auto hazeFrame = currentStageFrames.getN(2); const auto bloomFrame = currentStageFrames.getN(3); - - outputs.edit0() = currentStageFrames; - outputs.edit1() = zones; +*/ + output = Output(currentStageFrames, zones); } diff --git a/libraries/render-utils/src/AssembleLightingStageTask.h b/libraries/render-utils/src/AssembleLightingStageTask.h index bd440d23a1..c32d5f9a30 100644 --- a/libraries/render-utils/src/AssembleLightingStageTask.h +++ b/libraries/render-utils/src/AssembleLightingStageTask.h @@ -22,19 +22,20 @@ class FetchCurrentFrames { public: - using Outputs = render::VaryingSet4; - using JobModel = render::Job::ModelO; + using Output = render::VaryingSet4; + using JobModel = render::Job::ModelO; FetchCurrentFrames() {} - void run(const render::RenderContextPointer& renderContext, Outputs& outputs); + void run(const render::RenderContextPointer& renderContext, Output& output); }; class AssembleLightingStageTask { public: - using Inputs = RenderFetchCullSortTask::BucketList; - using Outputs = render::VaryingSet2; - using JobModel = render::Task::ModelIO; + // using Input = RenderFetchCullSortTask::BucketList; + using Input = RenderFetchCullSortTask::Output; + using Output = render::VaryingSet2; + using JobModel = render::Task::ModelIO; AssembleLightingStageTask() {} diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 62990cb819..c1b72c9ca6 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -84,7 +84,7 @@ public: class RenderDeferredTaskDebug { public: using Input = render::VaryingSet9; // using Config = RenderDeferredTaskConfig; using JobModel = render::Task::ModelI; @@ -152,11 +152,12 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto& spatialSelection = fetchedItems[1]; // Extract the Lighting Stages Current frame ( and zones) - const auto& lightingStageInputs = inputs[1]; + //const auto lightingStageInputs = inputs[1]; + const auto lightingStageInputs = input[1]; // Fetch the current frame stacks from all the stages - const auto& currentStageFrames = lightingStageInputs[0]; - const auto& lightFrame = currentStageFrames[0]; - const auto& backgroundFrame = currentStageFrames[1]; + const auto currentStageFrames = lightingStageInputs[0]; + const auto lightFrame = currentStageFrames[0]; + const auto backgroundFrame = currentStageFrames[1]; const auto& hazeFrame = currentStageFrames[2]; const auto& bloomFrame = currentStageFrames[3]; diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 078b792d57..81f158918c 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -137,14 +137,14 @@ signals: class RenderDeferredTask { public: - using Input = render::VaryingSet3; + using Input = render::VaryingSet3; using Config = RenderDeferredTaskConfig; using JobModel = render::Task::ModelI; RenderDeferredTask(); void configure(const Config& config); - void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, bool renderShadows); + void build(JobModel& task, const render::Varying& input, render::Varying& output, bool renderShadows); private: static const render::Varying addSelectItemJobs(JobModel& task, diff --git a/libraries/render-utils/src/RenderForwardTask.h b/libraries/render-utils/src/RenderForwardTask.h index 0a2684555d..60d3dbd54d 100755 --- a/libraries/render-utils/src/RenderForwardTask.h +++ b/libraries/render-utils/src/RenderForwardTask.h @@ -19,12 +19,12 @@ class RenderForwardTask { public: - using Input = render::VaryingSet2; + using Input = render::VaryingSet2; using JobModel = render::Task::ModelI; RenderForwardTask() {} - void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs); + void build(JobModel& task, const render::Varying& input, render::Varying& output); }; class PrepareFramebuffer { diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index a753722489..2232deb3d6 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -59,7 +59,7 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende // FIXME: calling this here before the zones/lights are drawn during the deferred/forward passes means we're actually using the frames from the previous draw // Fetch the current frame stacks from all the stages const auto currentFrames = task.addJob("FetchCurrentFrames"); - const auto lightFrame = currentFrames.getN(0); + const auto lightFrame = currentFrames.getN(0); const auto setupOutput = task.addJob("ShadowSetup", lightFrame); const auto queryResolution = setupOutput.getN(1); diff --git a/libraries/render-utils/src/RenderViewTask.cpp b/libraries/render-utils/src/RenderViewTask.cpp index 53e50d244e..d9ba4e1a56 100644 --- a/libraries/render-utils/src/RenderViewTask.cpp +++ b/libraries/render-utils/src/RenderViewTask.cpp @@ -21,8 +21,8 @@ void RenderViewTask::build(JobModel& task, const render::Varying& input, render: const auto items = task.addJob("FetchCullSort", cullFunctor, tagBits, tagMask); assert(items.canCast()); - - const auto lightingStageFramesAndZones = task.addJob("AssembleStages", items[0]); + // const auto lightingStageFramesAndZones = task.addJob("AssembleStages", items[0]); + const auto lightingStageFramesAndZones = task.addJob("AssembleStages", items); if (isDeferred) { // Warning : the cull functor passed to the shadow pass should only be testing for LOD culling. If frustum culling @@ -31,7 +31,8 @@ void RenderViewTask::build(JobModel& task, const render::Varying& input, render: const auto renderInput = RenderDeferredTask::Input(items, lightingStageFramesAndZones, cascadeSceneBBoxes).asVarying(); task.addJob("RenderDeferredTask", renderInput, true); } else { - task.addJob("Forward", items, lightingStageFramesAndZones); + const auto renderInput = RenderForwardTask::Input(items, lightingStageFramesAndZones).asVarying(); + task.addJob("Forward", renderInput); } } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 4ffc8730a7..0e9672a7f2 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -51,7 +51,7 @@ void ZoneRendererTask::build(JobModel& task, const Varying& input, Varying& outp output = zoneItems; } -void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) { +void SetupZones::run(const RenderContextPointer& context, const Input& input) { // Grab light, background, haze, and bloom stages and clear them auto lightStage = context->_scene->getStage(); assert(lightStage); @@ -70,7 +70,7 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) bloomStage->_currentFrame.clear(); // call render over the zones to grab their components in the correct order first... - render::renderItems(context, inputs); + render::renderItems(context, input); // Finally add the default lights and background: lightStage->_currentFrame.pushSunLight(lightStage->getDefaultLight()); diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 36d63a98d1..6eeee1293a 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -21,12 +21,12 @@ class SetupZones { public: - using Inputs = render::ItemBounds; - using JobModel = render::Job::ModelI; + using Input = render::ItemBounds; + using JobModel = render::Job::ModelI; SetupZones() {} - void run(const render::RenderContextPointer& context, const Inputs& inputs); + void run(const render::RenderContextPointer& context, const Input& input); }; class ZoneRendererConfig : public render::Task::Config { @@ -51,14 +51,14 @@ public: static const render::Selection::Name ZONES_SELECTION; - using Inputs = render::ItemBounds; - using Outputs = render::ItemBounds; + using Input = render::ItemBounds; + using Output = render::ItemBounds; using Config = ZoneRendererConfig; - using JobModel = render::Task::ModelIO; + using JobModel = render::Task::ModelIO; ZoneRendererTask() {} - void build(JobModel& task, const render::Varying& inputs, render::Varying& output); + void build(JobModel& task, const render::Varying& input, render::Varying& output); void configure(const Config& config) { _maxDrawn = config.maxDrawn; }