Panda3D
Loading...
Searching...
No Matches
ShaderAttrib Class Reference
Inheritance diagram for ShaderAttrib:
RenderAttrib TypedWritableReferenceCount TypedWritable ReferenceCount TypedObject MemoryBase MemoryBase

Public Types

enum  { F_disable_alpha_write = 0 , F_subsume_alpha_test = 1 , F_hardware_skinning = 2 , F_shader_point_size = 3 }
 
- 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

bool auto_gloss_on () const
 
bool auto_glow_on () const
 
bool auto_normal_on () const
 
bool auto_ramp_on () const
 
bool auto_shader () const
 If true, then this ShaderAttrib does not contain an explicit shader - instead, it requests the automatic generation of a shader.
 
bool auto_shadow_on () const
 
ConstPointerTo< RenderAttribclear_all_shader_inputs () const
 Clears all the shader inputs on the attrib.
 
ConstPointerTo< RenderAttribclear_flag (int flag) const
 
ConstPointerTo< RenderAttribclear_shader () const
 
ConstPointerTo< RenderAttribclear_shader_input (const InternalName *id) const
 
ConstPointerTo< RenderAttribclear_shader_input (const std::string &id) const
 
virtual TypeHandle force_init_type ()
 
bool get_flag (int flag) const
 
int get_instance_count () const
 
const Shaderget_shader () const
 
const ShaderInputget_shader_input (const InternalName *id) const
 Returns the ShaderInput of the given name.
 
const ShaderInputget_shader_input (const std::string &id) const
 Returns the ShaderInput of the given name.
 
ShaderBufferget_shader_input_buffer (const InternalName *id) const
 Returns the ShaderInput as a ShaderBuffer.
 
const LMatrix4 & get_shader_input_matrix (const InternalName *id, LMatrix4 &matrix) const
 Returns the ShaderInput as a matrix.
 
const NodePathget_shader_input_nodepath (const InternalName *id) const
 Returns the ShaderInput as a nodepath.
 
const Shader::ShaderPtrDataget_shader_input_ptr (const InternalName *id) const
 Returns the ShaderInput as a ShaderPtrData struct.
 
Textureget_shader_input_texture (const InternalName *id, SamplerState *sampler=nullptr) const
 Returns the ShaderInput as a texture.
 
LVecBase4 get_shader_input_vector (InternalName *id) const
 Returns the ShaderInput as a vector.
 
int get_shader_priority () const
 
virtual int get_slot () const
 
virtual TypeHandle get_type () const
 
bool has_shader () const
 If true, the shader field of this attribute overrides the shader field of the parent attribute.
 
bool has_shader_input (CPT_InternalName id) const
 Returns true if there is a ShaderInput of the given name.
 
virtual void output (std::ostream &out) const
 
ConstPointerTo< RenderAttribset_flag (int flag, bool value) const
 
ConstPointerTo< RenderAttribset_instance_count (int instance_count) const
 Sets the geometry instance count.
 
ConstPointerTo< RenderAttribset_shader (const Shader *s, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_auto (BitMask32 shader_switch, int priority=0) const
 Set auto shader with bitmask to customize use, e.g., to keep normal, glow, etc., on or off.
 
ConstPointerTo< RenderAttribset_shader_auto (int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (const ShaderInput &input) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const LMatrix3 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const LMatrix4 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const LVecBase2 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const LVecBase3 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const LVecBase4 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const NodePath &np, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_double &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_float &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_LMatrix3 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_LMatrix4 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_LVecBase2 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_LVecBase3 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, const PTA_LVecBase4 &v, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, double n1=0, double n2=0, double n3=0, double n4=1, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (CPT_InternalName id, Texture *tex, int priority=0) const
 
ConstPointerTo< RenderAttribset_shader_input (ShaderInput &&input) const
 
ConstPointerTo< RenderAttribset_shader_off (int priority=0) const
 
- 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
 
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 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 (const Shader *shader=nullptr, int priority=0)
 Constructs a new ShaderAttrib object with nothing set.
 
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 new ShaderAttrib object that disables the use of shaders (it does not clear out all shader data, however.)
 
static void register_with_read_factory ()
 Factory method to generate a Shader object.
 
- 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
 
 get_instance_count
 Returns the number of geometry instances.
 
 get_shader
 Returns the shader object associated with the node.
 
- 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.
 

Friends

class Extension< NodePath >
 
class Extension< ShaderAttrib >
 

Additional Inherited Members

- Static Public Attributes inherited from TypedWritable
static TypedWritable *const Null = nullptr
 

Detailed Description

Definition at line 39 of file shaderAttrib.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Definition at line 49 of file shaderAttrib.h.

Member Function Documentation

◆ auto_shader()

bool ShaderAttrib::auto_shader ( ) const
inline

If true, then this ShaderAttrib does not contain an explicit shader - instead, it requests the automatic generation of a shader.

Definition at line 70 of file shaderAttrib.I.

Referenced by StandardMunger::StandardMunger(), GraphicsStateGuardian::ensure_generated_shader(), CullableObject::munge_geom(), and GeomNode::r_prepare_scene().

◆ clear_all_shader_inputs()

ConstPointerTo< RenderAttrib > ShaderAttrib::clear_all_shader_inputs ( ) const

Clears all the shader inputs on the attrib.

Definition at line 260 of file shaderAttrib.cxx.

◆ clear_flag()

ConstPointerTo< RenderAttrib > ShaderAttrib::clear_flag ( int flag) const

Definition at line 188 of file shaderAttrib.cxx.

◆ clear_shader()

ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader ( ) const

Definition at line 154 of file shaderAttrib.cxx.

◆ clear_shader_input() [1/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader_input ( const InternalName * id) const

Definition at line 242 of file shaderAttrib.cxx.

◆ clear_shader_input() [2/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::clear_shader_input ( const std::string & id) const

Definition at line 252 of file shaderAttrib.cxx.

◆ force_init_type()

virtual TypeHandle ShaderAttrib::force_init_type ( )
inlinevirtual

Reimplemented from RenderAttrib.

Definition at line 183 of file shaderAttrib.h.

◆ get_class_slot()

static int ShaderAttrib::get_class_slot ( )
inlinestatic

Definition at line 162 of file shaderAttrib.h.

◆ get_class_type()

static TypeHandle ShaderAttrib::get_class_type ( )
inlinestatic

Definition at line 171 of file shaderAttrib.h.

◆ get_flag()

bool ShaderAttrib::get_flag ( int flag) const
inline

Definition at line 95 of file shaderAttrib.I.

◆ get_shader_input() [1/2]

const ShaderInput & ShaderAttrib::get_shader_input ( const InternalName * id) const

Returns the ShaderInput of the given name.

If no such name is found, this function does not return NULL — it returns the "blank" ShaderInput.

Definition at line 271 of file shaderAttrib.cxx.

References ShaderInput::get_blank().

Referenced by get_shader_input().

◆ get_shader_input() [2/2]

const ShaderInput & ShaderAttrib::get_shader_input ( const std::string & id) const

Returns the ShaderInput of the given name.

If no such name is found, this function does not return NULL — it returns the "blank" ShaderInput.

Definition at line 285 of file shaderAttrib.cxx.

References get_shader_input().

◆ get_shader_input_buffer()

ShaderBuffer * ShaderAttrib::get_shader_input_buffer ( const InternalName * id) const

Returns the ShaderInput as a ShaderBuffer.

Assertion fails if there is none, or if it is not a ShaderBuffer.

Definition at line 505 of file shaderAttrib.cxx.

◆ get_shader_input_matrix()

const LMatrix4 & ShaderAttrib::get_shader_input_matrix ( const InternalName * id,
LMatrix4 & matrix ) const

Returns the ShaderInput as a matrix.

Assertion fails if there is none, or if it is not a matrix or NodePath.

Definition at line 452 of file shaderAttrib.cxx.

References TransformState::get_mat, ShaderInput::get_nodepath(), NodePath::get_transform(), and NodePath::is_empty().

◆ get_shader_input_nodepath()

const NodePath & ShaderAttrib::get_shader_input_nodepath ( const InternalName * id) const

Returns the ShaderInput as a nodepath.

Assertion fails if there is none, or if it is not a nodepath.

Definition at line 294 of file shaderAttrib.cxx.

References NodePath::find().

◆ get_shader_input_ptr()

const Shader::ShaderPtrData * ShaderAttrib::get_shader_input_ptr ( const InternalName * id) const

Returns the ShaderInput as a ShaderPtrData struct.

Assertion fails if there is none. or if it is not a PTA(double/float)

Definition at line 381 of file shaderAttrib.cxx.

◆ get_shader_input_texture()

Texture * ShaderAttrib::get_shader_input_texture ( const InternalName * id,
SamplerState * sampler = nullptr ) const

Returns the ShaderInput as a texture.

Assertion fails if there is none, or if it is not a texture.

If sampler is not NULL, the sampler state to use for this texture is assigned to it.

Definition at line 409 of file shaderAttrib.cxx.

References Texture::get_default_sampler, ParamTextureSampler::get_sampler, and ParamTextureSampler::get_texture.

◆ get_shader_input_vector()

LVecBase4 ShaderAttrib::get_shader_input_vector ( InternalName * id) const

Returns the ShaderInput as a vector.

Assertion fails if there is none, or if it is not a vector.

Definition at line 323 of file shaderAttrib.cxx.

References TypedObject::is_of_type().

◆ get_shader_priority()

int ShaderAttrib::get_shader_priority ( ) const
inline

Definition at line 78 of file shaderAttrib.I.

◆ get_slot()

virtual int ShaderAttrib::get_slot ( ) const
inlinevirtual

Implements RenderAttrib.

Definition at line 165 of file shaderAttrib.h.

◆ get_type()

virtual TypeHandle ShaderAttrib::get_type ( ) const
inlinevirtual

Reimplemented from RenderAttrib.

Definition at line 180 of file shaderAttrib.h.

◆ has_shader()

bool ShaderAttrib::has_shader ( ) const
inline

If true, the shader field of this attribute overrides the shader field of the parent attribute.

Definition at line 61 of file shaderAttrib.I.

◆ has_shader_input()

bool ShaderAttrib::has_shader_input ( CPT_InternalName id) const
inline

Returns true if there is a ShaderInput of the given name.

Definition at line 103 of file shaderAttrib.I.

◆ init_type()

static void ShaderAttrib::init_type ( )
inlinestatic

Definition at line 174 of file shaderAttrib.h.

◆ make()

ConstPointerTo< RenderAttrib > ShaderAttrib::make ( const Shader * shader = nullptr,
int priority = 0 )
static

Constructs a new ShaderAttrib object with nothing set.

Definition at line 56 of file shaderAttrib.cxx.

Referenced by CullableObject::munge_geom(), NodePath::set_instance_count(), and NodePath::set_shader_auto().

◆ make_default()

ConstPointerTo< RenderAttrib > ShaderAttrib::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 75 of file shaderAttrib.cxx.

◆ make_off()

ConstPointerTo< RenderAttrib > ShaderAttrib::make_off ( )
static

Constructs a new ShaderAttrib object that disables the use of shaders (it does not clear out all shader data, however.)

Definition at line 42 of file shaderAttrib.cxx.

◆ output()

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

Reimplemented from RenderAttrib.

Definition at line 542 of file shaderAttrib.cxx.

◆ register_with_read_factory()

void ShaderAttrib::register_with_read_factory ( )
static

Factory method to generate a Shader object.

Definition at line 721 of file shaderAttrib.cxx.

Referenced by init_libpgraph().

◆ set_flag()

ConstPointerTo< RenderAttrib > ShaderAttrib::set_flag ( int flag,
bool value ) const

Definition at line 172 of file shaderAttrib.cxx.

◆ set_instance_count()

ConstPointerTo< RenderAttrib > ShaderAttrib::set_instance_count ( int instance_count) const

Sets the geometry instance count.

Do not confuse this with instanceTo, which is used for animation instancing, and has nothing to do with this. A value of 0 means not to use instancing at all.

Definition at line 232 of file shaderAttrib.cxx.

Referenced by NodePath::set_instance_count().

◆ set_shader()

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader ( const Shader * s,
int priority = 0 ) const

Definition at line 83 of file shaderAttrib.cxx.

◆ set_shader_auto() [1/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_auto ( BitMask32 shader_switch,
int priority = 0 ) const

Set auto shader with bitmask to customize use, e.g., to keep normal, glow, etc., on or off.

Definition at line 134 of file shaderAttrib.cxx.

References BitMask< WType, nbits >::get_bit().

◆ set_shader_auto() [2/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_auto ( int priority = 0) const

Definition at line 115 of file shaderAttrib.cxx.

◆ set_shader_input() [1/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input ( const ShaderInput & input) const

Definition at line 200 of file shaderAttrib.cxx.

◆ set_shader_input() [2/2]

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_input ( ShaderInput && input) const

Definition at line 215 of file shaderAttrib.cxx.

◆ set_shader_off()

ConstPointerTo< RenderAttrib > ShaderAttrib::set_shader_off ( int priority = 0) const

Definition at line 96 of file shaderAttrib.cxx.

Friends And Related Symbol Documentation

◆ Extension< NodePath >

friend class Extension< NodePath >
friend

Definition at line 156 of file shaderAttrib.h.

◆ Extension< ShaderAttrib >

friend class Extension< ShaderAttrib >
friend

Definition at line 156 of file shaderAttrib.h.

Member Data Documentation

◆ get_class_slot

ShaderAttrib::get_class_slot

Definition at line 168 of file shaderAttrib.h.

◆ get_instance_count

int ShaderAttrib::get_instance_count
inline

Returns the number of geometry instances.

A value of 0 means not to use instancing at all.

Definition at line 127 of file shaderAttrib.h.

Referenced by NodePath::get_instance_count().

◆ get_shader

const Shader * ShaderAttrib::get_shader

Returns the shader object associated with the node.

If get_override returns true, but get_shader returns NULL, that means that this attribute should disable the shader.

Definition at line 126 of file shaderAttrib.h.

Referenced by StandardMunger::StandardMunger(), GraphicsEngine::dispatch_compute(), and GeomNode::r_prepare_scene().


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