[osg-users] I created 10000 cylinder, osg run very slow

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Wed Jul 22 06:00:14 PDT 2015


Am 22.07.2015 um 14:26 schrieb Trajce Nikolov NICK:
> Hi Sebastian,
>
> Yah, this is off topic now, but once here: re: trees, I am getting on 
> older card ~3 mil @ 60Hz with geometry shaders :-). Static though. Why 
> you are using Matrices in Image/Texture for vegetation, or you have 
> SpeedTree like vegetation?
I'm not doing billboards but instanced models(smallest have around 20 
Vertices + normals + tex-coords)  . So i need apart from ground color, 
scale, index into an TextureArray (for diversity) and rotation some 
position of course. A no I'm not using matrices but the angle of 
rotation around my up vector.
Using billboards and geometry shaders your figures are of course 
absolutly okay. I'll try the vertexDivisor if I have the time. I guess 
for dynamic streaming it will outperform classical texture objects (I'll 
have to test this for particle effects anyways)
> But anyway, thanks for disabling resize/mipmaping .. not sure (getting 
> old :-)) can not recall if we did these for the instancing, but for 
> sure I will try it in  the lighting system I am working on now .. 
> Thanks a bunch for these hints !
You're welcome.
>
> Nick
>
> On Wed, Jul 22, 2015 at 2:17 PM, Sebastian Messerschmidt 
> <sebastian.messerschmidt at gmx.de 
> <mailto:sebastian.messerschmidt at gmx.de>> wrote:
>
>     Am 22.07.2015 um 14:12 schrieb Trajce Nikolov NICK:
>>     Hi Sebastian,
>>
>>     few months ago I tested something (was the lighting system)
>>     implementation with updates via osg::Image and osg::Texture - not
>>     related to instancing at all, but the mentioned method. My
>>     colleague then did benchmarking and the update of the Image (and
>>     the texture) by OSG was terribly slow - the same thing using raw
>>     OpenGL calls out-performed the one from OSG. I also remember
>>     Robert implemented then the Vertex Attribute Divisor wrapper for
>>     OSG so it might really need example of these with various
>>     techniques ...
>     Thats right for data dynamically changed via texture. Static data
>     is incredibly fast however (I'm talking ~1mio trees @30Hz min) .
>     Getting slightly off-topic here, but:
>     Are you sure you had resizing and mipmapping disabled for the
>     texture/image? That is certainly a performance killer.
>>
>>     Thanks for the ping :-)
>>
>>     Nick
>>
>>     On Wed, Jul 22, 2015 at 1:59 PM, Sebastian Messerschmidt
>>     <sebastian.messerschmidt at gmx.de
>>     <mailto:sebastian.messerschmidt at gmx.de>> wrote:
>>
>>         Hi Nick,
>>
>>         The implementation is almost to complicated. Using instancing
>>         with osg::Image and a texture almost beats all other
>>         implementations I've tested so far in terms of complexity and
>>         performance.
>>         Maybe we should some more examples for this to osg.
>>         Cheers
>>         Sebastian
>>
>>>         Hi Luo,
>>>
>>>         have a look at this paper - it is OSG related with GL calls
>>>         (In the latest OSG release there are OSG wrappers for most
>>>         of them). It will help you with large number of instancing
>>>         and controlling each instance separately
>>>
>>>         http://3dcgtutorials.blogspot.com/2013/09/instancing-with-openscenegraph-part-ii.html
>>>
>>>         Hope it helps
>>>         Nick
>>>
>>>         On Wed, Jul 22, 2015 at 9:25 AM, Sebastian Messerschmidt
>>>         <sebastian.messerschmidt at gmx.de
>>>         <mailto:sebastian.messerschmidt at gmx.de>> wrote:
>>>
>>>             Hi,
>>>
>>>                 Hi,
>>>
>>>                 I need to use cylinder to simulate the “ladder”.  So
>>>                 there are many cylinder to create. I new a
>>>                 osg::Geode , and then use it to new 10000
>>>                 osg::MatrixTransform, all these osg::MatrixTransform
>>>                 were added to one group.
>>>
>>>                 But the program runs very very slow.
>>>
>>>             Are you testing in debug mode?
>>>
>>>                 In fact I create the same scene using opengl, the
>>>                 program runs quickly.
>>>
>>>             Are you using the osg::Shapedrawable for the cylinder
>>>             shape? Try to replace it with a simple triangle for
>>>             testing to see if the geometry or the transforms are
>>>             your bottleneck.
>>>
>>>             I'd use hw-instancing for this amount of copies of a
>>>             simple geometry or bake the transformations into big
>>>             geometries representing hundreds of cylinders each.
>>>
>>>             Also if the 10000 elements are spatially separable and
>>>             thus not all of them in the view at the same time you
>>>             should use some grouping to balance your scenegraph.
>>>             Simply putting 10000 transforms into one group most
>>>             likely will kill performance, as all children will have
>>>             to be traversed each frame.
>>>
>>>
>>>
>>>                 How can I upgrade my program?
>>>                 thanks.
>>>
>>>             Can you provide a more detailed description or an
>>>             example? Your question is too open to get you specific
>>>             answers.
>>>
>>>
>>>                 Thank you!
>>>
>>>                 Cheers,
>>>                 LUO
>>>
>>>                 ------------------
>>>                 Read this topic online here:
>>>                 http://forum.openscenegraph.org/viewtopic.php?p=64386#64386
>>>
>>>
>>>
>>>
>>>                 Attachments:
>>>                 http://forum.openscenegraph.org//files/mfc_osg_124.cpp
>>>
>>>
>>>                 _______________________________________________
>>>                 osg-users mailing list
>>>                 osg-users at lists.openscenegraph.org
>>>                 <mailto: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
>>>             <mailto:osg-users at lists.openscenegraph.org>
>>>             http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>>
>>>
>>>
>>>         -- 
>>>         trajce nikolov nick
>>>
>>>
>>>         _______________________________________________
>>>         osg-users mailing list
>>>         osg-users at lists.openscenegraph.org
>>>         <mailto: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
>>         <mailto:osg-users at lists.openscenegraph.org>
>>         http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>>
>>
>>     -- 
>>     trajce nikolov nick
>>
>>
>>     _______________________________________________
>>     osg-users mailing list
>>     osg-users at lists.openscenegraph.org
>>     <mailto: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
>     <mailto:osg-users at lists.openscenegraph.org>
>     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
>
> -- 
> trajce nikolov nick
>
>
> _______________________________________________
> 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/20150722/9644c4f0/attachment-0003.htm>


More information about the osg-users mailing list