The ICuller graph node interface. More...

#include "murl_graph_i_culler.h"

Inheritance diagram for Murl::Graph::ICuller:

Public Types

enum  IntersectionFlags : UInt32 {
  INTERSECTION_FLAG_VOLUME , INTERSECTION_FLAG_NEAR_PLANE , INTERSECTION_FLAG_FAR_PLANE , INTERSECTION_FLAG_ALWAYS ,
  INTERSECTION_FLAG_NONE , INTERSECTION_FLAG_ALL
}
 Intersection flags. More...
 

Public Member Functions

virtual INodeGetNodeInterface ()=0
 Get the mutable Graph::INode interface. More...
 
virtual const INodeGetNodeInterface () const =0
 Get the constant Graph::INode interface. More...
 
virtual ICullerNodeTargetGetSubCullerNodeTarget ()=0
 Get the mutable container holding the optional child cullers. More...
 
virtual const ICullerNodeTargetGetSubCullerNodeTarget () const =0
 Get the constant container holding the optional child cullers. More...
 
virtual ISubjectNodeTargetGetSubjectNodeTarget ()=0
 Get the mutable Graph::ISubjectNodeTarget container. More...
 
virtual const ISubjectNodeTargetGetSubjectNodeTarget () const =0
 Get the constant Graph::ISubjectNodeTarget container. More...
 
virtual ICullerNodeTargetGetParentCullerNodeTarget ()=0
 Get the mutable Graph::ICullerNodeTarget container storing the culler's parent. More...
 
virtual const ICullerNodeTargetGetParentCullerNodeTarget () const =0
 Get the constant Graph::ICullerNodeTarget container storing the culler's parent. More...
 
virtual UInt32 Intersect (const IBoundingVolume *boundingVolume, UInt32 flags) const =0
 Check if a given bounding volume can be culled. More...
 
virtual UInt32 GetNumberOfStages () const =0
 Get the culler's number of stages. More...
 
virtual const ICullerGetCuller (UInt32 stage) const =0
 Get the culler's actual node at a given stage. More...
 

Detailed Description

The ICuller graph node interface.

This interface represents a node that can be used to cull away any objects that cannot be seen through a specific camera or heard via a specific listener, mainly to speed up audio/video rendering.

Cullers are always attached to a given Graph::ISubject node (a camera or listener), retrieving that subject's position, orientation and other parameters such as viewing frustum etc., to determine its actual perception area. In addition, cullers may rely on extended information (such as BSP visibility information optionally contained within a Resource::IMesh object for a Graph::IResourceMeshCuller node) to perform more precise object culling.

See Output-States, Slots und Units for an overview of state handling during scene graph traversal.
See Graph::ICullerState for activating a culler during traversal.

Member Enumeration Documentation

◆ IntersectionFlags

Intersection flags.

Enumerator
INTERSECTION_FLAG_VOLUME 

Query intersections with the overall bounding volume.

INTERSECTION_FLAG_NEAR_PLANE 

Query intersections with the near plane.

INTERSECTION_FLAG_FAR_PLANE 

Query intersections with the far plane.

INTERSECTION_FLAG_ALWAYS 

Do not query intersections, report back the same flag.

INTERSECTION_FLAG_NONE 

No intersection flags.

INTERSECTION_FLAG_ALL 

All available intersection flags combined.

Member Function Documentation

◆ GetNodeInterface() [1/2]

virtual INode* Murl::Graph::ICuller::GetNodeInterface ( )
pure virtual

Get the mutable Graph::INode interface.

This method returns a mutable pointer to the node's Graph::INode interface, to be able to query or modify common node properties such as active state, visibility or ID.

Returns
The mutable Graph::INode interface, or null if not available

◆ GetNodeInterface() [2/2]

virtual const INode* Murl::Graph::ICuller::GetNodeInterface ( ) const
pure virtual

Get the constant Graph::INode interface.

This method returns a constant pointer to the node's Graph::INode interface, to be able to query common node properties such as active state, visibility or ID.

Returns
The constant Graph::INode interface, or null if not available

◆ GetSubCullerNodeTarget() [1/2]

virtual ICullerNodeTarget* Murl::Graph::ICuller::GetSubCullerNodeTarget ( )
pure virtual

Get the mutable container holding the optional child cullers.

This method returns a mutable pointer to the node's Graph::ICullerNodeTarget sub container, which is used to store multiple sub-cullers.

Returns
The mutable Graph::ICullerNodeTarget container, or null if not available.

◆ GetSubCullerNodeTarget() [2/2]

virtual const ICullerNodeTarget* Murl::Graph::ICuller::GetSubCullerNodeTarget ( ) const
pure virtual

Get the constant container holding the optional child cullers.

This method returns a constant pointer to the node's Graph::ICullerNodeTarget sub container, which is used to store multiple sub-cullers.

Returns
The constant Graph::ICullerNodeTarget container, or null if not available.

◆ GetSubjectNodeTarget() [1/2]

virtual ISubjectNodeTarget* Murl::Graph::ICuller::GetSubjectNodeTarget ( )
pure virtual

Get the mutable Graph::ISubjectNodeTarget container.

This method returns a mutable pointer to the node's Graph::ISubjectNodeTarget container, which allows to set or query the subject this culler refers to.

Returns
The mutable Graph::ISubjectNodeTarget container, or null if not available.

◆ GetSubjectNodeTarget() [2/2]

virtual const ISubjectNodeTarget* Murl::Graph::ICuller::GetSubjectNodeTarget ( ) const
pure virtual

Get the constant Graph::ISubjectNodeTarget container.

This method returns a constant pointer to the node's Graph::ISubjectNodeTarget container, which allows to query the camera this state node refers to.

Returns
The mutable Graph::ISubjectNodeTarget container, or null if not available.

◆ GetParentCullerNodeTarget() [1/2]

virtual ICullerNodeTarget* Murl::Graph::ICuller::GetParentCullerNodeTarget ( )
pure virtual

Get the mutable Graph::ICullerNodeTarget container storing the culler's parent.

This method returns a mutable pointer to the node's Graph::ICullerNodeTarget container that stores an optional reference to another culler, to set or query the culler's parent.

Returns
The mutable Graph::ICullerNodeTarget parent container, or null if not available.

◆ GetParentCullerNodeTarget() [2/2]

virtual const ICullerNodeTarget* Murl::Graph::ICuller::GetParentCullerNodeTarget ( ) const
pure virtual

Get the constant Graph::ICullerNodeTarget container storing the culler's parent.

This method returns a constant pointer to the node's Graph::ICullerNodeTarget container that stores an optional reference to another culler, to query the culler's parent.

Returns
The constant Graph::ICullerNodeTarget parent container, or null if not available.

◆ Intersect()

virtual UInt32 Murl::Graph::ICuller::Intersect ( const IBoundingVolume boundingVolume,
UInt32  flags 
) const
pure virtual

Check if a given bounding volume can be culled.

This method checks if a bounding volume transformed via a given world matrix and scale factor is intersecting the culler's view area. If false, the object represented through this volume is not visible and can be culled.

Parameters
boundingVolumeThe object's bounding volume.
flagsA combination of IntersectionFlags specifying for which attributes to perform the intersection test.
Returns
A combination of IntersectionFlags specifying the result of the intersection test.

◆ GetNumberOfStages()

virtual UInt32 Murl::Graph::ICuller::GetNumberOfStages ( ) const
pure virtual

Get the culler's number of stages.

Returns
The number of stages.

◆ GetCuller()

virtual const ICuller* Murl::Graph::ICuller::GetCuller ( UInt32  stage) const
pure virtual

Get the culler's actual node at a given stage.

Parameters
stageThe stage to query.
Returns
The culler sub-object.

The documentation for this interface was generated from the following file:
  • murl_graph_i_culler.h


Copyright © 2011-2024 Spraylight GmbH.