![]() |
Murl Engine Lua Addon API
Version 1.0 beta
|
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 sceneGraphStatesSlotsUnits for an overview of state handling during scene graph traversal.
See Graph::ICullerState for activating a culler during traversal.
Intersection flags.
Murl.Graph.ICuller.INTERSECTION_FLAG_VOLUME | Query intersections with the overall bounding volume. |
Murl.Graph.ICuller.INTERSECTION_FLAG_NEAR_PLANE | Query intersections with the near plane. |
Murl.Graph.ICuller.INTERSECTION_FLAG_FAR_PLANE | Query intersections with the far plane. |
Murl.Graph.ICuller.INTERSECTION_FLAG_ALWAYS | Do not query intersections, report back the same flag. |
Murl.Graph.ICuller.INTERSECTION_FLAG_NONE | No intersection flags. |
Murl.Graph.ICuller.INTERSECTION_FLAG_ALL | All available intersection flags combined. |
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.
Murl.Graph.INode GetNodeInterface()
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.
Murl.Graph.IGenericNodeTarget.GraphICuller GetSubCullerNodeTarget()
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.
Murl.Graph.IGenericNodeTarget.GraphISubject GetSubjectNodeTarget()
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.
Murl.Graph.IGenericNodeTarget.GraphICuller GetParentCullerNodeTarget()
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.
Integer Intersect(Murl.Graph.IBoundingVolume boundingVolume, Integer flags)
boundingVolume | The object's bounding volume. |
flags | A combination of IntersectionFlags specifying for which attributes to perform the intersection test. |
Get the culler's number of stages.
Integer GetNumberOfStages()
Get the culler's actual node at a given stage.
Murl.Graph.ICuller GetCuller(Integer stage)
stage | The stage to query. |