Panda3D
Classes | Public Member Functions | Static Public Member Functions | List of all members
PipeOcclusionCullTraverser Class Reference

This specialization of CullTraverser uses the graphics pipe itself to perform occlusion culling. More...

#include "pipeOcclusionCullTraverser.h"

Inheritance diagram for PipeOcclusionCullTraverser:
CullTraverser CullHandler TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase

Public Member Functions

 PipeOcclusionCullTraverser (GraphicsOutput *host)
 
 PipeOcclusionCullTraverser (const PipeOcclusionCullTraverser &copy)=delete
 
virtual void end_traverse ()
 Should be called when the traverser has finished traversing its scene, this gives it a chance to do any necessary finalization. More...
 
virtual TypeHandle force_init_type ()
 
GraphicsOutputget_buffer () const
 
const DrawMaskget_occlusion_mask () const
 Returns the DrawMask for occlusion polygons. More...
 
Textureget_texture ()
 Returns a Texture that can be used to visualize the efforts of the occlusion cull. More...
 
virtual TypeHandle get_type () const
 
void set_occlusion_mask (const DrawMask &occlusion_mask)
 Specifies the DrawMask that should be set on occlusion polygons for this scene. More...
 
virtual void set_scene (SceneSetup *scene_setup, GraphicsStateGuardianBase *gsg, bool dr_incomplete_render)
 Sets the SceneSetup object that indicates the initial camera position, etc. More...
 
- Public Member Functions inherited from CullTraverser
 CullTraverser (const CullTraverser &copy)
 
void draw_bounding_volume (const BoundingVolume *vol, const TransformState *internal_transform) const
 Draws an appropriate visualization of the indicated bounding volume. More...
 
const DrawMaskget_camera_mask () const
 Returns the visibility mask from the camera viewing the scene. More...
 
const TransformStateget_camera_transform () const
 Returns the position of the camera relative to the starting node. More...
 
CullHandlerget_cull_handler () const
 Returns the object that will receive the culled Geoms. More...
 
Threadget_current_thread () const
 Returns the currently-executing thread object, as passed to the CullTraverser constructor. More...
 
bool get_depth_offset_decals () const
 Returns true, as depth offsets are the only way that we implement decals nowadays. More...
 
bool get_effective_incomplete_render () const
 Returns true if the cull traversal is effectively in incomplete_render state, considering both the GSG's incomplete_render and the current DisplayRegion's incomplete_render flags. More...
 
GraphicsStateGuardianBaseget_gsg () const
 Returns the GraphicsStateGuardian in effect. More...
 
const RenderStateget_initial_state () const
 Returns the initial RenderState at the top of the scene graph we are traversing, or the empty state if the initial state was never set. More...
 
PortalClipperget_portal_clipper () const
 Returns the _portal_clipper pointer. More...
 
SceneSetupget_scene () const
 Returns the SceneSetup object. More...
 
const std::string & get_tag_state_key () const
 Returns the tag state key that has been specified for the scene's camera, if any. More...
 
GeometricBoundingVolumeget_view_frustum () const
 Returns the bounding volume that corresponds to the view frustum, or NULL if the view frustum is not in use or has not been set. More...
 
const TransformStateget_world_transform () const
 Returns the position of the starting node relative to the camera. More...
 
bool has_tag_state_key () const
 Returns true if a nonempty tag state key has been specified for the scene's camera, false otherwise. More...
 
void set_camera_mask (const DrawMask &camera_mask)
 Changes the visibility mask for the camera viewing the scene. More...
 
void set_cull_handler (CullHandler *cull_handler)
 Specifies the object that will receive the culled Geoms. More...
 
void set_portal_clipper (PortalClipper *portal_clipper)
 Specifies _portal_clipper object pointer that subsequent traverse() or traverse_below may use. More...
 
void set_view_frustum (GeometricBoundingVolume *view_frustum)
 Specifies the bounding volume that corresponds to the view frustum. More...
 
void traverse (const NodePath &root)
 Begins the traversal from the indicated node. More...
 
void traverse (CullTraverserData &data)
 Traverses from the next node with the given data, which has been constructed with the node but has not yet been converted into the node's space. More...
 
- Public Member Functions inherited from TypedReferenceCount
 TypedReferenceCount (const TypedReferenceCount &copy)
 
void operator= (const TypedReferenceCount &copy)
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)=default
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
int get_best_parent_from_Set (const std::set< int > &) const
 
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly. More...
 
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type. More...
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object. More...
 
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More...
 
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More...
 
void ref () const
 Explicitly increments the reference count. More...
 
bool ref_if_nonzero () const
 Atomically increases the reference count of this object if it is not zero. More...
 
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
virtual bool unref () const
 Explicitly decrements the reference count. More...
 
WeakReferenceListweak_ref ()
 Adds the indicated PointerToVoid as a weak reference to this object. More...
 
void weak_unref ()
 Removes the indicated PointerToVoid as a weak reference to this object. More...
 

Static Public Member Functions

static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from CullTraverser
static void flush_level ()
 Flushes the PStatCollectors used during traversal. More...
 
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle get_class_type ()
 
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96. More...
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from CullHandler
static void draw (CullableObject *object, GraphicsStateGuardianBase *gsg, bool force, Thread *current_thread)
 Draws the indicated CullableObject, with full support for decals if they are attached to the object. More...
 

Additional Inherited Members

- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count. More...
 
- Static Public Attributes inherited from CullTraverser
static PStatCollector _geom_nodes_pcollector
 
static PStatCollector _geoms_occluded_pcollector
 
static PStatCollector _geoms_pcollector
 
static PStatCollector _nodes_pcollector
 

Detailed Description

This specialization of CullTraverser uses the graphics pipe itself to perform occlusion culling.

As such, it's likely to be inefficient (since it interferes with the pipe's normal mode of rendering), and is mainly useful to test other, CPU-based occlusion algorithms.

This cannot be used in a multithreaded pipeline environment where cull and draw are operating simultaneously.

It can't be defined in the cull subdirectory, because it needs access to GraphicsPipe and DisplayRegion and other classes in display. So we put it in grutil instead, for lack of any better ideas.

Definition at line 41 of file pipeOcclusionCullTraverser.h.

Member Function Documentation

◆ end_traverse()

void PipeOcclusionCullTraverser::end_traverse ( )
virtual

Should be called when the traverser has finished traversing its scene, this gives it a chance to do any necessary finalization.

Reimplemented from CullHandler.

Definition at line 208 of file pipeOcclusionCullTraverser.cxx.

References GraphicsStateGuardian::end_scene(), CullTraverser::end_traverse(), CullTraverser::get_current_thread(), GraphicsStateGuardianBase::get_gsg, and CullHandler::record_object().

◆ get_occlusion_mask()

const DrawMask & PipeOcclusionCullTraverser::get_occlusion_mask ( ) const
inline

Returns the DrawMask for occlusion polygons.

See set_occlusion_mask().

Definition at line 37 of file pipeOcclusionCullTraverser.I.

◆ get_texture()

Texture * PipeOcclusionCullTraverser::get_texture ( )

Returns a Texture that can be used to visualize the efforts of the occlusion cull.

Definition at line 266 of file pipeOcclusionCullTraverser.cxx.

◆ set_occlusion_mask()

void PipeOcclusionCullTraverser::set_occlusion_mask ( const DrawMask occlusion_mask)
inline

Specifies the DrawMask that should be set on occlusion polygons for this scene.

This identifies the polygons that are to be treated as occluders. Polygons that do not have this draw mask set will not be considered occluders.

Definition at line 29 of file pipeOcclusionCullTraverser.I.

◆ set_scene()

void PipeOcclusionCullTraverser::set_scene ( SceneSetup scene_setup,
GraphicsStateGuardianBase gsg,
bool  dr_incomplete_render 
)
virtual

Sets the SceneSetup object that indicates the initial camera position, etc.

This must be called before traversal begins.

Reimplemented from CullTraverser.

Definition at line 126 of file pipeOcclusionCullTraverser.cxx.

References GraphicsStateGuardianBase::get_gsg, and CullTraverser::set_scene().


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