[osg-users] Clip planes and instanced rendering

Alberto Luaces aluaces at udc.es
Tue Apr 9 03:41:38 PDT 2019


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

How can I make clipping planes work for  instanced rendering?



More information about the osg-users mailing list