Panda3D
Loading...
Searching...
No Matches
StencilAttrib Class Reference

A StencilAttrib is a collection of all stencil render states. More...

#include "stencilAttrib.h"

Inheritance diagram for StencilAttrib:
RenderAttrib TypedWritableReferenceCount TypedWritable ReferenceCount TypedObject MemoryBase MemoryBase

Public Types

enum  StencilComparisonFunction {
  SCF_never = M_never , SCF_less_than = M_less , SCF_equal = M_equal , SCF_less_than_or_equal = M_less_equal ,
  SCF_greater_than = M_greater , SCF_not_equal = M_not_equal , SCF_greater_than_or_equal = M_greater_equal , SCF_always = M_always
}
 
enum  StencilOperation {
  SO_keep , SO_zero , SO_replace , SO_increment ,
  SO_decrement , SO_invert , SO_increment_saturate , SO_decrement_saturate
}
 
enum  StencilRenderState {
  SRS_front_comparison_function , SRS_front_stencil_fail_operation , SRS_front_stencil_pass_z_fail_operation , SRS_front_stencil_pass_z_pass_operation ,
  SRS_reference , SRS_read_mask , SRS_write_mask , SRS_back_comparison_function ,
  SRS_back_stencil_fail_operation , SRS_back_stencil_pass_z_fail_operation , SRS_back_stencil_pass_z_pass_operation , SRS_clear ,
  SRS_clear_value , SRS_total
}
 
- Public Types inherited from RenderAttrib
enum  PandaCompareFunc {
  M_none =0 , M_never , M_less , M_equal ,
  M_less_equal , M_greater , M_not_equal , M_greater_equal ,
  M_always
}
 
enum  TexGenMode {
  M_off , M_eye_sphere_map , M_world_cube_map , M_eye_cube_map ,
  M_world_normal , M_eye_normal , M_world_position , M_unused ,
  M_eye_position , M_point_sprite , M_unused2 , M_constant
}
 

Public Member Functions

virtual TypeHandle force_init_type ()
 
unsigned int get_render_state (StencilRenderState render_state_identifier) const
 Returns render state.
 
virtual int get_slot () const
 
virtual TypeHandle get_type () const
 
virtual void output (std::ostream &out) const
 
virtual void write_datagram (BamWriter *manager, Datagram &dg)
 Writes the contents of this object to the datagram for shipping out to a Bam file.
 
- Public Member Functions inherited from RenderAttrib
 RenderAttrib (const RenderAttrib &copy)=delete
 
virtual ~RenderAttrib ()
 The destructor is responsible for removing the RenderAttrib from the global set if it is there.
 
int compare_to (const RenderAttrib &other) const
 
 CPT (RenderAttrib) compose(const RenderAttrib *other) const
 
 CPT (RenderAttrib) get_unique() const
 
 CPT (RenderAttrib) invert_compose(const RenderAttrib *other) const
 
virtual bool cull_callback (CullTraverser *trav, const CullTraverserData &data) const
 If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time.
 
virtual void finalize (BamReader *manager)
 Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.
 
size_t get_hash () const
 
virtual bool has_cull_callback () const
 Should be overridden by derived classes to return true if cull_callback() has been defined.
 
virtual bool lower_attrib_can_override () const
 Intended to be overridden by derived RenderAttrib types to specify how two consecutive RenderAttrib objects of the same type interact.
 
RenderAttriboperator= (const RenderAttrib &copy)=delete
 
virtual bool unref () const final
 This method overrides ReferenceCount::unref() to clear the pointer from the global object pool when its reference count goes to zero.
 
virtual void write (std::ostream &out, int indent_level) const
 
- Public Member Functions inherited from TypedWritableReferenceCount
 TypedWritableReferenceCount (const TypedWritableReferenceCount &copy)
 
virtual ReferenceCountas_reference_count ()
 Returns the pointer cast to a ReferenceCount pointer, if it is in fact of that type.
 
void operator= (const TypedWritableReferenceCount &copy)
 
- Public Member Functions inherited from TypedWritable
 TypedWritable (const TypedWritable &copy)
 
virtual int complete_pointers (TypedWritable **p_list, BamReader *manager)
 Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().
 
vector_uchar encode_to_bam_stream () const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a bytes object.
 
bool encode_to_bam_stream (vector_uchar &data, BamWriter *writer=nullptr) const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.
 
UpdateSeq get_bam_modified () const
 Returns the current bam_modified counter.
 
void mark_bam_modified ()
 Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams.
 
void operator= (const TypedWritable &copy)
 
virtual bool require_fully_complete () const
 Some objects require all of their nested pointers to have been completed before the objects themselves can be completed.
 
virtual void update_bam_nested (BamWriter *manager)
 Called by the BamWriter when this object has not itself been modified recently, but it should check its nested objects for updates.
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)=default
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer.
 
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer.
 
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.
 
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly.
 
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type.
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from MemoryBase
void operator delete (void *, void *)
 
void operator delete (void *ptr)
 
void operator delete[] (void *, void *)
 
void operator delete[] (void *ptr)
 
void * operator new (size_t size)
 
void * operator new (size_t size, void *ptr)
 
void * operator new[] (size_t size)
 
void * operator new[] (size_t size, void *ptr)
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
 
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
 
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
 
void ref () const
 Explicitly increments the reference count.
 
bool ref_if_nonzero () const
 Atomically increases the reference count of this object if it is not zero.
 
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
 
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
 
bool unref_if_one () const
 Atomically decreases the reference count of this object if it is one.
 
WeakReferenceListweak_ref ()
 Adds the indicated PointerToVoid as a weak reference to this object.
 
void weak_unref ()
 Removes the indicated PointerToVoid as a weak reference to this object.
 

Static Public Member Functions

static int get_class_slot ()
 
static TypeHandle get_class_type ()
 
static void init_type ()
 
static ConstPointerTo< RenderAttribmake (bool front_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask=~(unsigned int) 0)
 Constructs a front face StencilAttrib.
 
static ConstPointerTo< RenderAttribmake_2_sided (bool front_enable, bool back_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, PandaCompareFunc back_comparison_function, StencilOperation back_stencil_fail_operation, StencilOperation back_stencil_pass_z_fail_operation, StencilOperation back_stencil_pass_z_pass_operation)
 Constructs a two-sided StencilAttrib.
 
static ConstPointerTo< RenderAttribmake_2_sided_with_clear (bool front_enable, bool back_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, PandaCompareFunc back_comparison_function, StencilOperation back_stencil_fail_operation, StencilOperation back_stencil_pass_z_fail_operation, StencilOperation back_stencil_pass_z_pass_operation, bool clear, unsigned int clear_value)
 Constructs a two-sided StencilAttrib.
 
static ConstPointerTo< RenderAttribmake_default ()
 Returns a RenderAttrib that corresponds to whatever the standard default properties for render attributes of this type ought to be.
 
static ConstPointerTo< RenderAttribmake_off ()
 Constructs a StencilAttrib that has stenciling turned off.
 
static ConstPointerTo< RenderAttribmake_with_clear (bool front_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, bool clear, unsigned int clear_value)
 Constructs a front face StencilAttrib.
 
static void register_with_read_factory ()
 Tells the BamReader how to create objects of type StencilAttrib.
 
- Static Public Member Functions inherited from RenderAttrib
static TypedWritablechange_this (TypedWritable *old_ptr, BamReader *manager)
 Called immediately after complete_pointers(), this gives the object a chance to adjust its own pointer if desired.
 
static int garbage_collect ()
 Performs a garbage-collection cycle.
 
static TypeHandle get_class_type ()
 
static int get_num_attribs ()
 Returns the total number of unique RenderAttrib objects allocated in the world.
 
static void init_attribs ()
 Make sure the global _attribs map is allocated.
 
static void init_type ()
 
static void list_attribs (std::ostream &out)
 Lists all of the RenderAttribs in the cache to the output stream, one per line.
 
static int register_slot (TypeHandle type_handle, int sort, RenderAttrib *default_attrib)
 Adds the indicated TypeHandle to the registry, if it is not there already, and returns a unique slot number.
 
static bool validate_attribs ()
 Ensures that the cache is still stored in sorted order.
 
- Static Public Member Functions inherited from TypedWritableReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
static PT (TypedWritableReferenceCount) decode_from_bam_stream(vector_uchar data
 
- Static Public Member Functions inherited from TypedWritable
static bool decode_raw_from_bam_stream (TypedWritable *&ptr, ReferenceCount *&ref_ptr, vector_uchar data, BamReader *reader=nullptr)
 Reads the bytes created by a previous call to encode_to_bam_stream(), and extracts the single object on those bytes.
 
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.
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 

Public Attributes

 get_class_slot
 
- Public Attributes inherited from RenderAttrib
 get_slot
 
- Public Attributes inherited from TypedWritableReferenceCount
static BamReaderreader = nullptr)
 
- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count.
 

Static Public Attributes

static const char * stencil_render_state_name_array [SRS_total]
 
- Static Public Attributes inherited from TypedWritable
static TypedWritable *const Null = nullptr
 

Detailed Description

A StencilAttrib is a collection of all stencil render states.

The render states in a StencilAttrib are read-only. A StencilAttrib is created with make or make_2_sided. To determine if two sided stencil is supported, call the function GraphicsStateGuardian:: get_supports_two_sided_stencil.

Definition at line 28 of file stencilAttrib.h.

Member Enumeration Documentation

◆ StencilComparisonFunction

enum StencilAttrib::StencilComparisonFunction

Definition at line 58 of file stencilAttrib.h.

◆ StencilOperation

enum StencilAttrib::StencilOperation

Definition at line 69 of file stencilAttrib.h.

◆ StencilRenderState

enum StencilAttrib::StencilRenderState

Definition at line 36 of file stencilAttrib.h.

Member Function Documentation

◆ force_init_type()

virtual TypeHandle StencilAttrib::force_init_type ( )
inlinevirtual

Reimplemented from RenderAttrib.

Definition at line 181 of file stencilAttrib.h.

◆ get_class_slot()

static int StencilAttrib::get_class_slot ( )
inlinestatic

Definition at line 152 of file stencilAttrib.h.

◆ get_class_type()

static TypeHandle StencilAttrib::get_class_type ( )
inlinestatic

Definition at line 169 of file stencilAttrib.h.

◆ get_render_state()

unsigned int StencilAttrib::get_render_state ( StencilRenderState render_state_identifier) const
inline

Returns render state.

Definition at line 17 of file stencilAttrib.I.

◆ get_slot()

virtual int StencilAttrib::get_slot ( ) const
inlinevirtual

Implements RenderAttrib.

Definition at line 155 of file stencilAttrib.h.

◆ get_type()

virtual TypeHandle StencilAttrib::get_type ( ) const
inlinevirtual

Reimplemented from RenderAttrib.

Definition at line 178 of file stencilAttrib.h.

◆ init_type()

static void StencilAttrib::init_type ( )
inlinestatic

Definition at line 172 of file stencilAttrib.h.

◆ make()

ConstPointerTo< RenderAttrib > StencilAttrib::make ( bool front_enable,
PandaCompareFunc front_comparison_function,
StencilOperation stencil_fail_operation,
StencilOperation stencil_pass_z_fail_operation,
StencilOperation front_stencil_pass_z_pass_operation,
unsigned int reference,
unsigned int read_mask,
unsigned int write_mask = ~(unsigned int)0 )
static

Constructs a front face StencilAttrib.

Definition at line 90 of file stencilAttrib.cxx.

◆ make_2_sided()

ConstPointerTo< RenderAttrib > StencilAttrib::make_2_sided ( bool front_enable,
bool back_enable,
PandaCompareFunc front_comparison_function,
StencilOperation stencil_fail_operation,
StencilOperation stencil_pass_z_fail_operation,
StencilOperation front_stencil_pass_z_pass_operation,
unsigned int reference,
unsigned int read_mask,
unsigned int write_mask,
PandaCompareFunc back_comparison_function,
StencilOperation back_stencil_fail_operation,
StencilOperation back_stencil_pass_z_fail_operation,
StencilOperation back_stencil_pass_z_pass_operation )
static

Constructs a two-sided StencilAttrib.

Definition at line 127 of file stencilAttrib.cxx.

◆ make_2_sided_with_clear()

ConstPointerTo< RenderAttrib > StencilAttrib::make_2_sided_with_clear ( bool front_enable,
bool back_enable,
PandaCompareFunc front_comparison_function,
StencilOperation stencil_fail_operation,
StencilOperation stencil_pass_z_fail_operation,
StencilOperation front_stencil_pass_z_pass_operation,
unsigned int reference,
unsigned int read_mask,
unsigned int write_mask,
PandaCompareFunc back_comparison_function,
StencilOperation back_stencil_fail_operation,
StencilOperation back_stencil_pass_z_fail_operation,
StencilOperation back_stencil_pass_z_pass_operation,
bool clear,
unsigned int clear_value )
static

Constructs a two-sided StencilAttrib.

Definition at line 215 of file stencilAttrib.cxx.

◆ make_default()

ConstPointerTo< RenderAttrib > StencilAttrib::make_default ( )
static

Returns a RenderAttrib that corresponds to whatever the standard default properties for render attributes of this type ought to be.

Definition at line 82 of file stencilAttrib.cxx.

◆ make_off()

ConstPointerTo< RenderAttrib > StencilAttrib::make_off ( )
static

Constructs a StencilAttrib that has stenciling turned off.

Definition at line 72 of file stencilAttrib.cxx.

◆ make_with_clear()

ConstPointerTo< RenderAttrib > StencilAttrib::make_with_clear ( bool front_enable,
PandaCompareFunc front_comparison_function,
StencilOperation stencil_fail_operation,
StencilOperation stencil_pass_z_fail_operation,
StencilOperation front_stencil_pass_z_pass_operation,
unsigned int reference,
unsigned int read_mask,
unsigned int write_mask,
bool clear,
unsigned int clear_value )
static

Constructs a front face StencilAttrib.

Definition at line 173 of file stencilAttrib.cxx.

◆ output()

void StencilAttrib::output ( std::ostream & out) const
virtual

Reimplemented from RenderAttrib.

Definition at line 266 of file stencilAttrib.cxx.

◆ register_with_read_factory()

void StencilAttrib::register_with_read_factory ( )
static

Tells the BamReader how to create objects of type StencilAttrib.

Definition at line 328 of file stencilAttrib.cxx.

References BamReader::get_factory(), and Factory< Type >::register_factory().

◆ write_datagram()

void StencilAttrib::write_datagram ( BamWriter * manager,
Datagram & dg )
virtual

Writes the contents of this object to the datagram for shipping out to a Bam file.

Reimplemented from RenderAttrib.

Definition at line 337 of file stencilAttrib.cxx.

References Datagram::add_int32(), Datagram::add_uint32(), BamWriter::get_file_minor_ver(), and RenderAttrib::write_datagram().

Member Data Documentation

◆ get_class_slot

StencilAttrib::get_class_slot

Definition at line 158 of file stencilAttrib.h.

◆ stencil_render_state_name_array

const char * StencilAttrib::stencil_render_state_name_array
static
Initial value:
=
{
"SRS_front_comparison_function",
"SRS_front_stencil_fail_operation",
"SRS_front_stencil_pass_z_fail_operation",
"SRS_front_stencil_pass_z_pass_operation",
"SRS_reference",
"SRS_read_mask",
"SRS_write_mask",
"SRS_back_comparison_function",
"SRS_back_stencil_fail_operation",
"SRS_back_stencil_pass_z_fail_operation",
"SRS_back_stencil_pass_z_pass_operation",
"SRS_clear",
"SRS_clear_value",
}

Definition at line 25 of file stencilAttrib.h.


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