[osg-users] multiple matrix transfromations cause severe slowness in performance

Andrew Cunningham osg-users at a-cunningham.com
Tue Oct 8 16:21:52 PDT 2019

Hi Gianluca,
We have performance problems with scene graphs when we end up with
thousands of nodes and "small=low triangle count" geometries at each node.
After investigation, it is clearly not so much the scene graph traversal
itself, as the large number of small "primitive sets". I tested this by
writing a node visitor that collected all the primitive sets from our scene
graph into one Geode - thus removed all overhead of scene graph
traversal.The performance, was better, but nothing special. However,
coalescing all the primitive sets into one primitive set caused a massive
FPS improvement. Orders of magnitude.


On Tue, Oct 8, 2019 at 7:47 AM Voerman, L. <l.voerman at rug.nl> wrote:

> Hi Gianluca,
> I have a feeling something is wrong with your setup, as we do these sort
> of graphs in our viewer and get way higher framerates.
> I get about 60 fps rendering 1920x1080x2 (=red-green stereo) on my Geforce
> 1080,
> with a static scene of 1.1 M vertices (886k triangels)
> and in a similar shape ~9200 matixTransforms each with a ref to mostly the
> same tree (4.5k vertices, vk triangels)
> A few questions:
> where seems to be the bottelneck when you enable the stats?
> What os/gfx combo do you use?
> if you dump out the scene and load it into the osgviewer, does the
> framerate improve?
> are you sure you're not useing a windows debug build?
> Regards, Laurens.
> On Tue, Oct 8, 2019 at 2:21 PM Gianluca Natale <natale at europe.altair.com>
> wrote:
>> Hi all,
>> I have a performance issue in my scenegraph that I cannot completely
>> understand.
>> My scenegraph is made by a main matrix transform, with these 2 children:
>>    - One geode that renders a big object on screen (the geometry in the
>>    drawable can take up to several thousands vertices);
>>    - One group node that in its turn has 200 children, each made by a
>>    matrix transform and a geode. The drawable in each of those geodes is very
>>    simple (no more than 100 vertices)
>> It seems that this configuration allows me to have at most 50 fps.
>> I feel that this should be rendered much faster.
>> So I made some experiment. If I remove the 200 matrix transform attached
>> to the group node I mentioned above,
>> and directly apply the transformations to the vertices of the geometries
>> in the 200 drawables of the small objects, performance improves a lot, till
>> 100 fps.
>> I investigatd a bit inside OSG code (I’m using OG ver.3.4.1), and
>> apparently the only overhead due to the additional matrix transformations
>> is a call to glLoadMatrix (I’m using the old ffp).
>> How can you explain such an improvement?
>> My real problem is that I would like to replace the 200 matrix
>> transfromations with 200 auto-transform matrices, since I’d like those
>> small objects to keep constant size on screen.
>> But if I do that, I cannot remove the 200 transformations at all, and
>> I’ll end up with a bad performance.
>> Any idea about what I can try to make rendering of my scenegraph faster?
>> Thanks,
>> Gianluca
>> _______________________________________________
>> osg-users mailing list
>> osg-users at lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20191008/b1b9abf0/attachment.html>

More information about the osg-users mailing list