14 #ifndef TEXTURESTAGE_H
15 #define TEXTURESTAGE_H
90 CS_constant_color_scale,
97 CO_one_minus_src_color,
99 CO_one_minus_src_alpha,
102 INLINE
void set_name(
const std::string &name);
103 INLINE
const std::string &get_name()
const;
105 INLINE
void set_sort(
int sort);
106 INLINE
int get_sort()
const;
108 INLINE
void set_priority(
int priority);
109 INLINE
int get_priority()
const;
112 INLINE
void set_texcoord_name(
const std::string &texcoord_name);
117 INLINE
void set_mode(Mode mode);
118 INLINE Mode get_mode()
const;
120 INLINE
bool is_fixed_function()
const;
122 INLINE
void set_color(
const LColor &color);
123 INLINE LColor get_color()
const;
125 INLINE
void set_rgb_scale(
int rgb_scale);
126 INLINE
int get_rgb_scale()
const;
128 INLINE
void set_alpha_scale(
int alpha_scale);
129 INLINE
int get_alpha_scale()
const;
131 INLINE
void set_saved_result(
bool saved_result);
132 INLINE
bool get_saved_result()
const;
134 INLINE
void set_tex_view_offset(
int tex_view_offset);
135 INLINE
int get_tex_view_offset()
const;
137 INLINE
void set_combine_rgb(CombineMode mode,
138 CombineSource source0, CombineOperand operand0);
139 INLINE
void set_combine_rgb(CombineMode mode,
140 CombineSource source0, CombineOperand operand0,
141 CombineSource source1, CombineOperand operand1);
142 INLINE
void set_combine_rgb(CombineMode mode,
143 CombineSource source0, CombineOperand operand0,
144 CombineSource source1, CombineOperand operand1,
145 CombineSource source2, CombineOperand operand2);
146 INLINE CombineMode get_combine_rgb_mode()
const;
147 INLINE
int get_num_combine_rgb_operands()
const;
148 INLINE CombineSource get_combine_rgb_source0()
const;
149 INLINE CombineOperand get_combine_rgb_operand0()
const;
150 INLINE CombineSource get_combine_rgb_source1()
const;
151 INLINE CombineOperand get_combine_rgb_operand1()
const;
152 INLINE CombineSource get_combine_rgb_source2()
const;
153 INLINE CombineOperand get_combine_rgb_operand2()
const;
155 INLINE
void set_combine_alpha(CombineMode mode,
156 CombineSource source0, CombineOperand operand0);
157 INLINE
void set_combine_alpha(CombineMode mode,
158 CombineSource source0, CombineOperand operand0,
159 CombineSource source1, CombineOperand operand1);
160 INLINE
void set_combine_alpha(CombineMode mode,
161 CombineSource source0, CombineOperand operand0,
162 CombineSource source1, CombineOperand operand1,
163 CombineSource source2, CombineOperand operand2);
164 INLINE CombineMode get_combine_alpha_mode()
const;
165 INLINE
int get_num_combine_alpha_operands()
const;
166 INLINE CombineSource get_combine_alpha_source0()
const;
167 INLINE CombineOperand get_combine_alpha_operand0()
const;
168 INLINE CombineSource get_combine_alpha_source1()
const;
169 INLINE CombineOperand get_combine_alpha_operand1()
const;
170 INLINE CombineSource get_combine_alpha_source2()
const;
171 INLINE CombineOperand get_combine_alpha_operand2()
const;
173 INLINE
bool involves_color_scale()
const;
174 INLINE
bool uses_color()
const;
175 INLINE
bool uses_primary_color()
const;
176 INLINE
bool uses_last_saved_result()
const;
178 INLINE
bool operator == (
const TextureStage &other)
const;
179 INLINE
bool operator != (
const TextureStage &other)
const;
180 INLINE
bool operator < (
const TextureStage &other)
const;
184 void write(std::ostream &out)
const;
185 void output(std::ostream &out)
const;
190 MAKE_PROPERTY(name, get_name, set_name);
191 MAKE_PROPERTY(sort, get_sort, set_sort);
192 MAKE_PROPERTY(priority, get_priority, set_priority);
194 MAKE_PROPERTY(texcoord_name, get_texcoord_name, set_texcoord_name);
195 MAKE_PROPERTY(tangent_name, get_tangent_name);
196 MAKE_PROPERTY(binormal_name, get_binormal_name);
198 MAKE_PROPERTY(mode, get_mode, set_mode);
200 MAKE_PROPERTY(color, get_color, set_color);
201 MAKE_PROPERTY(rgb_scale, get_rgb_scale, set_rgb_scale);
202 MAKE_PROPERTY(alpha_scale, get_alpha_scale, set_alpha_scale);
203 MAKE_PROPERTY(saved_result, get_saved_result, set_saved_result);
205 MAKE_PROPERTY(tex_view_offset, get_tex_view_offset, set_tex_view_offset);
207 MAKE_PROPERTY(
default, get_default);
212 INLINE
void mark_used_by_auto_shader()
const;
215 INLINE
void update_color_flags();
217 static int get_expected_num_combine_operands(CombineMode cm);
218 static bool operand_valid_for_rgb(CombineOperand co);
219 static bool operand_valid_for_alpha(CombineOperand co);
230 int _tex_view_offset;
231 bool _involves_color_scale;
233 bool _uses_primary_color;
234 bool _uses_last_saved_result;
236 CombineMode _combine_rgb_mode;
237 int _num_combine_rgb_operands;
238 CombineSource _combine_rgb_source0;
239 CombineOperand _combine_rgb_operand0;
240 CombineSource _combine_rgb_source1;
241 CombineOperand _combine_rgb_operand1;
242 CombineSource _combine_rgb_source2;
243 CombineOperand _combine_rgb_operand2;
245 CombineMode _combine_alpha_mode;
246 int _num_combine_alpha_operands;
247 CombineSource _combine_alpha_source0;
248 CombineOperand _combine_alpha_operand0;
249 CombineSource _combine_alpha_source1;
250 CombineOperand _combine_alpha_operand1;
251 CombineSource _combine_alpha_source2;
252 CombineOperand _combine_alpha_operand2;
257 mutable bool _used_by_auto_shader;
261 static void register_with_read_factory();
274 static void init_type() {
275 TypedWritableReferenceCount::init_type();
277 TypedWritableReferenceCount::get_class_type());
280 return get_class_type();
282 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
288 INLINE std::ostream &operator << (std::ostream &out,
const TextureStage &ts);
290 EXPCL_PANDA_GOBJ std::ostream &operator << (std::ostream &out, TextureStage::Mode mode);
291 EXPCL_PANDA_GOBJ std::ostream &operator << (std::ostream &out, TextureStage::CombineMode cm);
292 EXPCL_PANDA_GOBJ std::ostream &operator << (std::ostream &out, TextureStage::CombineSource cs);
293 EXPCL_PANDA_GOBJ std::ostream &operator << (std::ostream &out, TextureStage::CombineOperand co);
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
A class to retrieve the individual data elements previously stored in a Datagram.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
Encodes a string name in a hash table, mapping it to a pointer.
Defines the properties of a named stage of the multitexture pipeline.
TypeHandle is the identifier used to differentiate C++ class types.
A base class for things which need to inherit from both TypedWritable and from ReferenceCount.
Base class for objects that can be written to and read from Bam files.
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...
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
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 is a sequence number that increments monotonically.
An STL function object class, this is intended to be used on any ordered collection of class objects ...
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.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
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.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.