From 1c3b2b2554530f9379ecef772186f5ea1f3e753e Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 20 Aug 2003 12:50:54 +0000 Subject: [PATCH] Standardised the culling flags between CullingSet and CullStack, and made ENABLE_ALL_CULLING enable all culling including the near and far plane. DEFAULT_CULLING is now used for the default as uses the same original values as ENABLE_ALL_CULLING once did - view frustum culling with near and far culling. SceneView now uses DEFAULT_CULLING. --- include/osg/CullStack | 8 +++++++- include/osg/CullingSet | 19 +++++++++++++++---- src/osg/CullStack.cpp | 8 ++------ src/osg/CullingSet.cpp | 2 +- src/osgUtil/SceneView.cpp | 2 +- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/include/osg/CullStack b/include/osg/CullStack index 59f1096c4..4cfd458b7 100644 --- a/include/osg/CullStack +++ b/include/osg/CullStack @@ -38,11 +38,17 @@ class SG_EXPORT CullStack enum CullingModeValues { NO_CULLING = 0x0, - VIEW_FRUSTUM_CULLING = 0x1, + VIEW_FRUSTUM_SIDES_CULLING = 0x1, NEAR_PLANE_CULLING = 0x2, FAR_PLANE_CULLING = 0x4, + VIEW_FRUSTUM_CULLING = VIEW_FRUSTUM_SIDES_CULLING| + NEAR_PLANE_CULLING| + FAR_PLANE_CULLING, SMALL_FEATURE_CULLING = 0x8, SHADOW_OCCLUSION_CULLING = 0x10, + DEFAULT_CULLING = VIEW_FRUSTUM_SIDES_CULLING| + SMALL_FEATURE_CULLING| + SHADOW_OCCLUSION_CULLING, ENABLE_ALL_CULLING = VIEW_FRUSTUM_CULLING| SMALL_FEATURE_CULLING| SHADOW_OCCLUSION_CULLING diff --git a/include/osg/CullingSet b/include/osg/CullingSet index 6dfb65c28..171d7a8ad 100644 --- a/include/osg/CullingSet +++ b/include/osg/CullingSet @@ -50,10 +50,21 @@ class SG_EXPORT CullingSet : public Referenced enum MaskValues { - VIEW_FRUSTUM_CULLING = 0x1, - SMALL_FEATURE_CULLING = 0x2, - SHADOW_OCCLUSION_CULLING = 0x4, - ALL_CULLING = 0xffffffff + NO_CULLING = 0x0, + VIEW_FRUSTUM_SIDES_CULLING = 0x1, + NEAR_PLANE_CULLING = 0x2, + FAR_PLANE_CULLING = 0x4, + VIEW_FRUSTUM_CULLING = VIEW_FRUSTUM_SIDES_CULLING| + NEAR_PLANE_CULLING| + FAR_PLANE_CULLING, + SMALL_FEATURE_CULLING = 0x8, + SHADOW_OCCLUSION_CULLING = 0x10, + DEFAULT_CULLING = VIEW_FRUSTUM_SIDES_CULLING| + SMALL_FEATURE_CULLING| + SHADOW_OCCLUSION_CULLING, + ENABLE_ALL_CULLING = VIEW_FRUSTUM_CULLING| + SMALL_FEATURE_CULLING| + SHADOW_OCCLUSION_CULLING }; void setCullingMask(Mask mask) { _mask = mask; } diff --git a/src/osg/CullStack.cpp b/src/osg/CullStack.cpp index 3b392d5e4..050fab7dd 100644 --- a/src/osg/CullStack.cpp +++ b/src/osg/CullStack.cpp @@ -17,7 +17,7 @@ using namespace osg; CullStack::CullStack() { - _cullingMode = ENABLE_ALL_CULLING; + _cullingMode = DEFAULT_CULLING; _LODScale = 1.0f; _smallFeatureCullingPixelSize = 2.0f; _frustumVolume=-1.0f; @@ -151,11 +151,7 @@ void CullStack::pushProjectionMatrix(RefMatrix* matrix) cullingSet->getFrustum().transformProvidingInverse(*matrix); // set the culling mask ( There should be a more elegant way!) Nikolaus H. - osg::CullingSet::Mask mask = 0; - if( _cullingMode&VIEW_FRUSTUM_CULLING) mask |= osg::CullingSet::VIEW_FRUSTUM_CULLING; - if( _cullingMode&SMALL_FEATURE_CULLING) mask |= osg::CullingSet::SMALL_FEATURE_CULLING; - if( _cullingMode&SHADOW_OCCLUSION_CULLING) mask |= osg::CullingSet::SHADOW_OCCLUSION_CULLING; - cullingSet->setCullingMask(mask); + cullingSet->setCullingMask(_cullingMode); // set the small feature culling. cullingSet->setSmallFeatureCullingPixelSize(_smallFeatureCullingPixelSize); diff --git a/src/osg/CullingSet.cpp b/src/osg/CullingSet.cpp index 54b00d1db..677a28964 100644 --- a/src/osg/CullingSet.cpp +++ b/src/osg/CullingSet.cpp @@ -16,7 +16,7 @@ using namespace osg; CullingSet::CullingSet() { - _mask = ALL_CULLING; + _mask = ENABLE_ALL_CULLING; _pixelSizeVector.set(0,0,0,1); _smallFeatureCullingPixelSize=1.0f; } diff --git a/src/osgUtil/SceneView.cpp b/src/osgUtil/SceneView.cpp index 0eec64477..e4c5fa31d 100644 --- a/src/osgUtil/SceneView.cpp +++ b/src/osgUtil/SceneView.cpp @@ -38,7 +38,7 @@ SceneView::SceneView(DisplaySettings* ds) _computeNearFar = CullVisitor::COMPUTE_NEAR_FAR_USING_BOUNDING_VOLUMES; - _cullingMode = osg::CullStack::ENABLE_ALL_CULLING; + _cullingMode = osg::CullStack::DEFAULT_CULLING; _LODScale = 1.0f; _smallFeatureCullingPixelSize = 3.0f;