OpenSceneGraph
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
osg::CullStack Class Reference

A CullStack class which accumulates the current project, modelview matrices and the CullingSet. More...

Inheritance diagram for osg::CullStack:
Inheritance graph
[legend]

Public Types

typedef std::vector< ShadowVolumeOccluderOccluderList
 
typedef std::vector< CullingSetCullingStack
 
typedef fast_back_stack< ref_ptr< RefMatrix > > MatrixStack
 
- Public Types inherited from osg::CullSettings
enum  VariablesMask {
  COMPUTE_NEAR_FAR_MODE = (0x1 << 0), CULLING_MODE = (0x1 << 1), LOD_SCALE = (0x1 << 2), SMALL_FEATURE_CULLING_PIXEL_SIZE = (0x1 << 3),
  CLAMP_PROJECTION_MATRIX_CALLBACK = (0x1 << 4), NEAR_FAR_RATIO = (0x1 << 5), IMPOSTOR_ACTIVE = (0x1 << 6), DEPTH_SORT_IMPOSTOR_SPRITES = (0x1 << 7),
  IMPOSTOR_PIXEL_ERROR_THRESHOLD = (0x1 << 8), NUM_FRAMES_TO_KEEP_IMPOSTORS_SPRITES = (0x1 << 9), CULL_MASK = (0x1 << 10), CULL_MASK_LEFT = (0x1 << 11),
  CULL_MASK_RIGHT = (0x1 << 12), CLEAR_COLOR = (0x1 << 13), CLEAR_MASK = (0x1 << 14), LIGHTING_MODE = (0x1 << 15),
  LIGHT = (0x1 << 16), DRAW_BUFFER = (0x1 << 17), READ_BUFFER = (0x1 << 18), NO_VARIABLES = 0x00000000,
  ALL_VARIABLES = 0x7FFFFFFF
}
 
enum  InheritanceMaskActionOnAttributeSetting { DISABLE_ASSOCIATED_INHERITANCE_MASK_BIT, DO_NOT_MODIFY_INHERITANCE_MASK }
 
enum  ComputeNearFarMode { DO_NOT_COMPUTE_NEAR_FAR = 0, COMPUTE_NEAR_FAR_USING_BOUNDING_VOLUMES, COMPUTE_NEAR_FAR_USING_PRIMITIVES, COMPUTE_NEAR_USING_PRIMITIVES }
 
enum  CullingModeValues {
  NO_CULLING = 0x0, VIEW_FRUSTUM_SIDES_CULLING = 0x1, NEAR_PLANE_CULLING = 0x2, FAR_PLANE_CULLING = 0x4,
  VIEW_FRUSTUM_CULLING, SMALL_FEATURE_CULLING = 0x8, SHADOW_OCCLUSION_CULLING = 0x10, CLUSTER_CULLING = 0x20,
  DEFAULT_CULLING, ENABLE_ALL_CULLING
}
 
typedef int InheritanceMask
 
typedef int CullingMode
 

Public Member Functions

 CullStack ()
 
 CullStack (const CullStack &cs)
 
 ~CullStack ()
 
void reset ()
 
void pushCullingSet ()
 
void popCullingSet ()
 
void setOccluderList (const ShadowVolumeOccluderList &svol)
 
ShadowVolumeOccluderListgetOccluderList ()
 
const ShadowVolumeOccluderListgetOccluderList () const
 
void pushViewport (osg::Viewport *viewport)
 
void popViewport ()
 
void pushProjectionMatrix (osg::RefMatrix *matrix)
 
void popProjectionMatrix ()
 
void pushModelViewMatrix (osg::RefMatrix *matrix, Transform::ReferenceFrame referenceFrame)
 
void popModelViewMatrix ()
 
float getFrustumVolume ()
 
float pixelSize (const Vec3 &v, float radius) const
 Compute the pixel size of an object at position v, with specified radius. More...
 
float pixelSize (const BoundingSphere &bs) const
 Compute the pixel size of the bounding sphere. More...
 
float clampedPixelSize (const Vec3 &v, float radius) const
 Compute the pixel size of an object at position v, with specified radius. More...
 
float clampedPixelSize (const BoundingSphere &bs) const
 Compute the pixel size of the bounding sphere. More...
 
void disableAndPushOccludersCurrentMask (NodePath &nodePath)
 
void popOccludersCurrentMask (NodePath &nodePath)
 
bool isCulled (const std::vector< Vec3 > &vertices)
 
bool isCulled (const BoundingBox &bb)
 
bool isCulled (const BoundingSphere &bs)
 
bool isCulled (const osg::Node &node)
 
void pushCurrentMask ()
 
void popCurrentMask ()
 
CullingStackgetClipSpaceCullingStack ()
 
CullingStackgetProjectionCullingStack ()
 
CullingStackgetModelViewCullingStack ()
 
CullingSetgetCurrentCullingSet ()
 
const CullingSetgetCurrentCullingSet () const
 
osg::ViewportgetViewport ()
 
const osg::ViewportgetViewport () const
 
osg::RefMatrixgetModelViewMatrix ()
 
const osg::RefMatrixgetModelViewMatrix () const
 
osg::RefMatrixgetProjectionMatrix ()
 
const osg::RefMatrixgetProjectionMatrix () const
 
osg::Matrix getWindowMatrix () const
 
const osg::RefMatrixgetMVPW ()
 
const osg::Vec3getReferenceViewPoint () const
 
void pushReferenceViewPoint (const osg::Vec3 &viewPoint)
 
void popReferenceViewPoint ()
 
const osg::Vec3getEyeLocal () const
 
const osg::Vec3getViewPointLocal () const
 
const osg::Vec3 getUpLocal () const
 
const osg::Vec3 getLookVectorLocal () const
 
MatrixStackgetProjectionStack ()
 
const MatrixStackgetProjectionStack () const
 
MatrixStackgetModelViewStack ()
 
const MatrixStackgetModelViewStack () const
 
MatrixStackgetMVPWStack ()
 
const MatrixStackgetMVPWStack () const
 
- Public Member Functions inherited from osg::CullSettings
 CullSettings ()
 
 CullSettings (ArgumentParser &arguments)
 
 CullSettings (const CullSettings &cs)
 
virtual ~CullSettings ()
 
CullSettingsoperator= (const CullSettings &settings)
 
virtual void setDefaults ()
 
void setInheritanceMask (InheritanceMask mask)
 Set the inheritance mask used in inheritCullSettings to control which variables get overwritten by the passed in CullSettings object. More...
 
InheritanceMask getInheritanceMask () const
 Get the inheritance mask used in inheritCullSettings to control which variables get overwritten by the passed in CullSettings object. More...
 
void setCullSettings (const CullSettings &settings)
 Set the local cull settings values from specified CullSettings object. More...
 
virtual void inheritCullSettings (const CullSettings &settings)
 Inherit the local cull settings variable from specified CullSettings object, according to the inheritance mask. More...
 
virtual void inheritCullSettings (const CullSettings &settings, unsigned int inheritanceMask)
 Inherit the local cull settings variable from specified CullSettings object, according to the inheritance mask. More...
 
void readEnvironmentalVariables ()
 read the environmental variables. More...
 
void readCommandLine (ArgumentParser &arguments)
 read the commandline arguments. More...
 
void setInheritanceMaskActionOnAttributeSetting (InheritanceMaskActionOnAttributeSetting action)
 
InheritanceMaskActionOnAttributeSetting getInheritanceMaskActionOnAttributeSetting () const
 
void applyMaskAction (unsigned int maskBit)
 Apply the action, specified by the InheritanceMaskActionOnAttributeSetting, to apply to the inheritance bit mask. More...
 
void setImpostorsActive (bool active)
 Switch the creation of Impostors on or off. More...
 
bool getImpostorsActive () const
 Get whether impostors are active or not. More...
 
void setImpostorPixelErrorThreshold (float numPixels)
 Set the impostor error threshold. More...
 
float getImpostorPixelErrorThreshold () const
 Get the impostor error threshold. More...
 
void setDepthSortImpostorSprites (bool doDepthSort)
 Set whether ImpostorSprite's should be placed in a depth sorted bin for rendering. More...
 
bool getDepthSortImpostorSprites () const
 Get whether ImpostorSprite's are depth sorted bin for rendering. More...
 
void setNumberOfFrameToKeepImpostorSprites (int numFrames)
 Set the number of frames that an ImpostorSprite is kept whilst not being beyond, before being recycled. More...
 
int getNumberOfFrameToKeepImpostorSprites () const
 Get the number of frames that an ImpostorSprite is kept whilst not being beyond, before being recycled. More...
 
void setComputeNearFarMode (ComputeNearFarMode cnfm)
 
ComputeNearFarMode getComputeNearFarMode () const
 
void setNearFarRatio (double ratio)
 
double getNearFarRatio () const
 
void setCullingMode (CullingMode mode)
 Set the culling mode for the CullVisitor to use. More...
 
CullingMode getCullingMode () const
 Returns the current CullingMode. More...
 
void setCullMask (osg::Node::NodeMask nm)
 
osg::Node::NodeMask getCullMask () const
 
void setCullMaskLeft (osg::Node::NodeMask nm)
 
osg::Node::NodeMask getCullMaskLeft () const
 
void setCullMaskRight (osg::Node::NodeMask nm)
 
osg::Node::NodeMask getCullMaskRight () const
 
void setLODScale (float scale)
 Set the LOD bias for the CullVisitor to use. More...
 
float getLODScale () const
 Get the LOD bias. More...
 
void setSmallFeatureCullingPixelSize (float value)
 Threshold at which small features are culled. More...
 
float getSmallFeatureCullingPixelSize () const
 Get the Small Feature Culling Pixel Size. More...
 
void setClampProjectionMatrixCallback (ClampProjectionMatrixCallback *cpmc)
 set the ClampProjectionMatrixCallback. More...
 
ClampProjectionMatrixCallbackgetClampProjectionMatrixCallback ()
 get the non const ClampProjectionMatrixCallback. More...
 
const ClampProjectionMatrixCallbackgetClampProjectionMatrixCallback () const
 get the const ClampProjectionMatrixCallback. More...
 
void write (std::ostream &out)
 Write out internal settings of CullSettings. More...
 

Protected Types

typedef fast_back_stack< ref_ptr< Viewport > > ViewportStack
 
typedef fast_back_stack< Vec3EyePointStack
 
typedef std::vector< osg::ref_ptr< osg::RefMatrix > > MatrixList
 

Protected Member Functions

void computeFrustumVolume ()
 
osg::RefMatrixcreateOrReuseMatrix (const osg::Matrix &value)
 

Protected Attributes

ShadowVolumeOccluderList _occluderList
 
MatrixStack _projectionStack
 
MatrixStack _modelviewStack
 
MatrixStack _MVPW_Stack
 
ViewportStack _viewportStack
 
EyePointStack _referenceViewPoints
 
EyePointStack _eyePointStack
 
EyePointStack _viewPointStack
 
CullingStack _clipspaceCullingStack
 
CullingStack _projectionCullingStack
 
CullingStack _modelviewCullingStack
 
unsigned int _index_modelviewCullingStack
 
CullingSet_back_modelviewCullingStack
 
float _frustumVolume
 
unsigned int _bbCornerNear
 
unsigned int _bbCornerFar
 
ref_ptr< osg::RefMatrix_identity
 
MatrixList _reuseMatrixList
 
unsigned int _currentReuseMatrixIndex
 
- Protected Attributes inherited from osg::CullSettings
InheritanceMask _inheritanceMask
 
InheritanceMaskActionOnAttributeSetting _inheritanceMaskActionOnAttributeSetting
 
ComputeNearFarMode _computeNearFar
 
CullingMode _cullingMode
 
float _LODScale
 
float _smallFeatureCullingPixelSize
 
ref_ptr< ClampProjectionMatrixCallback_clampProjectionMatrixCallback
 
double _nearFarRatio
 
bool _impostorActive
 
bool _depthSortImpostorSprites
 
float _impostorPixelErrorThreshold
 
int _numFramesToKeepImpostorSprites
 
Node::NodeMask _cullMask
 
Node::NodeMask _cullMaskLeft
 
Node::NodeMask _cullMaskRight
 

Detailed Description

A CullStack class which accumulates the current project, modelview matrices and the CullingSet.

Member Typedef Documentation

◆ CullingStack

typedef std::vector< CullingSet > osg::CullStack::CullingStack

◆ EyePointStack

◆ MatrixList

typedef std::vector< osg::ref_ptr<osg::RefMatrix> > osg::CullStack::MatrixList
protected

◆ MatrixStack

◆ OccluderList

◆ ViewportStack

Constructor & Destructor Documentation

◆ CullStack() [1/2]

osg::CullStack::CullStack ( )

◆ CullStack() [2/2]

osg::CullStack::CullStack ( const CullStack cs)

◆ ~CullStack()

osg::CullStack::~CullStack ( )

Member Function Documentation

◆ clampedPixelSize() [1/2]

float osg::CullStack::clampedPixelSize ( const Vec3 v,
float  radius 
) const
inline

Compute the pixel size of an object at position v, with specified radius.

fabs()ed to always be positive.

◆ clampedPixelSize() [2/2]

float osg::CullStack::clampedPixelSize ( const BoundingSphere bs) const
inline

Compute the pixel size of the bounding sphere.

fabs()ed to always be positive.

References osg::BoundingSphereImpl< VT >::center(), and osg::BoundingSphereImpl< VT >::radius().

◆ computeFrustumVolume()

void osg::CullStack::computeFrustumVolume ( )
protected

◆ createOrReuseMatrix()

RefMatrix * osg::CullStack::createOrReuseMatrix ( const osg::Matrix value)
inlineprotected

References osg::Matrixd::set().

◆ disableAndPushOccludersCurrentMask()

void osg::CullStack::disableAndPushOccludersCurrentMask ( NodePath nodePath)
inline

◆ getClipSpaceCullingStack()

CullingStack& osg::CullStack::getClipSpaceCullingStack ( )
inline

◆ getCurrentCullingSet() [1/2]

CullingSet& osg::CullStack::getCurrentCullingSet ( )
inline

◆ getCurrentCullingSet() [2/2]

const CullingSet& osg::CullStack::getCurrentCullingSet ( ) const
inline

◆ getEyeLocal()

const osg::Vec3& osg::CullStack::getEyeLocal ( ) const
inline

◆ getFrustumVolume()

float osg::CullStack::getFrustumVolume ( )
inline

◆ getLookVectorLocal()

const osg::Vec3 osg::CullStack::getLookVectorLocal ( ) const
inline

◆ getModelViewCullingStack()

CullingStack& osg::CullStack::getModelViewCullingStack ( )
inline

◆ getModelViewMatrix() [1/2]

osg::RefMatrix * osg::CullStack::getModelViewMatrix ( )
inline

◆ getModelViewMatrix() [2/2]

const osg::RefMatrix * osg::CullStack::getModelViewMatrix ( ) const
inline

◆ getModelViewStack() [1/2]

MatrixStack& osg::CullStack::getModelViewStack ( )
inline

◆ getModelViewStack() [2/2]

const MatrixStack& osg::CullStack::getModelViewStack ( ) const
inline

◆ getMVPW()

const osg::RefMatrix * osg::CullStack::getMVPW ( )
inline

◆ getMVPWStack() [1/2]

MatrixStack& osg::CullStack::getMVPWStack ( )
inline

◆ getMVPWStack() [2/2]

const MatrixStack& osg::CullStack::getMVPWStack ( ) const
inline

◆ getOccluderList() [1/2]

ShadowVolumeOccluderList& osg::CullStack::getOccluderList ( )
inline

◆ getOccluderList() [2/2]

const ShadowVolumeOccluderList& osg::CullStack::getOccluderList ( ) const
inline

◆ getProjectionCullingStack()

CullingStack& osg::CullStack::getProjectionCullingStack ( )
inline

◆ getProjectionMatrix() [1/2]

osg::RefMatrix * osg::CullStack::getProjectionMatrix ( )
inline

◆ getProjectionMatrix() [2/2]

const osg::RefMatrix * osg::CullStack::getProjectionMatrix ( ) const
inline

◆ getProjectionStack() [1/2]

MatrixStack& osg::CullStack::getProjectionStack ( )
inline

◆ getProjectionStack() [2/2]

const MatrixStack& osg::CullStack::getProjectionStack ( ) const
inline

◆ getReferenceViewPoint()

const osg::Vec3& osg::CullStack::getReferenceViewPoint ( ) const
inline

◆ getUpLocal()

const osg::Vec3 osg::CullStack::getUpLocal ( ) const
inline

◆ getViewPointLocal()

const osg::Vec3& osg::CullStack::getViewPointLocal ( ) const
inline

◆ getViewport() [1/2]

osg::Viewport * osg::CullStack::getViewport ( )
inline

◆ getViewport() [2/2]

const osg::Viewport * osg::CullStack::getViewport ( ) const
inline

◆ getWindowMatrix()

osg::Matrix osg::CullStack::getWindowMatrix ( ) const
inline

◆ isCulled() [1/4]

bool osg::CullStack::isCulled ( const std::vector< Vec3 > &  vertices)
inline

◆ isCulled() [2/4]

bool osg::CullStack::isCulled ( const BoundingBox bb)
inline

◆ isCulled() [3/4]

bool osg::CullStack::isCulled ( const BoundingSphere bs)
inline

◆ isCulled() [4/4]

bool osg::CullStack::isCulled ( const osg::Node node)
inline

◆ pixelSize() [1/2]

float osg::CullStack::pixelSize ( const Vec3 v,
float  radius 
) const
inline

Compute the pixel size of an object at position v, with specified radius.

◆ pixelSize() [2/2]

float osg::CullStack::pixelSize ( const BoundingSphere bs) const
inline

Compute the pixel size of the bounding sphere.

References osg::BoundingSphereImpl< VT >::center(), and osg::BoundingSphereImpl< VT >::radius().

◆ popCullingSet()

void osg::CullStack::popCullingSet ( )

◆ popCurrentMask()

void osg::CullStack::popCurrentMask ( )
inline

◆ popModelViewMatrix()

void osg::CullStack::popModelViewMatrix ( )

◆ popOccludersCurrentMask()

void osg::CullStack::popOccludersCurrentMask ( NodePath nodePath)
inline

◆ popProjectionMatrix()

void osg::CullStack::popProjectionMatrix ( )

◆ popReferenceViewPoint()

void osg::CullStack::popReferenceViewPoint ( )
inline

◆ popViewport()

void osg::CullStack::popViewport ( )

◆ pushCullingSet()

void osg::CullStack::pushCullingSet ( )

◆ pushCurrentMask()

void osg::CullStack::pushCurrentMask ( )
inline

◆ pushModelViewMatrix()

void osg::CullStack::pushModelViewMatrix ( osg::RefMatrix matrix,
Transform::ReferenceFrame  referenceFrame 
)

◆ pushProjectionMatrix()

void osg::CullStack::pushProjectionMatrix ( osg::RefMatrix matrix)

◆ pushReferenceViewPoint()

void osg::CullStack::pushReferenceViewPoint ( const osg::Vec3 viewPoint)
inline

◆ pushViewport()

void osg::CullStack::pushViewport ( osg::Viewport viewport)

◆ reset()

void osg::CullStack::reset ( )

◆ setOccluderList()

void osg::CullStack::setOccluderList ( const ShadowVolumeOccluderList svol)
inline

Member Data Documentation

◆ _back_modelviewCullingStack

CullingSet* osg::CullStack::_back_modelviewCullingStack
protected

◆ _bbCornerFar

unsigned int osg::CullStack::_bbCornerFar
protected

◆ _bbCornerNear

unsigned int osg::CullStack::_bbCornerNear
protected

◆ _clipspaceCullingStack

CullingStack osg::CullStack::_clipspaceCullingStack
protected

◆ _currentReuseMatrixIndex

unsigned int osg::CullStack::_currentReuseMatrixIndex
protected

◆ _eyePointStack

EyePointStack osg::CullStack::_eyePointStack
protected

◆ _frustumVolume

float osg::CullStack::_frustumVolume
protected

◆ _identity

ref_ptr<osg::RefMatrix> osg::CullStack::_identity
protected

◆ _index_modelviewCullingStack

unsigned int osg::CullStack::_index_modelviewCullingStack
protected

◆ _modelviewCullingStack

CullingStack osg::CullStack::_modelviewCullingStack
protected

◆ _modelviewStack

MatrixStack osg::CullStack::_modelviewStack
protected

◆ _MVPW_Stack

MatrixStack osg::CullStack::_MVPW_Stack
protected

◆ _occluderList

ShadowVolumeOccluderList osg::CullStack::_occluderList
protected

◆ _projectionCullingStack

CullingStack osg::CullStack::_projectionCullingStack
protected

◆ _projectionStack

MatrixStack osg::CullStack::_projectionStack
protected

◆ _referenceViewPoints

EyePointStack osg::CullStack::_referenceViewPoints
protected

◆ _reuseMatrixList

MatrixList osg::CullStack::_reuseMatrixList
protected

◆ _viewPointStack

EyePointStack osg::CullStack::_viewPointStack
protected

◆ _viewportStack

ViewportStack osg::CullStack::_viewportStack
protected

The documentation for this class was generated from the following file: