Added computation of occluders volume scaled relative to the frustum volume,
all volumes computed in eye coords.
This commit is contained in:
@@ -28,11 +28,15 @@ class SG_EXPORT CullStack
|
||||
|
||||
enum CullingModeValues
|
||||
{
|
||||
NO_CULLING = 0x00,
|
||||
NO_CULLING = 0x0,
|
||||
VIEW_FRUSTUM_CULLING = 0x1,
|
||||
SMALL_FEATURE_CULLING = 0x2,
|
||||
SHADOW_OCCLUSION_CULLING = 0x4,
|
||||
ENABLE_ALL_CULLING = 0xffffffff
|
||||
NEAR_PLANE_CULLING = 0x2,
|
||||
FAR_PLANE_CULLING = 0x4,
|
||||
SMALL_FEATURE_CULLING = 0x8,
|
||||
SHADOW_OCCLUSION_CULLING = 0x10,
|
||||
ENABLE_ALL_CULLING = VIEW_FRUSTUM_CULLING|
|
||||
SMALL_FEATURE_CULLING|
|
||||
SHADOW_OCCLUSION_CULLING
|
||||
};
|
||||
|
||||
typedef unsigned int CullingMode;
|
||||
@@ -58,6 +62,9 @@ class SG_EXPORT CullStack
|
||||
void pushModelViewMatrix(osg::Matrix* matrix);
|
||||
void popModelViewMatrix();
|
||||
|
||||
inline float getFrustumVolume() { if (_frustumVolume<0.0f) computeFrustumVolume(); return _frustumVolume; }
|
||||
|
||||
|
||||
void setLODBias(const float bias) { _LODBias = bias; }
|
||||
const float getLODBias() const { return _LODBias; }
|
||||
|
||||
@@ -174,6 +181,9 @@ class SG_EXPORT CullStack
|
||||
CullingStack _projectionCullingStack;
|
||||
CullingStack _modelviewCullingStack;
|
||||
|
||||
void computeFrustumVolume();
|
||||
float _frustumVolume;
|
||||
|
||||
unsigned int _bbCornerNear;
|
||||
unsigned int _bbCornerFar;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user