OpenSceneGraph  3.5.1
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
osgUtil::CullVisitor Class Reference

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

Inheritance diagram for osgUtil::CullVisitor:
Inheritance graph
[legend]

Classes

struct  Identifier
 
struct  MatrixPlanesDrawables
 

Public Types

typedef osg::Matrix::value_type value_type
 
- Public Types inherited from osg::NodeVisitor
enum  TraversalMode { TRAVERSE_NONE, TRAVERSE_PARENTS, TRAVERSE_ALL_CHILDREN, TRAVERSE_ACTIVE_CHILDREN }
 
enum  VisitorType {
  NODE_VISITOR = 0, UPDATE_VISITOR, EVENT_VISITOR, COLLECT_OCCLUDER_VISITOR,
  CULL_VISITOR, INTERSECTION_VISITOR
}
 
- Public Types inherited from osg::Object
enum  DataVariance { DYNAMIC, STATIC, UNSPECIFIED }
 
- Public Types inherited from osg::CullStack
typedef std::vector< ShadowVolumeOccluderOccluderList
 
typedef std::vector< CullingSetCullingStack
 
- 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

 CullVisitor ()
 
 CullVisitor (const CullVisitor &)
 Copy constructor that does a shallow copy. More...
 
 META_NodeVisitor (osgUtil, CullVisitor) virtual CullVisitor *clone() const
 Create a shallow copy of the CullVisitor, used by CullVisitor::create() to clone the prototype. More...
 
virtual void reset ()
 Method to call to reset visitor. More...
 
void setIdentifier (Identifier *identifier)
 
IdentifiergetIdentifier ()
 
const IdentifiergetIdentifier () const
 
virtual osg::Vec3 getEyePoint () const
 Get the eye point in local coordinates. More...
 
virtual osg::Vec3 getViewPoint () const
 Get the view point in local coordinates. More...
 
virtual float getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const
 Get the distance from a point to the eye point, distance value in local coordinate system. More...
 
virtual float getDistanceFromEyePoint (const osg::Vec3 &pos, bool withLODScale) const
 Get the distance of a point from the eye point, distance value in the eye coordinate system. More...
 
virtual float getDistanceToViewPoint (const osg::Vec3 &pos, bool withLODScale) const
 Get the distance from a point to the view point, distance value in local coordinate system. More...
 
virtual void apply (osg::Node &)
 
virtual void apply (osg::Geode &node)
 
virtual void apply (osg::Drawable &drawable)
 
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::Camera &node)
 
virtual void apply (osg::OccluderNode &node)
 
virtual void apply (osg::OcclusionQueryNode &node)
 
void pushStateSet (const osg::StateSet *ss)
 Push state set on the current state group. More...
 
void popStateSet ()
 Pop the top state set and hence associated state group. More...
 
void setStateGraph (StateGraph *rg)
 
StateGraphgetRootStateGraph ()
 
StateGraphgetCurrentStateGraph ()
 
void setRenderStage (RenderStage *rg)
 
RenderStagegetRenderStage ()
 
RenderStagegetCurrentRenderStage ()
 
osg::CameragetCurrentCamera ()
 
RenderBingetCurrentRenderBin ()
 
void setCurrentRenderBin (RenderBin *rb)
 
void setCalculatedNearPlane (value_type value)
 
value_type getCalculatedNearPlane () const
 
void setCalculatedFarPlane (value_type value)
 
value_type getCalculatedFarPlane () const
 
value_type computeNearestPointInFrustum (const osg::Matrix &matrix, const osg::Polytope::PlaneList &planes, const osg::Drawable &drawable)
 
value_type computeFurthestPointInFrustum (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. More...
 
void addDrawableAndDepth (osg::Drawable *drawable, osg::RefMatrix *matrix, float depth)
 Add a drawable and depth to current render graph. More...
 
void addPositionedAttribute (osg::RefMatrix *matrix, const osg::StateAttribute *attr)
 Add an attribute which is positioned relative to the modelview matrix. More...
 
void addPositionedTextureAttribute (unsigned int textureUnit, osg::RefMatrix *matrix, const osg::StateAttribute *attr)
 Add an attribute which is positioned relative to the modelview matrix. More...
 
void computeNearPlane ()
 compute near plane based on the polgon intersection of primtives in near plane candidate list of drawables. More...
 
virtual void popProjectionMatrix ()
 Re-implement CullStack's popProjectionMatrix() adding clamping of the projection matrix to the computed near and far. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void setState (osg::State *state)
 
osg::StategetState ()
 
const osg::StategetState () const
 
void setRenderInfo (osg::RenderInfo &renderInfo)
 
osg::RenderInfogetRenderInfo ()
 
const osg::RenderInfogetRenderInfo () const
 
- Public Member Functions inherited from osg::NodeVisitor
 NodeVisitor (TraversalMode tm=TRAVERSE_NONE)
 
 NodeVisitor (VisitorType type, TraversalMode tm=TRAVERSE_NONE)
 
 NodeVisitor (const NodeVisitor &nv, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 
virtual ~NodeVisitor ()
 
 META_Object (osg, NodeVisitor) virtual NodeVisitor *asNodeVisitor()
 Convert 'this' into a NodeVisitor pointer if Object is a NodeVisitor, otherwise return 0. More...
 
virtual const NodeVisitorasNodeVisitor () const
 convert 'const this' into a const NodeVisitor pointer if Object is a NodeVisitor, otherwise return 0. More...
 
void setVisitorType (VisitorType type)
 Set the VisitorType, used to distinguish different visitors during traversal of the scene, typically used in the Node::traverse() method to select which behaviour to use for different types of traversal/visitors. More...
 
VisitorType getVisitorType () const
 Get the VisitorType. More...
 
void setTraversalNumber (unsigned int fn)
 Set the traversal number. More...
 
unsigned int getTraversalNumber () const
 Get the traversal number. More...
 
void setFrameStamp (FrameStamp *fs)
 Set the FrameStamp that this traversal is associated with. More...
 
const FrameStampgetFrameStamp () const
 Get the FrameStamp that this traversal is associated with. More...
 
void setTraversalMask (Node::NodeMask mask)
 Set the TraversalMask of this NodeVisitor. More...
 
Node::NodeMask getTraversalMask () const
 Get the TraversalMask. More...
 
void setNodeMaskOverride (Node::NodeMask mask)
 Set the NodeMaskOverride mask. More...
 
Node::NodeMask getNodeMaskOverride () const
 Get the NodeMaskOverride mask. More...
 
bool validNodeMask (const osg::Node &node) const
 Method to called by Node and its subclass' Node::accept() method, if the result is true it is used to cull operations of nodes and their subgraphs. More...
 
void setTraversalMode (TraversalMode mode)
 Set the traversal mode for Node::traverse() to use when deciding which children of a node to traverse. More...
 
TraversalMode getTraversalMode () const
 Get the traversal mode. More...
 
void traverse (Node &node)
 Method for handling traversal of a nodes. More...
 
void pushOntoNodePath (Node *node)
 Method called by osg::Node::accept() method before a call to the NodeVisitor::apply(..). More...
 
void popFromNodePath ()
 Method called by osg::Node::accept() method after a call to NodeVisitor::apply(..). More...
 
NodePathgetNodePath ()
 Get the non const NodePath from the top most node applied down to the current Node being visited. More...
 
const NodePathgetNodePath () const
 Get the const NodePath from the top most node applied down to the current Node being visited. More...
 
virtual void apply (Geometry &geometry)
 
virtual void apply (ProxyNode &node)
 
virtual void apply (CoordinateSystemNode &node)
 
virtual void apply (CameraView &node)
 
virtual void apply (MatrixTransform &node)
 
virtual void apply (PositionAttitudeTransform &node)
 
virtual void apply (Sequence &node)
 
virtual void apply (PagedLOD &node)
 
void setDatabaseRequestHandler (DatabaseRequestHandler *handler)
 Set the handler for database requests. More...
 
DatabaseRequestHandlergetDatabaseRequestHandler ()
 Get the handler for database requests. More...
 
const DatabaseRequestHandlergetDatabaseRequestHandler () const
 Get the const handler for database requests. More...
 
void setImageRequestHandler (ImageRequestHandler *handler)
 Set the handler for image requests. More...
 
ImageRequestHandlergetImageRequestHandler ()
 Get the handler for image requests. More...
 
const ImageRequestHandlergetImageRequestHandler () const
 Get the const handler for image requests. More...
 
- Public Member Functions inherited from osg::Object
 Object ()
 Construct an object. More...
 
 Object (bool threadSafeRefUnref)
 
 Object (const Object &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
 Copy constructor, optional CopyOp object can be used to control shallow vs deep copying of dynamic data. More...
 
virtual ObjectcloneType () const =0
 Clone the type of an object, with Object* return type. More...
 
virtual Objectclone (const CopyOp &) const =0
 Clone an object, with Object* return type. More...
 
virtual bool isSameKindAs (const Object *) const
 
virtual const char * libraryName () const =0
 return the name of the object's library. More...
 
virtual const char * className () const =0
 return the name of the object's class type. More...
 
std::string getCompoundClassName () const
 return the compound class name that combines the library name and class name. More...
 
virtual NodeasNode ()
 Convert 'this' into a Node pointer if Object is a Node, otherwise return 0. More...
 
virtual const NodeasNode () const
 convert 'const this' into a const Node pointer if Object is a Node, otherwise return 0. More...
 
virtual NodeVisitorasNodeVisitor ()
 Convert 'this' into a NodeVisitor pointer if Object is a NodeVisitor, otherwise return 0. More...
 
virtual StateAttributeasStateAttribute ()
 Convert 'this' into a StateAttribute pointer if Object is a StateAttribute, otherwise return 0. More...
 
virtual const StateAttributeasStateAttribute () const
 convert 'const this' into a const StateAttribute pointer if Object is a StateAttribute, otherwise return 0. More...
 
virtual UniformasUniform ()
 Convert 'this' into a Uniform pointer if Object is a Uniform, otherwise return 0. More...
 
virtual const UniformasUniform () const
 convert 'const this' into a const Uniform pointer if Object is a Uniform, otherwise return 0. More...
 
virtual void setThreadSafeRefUnref (bool threadSafe)
 Set whether to use a mutex to ensure ref() and unref() are thread safe. More...
 
virtual void setName (const std::string &name)
 Set the name of object using C++ style string. More...
 
void setName (const char *name)
 Set the name of object using a C style string. More...
 
const std::string & getName () const
 Get the name of object. More...
 
void setDataVariance (DataVariance dv)
 Set the data variance of this object. More...
 
DataVariance getDataVariance () const
 Get the data variance of this object. More...
 
virtual void computeDataVariance ()
 Compute the DataVariance based on an assessment of callback etc. More...
 
void setUserDataContainer (osg::UserDataContainer *udc)
 set the UserDataContainer object. More...
 
template<class T >
void setUserDataContainer (const ref_ptr< T > &udc)
 
osg::UserDataContainergetUserDataContainer ()
 get the UserDataContainer attached to this object. More...
 
const osg::UserDataContainergetUserDataContainer () const
 get the const UserDataContainer attached to this object. More...
 
osg::UserDataContainergetOrCreateUserDataContainer ()
 Convenience method that returns the UserDataContainer, and if one doesn't already exist creates and assigns a DefaultUserDataContainer to the Object and then return this new UserDataContainer. More...
 
virtual void setUserData (Referenced *obj)
 Set user data, data must be subclassed from Referenced to allow automatic memory handling. More...
 
template<class T >
void setUserData (const ref_ptr< T > &ud)
 
virtual ReferencedgetUserData ()
 Get user data. More...
 
virtual const ReferencedgetUserData () const
 Get const user data. More...
 
template<typename T >
bool getUserValue (const std::string &name, T &value) const
 Convenience method that casts the named UserObject to osg::TemplateValueObject<T> and gets the value. More...
 
template<typename T >
void setUserValue (const std::string &name, const T &value)
 Convenience method that creates the osg::TemplateValueObject<T> to store the specified value and adds it as a named UserObject. More...
 
virtual void resizeGLObjectBuffers (unsigned int)
 Resize any per context GLObject buffers to specified size. More...
 
virtual void releaseGLObjects (osg::State *=0) const
 If State is non-zero, this function releases any associated OpenGL objects for the specified graphics context. More...
 
template<typename T >
BoolValueObject UCharValueObject UShortValueObject UIntValueObject DoubleValueObject Vec3fValueObject Vec2dValueObject Vec4dValueObject PlaneValueObject MatrixdValueObject BoundingBoxdValueObject BoundingSpheredValueObject bool getUserValue (const std::string &name, T &value) const
 provide implementation of osg::Object::getUserValue(..) template More...
 
- Public Member Functions inherited from osg::Referenced
 Referenced ()
 
 Referenced (bool threadSafeRefUnref)
 
 Referenced (const Referenced &)
 
Referencedoperator= (const Referenced &)
 
bool getThreadSafeRefUnref () const
 Get whether a mutex is used to ensure ref() and unref() are thread safe. More...
 
OpenThreads::Mutex * getRefMutex () const
 Get the mutex used to ensure thread safety of ref()/unref(). More...
 
int ref () const
 Increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
int unref () const
 Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. More...
 
int unref_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. More...
 
int referenceCount () const
 Return the number of pointers currently referencing this object. More...
 
ObserverSetgetObserverSet () const
 Get the ObserverSet if one is attached, otherwise return NULL. More...
 
ObserverSetgetOrCreateObserverSet () const
 Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet. More...
 
void addObserver (Observer *observer) const
 Add a Observer that is observing this object, notify the Observer when this object gets deleted. More...
 
void removeObserver (Observer *observer) const
 Remove Observer that is observing this object. More...
 
- Public Member Functions inherited from osg::CullStack
 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 ()
 
osg::RefMatrixgetModelViewMatrix ()
 
osg::RefMatrixgetProjectionMatrix ()
 
osg::Matrix getWindowMatrix ()
 
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
 
- 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...
 

Static Public Member Functions

static osg::ref_ptr< CullVisitor > & prototype ()
 get the prototype singleton used by CullVisitor::create(). More...
 
static CullVisitorcreate ()
 create a CullVisitor by cloning CullVisitor::prototype(). More...
 
- Static Public Member Functions inherited from osg::Referenced
static OpenThreads::Mutex * getGlobalReferencedMutex ()
 Get the optional global Referenced mutex, this can be shared between all osg::Referenced. More...
 
static void setThreadSafeReferenceCounting (bool enableThreadSafeReferenceCounting)
 Set whether reference counting should use a mutex for thread safe reference counting. More...
 
static bool getThreadSafeReferenceCounting ()
 Get whether reference counting is active. More...
 
static void setDeleteHandler (DeleteHandler *handler)
 Set a DeleteHandler to which deletion of all referenced counted objects will be delegated. More...
 
static DeleteHandlergetDeleteHandler ()
 Get a DeleteHandler. More...
 

Protected Types

typedef std::vector< osg::ref_ptr< RenderLeaf > > RenderLeafList
 
typedef std::multimap< value_type, MatrixPlanesDrawablesDistanceMatrixDrawableMap
 
- Protected Types inherited from osg::CullStack
typedef fast_back_stack< ref_ptr< RefMatrix > > MatrixStack
 
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

virtual ~CullVisitor ()
 
CullVisitoroperator= (const CullVisitor &)
 Prevent unwanted copy operator. More...
 
void handle_cull_callbacks_and_traverse (osg::Node &node)
 
void handle_cull_callbacks_and_accept (osg::Node &node, osg::Node *acceptNode)
 
RenderLeafcreateOrReuseRenderLeaf (osg::Drawable *drawable, osg::RefMatrix *projection, osg::RefMatrix *matrix, float depth=0.0f)
 
- Protected Member Functions inherited from osg::Object
virtual ~Object ()
 Object destructor. More...
 
- Protected Member Functions inherited from osg::Referenced
virtual ~Referenced ()
 
void signalObserversAndDelete (bool signalDelete, bool doDelete) const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from osg::CullStack
void computeFrustumVolume ()
 
osg::RefMatrixcreateOrReuseMatrix (const osg::Matrix &value)
 

Protected Attributes

osg::ref_ptr< StateGraph_rootStateGraph
 
StateGraph_currentStateGraph
 
osg::ref_ptr< RenderStage_rootRenderStage
 
RenderBin_currentRenderBin
 
std::vector< RenderBin * > _renderBinStack
 
unsigned int _traversalNumber
 
value_type _computed_znear
 
value_type _computed_zfar
 
RenderLeafList _reuseRenderLeafList
 
unsigned int _currentReuseRenderLeafIndex
 
unsigned int _numberOfEncloseOverrideRenderBinDetails
 
osg::RenderInfo _renderInfo
 
DistanceMatrixDrawableMap _nearPlaneCandidateMap
 
DistanceMatrixDrawableMap _farPlaneCandidateMap
 
osg::ref_ptr< Identifier_identifier
 
- Protected Attributes inherited from osg::NodeVisitor
VisitorType _visitorType
 
unsigned int _traversalNumber
 
ref_ptr< FrameStamp_frameStamp
 
TraversalMode _traversalMode
 
Node::NodeMask _traversalMask
 
Node::NodeMask _nodeMaskOverride
 
NodePath _nodePath
 
ref_ptr< DatabaseRequestHandler_databaseRequestHandler
 
ref_ptr< ImageRequestHandler_imageRequestHandler
 
- Protected Attributes inherited from osg::Object
std::string _name
 
DataVariance _dataVariance
 
osg::UserDataContainer_userDataContainer
 
- Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr _observerSet
 
OpenThreads::Atomic _refCount
 
- Protected Attributes inherited from osg::CullStack
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

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

Constructor & Destructor Documentation

osgUtil::CullVisitor::CullVisitor ( )
osgUtil::CullVisitor::CullVisitor ( const CullVisitor )

Copy constructor that does a shallow copy.

virtual osgUtil::CullVisitor::~CullVisitor ( )
protectedvirtual

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.

virtual void osgUtil::CullVisitor::apply ( osg::Node )
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Geode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Drawable drawable)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Billboard node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::LightSource node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::ClipNode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::TexGenNode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Group node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Transform node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Projection node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Switch node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::LOD node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::ClearNode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Camera node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::OccluderNode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::OcclusionQueryNode node)
virtual

Reimplemented from osg::NodeVisitor.

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 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.

virtual bool osgUtil::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 bool osgUtil::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.

value_type osgUtil::CullVisitor::computeFurthestPointInFrustum ( const osg::Matrix matrix,
const osg::Polytope::PlaneList planes,
const osg::Drawable drawable 
)
value_type osgUtil::CullVisitor::computeNearestPointInFrustum ( const osg::Matrix matrix,
const osg::Polytope::PlaneList planes,
const osg::Drawable drawable 
)
void osgUtil::CullVisitor::computeNearPlane ( )

compute near plane based on the polgon intersection of primtives in near plane candidate list of drawables.

Note, you have to set ComputeNearFarMode to COMPUTE_NEAR_FAR_USING_PRIMITIVES to be able to near plane candidate drawables to be recorded by the cull traversal.

static CullVisitor* osgUtil::CullVisitor::create ( )
static

create a CullVisitor by cloning CullVisitor::prototype().

RenderLeaf * osgUtil::CullVisitor::createOrReuseRenderLeaf ( osg::Drawable drawable,
osg::RefMatrix projection,
osg::RefMatrix matrix,
float  depth = 0.0f 
)
inlineprotected
value_type osgUtil::CullVisitor::getCalculatedFarPlane ( ) const
inline
value_type osgUtil::CullVisitor::getCalculatedNearPlane ( ) const
inline
osg::Camera* osgUtil::CullVisitor::getCurrentCamera ( )
inline
RenderBin* osgUtil::CullVisitor::getCurrentRenderBin ( )
inline
RenderStage* osgUtil::CullVisitor::getCurrentRenderStage ( )
inline
StateGraph* osgUtil::CullVisitor::getCurrentStateGraph ( )
inline
virtual float osgUtil::CullVisitor::getDistanceFromEyePoint ( const osg::Vec3 ,
bool   
) const
virtual

Get the distance of a point from the eye point, distance value in the eye coordinate system.

Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. If the getDistanceFromEyePoint(pos) is not implemented than a default value of 0.0 is returned.

Reimplemented from osg::NodeVisitor.

virtual float osgUtil::CullVisitor::getDistanceToEyePoint ( const osg::Vec3 ,
bool   
) const
virtual

Get the distance from a point to the eye point, distance value in local coordinate system.

Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. If the getDistanceFromEyePoint(pos) is not implemented then a default value of 0.0 is returned.

Reimplemented from osg::NodeVisitor.

virtual float osgUtil::CullVisitor::getDistanceToViewPoint ( const osg::Vec3 ,
bool   
) const
virtual

Get the distance from a point to the view point, distance value in local coordinate system.

Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. If the getDistanceToViewPoint(pos) is not implemented then a default value of 0.0 is returned.

Reimplemented from osg::NodeVisitor.

virtual osg::Vec3 osgUtil::CullVisitor::getEyePoint ( ) const
inlinevirtual

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.

Identifier* osgUtil::CullVisitor::getIdentifier ( )
inline
const Identifier* osgUtil::CullVisitor::getIdentifier ( ) const
inline
osg::RenderInfo& osgUtil::CullVisitor::getRenderInfo ( )
inline
const osg::RenderInfo& osgUtil::CullVisitor::getRenderInfo ( ) const
inline
RenderStage* osgUtil::CullVisitor::getRenderStage ( )
inline
StateGraph* osgUtil::CullVisitor::getRootStateGraph ( )
inline
osg::State* osgUtil::CullVisitor::getState ( )
inline
const osg::State* osgUtil::CullVisitor::getState ( ) const
inline
virtual osg::Vec3 osgUtil::CullVisitor::getViewPoint ( ) const
inlinevirtual

Get the view point in local coordinates.

Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement.

Reimplemented from osg::NodeVisitor.

void osgUtil::CullVisitor::handle_cull_callbacks_and_accept ( osg::Node node,
osg::Node acceptNode 
)
inlineprotected
void osgUtil::CullVisitor::handle_cull_callbacks_and_traverse ( osg::Node node)
inlineprotected
osgUtil::CullVisitor::META_NodeVisitor ( osgUtil  ,
CullVisitor   
) const
inline

Create a shallow copy of the CullVisitor, used by CullVisitor::create() to clone the prototype.

CullVisitor& osgUtil::CullVisitor::operator= ( const CullVisitor )
inlineprotected

Prevent unwanted copy operator.

virtual void osgUtil::CullVisitor::popProjectionMatrix ( )
virtual

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

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.

static osg::ref_ptr<CullVisitor>& osgUtil::CullVisitor::prototype ( )
static

get the prototype singleton used by CullVisitor::create().

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.

virtual void osgUtil::CullVisitor::reset ( )
virtual

Method to call to reset visitor.

Useful if your visitor accumulates state during a traversal, and you plan to reuse the visitor. To flush that state for the next traversal: call reset() prior to each traversal.

Reimplemented from osg::NodeVisitor.

void osgUtil::CullVisitor::setCalculatedFarPlane ( value_type  value)
inline
void osgUtil::CullVisitor::setCalculatedNearPlane ( value_type  value)
inline
void osgUtil::CullVisitor::setCurrentRenderBin ( RenderBin rb)
inline
void osgUtil::CullVisitor::setIdentifier ( Identifier identifier)
inline
void osgUtil::CullVisitor::setRenderInfo ( osg::RenderInfo renderInfo)
inline
void osgUtil::CullVisitor::setRenderStage ( RenderStage rg)
inline
void osgUtil::CullVisitor::setState ( osg::State state)
inline
void osgUtil::CullVisitor::setStateGraph ( StateGraph rg)
inline
bool osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Matrix matrix,
const osg::BoundingBox bb 
)
bool osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Matrix matrix,
const osg::Drawable drawable,
bool  isBillboard = false 
)
void osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Vec3 pos)

Member Data Documentation

value_type osgUtil::CullVisitor::_computed_zfar
protected
value_type osgUtil::CullVisitor::_computed_znear
protected
RenderBin* osgUtil::CullVisitor::_currentRenderBin
protected
unsigned int osgUtil::CullVisitor::_currentReuseRenderLeafIndex
protected
StateGraph* osgUtil::CullVisitor::_currentStateGraph
protected
DistanceMatrixDrawableMap osgUtil::CullVisitor::_farPlaneCandidateMap
protected
osg::ref_ptr<Identifier> osgUtil::CullVisitor::_identifier
protected
DistanceMatrixDrawableMap osgUtil::CullVisitor::_nearPlaneCandidateMap
protected
unsigned int osgUtil::CullVisitor::_numberOfEncloseOverrideRenderBinDetails
protected
std::vector<RenderBin*> osgUtil::CullVisitor::_renderBinStack
protected
osg::RenderInfo osgUtil::CullVisitor::_renderInfo
protected
RenderLeafList osgUtil::CullVisitor::_reuseRenderLeafList
protected
osg::ref_ptr<RenderStage> osgUtil::CullVisitor::_rootRenderStage
protected
osg::ref_ptr<StateGraph> osgUtil::CullVisitor::_rootStateGraph
protected
unsigned int osgUtil::CullVisitor::_traversalNumber
protected

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

osg logo
Generated at Wed Nov 11 2015 22:15:14 for the OpenSceneGraph by doxygen 1.8.10.