On 22.10.2015 18:36, Sebastian Messerschmidt wrote:
Hi,
I have a couple of elements in the scene which data variance is set to DYNAMIC
to change them thread safe.
This will effectively kill performance as cull and draw are no longer executed
in parallel. So if I'd set those elements to STATIC, where is the safe place to
update them?
For instance I have some osg::Text which has to be changed every frame. Is it
safe to change it in between the update and renderingTraversals?
Also, what about updateOperation? Is considered to modify drawables from there?
Cheers
Sebastian
Hi Sebastian,
First of all, I didn't know that cull and draw traversal can execute in
parallel on a single scene. I always thought that cull and draw can only
execute sequential (serial) in all available threading models. Anyway, what I
know for sure is that update and draw traversal can indeed execute in parallel
within some threading models, and that is the reason why we need DYNAMIC
variance, to tell drawing thread it must process dynamic elements first, and
then immediately allow execution of the update traversal in a main thread while
STATIC elements are still being rendered in a draw thread. I also suspect that
next frame cannot start before all the static+dynamic elements are rendered. If
I'm correct on this one, then few DYNAMIC elements should not affect frame rate
at all, because there is plenty of time to do the processing while STATIC
elements are still being rendered.
You might also want to have a look at osgBullet project where calculations are
done in its own thread and then the results are synchronised with a scene graph
in an update traversal through a triple buffering mechanism.
I also did a benchmark recently that shows what is the effect of different
threading models on a geometry intensive scene. If someone is interested in
results let me know...
Best Regards,
Robert Milharcic
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org