Last week I've upgraded to Ogre 1.8.1 the Paradise Engine. All went well, but after some time using the editor I remarked that the geometry disappeared from all viewports after some minutes of use. After the "blackout" the only signal of life is that the viewport background color is updated without any problem. Also, closing all viewports and creating new ones doesn't solve the problem: the new viewports are "empty" too.
Well, here the hell starts:
Since the render pipeline that I use in the editor is quite complex (involves compositors & RTTs for composting the final image), I'll baypass all that and I'll explain the facts:
- At a first time, I thought it could be caused to a problem with Qt/Ogre, but not since the background color is working. Or a OGL specific bug but: it happens in DX9 and OGL.
- Also, I thought that maybe the geometry was just not rendered. No -> The FPS is normal, like if it was rendered. (Except on some complex scenes, that the fps is ~40 when usually it's around 20)
- Or maybe it was something related with the new ogre 1.8 Depth buffer sharing system -> I don't think, see next section
- Or it could be something going wrong with compositors but... even regular overlays weren't rendered!
Code: Select all
sceneMgr->setSpecialCaseRenderQueueMode(Ogre::SceneManager::SCRQM_INCLUDE);
sceneMgr->addSpecialCaseRenderQueue(104);
// Change some movable objects render queue group
// !!! ---> If I don't do that, then there is no blackout
v->getSelectionTexture()->getBuffer()->getRenderTarget()->_beginUpdate();
v->getSelectionTexture()->getBuffer()->getRenderTarget()->_updateViewport(0, true); // If commented, then there is no "blackout"
v->getSelectionTexture()->getBuffer()->getRenderTarget()->_endUpdate();
// Restore some movable objects render queue group
sceneMgr->setSpecialCaseRenderQueueMode(Ogre::SceneManager::SCRQM_EXCLUDE);
sceneMgr->clearSpecialCaseRenderQueues();
BUT, the blackout is not at this very moment, it's one time the SkyX Moon or the SkyX Volumetric clouds are in the camera view. So... what the hell? why only these two renderables? ---> Because of it's render queue groups:
SkyX skydome -> render queue group = 5 (RENDER_QUEUE_SKIES_EARLY)
SkyX Moon-> render queue group = 6 (RENDER_QUEUE_SKIES_EARLY+1)
SkyX Vol clouds -> render queue group = 30 (RENDER_QUEUE_3)
But, if the SkyX Moon render queue group is set to 5, then there is not any blackout. The same with the vol clouds.
Conclusion: (by the moment...)
There should be a bug in 1.8.X regarding render queue groups, since if I don't change them(just before updating the RTT used to render the selected objects highlights) or if I don't update the RTT then there is no blackout
Questions:
What kind of "bug" could make all the goemetry dissapear from all viewports? (even internal RTTs used in the picking system: they just don't have any content, after the blackout). Maybe some kind of corruption of the depth buffer(but I've tried to create all them in different pools, so each RTT has an unique depth buffer, so I don't think that's the cause)? Or some kind of problem with the camera matrices? (but creating new viewports->camera should make it working again no?)
...But how is possible that just changing the render group of movable objects can lead to this?
Any kind of help/idea is highly appreciated. This bug is driving me crazy, I don't know what more debug or where to search.
Thanks in advance!
Xavier