mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01: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.edit1() = _deferredFramebuffer->getLightingFramebuffer();
|
||||
outputs.edit2() = _deferredFramebuffer->getDeferredFramebuffer();
|
||||
|
||||
gpu::doInBatch("PrepareDeferred::run", args->_context, [&](gpu::Batch& batch) {
|
||||
batch.enableStereo(false);
|
||||
|
|
|
@ -78,8 +78,8 @@ class PrepareDeferred {
|
|||
public:
|
||||
// Inputs: primaryFramebuffer and lightingModel
|
||||
using Inputs = render::VaryingSet2 <gpu::FramebufferPointer, LightingModelPointer>;
|
||||
// Output: DeferredFramebuffer, LightingFramebuffer
|
||||
using Outputs = render::VaryingSet2<DeferredFramebufferPointer, gpu::FramebufferPointer>;
|
||||
// Output: DeferredFramebuffer, LightingFramebuffer, the framebuffer to be used for mirrors (same as DeferredFramebuffer)
|
||||
using Outputs = render::VaryingSet3<DeferredFramebufferPointer, gpu::FramebufferPointer, gpu::FramebufferPointer>;
|
||||
|
||||
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 deferredFramebuffer = prepareDeferredOutputs.getN<PrepareDeferred::Outputs>(0);
|
||||
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.
|
||||
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);
|
||||
|
||||
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++) {
|
||||
task.addJob<RenderMirrorTask>("RenderMirrorTask" + std::to_string(i) + "Depth" + std::to_string(depth), mirrorInputs, i, cullFunctor, depth);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue