mirror of
https://github.com/overte-org/overte.git
synced 2025-04-13 04:49:43 +02:00
portals shouldn't flip
This commit is contained in:
parent
5159367b4c
commit
c608e82f22
4 changed files with 9 additions and 5 deletions
|
@ -299,6 +299,7 @@ public:
|
|||
_cachedArgsPointer->_blitFramebuffer = args->_blitFramebuffer;
|
||||
_cachedArgsPointer->_ignoreItem = args->_ignoreItem;
|
||||
_cachedArgsPointer->_mirrorDepth = args->_mirrorDepth;
|
||||
_cachedArgsPointer->_numMirrorFlips = args->_numMirrorFlips;
|
||||
|
||||
ViewFrustum srcViewFrustum = args->getViewFrustum();
|
||||
ItemID portalExitID = args->_scene->getItem(mirror.id).computeMirrorView(srcViewFrustum);
|
||||
|
@ -306,9 +307,10 @@ public:
|
|||
args->_blitFramebuffer = _mirrorFramebuffer;
|
||||
args->_ignoreItem = portalExitID != Item::INVALID_ITEM_ID ? portalExitID : mirror.id;
|
||||
args->_mirrorDepth = _depth;
|
||||
args->_numMirrorFlips += portalExitID != Item::INVALID_ITEM_ID ? 0 : 1;
|
||||
|
||||
gpu::doInBatch("SetupMirrorTask::run", args->_context, [&](gpu::Batch& batch) {
|
||||
bool shouldMirror = _depth % 2 == (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
bool shouldMirror = args->_numMirrorFlips % 2 == (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
batch.setContextMirrorViewCorrection(shouldMirror);
|
||||
});
|
||||
|
||||
|
@ -366,7 +368,7 @@ public:
|
|||
args->_batch = &batch;
|
||||
|
||||
if (cachedArgs) {
|
||||
bool shouldMirror = cachedArgs->_mirrorDepth % 2 == (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
bool shouldMirror = cachedArgs->_numMirrorFlips % 2 == (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
batch.setContextMirrorViewCorrection(shouldMirror);
|
||||
}
|
||||
|
||||
|
@ -390,11 +392,12 @@ public:
|
|||
args->_batch = nullptr;
|
||||
});
|
||||
|
||||
// Restore the blit framebuffer after we've sampled from it
|
||||
if (cachedArgs) {
|
||||
// Restore the blit framebuffer after we've sampled from it
|
||||
args->_blitFramebuffer = cachedArgs->_blitFramebuffer;
|
||||
args->_ignoreItem = cachedArgs->_ignoreItem;
|
||||
args->_mirrorDepth = cachedArgs->_mirrorDepth;
|
||||
args->_numMirrorFlips = cachedArgs->_numMirrorFlips;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ void ToneMapAndResample::run(const RenderContextPointer& renderContext, const In
|
|||
batch.setViewportTransform(destViewport);
|
||||
batch.setProjectionTransform(glm::mat4());
|
||||
batch.resetViewTransform();
|
||||
bool shouldMirror = _depth >= (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
bool shouldMirror = args->_numMirrorFlips >= (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
batch.setPipeline(shouldMirror ? _mirrorPipeline : _pipeline);
|
||||
|
||||
batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(srcBufferSize, args->_viewport));
|
||||
|
|
|
@ -162,6 +162,7 @@ namespace render {
|
|||
|
||||
ItemID _ignoreItem { 0 };
|
||||
size_t _mirrorDepth { 0 };
|
||||
size_t _numMirrorFlips { 0 };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@ void UpsampleToBlitFramebuffer::run(const RenderContextPointer& renderContext, c
|
|||
batch.setViewportTransform(viewport);
|
||||
batch.setProjectionTransform(glm::mat4());
|
||||
batch.resetViewTransform();
|
||||
bool shouldMirror = _depth >= (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
bool shouldMirror = args->_numMirrorFlips >= (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE);
|
||||
batch.setPipeline(shouldMirror ? _mirrorPipeline : _pipeline);
|
||||
|
||||
batch.setModelTransform(gpu::Framebuffer::evalSubregionTexcoordTransform(bufferSize, viewport));
|
||||
|
|
Loading…
Reference in a new issue