37 virtual void write(std::ostream &out,
int indent_level)
const;
43 E_complete_filename = 0x007,
49 bool is_equivalent_to(
const EggTexture &other,
int eq)
const;
50 bool sorts_less_than(
const EggTexture &other,
int eq)
const;
52 bool has_alpha_channel(
int num_components)
const;
55 TT_unspecified, TT_1d_texture,
56 TT_2d_texture, TT_3d_texture, TT_cube_map
60 F_rgba, F_rgbm, F_rgba12, F_rgba8, F_rgba4, F_rgba5,
61 F_rgb, F_rgb12, F_rgb8, F_rgb5, F_rgb332,
62 F_red, F_green, F_blue, F_alpha, F_luminance,
63 F_luminance_alpha, F_luminance_alphamask,
68 enum CompressionMode {
69 CM_default, CM_off, CM_on,
70 CM_fxt1, CM_dxt1, CM_dxt2, CM_dxt3, CM_dxt4, CM_dxt5,
73 WM_unspecified, WM_clamp, WM_repeat,
74 WM_mirror, WM_mirror_once, WM_border_color
88 FT_nearest_mipmap_nearest,
89 FT_linear_mipmap_nearest,
90 FT_nearest_mipmap_linear,
91 FT_linear_mipmap_linear,
100 ET_blend_color_scale,
123 enum CombineChannel {
137 CS_constant_color_scale,
138 CS_last_saved_result,
140 enum CombineOperand {
143 CO_one_minus_src_color,
145 CO_one_minus_src_alpha,
171 INLINE
void set_texture_type(TextureType texture_type);
172 INLINE TextureType get_texture_type()
const;
174 INLINE
void set_format(Format format);
175 INLINE Format get_format()
const;
177 INLINE
void set_compression_mode(CompressionMode mode);
178 INLINE CompressionMode get_compression_mode()
const;
180 INLINE
void set_wrap_mode(WrapMode mode);
181 INLINE WrapMode get_wrap_mode()
const;
183 INLINE
void set_wrap_u(WrapMode mode);
184 INLINE WrapMode get_wrap_u()
const;
185 INLINE WrapMode determine_wrap_u()
const;
187 INLINE
void set_wrap_v(WrapMode mode);
188 INLINE WrapMode get_wrap_v()
const;
189 INLINE WrapMode determine_wrap_v()
const;
191 INLINE
void set_wrap_w(WrapMode mode);
192 INLINE WrapMode get_wrap_w()
const;
193 INLINE WrapMode determine_wrap_w()
const;
195 INLINE
void set_minfilter(FilterType type);
196 INLINE FilterType get_minfilter()
const;
198 INLINE
void set_magfilter(FilterType type);
199 INLINE FilterType get_magfilter()
const;
201 INLINE
void set_anisotropic_degree(
int anisotropic_degree);
202 INLINE
void clear_anisotropic_degree();
203 INLINE
bool has_anisotropic_degree()
const;
204 INLINE
int get_anisotropic_degree()
const;
206 INLINE
void set_env_type(EnvType type);
207 INLINE EnvType get_env_type()
const;
208 bool affects_polygon_alpha()
const;
210 INLINE
void set_combine_mode(CombineChannel channel, CombineMode cm);
211 INLINE CombineMode get_combine_mode(CombineChannel channel)
const;
212 INLINE
void set_combine_source(CombineChannel channel,
int n, CombineSource cs);
213 INLINE CombineSource get_combine_source(CombineChannel channel,
int n)
const;
214 INLINE
void set_combine_operand(CombineChannel channel,
int n, CombineOperand co);
215 INLINE CombineOperand get_combine_operand(CombineChannel channel,
int n)
const;
217 INLINE
void set_saved_result(
bool saved_result);
218 INLINE
bool get_saved_result()
const;
220 INLINE
void set_tex_gen(TexGen tex_gen);
221 INLINE TexGen get_tex_gen()
const;
223 INLINE
void set_quality_level(QualityLevel quality_level);
224 INLINE QualityLevel get_quality_level()
const;
226 INLINE
void set_stage_name(
const std::string &stage_name);
227 INLINE
void clear_stage_name();
228 INLINE
bool has_stage_name()
const;
229 INLINE
const std::string &get_stage_name()
const;
231 INLINE
void set_priority(
int priority);
232 INLINE
void clear_priority();
233 INLINE
bool has_priority()
const;
234 INLINE
int get_priority()
const;
236 INLINE
void set_color(
const LColor &color);
237 INLINE
void clear_color();
238 INLINE
bool has_color()
const;
239 INLINE
const LColor &get_color()
const;
241 INLINE
void set_border_color(
const LColor &border_color);
242 INLINE
void clear_border_color();
243 INLINE
bool has_border_color()
const;
244 INLINE
const LColor &get_border_color()
const;
246 INLINE
void set_uv_name(
const std::string &uv_name);
247 INLINE
void clear_uv_name();
248 INLINE
bool has_uv_name()
const;
249 INLINE
const std::string &get_uv_name()
const;
251 INLINE
void set_rgb_scale(
int rgb_scale);
252 INLINE
void clear_rgb_scale();
253 INLINE
bool has_rgb_scale()
const;
254 INLINE
int get_rgb_scale()
const;
256 INLINE
void set_alpha_scale(
int alpha_scale);
257 INLINE
void clear_alpha_scale();
258 INLINE
bool has_alpha_scale()
const;
259 INLINE
int get_alpha_scale()
const;
261 INLINE
void set_alpha_filename(
const Filename &filename);
262 INLINE
void clear_alpha_filename();
263 INLINE
bool has_alpha_filename()
const;
264 INLINE
const Filename &get_alpha_filename()
const;
266 INLINE
void set_alpha_fullpath(
const Filename &fullpath);
267 INLINE
const Filename &get_alpha_fullpath()
const;
269 INLINE
void set_alpha_file_channel(
int alpha_file_channel);
270 INLINE
void clear_alpha_file_channel();
271 INLINE
bool has_alpha_file_channel()
const;
272 INLINE
int get_alpha_file_channel()
const;
274 INLINE
void set_multiview(
bool multiview);
275 INLINE
bool get_multiview()
const;
277 INLINE
void set_num_views(
int num_views);
278 INLINE
void clear_num_views();
279 INLINE
bool has_num_views()
const;
280 INLINE
int get_num_views()
const;
282 INLINE
void set_read_mipmaps(
bool read_mipmaps);
283 INLINE
bool get_read_mipmaps()
const;
285 INLINE
void set_min_lod(
double min_lod);
286 INLINE
void clear_min_lod();
287 INLINE
bool has_min_lod()
const;
288 INLINE
double get_min_lod()
const;
290 INLINE
void set_max_lod(
double max_lod);
291 INLINE
void clear_max_lod();
292 INLINE
bool has_max_lod()
const;
293 INLINE
double get_max_lod()
const;
295 INLINE
void set_lod_bias(
double lod_bias);
296 INLINE
void clear_lod_bias();
297 INLINE
bool has_lod_bias()
const;
298 INLINE
double get_lod_bias()
const;
300 void clear_multitexture();
302 INLINE
int get_multitexture_sort()
const;
304 static TextureType string_texture_type(
const std::string &
string);
305 static Format string_format(
const std::string &
string);
306 static CompressionMode string_compression_mode(
const std::string &
string);
307 static WrapMode string_wrap_mode(
const std::string &
string);
308 static FilterType string_filter_type(
const std::string &
string);
309 static EnvType string_env_type(
const std::string &
string);
310 static CombineMode string_combine_mode(
const std::string &
string);
311 static CombineSource string_combine_source(
const std::string &
string);
312 static CombineOperand string_combine_operand(
const std::string &
string);
313 static TexGen string_tex_gen(
const std::string &
string);
314 static QualityLevel string_quality_level(
const std::string &
string);
317 MAKE_PROPERTY(texture_type, get_texture_type, set_texture_type);
318 MAKE_PROPERTY(format, get_format, set_format);
319 MAKE_PROPERTY(compression_mode, get_compression_mode, set_compression_mode);
320 MAKE_PROPERTY(wrap_mode, get_wrap_mode, set_wrap_mode);
321 MAKE_PROPERTY(wrap_u, get_wrap_u, set_wrap_u);
322 MAKE_PROPERTY(wrap_v, get_wrap_v, set_wrap_v);
323 MAKE_PROPERTY(wrap_w, get_wrap_w, set_wrap_w);
324 MAKE_PROPERTY(minfilter, get_minfilter, set_minfilter);
325 MAKE_PROPERTY(magfilter, get_magfilter, set_magfilter);
326 MAKE_PROPERTY2(anisotropic_degree, has_anisotropic_degree, get_anisotropic_degree,
327 set_anisotropic_degree, clear_anisotropic_degree);
328 MAKE_PROPERTY(env_type, get_env_type, set_env_type);
329 MAKE_PROPERTY(saved_result, get_saved_result, set_saved_result);
330 MAKE_PROPERTY(tex_gen, get_tex_gen, set_tex_gen);
331 MAKE_PROPERTY(quality_level, get_quality_level, set_quality_level);
332 MAKE_PROPERTY2(stage_name, has_stage_name, get_stage_name,
333 set_stage_name, clear_stage_name);
334 MAKE_PROPERTY2(priority, has_priority, get_priority,
335 set_priority, clear_priority);
336 MAKE_PROPERTY2(color, has_color, get_color,
337 set_color, clear_color);
338 MAKE_PROPERTY2(border_color, has_border_color, get_border_color,
339 set_border_color, clear_border_color);
340 MAKE_PROPERTY2(uv_name, has_uv_name, get_uv_name,
341 set_uv_name, clear_uv_name);
342 MAKE_PROPERTY2(rgb_scale, has_rgb_scale, get_rgb_scale,
343 set_rgb_scale, clear_rgb_scale);
344 MAKE_PROPERTY2(alpha_scale, has_alpha_scale, get_alpha_scale,
345 set_alpha_scale, clear_alpha_scale);
346 MAKE_PROPERTY2(alpha_filename, has_alpha_filename, get_alpha_filename,
347 set_alpha_filename, clear_alpha_filename);
348 MAKE_PROPERTY(alpha_fullpath, get_alpha_fullpath, set_alpha_fullpath);
349 MAKE_PROPERTY2(alpha_file_channel, has_alpha_file_channel, get_alpha_file_channel,
350 set_alpha_file_channel, clear_alpha_file_channel);
351 MAKE_PROPERTY(multiview, get_multiview, set_multiview);
352 MAKE_PROPERTY2(num_views, has_num_views, get_num_views,
353 set_num_views, clear_num_views);
354 MAKE_PROPERTY(read_mipmaps, get_read_mipmaps, set_read_mipmaps);
355 MAKE_PROPERTY2(min_lod, has_min_lod, get_min_lod,
356 set_min_lod, clear_min_lod);
357 MAKE_PROPERTY2(max_lod, has_max_lod, get_max_lod,
358 set_max_lod, clear_max_lod);
359 MAKE_PROPERTY2(lod_bias, has_lod_bias, get_lod_bias,
360 set_lod_bias, clear_lod_bias);
362 MAKE_PROPERTY(multitexture_sort, get_multitexture_sort);
368 virtual bool egg_start_parse_body();
372 bool r_min_multitexture_sort(
int sort,
MultiTextures &cycle_detector);
375 F_has_alpha_filename = 0x0002,
376 F_has_anisotropic_degree = 0x0004,
377 F_has_alpha_file_channel = 0x0008,
378 F_has_stage_name = 0x0010,
379 F_has_uv_name = 0x0020,
380 F_has_priority = 0x0040,
381 F_has_color = 0x0080,
382 F_has_rgb_scale = 0x0100,
383 F_has_alpha_scale = 0x0200,
384 F_has_border_color = 0x0400,
385 F_has_num_views = 0x0800,
386 F_has_min_lod = 0x1000,
387 F_has_max_lod = 0x2000,
388 F_has_lod_bias = 0x4000,
391 TextureType _texture_type;
393 CompressionMode _compression_mode;
394 WrapMode _wrap_mode, _wrap_u, _wrap_v, _wrap_w;
395 FilterType _minfilter, _magfilter;
396 int _anisotropic_degree;
402 QualityLevel _quality_level;
403 std::string _stage_name;
406 LColor _border_color;
407 std::string _uv_name;
413 int _alpha_file_channel;
415 int _multitexture_sort;
420 class SourceAndOperand {
422 INLINE SourceAndOperand();
423 CombineSource _source;
424 CombineOperand _operand;
431 SourceAndOperand _ops[CI_num_indices];
434 Combiner _combiner[CC_num_channels];
438 MultiTextures _over_textures, _under_textures;
444 static void init_type() {
445 EggFilenameNode::init_type();
446 EggRenderMode::init_type();
448 EggFilenameNode::get_class_type(),
449 EggRenderMode::get_class_type());
452 return get_class_type();
454 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
473 INLINE std::ostream &operator << (std::ostream &out,
const EggTexture &n) {
477 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::TextureType texture_type);
478 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::Format format);
479 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CompressionMode mode);
480 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::WrapMode mode);
481 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::FilterType type);
482 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::EnvType type);
483 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineMode cm);
484 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineChannel cc);
485 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineSource cs);
486 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineOperand co);
487 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::TexGen tex_gen);
488 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::QualityLevel quality_level);
This is an egg node that contains a filename.
const Filename & get_filename() const
Returns a nonmodifiable reference to the filename.
virtual EggTransform * as_transform()
Returns this object cross-cast to an EggTransform pointer, if it inherits from EggTransform,...
This class stores miscellaneous rendering properties that is associated with geometry,...
void write(std::ostream &out, int indent_level) const
Writes the attributes to the indicated output stream in Egg format.
Defines a texture map that may be applied to geometry.
The name of a file, such as a texture file or an Egg file.
TypeHandle is the identifier used to differentiate C++ class types.
An STL function object for sorting textures into order by properties.
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.
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(),...