31TextureStage(
const std::string &name) : _used_by_auto_shader(false) {
35 _texcoord_name = InternalName::get_texcoord();
37 _color.set(0.0f, 0.0f, 0.0f, 1.0f);
40 _saved_result =
false;
42 _combine_rgb_mode = CM_undefined;
43 _num_combine_rgb_operands = 0;
44 _combine_rgb_source0 = CS_undefined;
45 _combine_rgb_operand0 = CO_undefined;
46 _combine_rgb_source1 = CS_undefined;
47 _combine_rgb_operand1 = CO_undefined;
48 _combine_rgb_source2 = CS_undefined;
49 _combine_rgb_operand2 = CO_undefined;
50 _combine_alpha_mode = CM_undefined;
51 _num_combine_alpha_operands = 0;
52 _combine_alpha_source0 = CS_undefined;
53 _combine_alpha_operand0 = CO_undefined;
54 _combine_alpha_source1 = CS_undefined;
55 _combine_alpha_operand1 = CO_undefined;
56 _combine_alpha_source2 = CS_undefined;
57 _combine_alpha_operand2 = CO_undefined;
60 _involves_color_scale =
false;
70 _priority = other._priority;
71 _texcoord_name = other._texcoord_name;
73 _color = other._color;
74 _rgb_scale = other._rgb_scale;
75 _alpha_scale = other._alpha_scale;
76 _saved_result = other._saved_result;
77 _tex_view_offset = other._tex_view_offset;
79 _combine_rgb_mode = other._combine_rgb_mode;
80 _combine_rgb_source0 = other._combine_rgb_source0;
81 _combine_rgb_operand0 = other._combine_rgb_operand0;
82 _combine_rgb_source1 = other._combine_rgb_source1;
83 _combine_rgb_operand1 = other._combine_rgb_operand1;
84 _combine_rgb_source2 = other._combine_rgb_source2;
85 _combine_rgb_operand2 = other._combine_rgb_operand2;
86 _combine_alpha_mode = other._combine_alpha_mode;
87 _combine_alpha_source0 = other._combine_alpha_source0;
88 _combine_alpha_operand0 = other._combine_alpha_operand0;
89 _combine_alpha_source1 = other._combine_alpha_source1;
90 _combine_alpha_operand1 = other._combine_alpha_operand1;
91 _combine_alpha_source2 = other._combine_alpha_source2;
92 _combine_alpha_operand2 = other._combine_alpha_operand2;
94 _uses_color = other._uses_color;
95 _involves_color_scale = other._involves_color_scale;
97 _used_by_auto_shader =
false;
224write(ostream &out)
const {
232write(ostream &out,
int indent_level)
const {
280output(ostream &out)
const {
281 out <<
"TextureStage " <<
get_name();
289get_expected_num_combine_operands(TextureStage::CombineMode cm) {
317operand_valid_for_rgb(TextureStage::CombineOperand co) {
323 case CO_one_minus_src_color:
325 case CO_one_minus_src_alpha:
337operand_valid_for_alpha(TextureStage::CombineOperand co) {
341 case CO_one_minus_src_color:
345 case CO_one_minus_src_alpha:
375 me->fillin(scan, manager);
393 _mode = (TextureStage::Mode) scan.
get_uint8();
394 _color.read_datagram(scan);
399 _tex_view_offset = 0;
404 _combine_rgb_mode = (TextureStage::CombineMode) scan.
get_uint8();
405 _num_combine_rgb_operands = scan.
get_uint8();
406 _combine_rgb_source0 = (TextureStage::CombineSource) scan.
get_uint8();
407 _combine_rgb_operand0 = (TextureStage::CombineOperand) scan.
get_uint8();
408 _combine_rgb_source1 = (TextureStage::CombineSource) scan.
get_uint8();
409 _combine_rgb_operand1 = (TextureStage::CombineOperand) scan.
get_uint8();
410 _combine_rgb_source2 = (TextureStage::CombineSource) scan.
get_uint8();
411 _combine_rgb_operand2 = (TextureStage::CombineOperand) scan.
get_uint8();
413 _combine_alpha_mode = (TextureStage::CombineMode) scan.
get_uint8();
414 _num_combine_alpha_operands = scan.
get_uint8();
415 _combine_alpha_source0 = (TextureStage::CombineSource) scan.
get_uint8();
416 _combine_alpha_operand0 = (TextureStage::CombineOperand) scan.
get_uint8();
417 _combine_alpha_source1 = (TextureStage::CombineSource) scan.
get_uint8();
418 _combine_alpha_operand1 = (TextureStage::CombineOperand) scan.
get_uint8();
419 _combine_alpha_source2 = (TextureStage::CombineSource) scan.
get_uint8();
420 _combine_alpha_operand2 = (TextureStage::CombineOperand) scan.
get_uint8();
422 update_color_flags();
456 _color.write_datagram(me);
475 me.
add_uint8(_num_combine_alpha_operands);
486operator << (ostream &out, TextureStage::Mode mode) {
488 case TextureStage::M_modulate:
489 return out <<
"modulate";
491 case TextureStage::M_decal:
492 return out <<
"decal";
494 case TextureStage::M_blend:
495 return out <<
"blend";
497 case TextureStage::M_replace:
498 return out <<
"replace";
500 case TextureStage::M_add:
503 case TextureStage::M_combine:
504 return out <<
"combine";
506 case TextureStage::M_blend_color_scale:
507 return out <<
"blend_color_scale";
509 case TextureStage::M_modulate_glow:
510 return out <<
"modulate_glow";
512 case TextureStage::M_modulate_gloss:
513 return out <<
"modulate_gloss";
515 case TextureStage::M_normal:
516 return out <<
"normal";
518 case TextureStage::M_normal_height:
519 return out <<
"normal_height";
521 case TextureStage::M_glow:
522 return out <<
"glow";
524 case TextureStage::M_gloss:
525 return out <<
"gloss";
527 case TextureStage::M_height:
528 return out <<
"height";
530 case TextureStage::M_selector:
531 return out <<
"selector";
533 case TextureStage::M_normal_gloss:
534 return out <<
"normal_gloss";
536 case TextureStage::M_emission:
537 return out <<
"emission";
540 return out <<
"**invalid Mode(" << (int)mode <<
")**";
544operator << (ostream &out, TextureStage::CombineMode cm) {
546 case TextureStage::CM_undefined:
547 return out <<
"undefined";
549 case TextureStage::CM_replace:
550 return out <<
"replace";
552 case TextureStage::CM_modulate:
553 return out <<
"modulate";
555 case TextureStage::CM_add:
558 case TextureStage::CM_add_signed:
559 return out <<
"add_signed";
561 case TextureStage::CM_interpolate:
562 return out <<
"interpolate";
564 case TextureStage::CM_subtract:
565 return out <<
"subtract";
567 case TextureStage::CM_dot3_rgb:
568 return out <<
"dot3_rgb";
570 case TextureStage::CM_dot3_rgba:
571 return out <<
"dot3_rgba";
574 return out <<
"**invalid CombineMode(" << (int)cm <<
")**";
578operator << (ostream &out, TextureStage::CombineSource cs) {
580 case TextureStage::CS_undefined:
581 return out <<
"undefined";
583 case TextureStage::CS_texture:
584 return out <<
"texture";
586 case TextureStage::CS_constant:
587 return out <<
"constant";
589 case TextureStage::CS_primary_color:
590 return out <<
"primary_color";
592 case TextureStage::CS_previous:
593 return out <<
"previous";
595 case TextureStage::CS_constant_color_scale:
596 return out <<
"constant_color_scale";
598 case TextureStage::CS_last_saved_result:
599 return out <<
"last_saved_result";
602 return out <<
"**invalid CombineSource(" << (int)cs <<
")**";
606operator << (ostream &out, TextureStage::CombineOperand co) {
608 case TextureStage::CO_undefined:
609 return out <<
"undefined";
611 case TextureStage::CO_src_color:
612 return out <<
"src_color";
614 case TextureStage::CO_one_minus_src_color:
615 return out <<
"one_minus_src_color";
617 case TextureStage::CO_src_alpha:
618 return out <<
"src_alpha";
620 case TextureStage::CO_one_minus_src_alpha:
621 return out <<
"one_minus_src_alpha";
624 return out <<
"**invalid CombineOperand(" << (int)co <<
")**";
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void parse_params(const FactoryParams ¶ms, DatagramIterator &scan, BamReader *&manager)
Takes in a FactoryParams, passed from a WritableFactory into any TypedWritable's make function,...
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...
bool read_pointer(DatagramIterator &scan)
The interface for reading a pointer to another object from a Bam file.
int get_file_minor_ver() const
Returns the minor version number of the Bam file currently being read.
static WritableFactory * get_factory()
Returns the global WritableFactory for generating TypedWritable objects.
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
void write_pointer(Datagram &packet, const TypedWritable *dest)
The interface for writing a pointer to another object to a Bam file.
int get_file_minor_ver() const
Returns the minor version number of the Bam file currently being written.
A class to retrieve the individual data elements previously stored in a Datagram.
uint8_t get_uint8()
Extracts an unsigned 8-bit integer.
bool get_bool()
Extracts a boolean value.
std::string get_string()
Extracts a variable-length string.
int32_t get_int32()
Extracts a signed 32-bit integer.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
void add_int32(int32_t value)
Adds a signed 32-bit integer to the datagram.
void add_uint8(uint8_t value)
Adds an unsigned 8-bit integer to the datagram.
void add_bool(bool value)
Adds a boolean value to the datagram.
void add_string(const std::string &str)
Adds a variable-length string to the datagram.
An instance of this class is passed to the Factory when requesting it to do its business and construc...
void register_factory(TypeHandle handle, CreateFunc *func, void *user_data=nullptr)
Registers a new kind of thing the Factory will be able to create.
Encodes a string name in a hash table, mapping it to a pointer.
Defines the properties of a named stage of the multitexture pipeline.
get_default
Returns the default TextureStage that will be used for all texturing that does not name a particular ...
int compare_to(const TextureStage &other) const
Returns a number less than zero if this TextureStage sorts before the other one, greater than zero if...
CombineMode get_combine_alpha_mode() const
Get combine_alpha_mode.
get_saved_result
Returns the current setting of the saved_result flag.
get_name
Returns the name of this texture stage.
CombineOperand get_combine_rgb_operand2() const
Get operand2 of combine_rgb_mode.
CombineSource get_combine_alpha_source1() const
Get source1 of combine_alpha_mode.
void write(std::ostream &out) const
Writes the details of this stage.
void output(std::ostream &out) const
Just a single line output.
TextureStage(const std::string &name)
Initialize the texture stage at construction.
static void register_with_read_factory()
Factory method to generate a TextureStage object.
virtual int complete_pointers(TypedWritable **plist, BamReader *manager)
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().
void operator=(const TextureStage ©)
just copy the members of other to this
CombineMode get_combine_rgb_mode() const
Get the combine_rgb_mode.
CombineSource get_combine_rgb_source1() const
Get source1 of combine_rgb_mode.
CombineOperand get_combine_alpha_operand0() const
Get operand0 of combine_alpha_mode.
get_priority
Returns the priority associated with this stage.
CombineOperand get_combine_rgb_operand1() const
Get operand1 of combine_rgb_mode.
CombineSource get_combine_alpha_source0() const
Get source0 of combine_alpha_mode.
get_rgb_scale
See set_rgb_scale().
virtual void write_datagram(BamWriter *manager, Datagram &me)
Function to write the important information in the particular object to a Datagram.
get_alpha_scale
See set_alpha_scale().
get_sort
Returns the sort order of this texture stage.
int get_num_combine_rgb_operands() const
Returns the number of meaningful operands that may be retrieved via get_combine_rgb_sourceN() and get...
static TypedWritable * make_TextureStage(const FactoryParams ¶ms)
Factory method to generate a TextureStage object.
CombineOperand get_combine_alpha_operand1() const
Get operand1 of combine_alpha_mode.
get_color
return the color for this stage
get_tex_view_offset
Returns the current setting of the tex_view_offset.
CombineSource get_combine_rgb_source0() const
Get source0 of combine_rgb_mode.
CombineSource get_combine_rgb_source2() const
Get source2 of combine_rgb_mode.
get_mode
Return the mode of this stage.
int get_num_combine_alpha_operands() const
Returns the number of meaningful operands that may be retrieved via get_combine_alpha_sourceN() and g...
CombineOperand get_combine_rgb_operand0() const
Get operand0 of combine_rgb_mode.
CombineSource get_combine_alpha_source2() const
Get source2 of combine_alpha_mode.
get_texcoord_name
See set_texcoord_name.
CombineOperand get_combine_alpha_operand2() const
Get operand2 of combine_alpha_mode.
TypeHandle is the identifier used to differentiate C++ class types.
Base class for objects that can be written to and read from Bam files.
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.
std::ostream & indent(std::ostream &out, int indent_level)
A handy function for doing text formatting.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.