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
65 enum CompressionMode {
66 CM_default, CM_off, CM_on,
67 CM_fxt1, CM_dxt1, CM_dxt2, CM_dxt3, CM_dxt4, CM_dxt5,
70 WM_unspecified, WM_clamp, WM_repeat,
71 WM_mirror, WM_mirror_once, WM_border_color
85 FT_nearest_mipmap_nearest,
86 FT_linear_mipmap_nearest,
87 FT_nearest_mipmap_linear,
88 FT_linear_mipmap_linear,
119 enum CombineChannel {
133 CS_constant_color_scale,
134 CS_last_saved_result,
136 enum CombineOperand {
139 CO_one_minus_src_color,
141 CO_one_minus_src_alpha,
167 INLINE
void set_texture_type(TextureType texture_type);
168 INLINE TextureType get_texture_type()
const;
170 INLINE
void set_format(Format format);
171 INLINE Format get_format()
const;
173 INLINE
void set_compression_mode(CompressionMode mode);
174 INLINE CompressionMode get_compression_mode()
const;
176 INLINE
void set_wrap_mode(WrapMode mode);
177 INLINE WrapMode get_wrap_mode()
const;
179 INLINE
void set_wrap_u(WrapMode mode);
180 INLINE WrapMode get_wrap_u()
const;
181 INLINE WrapMode determine_wrap_u()
const;
183 INLINE
void set_wrap_v(WrapMode mode);
184 INLINE WrapMode get_wrap_v()
const;
185 INLINE WrapMode determine_wrap_v()
const;
187 INLINE
void set_wrap_w(WrapMode mode);
188 INLINE WrapMode get_wrap_w()
const;
189 INLINE WrapMode determine_wrap_w()
const;
191 INLINE
void set_minfilter(FilterType type);
192 INLINE FilterType get_minfilter()
const;
194 INLINE
void set_magfilter(FilterType type);
195 INLINE FilterType get_magfilter()
const;
197 INLINE
void set_anisotropic_degree(
int anisotropic_degree);
198 INLINE
void clear_anisotropic_degree();
199 INLINE
bool has_anisotropic_degree()
const;
200 INLINE
int get_anisotropic_degree()
const;
202 INLINE
void set_env_type(EnvType type);
203 INLINE EnvType get_env_type()
const;
204 bool affects_polygon_alpha()
const;
206 INLINE
void set_combine_mode(CombineChannel channel, CombineMode cm);
207 INLINE CombineMode get_combine_mode(CombineChannel channel)
const;
208 INLINE
void set_combine_source(CombineChannel channel,
int n, CombineSource cs);
209 INLINE CombineSource get_combine_source(CombineChannel channel,
int n)
const;
210 INLINE
void set_combine_operand(CombineChannel channel,
int n, CombineOperand co);
211 INLINE CombineOperand get_combine_operand(CombineChannel channel,
int n)
const;
213 INLINE
void set_saved_result(
bool saved_result);
214 INLINE
bool get_saved_result()
const;
216 INLINE
void set_tex_gen(TexGen tex_gen);
217 INLINE TexGen get_tex_gen()
const;
219 INLINE
void set_quality_level(QualityLevel quality_level);
220 INLINE QualityLevel get_quality_level()
const;
222 INLINE
void set_stage_name(
const std::string &stage_name);
223 INLINE
void clear_stage_name();
224 INLINE
bool has_stage_name()
const;
225 INLINE
const std::string &get_stage_name()
const;
227 INLINE
void set_priority(
int priority);
228 INLINE
void clear_priority();
229 INLINE
bool has_priority()
const;
230 INLINE
int get_priority()
const;
232 INLINE
void set_color(
const LColor &
color);
233 INLINE
void clear_color();
234 INLINE
bool has_color()
const;
235 INLINE
const LColor &get_color()
const;
237 INLINE
void set_border_color(
const LColor &border_color);
238 INLINE
void clear_border_color();
239 INLINE
bool has_border_color()
const;
240 INLINE
const LColor &get_border_color()
const;
242 INLINE
void set_uv_name(
const std::string &uv_name);
243 INLINE
void clear_uv_name();
244 INLINE
bool has_uv_name()
const;
245 INLINE
const std::string &get_uv_name()
const;
247 INLINE
void set_rgb_scale(
int rgb_scale);
248 INLINE
void clear_rgb_scale();
249 INLINE
bool has_rgb_scale()
const;
250 INLINE
int get_rgb_scale()
const;
252 INLINE
void set_alpha_scale(
int alpha_scale);
253 INLINE
void clear_alpha_scale();
254 INLINE
bool has_alpha_scale()
const;
255 INLINE
int get_alpha_scale()
const;
257 INLINE
void set_alpha_filename(
const Filename &filename);
258 INLINE
void clear_alpha_filename();
259 INLINE
bool has_alpha_filename()
const;
260 INLINE
const Filename &get_alpha_filename()
const;
262 INLINE
void set_alpha_fullpath(
const Filename &fullpath);
263 INLINE
const Filename &get_alpha_fullpath()
const;
265 INLINE
void set_alpha_file_channel(
int alpha_file_channel);
266 INLINE
void clear_alpha_file_channel();
267 INLINE
bool has_alpha_file_channel()
const;
268 INLINE
int get_alpha_file_channel()
const;
270 INLINE
void set_multiview(
bool multiview);
271 INLINE
bool get_multiview()
const;
273 INLINE
void set_num_views(
int num_views);
274 INLINE
void clear_num_views();
275 INLINE
bool has_num_views()
const;
276 INLINE
int get_num_views()
const;
278 INLINE
void set_read_mipmaps(
bool read_mipmaps);
279 INLINE
bool get_read_mipmaps()
const;
281 INLINE
void set_min_lod(
double min_lod);
282 INLINE
void clear_min_lod();
283 INLINE
bool has_min_lod()
const;
284 INLINE
double get_min_lod()
const;
286 INLINE
void set_max_lod(
double max_lod);
287 INLINE
void clear_max_lod();
288 INLINE
bool has_max_lod()
const;
289 INLINE
double get_max_lod()
const;
291 INLINE
void set_lod_bias(
double lod_bias);
292 INLINE
void clear_lod_bias();
293 INLINE
bool has_lod_bias()
const;
294 INLINE
double get_lod_bias()
const;
296 void clear_multitexture();
298 INLINE
int get_multitexture_sort()
const;
300 static TextureType string_texture_type(
const std::string &
string);
301 static Format string_format(
const std::string &
string);
302 static CompressionMode string_compression_mode(
const std::string &
string);
303 static WrapMode string_wrap_mode(
const std::string &
string);
304 static FilterType string_filter_type(
const std::string &
string);
305 static EnvType string_env_type(
const std::string &
string);
306 static CombineMode string_combine_mode(
const std::string &
string);
307 static CombineSource string_combine_source(
const std::string &
string);
308 static CombineOperand string_combine_operand(
const std::string &
string);
309 static TexGen string_tex_gen(
const std::string &
string);
310 static QualityLevel string_quality_level(
const std::string &
string);
313 MAKE_PROPERTY(texture_type, get_texture_type, set_texture_type);
314 MAKE_PROPERTY(format, get_format, set_format);
315 MAKE_PROPERTY(compression_mode, get_compression_mode, set_compression_mode);
316 MAKE_PROPERTY(wrap_mode, get_wrap_mode, set_wrap_mode);
317 MAKE_PROPERTY(wrap_u, get_wrap_u, set_wrap_u);
318 MAKE_PROPERTY(wrap_v, get_wrap_v, set_wrap_v);
319 MAKE_PROPERTY(wrap_w, get_wrap_w, set_wrap_w);
320 MAKE_PROPERTY(minfilter, get_minfilter, set_minfilter);
321 MAKE_PROPERTY(magfilter, get_magfilter, set_magfilter);
322 MAKE_PROPERTY2(anisotropic_degree, has_anisotropic_degree, get_anisotropic_degree,
323 set_anisotropic_degree, clear_anisotropic_degree);
324 MAKE_PROPERTY(env_type, get_env_type, set_env_type);
325 MAKE_PROPERTY(saved_result, get_saved_result, set_saved_result);
326 MAKE_PROPERTY(tex_gen, get_tex_gen, set_tex_gen);
327 MAKE_PROPERTY(quality_level, get_quality_level, set_quality_level);
328 MAKE_PROPERTY2(stage_name, has_stage_name, get_stage_name,
329 set_stage_name, clear_stage_name);
330 MAKE_PROPERTY2(priority, has_priority, get_priority,
331 set_priority, clear_priority);
332 MAKE_PROPERTY2(
color, has_color, get_color,
333 set_color, clear_color);
334 MAKE_PROPERTY2(border_color, has_border_color, get_border_color,
335 set_border_color, clear_border_color);
336 MAKE_PROPERTY2(uv_name, has_uv_name, get_uv_name,
337 set_uv_name, clear_uv_name);
338 MAKE_PROPERTY2(rgb_scale, has_rgb_scale, get_rgb_scale,
339 set_rgb_scale, clear_rgb_scale);
340 MAKE_PROPERTY2(alpha_scale, has_alpha_scale, get_alpha_scale,
341 set_alpha_scale, clear_alpha_scale);
342 MAKE_PROPERTY2(alpha_filename, has_alpha_filename, get_alpha_filename,
343 set_alpha_filename, clear_alpha_filename);
344 MAKE_PROPERTY(alpha_fullpath, get_alpha_fullpath, set_alpha_fullpath);
345 MAKE_PROPERTY2(alpha_file_channel, has_alpha_file_channel, get_alpha_file_channel,
346 set_alpha_file_channel, clear_alpha_file_channel);
347 MAKE_PROPERTY(multiview, get_multiview, set_multiview);
348 MAKE_PROPERTY2(num_views, has_num_views, get_num_views,
349 set_num_views, clear_num_views);
350 MAKE_PROPERTY(read_mipmaps, get_read_mipmaps, set_read_mipmaps);
351 MAKE_PROPERTY2(min_lod, has_min_lod, get_min_lod,
352 set_min_lod, clear_min_lod);
353 MAKE_PROPERTY2(max_lod, has_max_lod, get_max_lod,
354 set_max_lod, clear_max_lod);
355 MAKE_PROPERTY2(lod_bias, has_lod_bias, get_lod_bias,
356 set_lod_bias, clear_lod_bias);
358 MAKE_PROPERTY(multitexture_sort, get_multitexture_sort);
364 virtual bool egg_start_parse_body();
368 bool r_min_multitexture_sort(
int sort,
MultiTextures &cycle_detector);
371 F_has_alpha_filename = 0x0002,
372 F_has_anisotropic_degree = 0x0004,
373 F_has_alpha_file_channel = 0x0008,
374 F_has_stage_name = 0x0010,
375 F_has_uv_name = 0x0020,
376 F_has_priority = 0x0040,
377 F_has_color = 0x0080,
378 F_has_rgb_scale = 0x0100,
379 F_has_alpha_scale = 0x0200,
380 F_has_border_color = 0x0400,
381 F_has_num_views = 0x0800,
382 F_has_min_lod = 0x1000,
383 F_has_max_lod = 0x2000,
384 F_has_lod_bias = 0x4000,
387 TextureType _texture_type;
389 CompressionMode _compression_mode;
390 WrapMode _wrap_mode, _wrap_u, _wrap_v, _wrap_w;
391 FilterType _minfilter, _magfilter;
392 int _anisotropic_degree;
398 QualityLevel _quality_level;
399 std::string _stage_name;
402 LColor _border_color;
403 std::string _uv_name;
409 int _alpha_file_channel;
411 int _multitexture_sort;
416 class SourceAndOperand {
418 INLINE SourceAndOperand();
419 CombineSource _source;
420 CombineOperand _operand;
427 SourceAndOperand _ops[CI_num_indices];
430 Combiner _combiner[CC_num_channels];
434 MultiTextures _over_textures, _under_textures;
440 static void init_type() {
441 EggFilenameNode::init_type();
442 EggRenderMode::init_type();
444 EggFilenameNode::get_class_type(),
445 EggRenderMode::get_class_type());
448 return get_class_type();
450 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
469 INLINE std::ostream &operator << (std::ostream &out,
const EggTexture &n) {
473 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::TextureType texture_type);
474 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::Format format);
475 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CompressionMode mode);
476 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::WrapMode mode);
477 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::FilterType type);
478 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::EnvType type);
479 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineMode cm);
480 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineChannel cc);
481 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineSource cs);
482 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::CombineOperand co);
483 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::TexGen tex_gen);
484 EXPCL_PANDA_EGG std::ostream &operator << (std::ostream &out, EggTexture::QualityLevel quality_level);
const Filename & get_filename() const
Returns a nonmodifiable reference to the filename.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is an egg node that contains a filename.
Defines a texture map that may be applied to geometry.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(), along with zero to four record_derivation()s.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class stores miscellaneous rendering properties that is associated with geometry, and which may be set on the geometry primitive level, on the group above it, or indirectly via a texture.
virtual EggTransform * as_transform()
Returns this object cross-cast to an EggTransform pointer, if it inherits from EggTransform, or NULL if it does not.
The name of a file, such as a texture file or an Egg file.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
An STL function object for sorting textures into order by properties.
void write(std::ostream &out, int indent_level) const
Writes the attributes to the indicated output stream in Egg format.
TypeHandle is the identifier used to differentiate C++ class types.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.