<div dir="ltr"><div><br></div><div>If you have lots of similar objects (crates boxes and whatnot), maybe GPU instancing would be a way to speed up draw calls. We've managed to get 15000 cars on screen at high frame rates using OpenGL instancing, with several hundred polys per instance.<br><br></div>Christian<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-13 10:09 GMT+01:00 Robert Osfield <span dir="ltr"><<a href="mailto:robert.osfield@gmail.com" target="_blank">robert.osfield@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Alexandre,<br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On 12 November 2015 at 20:30, Alexandre Vaillancourt <span dir="ltr"><<a href="mailto:alexandre.vaillancourt.list@gmail.com" target="_blank">alexandre.vaillancourt.list@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Thanks for your reply, and of course I should have specified the version. It's 3.2.0, we're planning to update to the most recent one within the next 3 months. <br><br></div>I have attached the screenshot. I'm not authorized to post anything not approved by the higher end so the visuals have been "painted", but the stats are there.<br></div></div></blockquote><div><br></div></span><div>From the screenshots the cull and draw dispatch don't look particular high, but the draw GPU is clear bottleneck and will be the primary cause of slow down.<br><br></div><div>The number of objects that the OSG and hence OpenGL is dealing with isn't massive so optimizing the scene graph structure probably won't gain you too much.  Not to say you might not be able to optimize things further but for now I'd suggest you best spend your efforts looking at how to optimize what is happening on the GPU.<br><br></div><div>You could look at threading - CullThreadPerCameraDrawThreadPerContext would be worth trying just to see how it changes things.  As you are GPU limited I don't expect this to make a big differents but since calling "viewer.setThreadingModel(osgViewer::Viewer::CullThreadPerCameraDrawThreadPerContext" is single line addition to your app it shouldn't take to long to test out.<br><br></div><div>On the GPU optimization side there are lots of different things that can cause bottlenecks, each one will have a different set of solutions.  It's rather open ended topic, so you'll need to do a range of benchmark tests to find out what is the main bottleneck on the GPU.  One easy test would be to change the resolution of the different windows - such as half in each dimension to cut the fill requirements to a 1/4.  If you run the benchmarks in this configuration and look at how the GPU stats change you'll get an idea of relative load on vertex vs fragment processing.  For instance if the performance doesn't change much when you change resolution then you are likely to be vertex processing limited, while if the performance does vary significantly then you'll be fill limited.<span class="HOEnZb"><font color="#888888"><br><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>Robert.<br></div><div> </div></font></span></div></div></div>
<br>_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
<br></blockquote></div><br></div>