I'm working on a similar problem: rendering a large vector field as several
arrows, all with different positions and orientations. If I multiparent the
Geometry to several PAT nodes, the cull time cost is quite high.
 
I'm looking at adding support for ARB_draw_instanced to reduce both the cull
and draw time. Right now, I'm attacking it as a new PrimitiveSet,
"DrawArraysInstanced", which works essentially like the DrawArrays
PrimitiveSet but emits a glDrawArraysInstancedARB() command to effect the
rendering. Making some progress, but it's not there yet (and I'll also have
to add support for glDrawElementsInstancedARB). I expect I'll contribute
this back to OSG if I get it running.
 
Paul Martz
Skew Matrix Software LLC
http://www.skew-matrix.com <http://www.skew-matrix.com/> 
+1 303 859 9466



  _____  

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David
Spilling
Sent: Friday, November 28, 2008 9:22 AM
To: OpenSceneGraph Users
Subject: [osg-users] Performance query : Drawing lots of "instances" of
avertex array


Dear All,
 
I have a geometry with a simple heightfield type vertex array; I'm also
using VBO. I want to repeat that VBO in quite a lot of places.
 
The heighfield can be considered as a terrain "tile" (e.g. 100m x 100m) ,
with which I want to tile a much larger area (e.g. >1km x 1km).
 
The method I have so far implemented is to have the following scenegraph:
 
     Group
 /       |      \
/        |        \
G1    G2    G3
\       |         /
 \      |       /
   Tile with VBO and vertex shader
 
where G1..Gn are simple groups which set a tile_offset uniform. The vertex
shader on the tile uses the tile_offset to modify the vertexes for each
tile. This all works OK.
 
However, I am concerned that this is not the best route for high performance
when the tile count is quite high. e.g. is it better for G1...Gn to be
matrix transforms (presumably not, although an easy thing for me to test).
Is this a good example for the geometry instancing extensions?
 
So, does anybody have any good advice for doing this kind of thing in a
better way within OSG? Pointers or examples (or even hints) would be
appreciated...
 
Thanks in advance,

David

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to