Ticket #211 (new patch)

Opened 9 months ago

Last modified 9 months ago

FBOViewport does not work in a client-server configuration

Reported by: rstanchak Assigned to: unassigned
Priority: minor Milestone: 1.8 Release
Component: System Version: 1.8
Keywords: FBO FBOViewport MultiDisplayWindow cluster client server fbo Cc:
Completion:

Description

The first problem is that FBOViewport.cpp has a number of FCD fields that store OpenGL handles, and these are being included in the syncronization step between client and servers. This doesn't make sense to me since these are probably going to be different machines altogether. Fixing this involved adding these fields to the RemoteAspect? field filter, and then modifying MultiDisplayWindow? to actually check whether the field should be updated.

The second problem is MultiDisplayWindow? seems to assume that all the Viewports attached to a particular window should be cropped and resized when tiling the display. With the FBO viewport this is completely incorrect behavior since the scene is being rendered to a texture, not to an actual window. This brings up the question of where the rendering should take place — 1. Should the FBO texture be rendered on one computing node and then the texture distributed to other nodes? or 2. Should the FBO texture be rendered on each of the display nodes? The former is more computationally efficient but would involve transmitting a potentially large texture across the network at a high frequency.

My patch takes the 2nd approach and has each display node recompute the FBO texture. This creates some wasted effort, but was simpler to implement. As such, in the section of MultiDisplayWindow? where the viewports are tiled, I basically just made this cropping conditional on the viewport not being an FBOViewport.

Attachments

29FBOTexture_Cluster.cpp (13.7 kB) - added by rstanchak on 11/19/07 11:36:41.
Modified tutorial file to work in cluster setting
FlexiviewWindow.hpp (3.6 kB) - added by rstanchak on 11/19/07 11:38:52.
support class for the tutorial file
OSGMultiDisplayWindow.cpp (19.5 kB) - added by rstanchak on 11/19/07 11:40:08.
support class for the tutorial file
OSGMultiDisplayWindow.2.cpp (19.5 kB) - added by rstanchak on 11/19/07 11:40:35.
patched MultiDisplayWindow? implementation
OSGFBOViewport.cpp (66.0 kB) - added by rstanchak on 11/19/07 11:52:53.
Patched FBOViewport implementation

Change History

11/19/07 11:36:41 changed by rstanchak

  • attachment 29FBOTexture_Cluster.cpp added.

Modified tutorial file to work in cluster setting

11/19/07 11:38:52 changed by rstanchak

  • attachment FlexiviewWindow.hpp added.

support class for the tutorial file

11/19/07 11:40:08 changed by rstanchak

  • attachment OSGMultiDisplayWindow.cpp added.

support class for the tutorial file

11/19/07 11:40:35 changed by rstanchak

  • attachment OSGMultiDisplayWindow.2.cpp added.

patched MultiDisplayWindow? implementation

11/19/07 11:52:53 changed by rstanchak

  • attachment OSGFBOViewport.cpp added.

Patched FBOViewport implementation

11/19/07 11:54:59 changed by rstanchak

  • type changed from defect to patch.

Sorry for the double post. The third and fourth attachments are identical.