66 INLINE
size_t get_hash()
const;
68 INLINE
bool is_empty()
const;
70 INLINE
bool has_cull_callback()
const;
90 int num_attribs,
int override = 0);
101 CPT(
RenderState) adjust_all_priorities(
int adjustment)
const;
103 INLINE
bool has_attrib(
TypeHandle type)
const;
104 INLINE
bool has_attrib(
int slot)
const;
106 ALWAYS_INLINE
const RenderAttrib *get_attrib(
int slot)
const;
107 INLINE
const RenderAttrib *get_attrib_def(
int slot)
const;
108 INLINE
int get_override(
TypeHandle type)
const;
109 INLINE
int get_override(
int slot)
const;
111 MAKE_MAP_PROPERTY(attribs, has_attrib, get_attrib);
115 virtual bool unref()
const;
122 INLINE
size_t get_composition_cache_num_entries()
const;
123 INLINE
size_t get_invert_composition_cache_num_entries()
const;
125 INLINE
size_t get_composition_cache_size()
const;
126 INLINE
const RenderState *get_composition_cache_source(
size_t n)
const;
127 INLINE
const RenderState *get_composition_cache_result(
size_t n)
const;
128 INLINE
size_t get_invert_composition_cache_size()
const;
129 INLINE
const RenderState *get_invert_composition_cache_source(
size_t n)
const;
130 INLINE
const RenderState *get_invert_composition_cache_result(
size_t n)
const;
131 EXTENSION(PyObject *get_composition_cache()
const);
132 EXTENSION(PyObject *get_invert_composition_cache()
const);
134 void output(std::ostream &out)
const;
135 void write(std::ostream &out,
int indent_level)
const;
137 static int get_max_priority();
139 static int get_num_states();
140 static int get_num_unused_states();
141 static int clear_cache();
142 static void clear_munger_cache();
143 static int garbage_collect();
144 static void list_cycles(std::ostream &out);
145 static void list_states(std::ostream &out);
146 static bool validate_states();
147 EXTENSION(
static PyObject *get_states());
152 INLINE
int get_draw_order()
const;
153 INLINE
int get_bin_index()
const;
154 int get_geom_rendering(
int geom_rendering)
const;
157 static void bin_removed(
int bin_index);
159 INLINE
static void flush_level();
162 template<
class AttribType>
163 INLINE
bool get_attrib(
const AttribType *&attrib)
const;
164 template<
class AttribType>
165 INLINE
bool get_attrib(CPT(AttribType) &attrib)
const;
166 template<
class AttribType>
167 INLINE
void get_attrib_def(
const AttribType *&attrib)
const;
168 template<
class AttribType>
169 INLINE
void get_attrib_def(CPT(AttribType) &attrib)
const;
173 INLINE
void check_hash()
const;
174 bool validate_filled_slots()
const;
175 INLINE
bool do_cache_unref()
const;
176 INLINE
bool do_node_unref()
const;
177 INLINE
void calc_hash();
180 class CompositionCycleDescEntry {
182 INLINE CompositionCycleDescEntry(
const RenderState *obj,
196 void detect_and_break_cycles();
197 static bool r_detect_cycles(
const RenderState *start_state,
201 static bool r_detect_reverse_cycles(
const RenderState *start_state,
207 void remove_cache_pointers();
209 void determine_bin_index();
210 void determine_cull_callback();
213 INLINE
void set_destructing();
214 INLINE
bool is_destructing()
const;
216 INLINE
void consider_update_pstats(
int old_referenced_bits)
const;
217 static void update_pstats(
int old_referenced_bits,
int new_referenced_bits);
220 static void init_states();
250 INLINE Composition();
251 INLINE Composition(
const Composition ©);
273 mutable int _last_mi;
286 static size_t _garbage_index;
303 INLINE Attribute(
const RenderAttrib *attrib,
int override);
304 INLINE Attribute(
int override = 0);
305 INLINE Attribute(
const Attribute ©);
306 INLINE
void operator = (
const Attribute ©);
307 INLINE
void set(
const RenderAttrib *attrib,
int override);
308 INLINE
int compare_to(
const Attribute &other)
const;
313 Attribute _attributes[RenderAttribRegistry::_max_slots];
326 F_checked_bin_index = 0x000001,
327 F_checked_cull_callback = 0x000002,
328 F_has_cull_callback = 0x000004,
329 F_is_destructing = 0x000008,
330 F_hash_known = 0x000010,
334 vector_int *_read_overrides;
342 static void register_with_read_factory();
356 static void init_type() {
357 NodeCachedReferenceCount::init_type();
359 NodeCachedReferenceCount::get_class_type());
362 return get_class_type();
364 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
380 INLINE std::ostream &operator << (std::ostream &out,
const RenderState &state) {
This is just a simple derivative of GeomMunger that adds the ability to munge states.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is the base class for a number of render attributes (other than transform) that may be set on sc...
virtual void finalize(BamReader *manager)
Called by the BamReader to perform any final actions needed for setting up the object after all objec...
This class further specializes CachedTypedWritableReferenceCount to also add a node_ref_count,...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Objects of this class are used to convert vertex data from a Geom into a format suitable for passing ...
This is the base class for PointerTo and ConstPointerTo.
Base class for objects that can be written to and read from Bam files.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A lightweight reentrant mutex.
This collects together the pieces of data that are accumulated for each node while walking the scene ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void node_ref() const
Explicitly increments the reference count.
This template class implements an unordered map of keys to data, implemented as a hashtable.
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
This is our own Panda specialization on the default STL list.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void fillin(DatagramIterator &scan, BamReader *manager)
This internal function is intended to be called by each class's make_from_bam() method to read in all...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is our own Panda specialization on the default STL vector.
A lightweight class that represents a single element that may be timed and/or counted via stats.
bool cache_unref() const
Explicitly decrements the cache reference count and the normal reference count simultaneously.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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().
This class is used to associate each RenderAttrib with a different slot index at runtime,...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
void cache_ref() const
Explicitly increments the cache reference count and the normal reference count simultaneously.
bool node_unref() const
Explicitly decrements the node reference count and the normal reference count simultaneously.
The default class template does not define any methods.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This represents a unique collection of RenderAttrib objects that correspond to a particular renderabl...
This is the default hash_compare class, which assumes the Key is a size_t value or can be implicitly ...
An STL function object class, this is intended to be used on any ordered collection of class objects ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is used to track the utilization of the TransformState and RenderState caches,...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Encapsulates all the communication with a particular instance of a given rendering backend.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A class to retrieve the individual data elements previously stored in a Datagram.
TypeHandle is the identifier used to differentiate C++ class types.
This is a sequence number that increments monotonically.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is a standard, non-reentrant mutex, similar to the Mutex class.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
This object performs a depth-first traversal of the scene graph, with optional view-frustum culling,...
virtual bool unref() const
Explicitly decrements the reference count.