31 EggTexture(
const string &tref_name,
const Filename &filename)
34 _texture_type = TT_unspecified;
35 _format = F_unspecified;
36 _compression_mode = CM_default;
37 _wrap_mode = WM_unspecified;
38 _wrap_u = WM_unspecified;
39 _wrap_v = WM_unspecified;
40 _wrap_w = WM_unspecified;
41 _minfilter = FT_unspecified;
42 _magfilter = FT_unspecified;
43 _anisotropic_degree = 0;
44 _env_type = ET_unspecified;
45 _saved_result =
false;
48 _tex_gen = TG_unspecified;
49 _quality_level = QL_unspecified;
51 _color.set(0.0f, 0.0f, 0.0f, 1.0f);
52 _border_color.set(0.0f, 0.0f, 0.0f, 1.0f);
54 _alpha_file_channel = 0;
55 _read_mipmaps =
false;
56 _multitexture_sort = 0;
74 EggFilenameNode::operator = (copy);
75 EggRenderMode::operator = (copy);
76 EggTransform::operator = (copy);
78 _texture_type = copy._texture_type;
79 _format = copy._format;
80 _compression_mode = copy._compression_mode;
81 _wrap_mode = copy._wrap_mode;
82 _wrap_u = copy._wrap_u;
83 _wrap_v = copy._wrap_v;
84 _wrap_w = copy._wrap_w;
85 _minfilter = copy._minfilter;
86 _magfilter = copy._magfilter;
87 _anisotropic_degree = copy._anisotropic_degree;
88 _env_type = copy._env_type;
89 _saved_result = copy._saved_result;
90 _multiview = copy._multiview;
91 _num_views = copy._num_views;
92 _tex_gen = copy._tex_gen;
93 _quality_level = copy._quality_level;
94 _stage_name = copy._stage_name;
95 _priority = copy._priority;
97 _border_color = copy._border_color;
98 _uv_name = copy._uv_name;
101 _flags = copy._flags;
102 _alpha_filename = copy._alpha_filename;
103 _alpha_fullpath = copy._alpha_fullpath;
104 _alpha_file_channel = copy._alpha_file_channel;
105 _read_mipmaps = copy._read_mipmaps;
106 _multitexture_sort = 0;
107 _combiner[0] = copy._combiner[0];
108 _combiner[1] = copy._combiner[1];
125 write(ostream &out,
int indent_level)
const {
130 indent(out, indent_level + 2)
131 <<
"<Scalar> alpha-file { ";
137 indent(out, indent_level + 2)
138 <<
"<Scalar> alpha-file-channel { "
143 indent(out, indent_level + 2)
144 <<
"<Scalar> read-mipmaps { 1 }\n";
147 if (get_texture_type() != TT_unspecified) {
148 indent(out, indent_level + 2)
149 <<
"<Scalar> type { " << get_texture_type() <<
" }\n";
152 if (get_format() != F_unspecified) {
153 indent(out, indent_level + 2)
154 <<
"<Scalar> format { " << get_format() <<
" }\n";
157 if (get_compression_mode() != CM_default) {
158 indent(out, indent_level + 2)
159 <<
"<Scalar> compression { " << get_compression_mode() <<
" }\n";
162 if (get_wrap_mode() != WM_unspecified) {
163 indent(out, indent_level + 2)
164 <<
"<Scalar> wrap { " << get_wrap_mode() <<
" }\n";
168 indent(out, indent_level + 2)
169 <<
"<Scalar> wrapu { " <<
get_wrap_u() <<
" }\n";
173 indent(out, indent_level + 2)
174 <<
"<Scalar> wrapv { " <<
get_wrap_v() <<
" }\n";
178 indent(out, indent_level + 2)
179 <<
"<Scalar> wrapw { " <<
get_wrap_w() <<
" }\n";
182 if (get_minfilter() != FT_unspecified) {
183 indent(out, indent_level + 2)
184 <<
"<Scalar> minfilter { " << get_minfilter() <<
" }\n";
187 if (get_magfilter() != FT_unspecified) {
188 indent(out, indent_level + 2)
189 <<
"<Scalar> magfilter { " << get_magfilter() <<
" }\n";
193 indent(out, indent_level + 2)
197 if (get_env_type() != ET_unspecified) {
198 indent(out, indent_level + 2)
199 <<
"<Scalar> envtype { " << get_env_type() <<
" }\n";
202 for (
int ci = 0; ci < (int)CC_num_channels; ci++) {
203 CombineChannel channel = (CombineChannel)ci;
204 if (get_combine_mode(channel) != CM_unspecified) {
205 indent(out, indent_level + 2)
206 <<
"<Scalar> combine-" << channel
207 <<
" { " << get_combine_mode(channel) <<
" }\n";
209 for (
int i = 0; i < (int)CI_num_indices; i++) {
210 if (get_combine_source(channel, i) != CS_unspecified) {
211 indent(out, indent_level + 2)
212 <<
"<Scalar> combine-" << channel <<
"-source" << i
213 <<
" { " << get_combine_source(channel, i) <<
" }\n";
215 if (get_combine_operand(channel, i) != CO_unspecified) {
216 indent(out, indent_level + 2)
217 <<
"<Scalar> combine-" << channel <<
"-operand" << i
218 <<
" { " << get_combine_operand(channel, i) <<
" }\n";
224 indent(out, indent_level + 2)
225 <<
"<Scalar> saved-result { 1 }\n";
228 if (get_tex_gen() != TG_unspecified) {
229 indent(out, indent_level + 2)
230 <<
"<Scalar> tex-gen { " << get_tex_gen() <<
" }\n";
233 if (get_quality_level() != QL_unspecified) {
234 indent(out, indent_level + 2)
235 <<
"<Scalar> quality-level { " << get_quality_level() <<
" }\n";
239 indent(out, indent_level + 2)
244 indent(out, indent_level + 2)
249 indent(out, indent_level + 2)
250 <<
"<Scalar> blendr { " << _color[0] <<
" }\n";
251 indent(out, indent_level + 2)
252 <<
"<Scalar> blendg { " << _color[1] <<
" }\n";
253 indent(out, indent_level + 2)
254 <<
"<Scalar> blendb { " << _color[2] <<
" }\n";
255 indent(out, indent_level + 2)
256 <<
"<Scalar> blenda { " << _color[3] <<
" }\n";
260 indent(out, indent_level + 2)
261 <<
"<Scalar> borderr { " << _border_color[0] <<
" }\n";
262 indent(out, indent_level + 2)
263 <<
"<Scalar> borderg { " << _border_color[1] <<
" }\n";
264 indent(out, indent_level + 2)
265 <<
"<Scalar> borderb { " << _border_color[2] <<
" }\n";
266 indent(out, indent_level + 2)
267 <<
"<Scalar> bordera { " << _border_color[3] <<
" }\n";
271 indent(out, indent_level + 2)
272 <<
"<Scalar> uv-name { " <<
get_uv_name() <<
" }\n";
276 indent(out, indent_level + 2)
281 indent(out, indent_level + 2)
286 indent(out, indent_level + 2)
287 <<
"<Scalar> multiview { 1 }\n";
291 indent(out, indent_level + 2)
301 indent(out, indent_level) <<
"}\n";
330 if ((eq & E_complete_filename) == E_complete_filename) {
340 if (eq & E_basename) {
345 if (eq & E_extension) {
350 if (eq & E_dirname) {
357 if (eq & E_transform) {
370 if (eq & E_attributes) {
372 if (_texture_type != other._texture_type ||
373 _format != other._format ||
374 _compression_mode != other._compression_mode ||
375 _wrap_mode != other._wrap_mode ||
376 _wrap_u != other._wrap_u ||
377 _wrap_v != other._wrap_v ||
378 _wrap_w != other._wrap_w ||
379 _minfilter != other._minfilter ||
380 _magfilter != other._magfilter ||
381 _env_type != other._env_type) {
384 if (EggRenderMode::operator != (other)) {
389 if (eq & E_tref_name) {
391 if (get_name() != other.get_name()) {
406 if ((eq & E_complete_filename) == E_complete_filename) {
414 if (eq & E_basename) {
419 if (eq & E_extension) {
424 if (eq & E_dirname) {
431 if (eq & E_transform) {
434 if (is_identity != other_is_identity) {
435 return (
int)is_identity < (int)other_is_identity;
446 if (eq & E_attributes) {
447 if (_texture_type != other._texture_type) {
448 return (
int)_texture_type < (int)other._texture_type;
450 if (_format != other._format) {
451 return (
int)_format < (int)other._format;
453 if (_compression_mode != other._compression_mode) {
454 return (
int)_compression_mode < (int)other._compression_mode;
456 if (_wrap_mode != other._wrap_mode) {
457 return (
int)_wrap_mode < (int)other._wrap_mode;
459 if (_wrap_u != other._wrap_u) {
460 return (
int)_wrap_u < (int)other._wrap_u;
462 if (_wrap_v != other._wrap_v) {
463 return (
int)_wrap_v < (int)other._wrap_v;
465 if (_wrap_w != other._wrap_w) {
466 return (
int)_wrap_w < (int)other._wrap_w;
468 if (_minfilter != other._minfilter) {
469 return (
int)_minfilter < (int)other._minfilter;
471 if (_magfilter != other._magfilter) {
472 return (
int)_magfilter < (int)other._magfilter;
474 if (_anisotropic_degree != other._anisotropic_degree) {
475 return _anisotropic_degree < other._anisotropic_degree;
477 if (_env_type != other._env_type) {
478 return (
int)_env_type < (int)other._env_type;
480 if (EggRenderMode::operator != (other)) {
481 return EggRenderMode::operator < (other);
485 if (eq & E_tref_name) {
486 if (get_name() != other.get_name()) {
487 return get_name() < other.get_name();
521 case F_luminance_alpha:
522 case F_luminance_alphamask:
532 return (num_components == 2 || num_components == 4);
552 case ET_blend_color_scale:
553 case ET_modulate_glow:
554 case ET_modulate_gloss:
556 case ET_normal_height:
560 case ET_normal_gloss:
570 switch (_combiner[CC_alpha]._mode) {
600 _multitexture_sort = 0;
607 orig_over_textures.swap(_over_textures);
608 orig_under_textures.swap(_under_textures);
610 MultiTextures::iterator mti;
611 for (mti = orig_over_textures.begin();
612 mti != orig_over_textures.end();
615 other->_under_textures.erase(
this);
617 for (mti = orig_under_textures.begin();
618 mti != orig_under_textures.end();
621 other->_over_textures.erase(
this);
646 if (_over_textures.insert(other).second) {
647 bool inserted_under = other->_under_textures.insert(
this).second;
648 nassertr(inserted_under,
false);
662 if (cmp_nocase_uh(
string,
"1d") == 0 ||
663 cmp_nocase_uh(
string,
"1dtexture") == 0 ||
664 cmp_nocase_uh(
string,
"1d_texture") == 0) {
665 return TT_1d_texture;
667 }
else if (cmp_nocase_uh(
string,
"2d") == 0 ||
668 cmp_nocase_uh(
string,
"2dtexture") == 0 ||
669 cmp_nocase_uh(
string,
"2d_texture") == 0) {
670 return TT_2d_texture;
672 }
else if (cmp_nocase_uh(
string,
"3d") == 0 ||
673 cmp_nocase_uh(
string,
"3dtexture") == 0 ||
674 cmp_nocase_uh(
string,
"3d_texture") == 0) {
675 return TT_3d_texture;
677 }
else if (cmp_nocase_uh(
string,
"cube") == 0 ||
678 cmp_nocase_uh(
string,
"cubemap") == 0 ||
679 cmp_nocase_uh(
string,
"cube_map") == 0) {
683 return TT_unspecified;
693 if (cmp_nocase_uh(
string,
"rgba") == 0) {
695 }
else if (cmp_nocase_uh(
string,
"srgb_alpha") == 0) {
697 }
else if (cmp_nocase_uh(
string,
"rgbm") == 0) {
699 }
else if (cmp_nocase_uh(
string,
"rgba12") == 0) {
701 }
else if (cmp_nocase_uh(
string,
"rgba8") == 0) {
703 }
else if (cmp_nocase_uh(
string,
"rgba4") == 0) {
706 }
else if (cmp_nocase_uh(
string,
"rgb") == 0) {
708 }
else if (cmp_nocase_uh(
string,
"srgb") == 0) {
710 }
else if (cmp_nocase_uh(
string,
"rgb12") == 0) {
712 }
else if (cmp_nocase_uh(
string,
"rgb8") == 0) {
714 }
else if (cmp_nocase_uh(
string,
"rgb5") == 0) {
716 }
else if (cmp_nocase_uh(
string,
"rgba5") == 0) {
718 }
else if (cmp_nocase_uh(
string,
"rgb332") == 0) {
720 }
else if (cmp_nocase_uh(
string,
"red") == 0) {
722 }
else if (cmp_nocase_uh(
string,
"green") == 0) {
724 }
else if (cmp_nocase_uh(
string,
"blue") == 0) {
726 }
else if (cmp_nocase_uh(
string,
"alpha") == 0) {
728 }
else if (cmp_nocase_uh(
string,
"luminance") == 0) {
730 }
else if (cmp_nocase_uh(
string,
"luminance_alpha") == 0) {
731 return F_luminance_alpha;
732 }
else if (cmp_nocase_uh(
string,
"luminance_alphamask") == 0) {
733 return F_luminance_alphamask;
735 return F_unspecified;
746 if (cmp_nocase_uh(
string,
"off") == 0) {
748 }
else if (cmp_nocase_uh(
string,
"on") == 0) {
750 }
else if (cmp_nocase_uh(
string,
"fxt1") == 0) {
752 }
else if (cmp_nocase_uh(
string,
"dxt1") == 0) {
754 }
else if (cmp_nocase_uh(
string,
"dxt2") == 0) {
756 }
else if (cmp_nocase_uh(
string,
"dxt3") == 0) {
758 }
else if (cmp_nocase_uh(
string,
"dxt4") == 0) {
760 }
else if (cmp_nocase_uh(
string,
"dxt5") == 0) {
773 if (cmp_nocase_uh(
string,
"repeat") == 0) {
775 }
else if (cmp_nocase_uh(
string,
"clamp") == 0) {
777 }
else if (cmp_nocase_uh(
string,
"mirror") == 0) {
779 }
else if (cmp_nocase_uh(
string,
"mirror_once") == 0) {
780 return WM_mirror_once;
781 }
else if (cmp_nocase_uh(
string,
"border_color") == 0) {
782 return WM_border_color;
784 return WM_unspecified;
796 if (cmp_nocase_uh(
string,
"point") == 0) {
798 }
else if (cmp_nocase_uh(
string,
"linear") == 0) {
800 }
else if (cmp_nocase_uh(
string,
"bilinear") == 0) {
802 }
else if (cmp_nocase_uh(
string,
"trilinear") == 0) {
803 return FT_linear_mipmap_linear;
804 }
else if (cmp_nocase_uh(
string,
"mipmap") == 0) {
805 return FT_linear_mipmap_linear;
806 }
else if (cmp_nocase_uh(
string,
"mipmap_point") == 0) {
807 return FT_nearest_mipmap_nearest;
808 }
else if (cmp_nocase_uh(
string,
"mipmap_linear") == 0) {
809 return FT_nearest_mipmap_linear;
810 }
else if (cmp_nocase_uh(
string,
"mipmap_bilinear") == 0) {
811 return FT_linear_mipmap_nearest;
812 }
else if (cmp_nocase_uh(
string,
"mipmap_trilinear") == 0) {
813 return FT_linear_mipmap_linear;
816 }
else if (cmp_nocase_uh(
string,
"nearest") == 0) {
818 }
else if (cmp_nocase_uh(
string,
"linear") == 0) {
820 }
else if (cmp_nocase_uh(
string,
"nearest_mipmap_nearest") == 0) {
821 return FT_nearest_mipmap_nearest;
822 }
else if (cmp_nocase_uh(
string,
"linear_mipmap_nearest") == 0) {
823 return FT_linear_mipmap_nearest;
824 }
else if (cmp_nocase_uh(
string,
"nearest_mipmap_linear") == 0) {
825 return FT_nearest_mipmap_linear;
826 }
else if (cmp_nocase_uh(
string,
"linear_mipmap_linear") == 0) {
827 return FT_linear_mipmap_linear;
830 return FT_unspecified;
840 if (cmp_nocase_uh(
string,
"modulate") == 0) {
843 }
else if (cmp_nocase_uh(
string,
"decal") == 0) {
846 }
else if (cmp_nocase_uh(
string,
"blend") == 0) {
849 }
else if (cmp_nocase_uh(
string,
"replace") == 0) {
852 }
else if (cmp_nocase_uh(
string,
"add") == 0) {
855 }
else if (cmp_nocase_uh(
string,
"blend_color_scale") == 0) {
856 return ET_blend_color_scale;
858 }
else if (cmp_nocase_uh(
string,
"modulate_glow") == 0) {
859 return ET_modulate_glow;
861 }
else if (cmp_nocase_uh(
string,
"modulate_gloss") == 0) {
862 return ET_modulate_gloss;
864 }
else if (cmp_nocase_uh(
string,
"normal") == 0) {
867 }
else if (cmp_nocase_uh(
string,
"normal_height") == 0) {
868 return ET_normal_height;
870 }
else if (cmp_nocase_uh(
string,
"glow") == 0) {
873 }
else if (cmp_nocase_uh(
string,
"gloss") == 0) {
876 }
else if (cmp_nocase_uh(
string,
"height") == 0) {
879 }
else if (cmp_nocase_uh(
string,
"selector") == 0) {
882 }
else if (cmp_nocase_uh(
string,
"normal_gloss") == 0) {
883 return ET_normal_gloss;
886 return ET_unspecified;
897 if (cmp_nocase_uh(
string,
"replace") == 0) {
900 }
else if (cmp_nocase_uh(
string,
"modulate") == 0) {
903 }
else if (cmp_nocase_uh(
string,
"add") == 0) {
906 }
else if (cmp_nocase_uh(
string,
"add_signed") == 0) {
907 return CM_add_signed;
909 }
else if (cmp_nocase_uh(
string,
"interpolate") == 0) {
910 return CM_interpolate;
912 }
else if (cmp_nocase_uh(
string,
"subtract") == 0) {
915 }
else if (cmp_nocase_uh(
string,
"dot3_rgb") == 0) {
918 }
else if (cmp_nocase_uh(
string,
"dot3_rgba") == 0) {
922 return CM_unspecified;
933 if (cmp_nocase_uh(
string,
"texture") == 0) {
936 }
else if (cmp_nocase_uh(
string,
"constant") == 0) {
939 }
else if (cmp_nocase_uh(
string,
"primary_color") == 0) {
940 return CS_primary_color;
942 }
else if (cmp_nocase_uh(
string,
"previous") == 0) {
945 }
else if (cmp_nocase_uh(
string,
"constant_color_scale") == 0) {
946 return CS_constant_color_scale;
948 }
else if (cmp_nocase_uh(
string,
"last_saved_result") == 0) {
949 return CS_last_saved_result;
952 return CS_unspecified;
963 if (cmp_nocase_uh(
string,
"src_color") == 0) {
966 }
else if (cmp_nocase_uh(
string,
"one_minus_src_color") == 0) {
967 return CO_one_minus_src_color;
969 }
else if (cmp_nocase_uh(
string,
"src_alpha") == 0) {
972 }
else if (cmp_nocase_uh(
string,
"one_minus_src_alpha") == 0) {
973 return CO_one_minus_src_alpha;
976 return CO_unspecified;
986 if (cmp_nocase_uh(
string,
"unspecified") == 0) {
987 return TG_unspecified;
989 }
else if (cmp_nocase_uh(
string,
"sphere_map") == 0 ||
990 cmp_nocase_uh(
string,
"eye_sphere_map") == 0) {
991 return TG_eye_sphere_map;
993 }
else if (cmp_nocase_uh(
string,
"world_cube_map") == 0) {
994 return TG_world_cube_map;
996 }
else if (cmp_nocase_uh(
string,
"cube_map") == 0 ||
997 cmp_nocase_uh(
string,
"eye_cube_map") == 0) {
998 return TG_eye_cube_map;
1000 }
else if (cmp_nocase_uh(
string,
"world_normal") == 0) {
1001 return TG_world_normal;
1003 }
else if (cmp_nocase_uh(
string,
"eye_normal") == 0) {
1004 return TG_eye_normal;
1006 }
else if (cmp_nocase_uh(
string,
"world_position") == 0) {
1007 return TG_world_position;
1009 }
else if (cmp_nocase_uh(
string,
"eye_position") == 0) {
1010 return TG_eye_position;
1012 }
else if (cmp_nocase_uh(
string,
"point_sprite") == 0) {
1013 return TG_point_sprite;
1016 return TG_unspecified;
1026 if (cmp_nocase_uh(
string,
"unspecified") == 0) {
1027 return QL_unspecified;
1029 }
else if (cmp_nocase_uh(
string,
"default") == 0) {
1032 }
else if (cmp_nocase_uh(
string,
"fastest") == 0) {
1035 }
else if (cmp_nocase_uh(
string,
"normal") == 0) {
1038 }
else if (cmp_nocase_uh(
string,
"best") == 0) {
1042 return QL_unspecified;
1062 egg_start_parse_body() {
1063 egg_start_texture_body();
1072 if (_multitexture_sort >= sort) {
1077 if (!cycle_detector.insert(
this).second) {
1082 _multitexture_sort = sort;
1085 bool no_cycles =
true;
1087 MultiTextures::iterator mti;
1088 for (mti = _under_textures.begin();
1089 mti != _under_textures.end();
1092 if (!other->r_min_multitexture_sort(sort + 1, cycle_detector)) {
1105 ostream &operator << (ostream &out, EggTexture::TextureType texture_type) {
1106 switch (texture_type) {
1107 case EggTexture::TT_unspecified:
1108 return out <<
"unspecified";
1110 case EggTexture::TT_1d_texture:
1113 case EggTexture::TT_2d_texture:
1116 case EggTexture::TT_3d_texture:
1119 case EggTexture::TT_cube_map:
1120 return out <<
"cube-map";
1123 nassertr(
false, out);
1124 return out <<
"(**invalid**)";
1131 ostream &operator << (ostream &out, EggTexture::Format format) {
1133 case EggTexture::F_unspecified:
1134 return out <<
"unspecified";
1136 case EggTexture::F_rgba:
1137 return out <<
"rgba";
1138 case EggTexture::F_rgbm:
1139 return out <<
"rgbm";
1140 case EggTexture::F_rgba12:
1141 return out <<
"rgba12";
1142 case EggTexture::F_rgba8:
1143 return out <<
"rgba8";
1144 case EggTexture::F_rgba4:
1145 return out <<
"rgba4";
1146 case EggTexture::F_srgb_alpha:
1147 return out <<
"srgb_alpha";
1149 case EggTexture::F_rgb:
1150 return out <<
"rgb";
1151 case EggTexture::F_rgb12:
1152 return out <<
"rgb12";
1153 case EggTexture::F_rgb8:
1154 return out <<
"rgb8";
1155 case EggTexture::F_rgb5:
1156 return out <<
"rgb5";
1157 case EggTexture::F_rgba5:
1158 return out <<
"rgba5";
1159 case EggTexture::F_rgb332:
1160 return out <<
"rgb332";
1161 case EggTexture::F_srgb:
1162 return out <<
"srgb";
1164 case EggTexture::F_red:
1165 return out <<
"red";
1166 case EggTexture::F_green:
1167 return out <<
"green";
1168 case EggTexture::F_blue:
1169 return out <<
"blue";
1170 case EggTexture::F_alpha:
1171 return out <<
"alpha";
1172 case EggTexture::F_luminance:
1173 return out <<
"luminance";
1174 case EggTexture::F_luminance_alpha:
1175 return out <<
"luminance_alpha";
1176 case EggTexture::F_luminance_alphamask:
1177 return out <<
"luminance_alphamask";
1180 nassertr(
false, out);
1181 return out <<
"(**invalid**)";
1187 ostream &operator << (ostream &out, EggTexture::CompressionMode mode) {
1189 case EggTexture::CM_default:
1190 return out <<
"default";
1191 case EggTexture::CM_off:
1192 return out <<
"off";
1193 case EggTexture::CM_on:
1195 case EggTexture::CM_fxt1:
1196 return out <<
"fxt1";
1197 case EggTexture::CM_dxt1:
1198 return out <<
"dxt1";
1199 case EggTexture::CM_dxt2:
1200 return out <<
"dxt2";
1201 case EggTexture::CM_dxt3:
1202 return out <<
"dxt3";
1203 case EggTexture::CM_dxt4:
1204 return out <<
"dxt4";
1205 case EggTexture::CM_dxt5:
1206 return out <<
"dxt5";
1209 nassertr(
false, out);
1210 return out <<
"(**invalid**)";
1216 ostream &operator << (ostream &out, EggTexture::WrapMode mode) {
1218 case EggTexture::WM_unspecified:
1219 return out <<
"unspecified";
1220 case EggTexture::WM_repeat:
1221 return out <<
"repeat";
1222 case EggTexture::WM_clamp:
1223 return out <<
"clamp";
1224 case EggTexture::WM_mirror:
1225 return out <<
"mirror";
1226 case EggTexture::WM_mirror_once:
1227 return out <<
"mirror_once";
1228 case EggTexture::WM_border_color:
1229 return out <<
"border_color";
1232 nassertr(
false, out);
1233 return out <<
"(**invalid**)";
1239 ostream &operator << (ostream &out, EggTexture::FilterType type) {
1241 case EggTexture::FT_unspecified:
1242 return out <<
"unspecified";
1244 case EggTexture::FT_nearest:
1245 return out <<
"nearest";
1246 case EggTexture::FT_linear:
1247 return out <<
"linear";
1249 case EggTexture::FT_nearest_mipmap_nearest:
1250 return out <<
"nearest_mipmap_nearest";
1251 case EggTexture::FT_linear_mipmap_nearest:
1252 return out <<
"linear_mipmap_nearest";
1253 case EggTexture::FT_nearest_mipmap_linear:
1254 return out <<
"nearest_mipmap_linear";
1255 case EggTexture::FT_linear_mipmap_linear:
1256 return out <<
"linear_mipmap_linear";
1259 nassertr(
false, out);
1260 return out <<
"(**invalid**)";
1266 ostream &operator << (ostream &out, EggTexture::EnvType type) {
1268 case EggTexture::ET_unspecified:
1269 return out <<
"unspecified";
1271 case EggTexture::ET_modulate:
1272 return out <<
"modulate";
1274 case EggTexture::ET_decal:
1275 return out <<
"decal";
1277 case EggTexture::ET_blend:
1278 return out <<
"blend";
1280 case EggTexture::ET_replace:
1281 return out <<
"replace";
1283 case EggTexture::ET_add:
1284 return out <<
"add";
1286 case EggTexture::ET_blend_color_scale:
1287 return out <<
"blend_color_scale";
1289 case EggTexture::ET_modulate_glow:
1290 return out <<
"modulate_glow";
1292 case EggTexture::ET_modulate_gloss:
1293 return out <<
"modulate_gloss";
1295 case EggTexture::ET_normal:
1296 return out <<
"normal";
1298 case EggTexture::ET_normal_height:
1299 return out <<
"normal_height";
1301 case EggTexture::ET_glow:
1302 return out <<
"glow";
1304 case EggTexture::ET_gloss:
1305 return out <<
"gloss";
1307 case EggTexture::ET_height:
1308 return out <<
"height";
1310 case EggTexture::ET_selector:
1311 return out <<
"selector";
1313 case EggTexture::ET_normal_gloss:
1314 return out <<
"normal_gloss";
1317 nassertr(
false, out);
1318 return out <<
"(**invalid**)";
1322 operator << (ostream &out, EggTexture::CombineMode cm) {
1324 case EggTexture::CM_unspecified:
1325 return out <<
"unspecified";
1327 case EggTexture::CM_replace:
1328 return out <<
"replace";
1330 case EggTexture::CM_modulate:
1331 return out <<
"modulate";
1333 case EggTexture::CM_add:
1334 return out <<
"add";
1336 case EggTexture::CM_add_signed:
1337 return out <<
"add_signed";
1339 case EggTexture::CM_interpolate:
1340 return out <<
"interpolate";
1342 case EggTexture::CM_subtract:
1343 return out <<
"subtract";
1345 case EggTexture::CM_dot3_rgb:
1346 return out <<
"dot3_rgb";
1348 case EggTexture::CM_dot3_rgba:
1349 return out <<
"dot3_rgba";
1352 return out <<
"**invalid CombineMode(" << (int)cm <<
")**";
1356 operator << (ostream &out, EggTexture::CombineChannel cm) {
1358 case EggTexture::CC_rgb:
1359 return out <<
"rgb";
1361 case EggTexture::CC_alpha:
1362 return out <<
"alpha";
1364 case EggTexture::CC_num_channels:
1370 return out <<
"**invalid CombineChannel(" << (int)cm <<
")**";
1374 operator << (ostream &out, EggTexture::CombineSource cs) {
1376 case EggTexture::CS_unspecified:
1377 return out <<
"unspecified";
1379 case EggTexture::CS_texture:
1380 return out <<
"texture";
1382 case EggTexture::CS_constant:
1383 return out <<
"constant";
1385 case EggTexture::CS_primary_color:
1386 return out <<
"primary_color";
1388 case EggTexture::CS_previous:
1389 return out <<
"previous";
1391 case EggTexture::CS_constant_color_scale:
1392 return out <<
"constant_color_scale";
1394 case EggTexture::CS_last_saved_result:
1395 return out <<
"last_saved_result";
1398 return out <<
"**invalid CombineSource(" << (int)cs <<
")**";
1402 operator << (ostream &out, EggTexture::CombineOperand co) {
1404 case EggTexture::CO_unspecified:
1405 return out <<
"unspecified";
1407 case EggTexture::CO_src_color:
1408 return out <<
"src_color";
1410 case EggTexture::CO_one_minus_src_color:
1411 return out <<
"one_minus_src_color";
1413 case EggTexture::CO_src_alpha:
1414 return out <<
"src_alpha";
1416 case EggTexture::CO_one_minus_src_alpha:
1417 return out <<
"one_minus_src_alpha";
1420 return out <<
"**invalid CombineOperand(" << (int)co <<
")**";
1424 operator << (ostream &out, EggTexture::TexGen tex_gen) {
1426 case EggTexture::TG_unspecified:
1427 return out <<
"unspecified";
1429 case EggTexture::TG_eye_sphere_map:
1430 return out <<
"eye_sphere_map";
1432 case EggTexture::TG_world_cube_map:
1433 return out <<
"world_cube_map";
1435 case EggTexture::TG_eye_cube_map:
1436 return out <<
"eye_cube_map";
1438 case EggTexture::TG_world_normal:
1439 return out <<
"world_normal";
1441 case EggTexture::TG_eye_normal:
1442 return out <<
"eye_normal";
1444 case EggTexture::TG_world_position:
1445 return out <<
"world_position";
1447 case EggTexture::TG_eye_position:
1448 return out <<
"eye_position";
1450 case EggTexture::TG_point_sprite:
1451 return out <<
"point_sprite";
1454 return out <<
"**invalid TexGen(" << (int)tex_gen <<
")**";
1458 operator << (ostream &out, EggTexture::QualityLevel quality_level) {
1459 switch (quality_level) {
1460 case EggTexture::QL_unspecified:
1461 return out <<
"unspecified";
1462 case EggTexture::QL_default:
1463 return out <<
"default";
1464 case EggTexture::QL_fastest:
1465 return out <<
"fastest";
1466 case EggTexture::QL_normal:
1467 return out <<
"normal";
1468 case EggTexture::QL_best:
1469 return out <<
"best";
1472 return out <<
"**invalid QualityLevel(" << (int)quality_level <<
")**";