Re: [osg-users] Problem with 2 RTT cameras
On Thu, Feb 21, 2013 at 9:39 AM, Robert Osfield robert.osfi...@gmail.comwrote: Hi Glenn, On 21 February 2013 13:58, Glenn Waldron gwald...@gmail.com wrote: Thanks guys. I figured this one out. Here was the issue: Turns out I fibbed about not sharing data: I assigned a common stateset to both cameras prior to configuring each one for RTT. osg::StateSet* common = new osg::StateSet(); ... cam1-setStateSet(common); cam2-setStateSet(common); ... // do the RTT setup here Nothing interesting in the common StateSet itself, but I'm guessing that osg::Camera under the hood uses that StateSet for some of the FBO attachment information, which then ended up being shared. The FBO attachment should be done totally independently from the Camera's StateSet. I can't yet think of reason that sharing a StateSet would cause this problem, so am concerned that there is a bug lurking somewhere. Could you modify one of the OSG's osgprerender examples to illustrate this problem, if we an reproduce the problem then we'll have chance of finding out what is going on and fix any bug that doesn't reveal itself. OK. I will do this but it might be a while due to a full plate at the moment. I can move that common StateSet up to a parent group and all it well. Thanks again for the comments. Glad to see you've found a workaround, but what you did does still sounds like it was reasonable. Did the StateSet apply any of the textures that are being written to? No, the StateSet had only a BlendFunc and a couple GL modes. No texture attributes. Glenn / @glennwaldron ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Problem with 2 RTT cameras
Hi Glenn, I haven't seen problems with multiple RTT Camera's unintentionally sharing their attachments, use of multiple RTT Camera's is pretty common so I would have thought that others would have seen the same problem. The best I can suggest to step through the traversal of CullVisitor::apply(Camera) to see what the flow of control is doing and what data is it applying. Robert. On 21 February 2013 01:22, Glenn Waldron gwald...@gmail.com wrote: Hi folks. I'm stumped by an RTT problem and looking for help! I have two RTT cameras that share the same subgraph. My goal is to render the subgraph with two different projection matrices (not unlike in the PSSM example). But I'm having a weird problem. Each RTT camera is created separately, and each bound to its own Texture2D. Otherwise they are identical, and they share no data. Then in the CULL traversal I do this: cam1-setViewMatrix( viewMatrix ); cam1-setProjectionMatrix( projMatrix1); cam1-accept( nv ); cam2-setViewMatrix( viewMatrix ); cam2-setProjectionMatrix( projMatrix2 ); cam2-accept( nv ); The problem: both cameras render to the SAME texture (the texture attached to cam1), one right over top of the other. I confirmed this by attaching an osg::Image and writing it to disk. If I traverse just ONE of the cameras, everything works correctly. But if I traverse them both (as in the snippet above), both cameras render to the FIRST camera's texture. If I reverse the order of traversal, both cameras render to cam2's texture. (As I said, each camera was created separately and each has its own Texture2D instance.) Any ideas? What's my mistake? Glenn Waldron / @glennwaldron ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Problem with 2 RTT cameras
Thanks guys. I figured this one out. Here was the issue: Turns out I fibbed about not sharing data: I assigned a common stateset to both cameras prior to configuring each one for RTT. osg::StateSet* common = new osg::StateSet(); ... cam1-setStateSet(common); cam2-setStateSet(common); ... // do the RTT setup here Nothing interesting in the common StateSet itself, but I'm guessing that osg::Camera under the hood uses that StateSet for some of the FBO attachment information, which then ended up being shared. I can move that common StateSet up to a parent group and all it well. Thanks again for the comments. Glenn Waldron / @glennwaldron On Thu, Feb 21, 2013 at 7:20 AM, Robert Osfield robert.osfi...@gmail.comwrote: Hi Glenn, I haven't seen problems with multiple RTT Camera's unintentionally sharing their attachments, use of multiple RTT Camera's is pretty common so I would have thought that others would have seen the same problem. The best I can suggest to step through the traversal of CullVisitor::apply(Camera) to see what the flow of control is doing and what data is it applying. Robert. On 21 February 2013 01:22, Glenn Waldron gwald...@gmail.com wrote: Hi folks. I'm stumped by an RTT problem and looking for help! I have two RTT cameras that share the same subgraph. My goal is to render the subgraph with two different projection matrices (not unlike in the PSSM example). But I'm having a weird problem. Each RTT camera is created separately, and each bound to its own Texture2D. Otherwise they are identical, and they share no data. Then in the CULL traversal I do this: cam1-setViewMatrix( viewMatrix ); cam1-setProjectionMatrix( projMatrix1); cam1-accept( nv ); cam2-setViewMatrix( viewMatrix ); cam2-setProjectionMatrix( projMatrix2 ); cam2-accept( nv ); The problem: both cameras render to the SAME texture (the texture attached to cam1), one right over top of the other. I confirmed this by attaching an osg::Image and writing it to disk. If I traverse just ONE of the cameras, everything works correctly. But if I traverse them both (as in the snippet above), both cameras render to the FIRST camera's texture. If I reverse the order of traversal, both cameras render to cam2's texture. (As I said, each camera was created separately and each has its own Texture2D instance.) Any ideas? What's my mistake? Glenn Waldron / @glennwaldron ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Problem with 2 RTT cameras
Hi Glenn, On 21 February 2013 13:58, Glenn Waldron gwald...@gmail.com wrote: Thanks guys. I figured this one out. Here was the issue: Turns out I fibbed about not sharing data: I assigned a common stateset to both cameras prior to configuring each one for RTT. osg::StateSet* common = new osg::StateSet(); ... cam1-setStateSet(common); cam2-setStateSet(common); ... // do the RTT setup here Nothing interesting in the common StateSet itself, but I'm guessing that osg::Camera under the hood uses that StateSet for some of the FBO attachment information, which then ended up being shared. The FBO attachment should be done totally independently from the Camera's StateSet. I can't yet think of reason that sharing a StateSet would cause this problem, so am concerned that there is a bug lurking somewhere. Could you modify one of the OSG's osgprerender examples to illustrate this problem, if we an reproduce the problem then we'll have chance of finding out what is going on and fix any bug that doesn't reveal itself. I can move that common StateSet up to a parent group and all it well. Thanks again for the comments. Glad to see you've found a workaround, but what you did does still sounds like it was reasonable. Did the StateSet apply any of the textures that are being written to? Robert. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Problem with 2 RTT cameras
Hi, Not sure about that, but you traverse the both camera with the same cull visitor instance... I think render target is assigned within the cull visitor, so you maybe should use 2 cull visitor different instances. Cheers, Aurelien -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=52803#52803 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org