[osg-users] Clip planes and instanced rendering
Wojciech Lewandowski
w.p.lewandowski at gmail.com
Tue Apr 9 04:23:32 PDT 2019
Hi Alberto,
You may need to add support for clip planes via gl_ClipVertex or
gl_ClipDistance to your shaders (which one depends on GLSL version used
-see
https://stackoverflow.com/questions/19125628/how-does-gl-clipvertex-work-relative-to-gl-clipdistance).
My experience with these vars was not always positive, though. I remember
times when I was unable to use them and once had to do my own cliping in
vertex shader (=major PITA). But maybe these days newer drivers or OSG
version make it easier.
Cheers,
WL
wt., 9 kwi 2019 o 12:41 Alberto Luaces <aluaces at udc.es> napisał(a):
> Hi,
>
> I want to set a clipping plane for my scene, but it is not working for
> instanced geometries. I have not found any resource telling that
> clipping planes are ignored by GLSL.
>
> Simple test: if I make the following modifications to osgforest,
>
> diff --git a/examples/osgforest/osgforest.cpp
> b/examples/osgforest/osgforest.cpp
> index 5f569de66..d5eb2c0a6 100644
> --- a/examples/osgforest/osgforest.cpp
> +++ b/examples/osgforest/osgforest.cpp
> @@ -36,6 +36,7 @@
> #include <osg/TexEnv>
> #include <osg/VertexProgram>
> #include <osg/FragmentProgram>
> +#include <osg/ClipNode>
>
> #include <osgDB/ReadFile>
> #include <osgDB/FileUtils>
> @@ -1487,7 +1488,11 @@ int main( int argc, char **argv )
> viewer.addEventHandler(new
> osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
>
> // add model to viewer.
> - viewer.setSceneData( ttm->createScene(numTreesToCreate,
> maxNumTreesPerCell) );
> + osg::Node *ttmnode = ttm->createScene(numTreesToCreate,
> maxNumTreesPerCell);
> + osg::ClipNode *cn = new osg::ClipNode;
> + cn->addClipPlane(new osg::ClipPlane(0, osg::Vec4d(1, 0, 0, -500)));
> + cn->addChild(ttmnode);
> + viewer.setSceneData( cn );
>
>
> return viewer.run();
>
> ...the terrain and the trees are split by my additional clipping plane,
> except when the trees are instances; in that case they are drawn as
> normal.
>
> How can I make clipping planes work for instanced rendering?
>
> Thanks!
>
> --
> Alberto
>
> _______________________________________________
> 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/20190409/ecec7751/attachment.html>
More information about the osg-users
mailing list