Thanks Robert, and Alistair for the detailed info. I have done this in the past as you mentioned with geometry shaders by passing the centers and radiuses as vertex array and attribs and expanding them into spheres in a geometry shader. Can not use it now though. So your another hint was the sample from the osg repo. I will have a look at it.
I have to model rain drops on wind shield, and not aligned to screen but in 3d. I have set of rain drop "models" from Modo and looking around for the best approach to get these models randomly placed in 3D on a geometry (the wind shield) as many as possible. Thanks a bunch again for the hints. Nick On Mon, Dec 2, 2013 at 5:44 PM, Alistair Baxter <[email protected]> wrote: > In order to render a large amount of identical primitives, you probably > want to use either instancing or geometry shaders. If your target hardware > supports OpenGl 3.x features, then the latter is better. You can use arrays > of per-vertex data to specify the differences between your spheres (radius, > colour etc), create your osg::geometry as a list of points and have your > geometry shader expand that into spheres. > > > > For the spheres themselves, it’s far quicker to create them as > camera-facing impostors, and have your fragment shader just draw spheres > for each of them (various examples are available on the web), which can be > lit as needs be. The trouble is that they will be flat, which might not be > ideal if many of your spheres intersect. You could at least save some > triangles by generating camera-facing hemispheres. I’m not sure what the > effect would be if you changed the z-values in the fragment shader, but I > am advised that’s not a good idea, because it means z-buffer-testing can’t > be done before your fragment shader is run. > > > > If you’re stuck with older or mobile hardware, then (extensions > permitting) you can use shader instancing to do the same thing. Create a > single sphere (or hemisphere or quad, for an impostor) , put your > per-instance data into a texture, and sample that texture in your vertex > shader (ensure you set your texture filtering modes appropriately). There > is an example osgdrawinstanced supplied with the OpenSceneGraph > distribution that shows you basically how that is done. > > > > If you don’t have the instancing extension available (MESA software > rendering, some older mobile OpenGLES 2 chipsets, VERY old desktop > hardware) you need to just make sure you render them in large batches of > vertices, which means making 1, or only a few Geometries containing > multiple spheres (or quads if you can still use a vertex shader to orient > them). > > > > Quite a lot of ideas there for things to try, I think, apologies if any of > that is a bit confusing. > > > > > > Alistair Baxter > Software Engineer > ________________________________ > Have you downloaded your FREE copy of > *FieldMove Clino? *Find out more about our app for iPhone and Android > smartphones: http://news.mve.com/fieldmoveclino > > Midland Valley Exploration Ltd. > 144 West George Street > Glasgow G2 2HG > United Kingdom > > Tel: +44 (0) 141 332 2681 > Fax: +44 (0) 141 332 6792 > > The structural geology experts > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Trajce Nikolov > NICK > *Sent:* 02 December 2013 13:50 > *To:* OpenSceneGraph Users > *Subject:* [osg-users] rendering millions of spheres > > > > Hi Community, > > > > I remember someone has faced this problem and I think with some solution. > Anyone knowing some pointers willing to share some hints, techniques? > > > > Thanks a bunch > > > > Nick > > > > -- > trajce nikolov nick > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > -- trajce nikolov nick
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

