diff --git a/modules/ovis/src/ovis.cpp b/modules/ovis/src/ovis.cpp index 44723c2cc..ccf389289 100644 --- a/modules/ovis/src/ovis.cpp +++ b/modules/ovis/src/ovis.cpp @@ -359,18 +359,26 @@ public: void setCompositors(const std::vector& names) { - Viewport* vp = frameSrc->getViewport(0); CompositorManager& cm = CompositorManager::getSingleton(); + // this should be applied to all owned render targets + Ogre::RenderTarget* targets[] = {frameSrc, rWin, depthRTT}; - cm.removeCompositorChain(vp); // remove previous configuration - - for(size_t i = 0; i < names.size(); i++) + for(int j = 0; j < 3; j++) { - if (!cm.addCompositor(vp, names[i])) { - LogManager::getSingleton().logError("Failed to add compositor: " + names[i]); - continue; + Ogre::RenderTarget* tgt = targets[j]; + if(!tgt || (frameSrc == rWin && tgt == rWin)) continue; + + Viewport* vp = tgt->getViewport(0); + cm.removeCompositorChain(vp); // remove previous configuration + + for(size_t i = 0; i < names.size(); i++) + { + if (!cm.addCompositor(vp, names[i])) { + LogManager::getSingleton().logError("Failed to add compositor: " + names[i]); + continue; + } + cm.setCompositorEnabled(vp, names[i], true); } - cm.setCompositorEnabled(vp, names[i], true); } }