mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-08 18:47:46 +02:00
fix mirrors in deferred
This commit is contained in:
parent
56860bea99
commit
093cf29778
3 changed files with 5 additions and 3 deletions
|
@ -286,6 +286,7 @@ void PrepareDeferred::run(const RenderContextPointer& renderContext, const Input
|
||||||
|
|
||||||
outputs.edit0() = _deferredFramebuffer;
|
outputs.edit0() = _deferredFramebuffer;
|
||||||
outputs.edit1() = _deferredFramebuffer->getLightingFramebuffer();
|
outputs.edit1() = _deferredFramebuffer->getLightingFramebuffer();
|
||||||
|
outputs.edit2() = _deferredFramebuffer->getDeferredFramebuffer();
|
||||||
|
|
||||||
gpu::doInBatch("PrepareDeferred::run", args->_context, [&](gpu::Batch& batch) {
|
gpu::doInBatch("PrepareDeferred::run", args->_context, [&](gpu::Batch& batch) {
|
||||||
batch.enableStereo(false);
|
batch.enableStereo(false);
|
||||||
|
|
|
@ -78,8 +78,8 @@ class PrepareDeferred {
|
||||||
public:
|
public:
|
||||||
// Inputs: primaryFramebuffer and lightingModel
|
// Inputs: primaryFramebuffer and lightingModel
|
||||||
using Inputs = render::VaryingSet2 <gpu::FramebufferPointer, LightingModelPointer>;
|
using Inputs = render::VaryingSet2 <gpu::FramebufferPointer, LightingModelPointer>;
|
||||||
// Output: DeferredFramebuffer, LightingFramebuffer
|
// Output: DeferredFramebuffer, LightingFramebuffer, the framebuffer to be used for mirrors (same as DeferredFramebuffer)
|
||||||
using Outputs = render::VaryingSet2<DeferredFramebufferPointer, gpu::FramebufferPointer>;
|
using Outputs = render::VaryingSet3<DeferredFramebufferPointer, gpu::FramebufferPointer, gpu::FramebufferPointer>;
|
||||||
|
|
||||||
using JobModel = render::Job::ModelIO<PrepareDeferred, Inputs, Outputs>;
|
using JobModel = render::Job::ModelIO<PrepareDeferred, Inputs, Outputs>;
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
|
||||||
const auto prepareDeferredOutputs = task.addJob<PrepareDeferred>("PrepareDeferred", prepareDeferredInputs);
|
const auto prepareDeferredOutputs = task.addJob<PrepareDeferred>("PrepareDeferred", prepareDeferredInputs);
|
||||||
const auto deferredFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(0);
|
const auto deferredFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(0);
|
||||||
const auto lightingFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(1);
|
const auto lightingFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(1);
|
||||||
|
const auto mirrorTargetFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(2);
|
||||||
|
|
||||||
// draw a stencil mask in hidden regions of the framebuffer.
|
// draw a stencil mask in hidden regions of the framebuffer.
|
||||||
task.addJob<PrepareStencil>("PrepareStencil", scaledPrimaryFramebuffer);
|
task.addJob<PrepareStencil>("PrepareStencil", scaledPrimaryFramebuffer);
|
||||||
|
@ -166,7 +167,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren
|
||||||
task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
|
task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
|
||||||
|
|
||||||
if (depth < RenderMirrorTask::MAX_MIRROR_DEPTH) {
|
if (depth < RenderMirrorTask::MAX_MIRROR_DEPTH) {
|
||||||
const auto mirrorInputs = RenderMirrorTask::Inputs(mirrors, scaledPrimaryFramebuffer, jitter).asVarying();
|
const auto mirrorInputs = RenderMirrorTask::Inputs(mirrors, mirrorTargetFramebuffer, jitter).asVarying();
|
||||||
for (size_t i = 0; i < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; i++) {
|
for (size_t i = 0; i < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; i++) {
|
||||||
task.addJob<RenderMirrorTask>("RenderMirrorTask" + std::to_string(i) + "Depth" + std::to_string(depth), mirrorInputs, i, cullFunctor, depth);
|
task.addJob<RenderMirrorTask>("RenderMirrorTask" + std::to_string(i) + "Depth" + std::to_string(depth), mirrorInputs, i, cullFunctor, depth);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue