14 #ifndef OSG_SHADOWVOLUMEOCCLUDER
15 #define OSG_SHADOWVOLUMEOCCLUDER 1
17 #include <osg/Polytope>
18 #include <osg/ConvexPlanarOccluder>
36 _nodePath(svo._nodePath),
37 _projectionMatrix(svo._projectionMatrix),
38 _occluderVolume(svo._occluderVolume),
39 _holeList(svo._holeList) {}
51 inline void disableResultMasks();
53 inline void pushCurrentMask();
54 inline void popCurrentMask();
61 if (_projectionMatrix.valid())
return matrix==*_projectionMatrix;
92 bool contains(
const std::vector<Vec3>& vertices);
104 _occluderVolume.transformProvidingInverse(matrix);
105 for(HoleList::iterator itr=_holeList.begin();
106 itr!=_holeList.end();
109 itr->transformProvidingInverse(matrix);
132 for(HoleList::iterator itr=
_holeList.begin();
136 itr->setResultMask(0);
146 for(HoleList::iterator itr=
_holeList.begin();
150 itr->pushCurrentMask();
160 for(HoleList::iterator itr=
_holeList.begin();
164 itr->popCurrentMask();
std::vector< Polytope > HoleList
void setResultMask(ClippingMask mask)
std::vector< ShadowVolumeOccluder > ShadowVolumeOccluderList
void setNodePath(NodePath &nodePath)
const HoleList & getHoleList() const
void disableResultMasks()
ShadowVolumeOccluder(const ShadowVolumeOccluder &svo)
void transformProvidingInverse(const osg::Matrix &matrix)
ref_ptr< const RefMatrix > _projectionMatrix
bool matchProjectionMatrix(const osg::Matrix &matrix) const
const Polytope & getOccluder() const
std::vector< Node * > NodePath
const NodePath & getNodePath() const