Re: [osg-users] Problem with 2 RTT cameras

2013-02-22 Thread Glenn Waldron
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

2013-02-21 Thread Robert Osfield
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

2013-02-21 Thread Glenn Waldron
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

2013-02-21 Thread Robert Osfield
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

2013-02-20 Thread Aurelien Albert
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