15#define OSG_CullingSet 1
26#define COMPILE_WITH_SHADOW_OCCLUSION_CULLING
58 _frustum.transformProvidingInverse(matrix);
63 itr->transformProvidingInverse(matrix);
69 if (
this==&cs)
return *
this;
109 sitr->second.transformProvidingInverse(matrix);
116 oitr->transformProvidingInverse(matrix);
186 inline bool isCulled(
const std::vector<Vec3>& vertices)
191 if (!
_frustum.contains(vertices))
return true;
207 if (itr->contains(vertices))
return true;
220 if (!
_frustum.contains(bb))
return true;
236 if (itr->contains(bb))
return true;
249 if (!
_frustum.contains(bs))
return true;
256#ifdef COMPILE_WITH_SHADOW_OCCLUSION_CULLING
266 if (itr->contains(bs))
return true;
284 itr->second.pushCurrentMask();
289#ifdef COMPILE_WITH_SHADOW_OCCLUSION_CULLING
296 itr->pushCurrentMask();
312 itr->second.popCurrentMask();
316#ifdef COMPILE_WITH_SHADOW_OCCLUSION_CULLING
323 itr->popCurrentMask();
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
Vec3f Vec3
Definition Vec3:21
BoundingBoxd BoundingBox
Definition BoundingBox:257
BoundingSphered BoundingSphere
Definition BoundingSphere:308
Matrixd Matrix
Definition Matrix:27
Vec4f Vec4
Definition Vec4:21
std::vector< Node * > NodePath
A vector of Nodes pointers which is used to describe the path from a root node to a descendant.
Definition Node:47
vec_type & center()
Returns the center of the bounding sphere.
Definition BoundingSphere:77
value_type & radius()
Returns the radius of the bounding sphere.
Definition BoundingSphere:83
void popOccludersCurrentMask(NodePath &nodePath)
MaskValues
Definition CullingSet:126
@ VIEW_FRUSTUM_SIDES_CULLING
Definition CullingSet:128
@ SMALL_FEATURE_CULLING
Definition CullingSet:134
@ ENABLE_ALL_CULLING
Definition CullingSet:139
@ DEFAULT_CULLING
Definition CullingSet:136
@ NEAR_PLANE_CULLING
Definition CullingSet:129
@ SHADOW_OCCLUSION_CULLING
Definition CullingSet:135
@ VIEW_FRUSTUM_CULLING
Definition CullingSet:131
@ FAR_PLANE_CULLING
Definition CullingSet:130
@ NO_CULLING
Definition CullingSet:127
Polytope & getFrustum()
Definition CullingSet:149
bool isCulled(const std::vector< Vec3 > &vertices)
Definition CullingSet:186
Vec4 & getPixelSizeVector()
Definition CullingSet:161
void getStateFrustumList(StateFrustumList &sfl)
Definition CullingSet:154
Vec4 _pixelSizeVector
Definition CullingSet:350
std::vector< ShadowVolumeOccluder > OccluderList
Definition CullingSet:121
void popCurrentMask()
Definition CullingSet:302
const Polytope & getFrustum() const
Definition CullingSet:150
void resetCullingMask()
Definition CullingSet:329
OccluderList _occluderList
Definition CullingSet:349
StateFrustumList & getStateFrustumList()
Definition CullingSet:155
void setSmallFeatureCullingPixelSize(float value)
Threshold at which small features are culled.
Definition CullingSet:166
int Mask
Definition CullingSet:123
void set(const CullingSet &cs)
Definition CullingSet:82
std::pair< osg::ref_ptr< osg::StateSet >, osg::Polytope > StateFrustumPair
Definition CullingSet:34
void addStateFrustum(StateSet *stateset, Polytope &polytope)
Definition CullingSet:152
float getSmallFeatureCullingPixelSize() const
Definition CullingSet:170
float clampedPixelSize(const Vec3 &v, float radius) const
Compute the pixel of an object at position v, with specified radius.
Definition CullingSet:180
CullingSet(const CullingSet &cs, const Matrix &matrix, const Vec4 &pixelSizeVector)
Definition CullingSet:50
float pixelSize(const Vec3 &v, float radius) const
Compute the pixel of an object at position v, with specified radius.
Definition CullingSet:174
Mask _mask
Definition CullingSet:346
void addOccluder(ShadowVolumeOccluder &cv)
Definition CullingSet:157
void setFrustum(Polytope &cv)
Definition CullingSet:147
const Vec4 & getPixelSizeVector() const
Definition CullingSet:162
std::vector< StateFrustumPair > StateFrustumList
Definition CullingSet:35
bool isCulled(const BoundingBox &bb)
Definition CullingSet:215
CullingSet(const CullingSet &cs)
Definition CullingSet:39
float & getSmallFeatureCullingPixelSize()
Definition CullingSet:168
void setCullingMask(Mask mask)
Definition CullingSet:144
float _smallFeatureCullingPixelSize
Definition CullingSet:351
bool isCulled(const BoundingSphere &bs)
Definition CullingSet:244
Polytope _frustum
Definition CullingSet:347
float pixelSize(const BoundingSphere &bs) const
Compute the pixel of a bounding sphere.
Definition CullingSet:177
StateFrustumList _stateFrustumList
Definition CullingSet:348
void setPixelSizeVector(const Vec4 &v)
Definition CullingSet:159
void pushCurrentMask()
Definition CullingSet:274
void set(const CullingSet &cs, const Matrix &matrix, const Vec4 &pixelSizeVector)
Definition CullingSet:92
void disableAndPushOccludersCurrentMask(NodePath &nodePath)
float clampedPixelSize(const BoundingSphere &bs) const
Compute the pixel of a bounding sphere.
Definition CullingSet:183
Mask getCullingMask() const
Definition CullingSet:145
static osg::Vec4 computePixelSizeVector(const Viewport &W, const Matrix &P, const Matrix &M)
A Polytope class for representing convex clipping volumes made up of a set of planes.
Definition Polytope:26
ShadowVolumeOccluder is a helper class for implementing shadow occlusion culling.
Definition ShadowVolumeOccluder:27
Stores a set of modes and attributes which represent a set of OpenGL state.
Definition StateSet:46
Encapsulate OpenGL glViewport.
Definition Viewport:24
#define OSG_EXPORT
Definition Export:39