# osgUtil::CullVisitor Class Reference

Basic NodeVisitor implementation for rendering a scene. More...

Inheritance diagram for osgUtil::CullVisitor:

[legend]
List of all members.

## Public Types

typedef osg::Matrix::value_type | value_type

## Public Member Functions

| CullVisitor ()
virtual | ~CullVisitor ()
virtual CullVisitor * | cloneType () const
virtual void | reset ()
virtual osg::Vec3 | getEyePoint () const
| Get the eye point in local coordinates.
virtual float | getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const
virtual float | getDistanceFromEyePoint (const osg::Vec3 &pos, bool withLODScale) const
virtual void | apply (osg::Node &)
virtual void | apply (osg::Geode &node)
virtual void | apply (osg::Billboard &node)
virtual void | apply (osg::LightSource &node)
virtual void | apply (osg::ClipNode &node)
virtual void | apply (osg::TexGenNode &node)
virtual void | apply (osg::Group &node)
virtual void | apply (osg::Transform &node)
virtual void | apply (osg::Projection &node)
virtual void | apply (osg::Switch &node)
virtual void | apply (osg::LOD &node)
virtual void | apply (osg::ClearNode &node)
virtual void | apply (osg::OccluderNode &node)
virtual void | apply (osg::Impostor &node)
void | setClearNode (const osg::ClearNode *earthSky)
const osg::ClearNode * | getClearNode () const
void | pushStateSet (const osg::StateSet *ss)
| Push state set on the current state group.
void | popStateSet ()
| Pop the top state set and hence associated state group.
void | setRenderGraph (RenderGraph *rg)
RenderGraph * | getRootRenderGraph ()
RenderGraph * | getCurrentRenderGraph ()
void | setRenderStage (RenderStage *rg)
RenderStage * | getRenderStage ()
RenderBin * | getCurrentRenderBin ()
void | setCurrentRenderBin (RenderBin *rb)
value_type | getCalculatedNearPlane () const
value_type | getCalculatedFarPlane () const
value_type | computeNearestPointInFrustum (const osg::Matrix &matrix, const osg::Polytope::PlaneList &planes, const osg::Drawable &drawable)
bool | updateCalculatedNearFar (const osg::Matrix &matrix, const osg::BoundingBox &bb)
bool | updateCalculatedNearFar (const osg::Matrix &matrix, const osg::Drawable &drawable, bool isBillboard=false)
void | updateCalculatedNearFar (const osg::Vec3 &pos)
void | addDrawable (osg::Drawable *drawable, osg::RefMatrix *matrix)
| Add a drawable to current render graph.
void | addDrawableAndDepth (osg::Drawable *drawable, osg::RefMatrix *matrix, float depth)
| Add a drawable and depth to current render graph.
void | addPositionedAttribute (osg::RefMatrix *matrix, const osg::StateAttribute *attr)
| Add an attribute which is positioned relative to the modelview matrix.
void | addPositionedTextureAttribute (unsigned int textureUnit, osg::RefMatrix *matrix, const osg::StateAttribute *attr)
| Add an attribute which is positioned relative to the modelview matrix.
virtual void | popProjectionMatrix ()
| Re-implement CullStack's popProjectionMatrix() adding clamping of the projection matrix to the computed near and far.
virtual bool | clampProjectionMatrixImplementation (osg::Matrixf &projection, double &znear, double &zfar) const
| CullVisitor's default clamping of the projection float matrix to computed near and far values.
virtual bool | clampProjectionMatrixImplementation (osg::Matrixd &projection, double &znear, double &zfar) const
| CullVisitor's default clamping of the projection double matrix to computed near and far values.
bool | clampProjectionMatrix (osg::Matrixf &projection, value_type &znear, value_type &zfar) const
| Clamp the projection float matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.
bool | clampProjectionMatrix (osg::Matrixd &projection, value_type &znear, value_type &zfar) const
| Clamp the projection double matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.
void | setState (osg::State *state)
osg::State * | getState ()
const osg::State * | getState () const

## Protected Types

typedef std::vector< osg::ref_ptr< RenderLeaf > > | RenderLeafList
typedef std::multimap< value_type, MatrixPlanesDrawables > | DistanceMatrixDrawableMap

## Protected Member Functions

CullVisitor & | operator= (const CullVisitor &)
| Prevent unwanted copy operator.
void | handle_cull_callbacks_and_traverse (osg::Node &node)
void | handle_cull_callbacks_and_accept (osg::Node &node, osg::Node *acceptNode)
osg::ImpostorSprite * | createImpostorSprite (osg::Impostor &node)
| Create an impostor sprite by setting up a pre-rendering stage to generate the impostor texture.
RenderLeaf * | createOrReuseRenderLeaf (osg::Drawable *drawable, osg::RefMatrix *projection, osg::RefMatrix *matrix, float depth=0.0f)

## Protected Attributes

osg::ref_ptr< const osg::ClearNode > | _clearNode
osg::ref_ptr< RenderGraph > | _rootRenderGraph
RenderGraph * | _currentRenderGraph
osg::ref_ptr< RenderStage > | _rootRenderStage
RenderBin * | _currentRenderBin
value_type | _computed_znear
value_type | _computed_zfar
RenderLeafList | _reuseRenderLeafList
unsigned int | _currentReuseRenderLeafIndex
osg::ref_ptr< osg::ImpostorSpriteManager > | _impostorSpriteManager
osg::ref_ptr< osg::State > | _state
DistanceMatrixDrawableMap | _nearPlaneCandidateMap

## Classes

struct | MatrixPlanesDrawables

## Detailed Description

Basic NodeVisitor implementation for rendering a scene.

This visitor traverses the scene graph, collecting transparent and opaque osg::Drawables into a depth sorted transparent bin and a state sorted opaque bin. The opaque bin is rendered first, and then the transparent bin is rendered in order from the furthest osg::Drawable from the eye to the one nearest the eye.

## Member Typedef Documentation

typedef std::multimap<value_type, MatrixPlanesDrawables> osgUtil::CullVisitor::DistanceMatrixDrawableMap `[protected]`

typedef std::vector< osg::ref_ptr<RenderLeaf> > osgUtil::CullVisitor::RenderLeafList `[protected]`

typedef osg::Matrix::value_type osgUtil::CullVisitor::value_type

## Constructor & Destructor Documentation

CullVisitor::CullVisitor | ( |  | ) |

CullVisitor::~CullVisitor | ( |  | ) | `[virtual]`

## Member Function Documentation

void osgUtil::CullVisitor::addDrawable | ( | osg::Drawable * | drawable,
|  | osg::RefMatrix * | matrix
| ) | `[inline]`

| Add a drawable to current render graph.

void osgUtil::CullVisitor::addDrawableAndDepth | ( | osg::Drawable * | drawable,
|  | osg::RefMatrix * | matrix,
|  | float | depth
| ) | `[inline]`

| Add a drawable and depth to current render graph.

void osgUtil::CullVisitor::addPositionedAttribute | ( | osg::RefMatrix * | matrix,
|  | const osg::StateAttribute * | attr
| ) | `[inline]`

| Add an attribute which is positioned relative to the modelview matrix.

void osgUtil::CullVisitor::addPositionedTextureAttribute | ( | unsigned int | textureUnit,
|  | osg::RefMatrix * | matrix,
|  | const osg::StateAttribute * | attr
| ) | `[inline]`

| Add an attribute which is positioned relative to the modelview matrix.

void CullVisitor::apply | ( | osg::Impostor & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::OccluderNode & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::ClearNode & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::LOD & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Switch & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Projection & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Transform & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Group & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::TexGenNode & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::ClipNode & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::LightSource & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Billboard & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Geode & | node | ) | `[virtual]`

void CullVisitor::apply | ( | osg::Node & |  | ) | `[virtual]`

bool osgUtil::CullVisitor::clampProjectionMatrix | ( | osg::Matrixd & | projection,
|  | value_type & | znear,
|  | value_type & | zfar
| ) | const`[inline]`

| Clamp the projection double matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.

bool osgUtil::CullVisitor::clampProjectionMatrix | ( | osg::Matrixf & | projection,
|  | value_type & | znear,
|  | value_type & | zfar
| ) | const`[inline]`

| Clamp the projection float matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.

bool CullVisitor::clampProjectionMatrixImplementation | ( | osg::Matrixd & | projection,
|  | double & | znear,
|  | double & | zfar
| ) | const`[virtual]`

| CullVisitor's default clamping of the projection double matrix to computed near and far values. Note, do not call this method directly, use clampProjectionMatrix(..) instead, unless you want to bypass the callback.

bool CullVisitor::clampProjectionMatrixImplementation | ( | osg::Matrixf & | projection,
|  | double & | znear,
|  | double & | zfar
| ) | const`[virtual]`

| CullVisitor's default clamping of the projection float matrix to computed near and far values. Note, do not call this method directly, use clampProjectionMatrix(..) instead, unless you want to bypass the callback.

virtual CullVisitor* osgUtil::CullVisitor::cloneType | ( |  | ) | const`[inline, virtual]`

CullVisitor::value_type CullVisitor::computeNearestPointInFrustum | ( | const osg::Matrix & | matrix,
|  | const osg::Polytope::PlaneList & | planes,
|  | const osg::Drawable & | drawable
| ) |

ImpostorSprite * CullVisitor::createImpostorSprite | ( | osg::Impostor & | node | ) | `[protected]`

| Create an impostor sprite by setting up a pre-rendering stage to generate the impostor texture.

RenderLeaf * osgUtil::CullVisitor::createOrReuseRenderLeaf | ( | osg::Drawable * | drawable,
|  | osg::RefMatrix * | projection,
|  | osg::RefMatrix * | matrix,
|  | float | depth = `0.0f`
| ) | `[inline, protected]`

value_type osgUtil::CullVisitor::getCalculatedFarPlane | ( |  | ) | const`[inline]`

value_type osgUtil::CullVisitor::getCalculatedNearPlane | ( |  | ) | const`[inline]`

const osg::ClearNode* osgUtil::CullVisitor::getClearNode | ( |  | ) | const`[inline]`

RenderBin* osgUtil::CullVisitor::getCurrentRenderBin | ( |  | ) | `[inline]`

RenderGraph* osgUtil::CullVisitor::getCurrentRenderGraph | ( |  | ) | `[inline]`

float CullVisitor::getDistanceFromEyePoint | ( | const osg::Vec3 & | pos,
|  | bool | withLODScale
| ) | const`[virtual]`

float CullVisitor::getDistanceToEyePoint | ( | const osg::Vec3 & | pos,
|  | bool | withLODScale
| ) | const`[virtual]`

virtual osg::Vec3 osgUtil::CullVisitor::getEyePoint | ( |  | ) | const`[inline, virtual]`

| Get the eye point in local coordinates. Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. Reimplemented from osg::NodeVisitor.

RenderStage* osgUtil::CullVisitor::getRenderStage | ( |  | ) | `[inline]`

RenderGraph* osgUtil::CullVisitor::getRootRenderGraph | ( |  | ) | `[inline]`

const osg::State* osgUtil::CullVisitor::getState | ( |  | ) | const`[inline]`

osg::State* osgUtil::CullVisitor::getState | ( |  | ) | `[inline]`

void osgUtil::CullVisitor::handle_cull_callbacks_and_accept | ( | osg::Node & | node,
|  | osg::Node * | acceptNode
| ) | `[inline, protected]`

void osgUtil::CullVisitor::handle_cull_callbacks_and_traverse | ( | osg::Node & | node | ) | `[inline, protected]`

CullVisitor& osgUtil::CullVisitor::operator= | ( | const CullVisitor & |  | ) | `[inline, protected]`

| Prevent unwanted copy operator.

void CullVisitor::popProjectionMatrix | ( |  | ) | `[virtual]`

| Re-implement CullStack's popProjectionMatrix() adding clamping of the projection matrix to the computed near and far. Reimplemented from osg::CullStack.

void osgUtil::CullVisitor::popStateSet | ( |  | ) | `[inline]`

| Pop the top state set and hence associated state group. Move the current state group to the parent of the popped state group.

void osgUtil::CullVisitor::pushStateSet | ( | const osg::StateSet * | ss | ) | `[inline]`

| Push state set on the current state group. If the state exists in a child state group of the current state group then move the current state group to that child. Otherwise, create a new state group for the state set, add it to the current state group then move the current state group pointer to the new state group.

void CullVisitor::reset | ( |  | ) | `[virtual]`

| Reimplemented from osg::CullStack.

void osgUtil::CullVisitor::setClearNode | ( | const osg::ClearNode * | earthSky | ) | `[inline]`

void osgUtil::CullVisitor::setCurrentRenderBin | ( | RenderBin * | rb | ) | `[inline]`

void osgUtil::CullVisitor::setRenderGraph | ( | RenderGraph * | rg | ) | `[inline]`

void osgUtil::CullVisitor::setRenderStage | ( | RenderStage * | rg | ) | `[inline]`

void osgUtil::CullVisitor::setState | ( | osg::State * | state | ) | `[inline]`

void CullVisitor::updateCalculatedNearFar | ( | const osg::Vec3 & | pos | ) |

bool CullVisitor::updateCalculatedNearFar | ( | const osg::Matrix & | matrix,
|  | const osg::Drawable & | drawable,
|  | bool | isBillboard = `false`
| ) |

bool CullVisitor::updateCalculatedNearFar | ( | const osg::Matrix & | matrix,
|  | const osg::BoundingBox & | bb
| ) |

## Member Data Documentation

osg::ref_ptr<const osg::ClearNode> osgUtil::CullVisitor::_clearNode `[protected]`

value_type osgUtil::CullVisitor::_computed_zfar `[protected]`

value_type osgUtil::CullVisitor::_computed_znear `[protected]`

RenderBin* osgUtil::CullVisitor::_currentRenderBin `[protected]`

RenderGraph* osgUtil::CullVisitor::_currentRenderGraph `[protected]`

unsigned int osgUtil::CullVisitor::_currentReuseRenderLeafIndex `[protected]`

osg::ref_ptr<osg::ImpostorSpriteManager> osgUtil::CullVisitor::_impostorSpriteManager `[protected]`

DistanceMatrixDrawableMap osgUtil::CullVisitor::_nearPlaneCandidateMap `[protected]`

RenderLeafList osgUtil::CullVisitor::_reuseRenderLeafList `[protected]`

osg::ref_ptr<RenderGraph> osgUtil::CullVisitor::_rootRenderGraph `[protected]`

osg::ref_ptr<RenderStage> osgUtil::CullVisitor::_rootRenderStage `[protected]`

osg::ref_ptr<osg::State> osgUtil::CullVisitor::_state `[protected]`

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

- CullVisitor
- CullVisitor.cpp