diff --git a/apps/openmw/mwrender/distortion.cpp b/apps/openmw/mwrender/distortion.cpp index 2ca2ace65b..ed90944245 100644 --- a/apps/openmw/mwrender/distortion.cpp +++ b/apps/openmw/mwrender/distortion.cpp @@ -2,6 +2,8 @@ #include +#include "postprocessor.hpp" + namespace MWRender { void DistortionCallback::drawImplementation( @@ -10,6 +12,11 @@ namespace MWRender osg::State* state = renderInfo.getState(); size_t frameId = state->getFrameStamp()->getFrameNumber() % 2; + PostProcessor* postProcessor = dynamic_cast(renderInfo.getCurrentCamera()->getUserData()); + + if (!postProcessor || bin->getStage()->getFrameBufferObject() != postProcessor->getPrimaryFbo(frameId)) + return; + mFBO[frameId]->apply(*state); const osg::Texture* tex diff --git a/components/sceneutil/extradata.cpp b/components/sceneutil/extradata.cpp index 5e91830bba..e616880697 100644 --- a/components/sceneutil/extradata.cpp +++ b/components/sceneutil/extradata.cpp @@ -37,7 +37,8 @@ namespace SceneUtil osg::StateSet* stateset = node.getOrCreateStateSet(); - stateset->setRenderBinDetails(14, "Distortion", osg::StateSet::OVERRIDE_RENDERBIN_DETAILS); + stateset->setNestRenderBins(false); + stateset->setRenderBinDetails(14, "Distortion", osg::StateSet::OVERRIDE_PROTECTED_RENDERBIN_DETAILS); stateset->addUniform(new osg::Uniform("distortionStrength", distortionStrength)); stateset->setAttributeAndModes(depth, osg::StateAttribute::ON);