Hi Damian,
Fragment shader branching is extremely fast nowadays, so I would not
worry here to much. If the uniform is set at the top at the view's
camera stateset, the branch prediction will do its job here.
If you are rendering from the same point of view, you could also simply
do a rendering to multiple render targets and let the views display the
resulting FBO.
The last option is to use the new pragmatic shader composition and to
use a define inside the shader which is defined only in one view.
Cheers
Sebastian
Hi,
I've exhausted what references I could find without really coming up with a
good way of doing this, so I am hoping someone can advise me on an efficient
method of achieving the following outcome in OSG.
I have an arbitrary, large number of nodes scene that I don't control the
contents of before it's loaded. (eg, assume a giant world scene that is created
by an artist)
I would like to render the same scene in two views, without duplicating the
nodes or assets (memory constraints). Lets say View A renders the scene as
normal, View B renders the scene in an alternate mode (lets say, changes the
output pixel from colour to greyscale for discussion purposes).
The current method uses a bool Uniform that is set on each camera and the fragment shader
checks the bool to tell which view it is rendering in and changes the output pixel
accordingly. This seems "bad" to me. It works, but surely there's got to be a
better way than doing a branch (or multiple branches) in the fragment shader.
Ideally I would create two statesets (with optimal shaders etc), and switch
between them at render time.
So I was thinking I might be able to use one of the various callback methods. Eg, I could
attach an update callback to each model in the scene that checks "something"
unique to each view, and sets the state as appropriate. However, I'm not sure if the
update callback is called once for each view, or only once per frame etc. If the update
callback is called per view, what's a fast way to check which view is the current render
pass etc? Would a better method be to use the draw callback on Drawables perhaps?
Thank for any help/advice you can give me.
Cheers,
Damian
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=63246#63246
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org