1/*
2Open Asset Import Library (assimp)
3----------------------------------------------------------------------
4
5Copyright (c) 2006-2017, assimp team
6
7All rights reserved.
8
9Redistribution and use of this software in source and binary forms,
10with or without modification, are permitted provided that the
11following conditions are met:
12
13* Redistributions of source code must retain the above
14 copyright notice, this list of conditions and the
15 following disclaimer.
16
17* Redistributions in binary form must reproduce the above
18 copyright notice, this list of conditions and the
19 following disclaimer in the documentation and/or other
20 materials provided with the distribution.
21
22* Neither the name of the assimp team, nor the names of its
23 contributors may be used to endorse or promote products
24 derived from this software without specific prior
25 written permission of the assimp team.
26
27THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
39----------------------------------------------------------------------
40*/
41
42/** @file BlenderScene.h
43 * @brief Intermediate representation of a BLEND scene.
44 */
45#ifndef INCLUDED_AI_BLEND_SCENE_H
46#define INCLUDED_AI_BLEND_SCENE_H
47
48#include "BlenderDNA.h"
49
50namespace Assimp {
51namespace Blender {
52
53// Minor parts of this file are extracts from blender data structures,
54// declared in the ./source/blender/makesdna directory.
55// Stuff that is not used by Assimp is commented.
56
57
58// NOTE
59// this file serves as input data to the `./scripts/genblenddna.py`
60// script. This script generates the actual binding code to read a
61// blender file with a possibly different DNA into our structures.
62// Only `struct` declarations are considered and the following
63// rules must be obeyed in order for the script to work properly:
64//
65// * C++ style comments only
66//
67// * Structures may include the primitive types char, int, short,
68// float, double. Signed specifiers are not allowed on
69// integers. Enum types are allowed, but they must have been
70// defined in this header.
71//
72// * Structures may aggregate other structures, unless not defined
73// in this header.
74//
75// * Pointers to other structures or primitive types are allowed.
76// No references or double pointers or arrays of pointers.
77// A pointer to a T is normally written as std::shared_ptr, while a
78// pointer to an array of elements is written as boost::
79// shared_array. To avoid cyclic pointers, use raw pointers in
80// one direction.
81//
82// * Arrays can have maximally two-dimensions. Any non-pointer
83// type can form them.
84//
85// * Multiple fields can be declare in a single line (i.e `int a,b;`)
86// provided they are neither pointers nor arrays.
87//
88// * One of WARN, FAIL can be appended to the declaration (
89// prior to the semicolon to specify the error handling policy if
90// this field is missing in the input DNA). If none of those
91// is specified the default policy is to substitute a default
92// value for the field.
93//
94
95// warn if field is missing, substitute default value
96#ifdef WARN
97# undef WARN
98#endif
99#define WARN
100
101// fail the import if the field does not exist
102#ifdef FAIL
103# undef FAIL
104#endif
105#define FAIL
106
107struct Object;
108struct MTex;
109struct Image;
110
111#include <memory>
112
113#define AI_BLEND_MESH_MAX_VERTS 2000000000L
114
115static const size_t MaxNameLen = 1024;
116
117// -------------------------------------------------------------------------------
118struct ID : ElemBase {
119 char name[ MaxNameLen ] WARN;
120 short flag;
121};
122
123// -------------------------------------------------------------------------------
124struct ListBase : ElemBase {
125 std::shared_ptr<ElemBase> first;
126 std::shared_ptr<ElemBase> last;
127};
128
129
130// -------------------------------------------------------------------------------
131struct PackedFile : ElemBase {
132 int size WARN;
133 int seek WARN;
134 std::shared_ptr< FileOffset > data WARN;
135};
136
137// -------------------------------------------------------------------------------
138struct GroupObject : ElemBase {
139 std::shared_ptr<GroupObject> prev,next FAIL;
140 std::shared_ptr<Object> ob;
141};
142
143// -------------------------------------------------------------------------------
144struct Group : ElemBase {
145 ID id FAIL;
146 int layer;
147
148 std::shared_ptr<GroupObject> gobject;
149};
150
151// -------------------------------------------------------------------------------
152struct World : ElemBase {
153 ID id FAIL;
154};
155
156// -------------------------------------------------------------------------------
157struct MVert : ElemBase {
158 float co[3] FAIL;
159 float no[3] FAIL;
160 char flag;
161 int mat_nr WARN;
162 int bweight;
163};
164
165// -------------------------------------------------------------------------------
166struct MEdge : ElemBase {
167 int v1, v2 FAIL;
168 char crease, bweight;
169 short flag;
170};
171
172// -------------------------------------------------------------------------------
173struct MLoop : ElemBase {
174 int v, e;
175};
176
177// -------------------------------------------------------------------------------
178struct MLoopUV : ElemBase {
179 float uv[2];
180 int flag;
181};
182
183// -------------------------------------------------------------------------------
184// Note that red and blue are not swapped, as with MCol
185struct MLoopCol : ElemBase {
186 unsigned char r, g, b, a;
187};
188
189// -------------------------------------------------------------------------------
190struct MPoly : ElemBase {
191 int loopstart;
192 int totloop;
193 short mat_nr;
194 char flag;
195};
196
197// -------------------------------------------------------------------------------
198struct MTexPoly : ElemBase {
199 Image* tpage;
200 char flag, transp;
201 short mode, tile, pad;
202};
203
204// -------------------------------------------------------------------------------
205struct MCol : ElemBase {
206 char r,g,b,a FAIL;
207};
208
209// -------------------------------------------------------------------------------
210struct MFace : ElemBase {
211 int v1,v2,v3,v4 FAIL;
212 int mat_nr FAIL;
213 char flag;
214};
215
216// -------------------------------------------------------------------------------
217struct TFace : ElemBase {
218 float uv[4][2] FAIL;
219 int col[4] FAIL;
220 char flag;
221 short mode;
222 short tile;
223 short unwrap;
224};
225
226// -------------------------------------------------------------------------------
227struct MTFace : ElemBase {
228 MTFace()
229 : flag(0)
230 , mode(0)
231 , tile(0)
232 , unwrap(0)
233 {
234 }
235
236 float uv[4][2] FAIL;
237 char flag;
238 short mode;
239 short tile;
240 short unwrap;
241
242 // std::shared_ptr<Image> tpage;
243};
244
245// -------------------------------------------------------------------------------
246struct MDeformWeight : ElemBase {
247 int def_nr FAIL;
248 float weight FAIL;
249};
250
251// -------------------------------------------------------------------------------
252struct MDeformVert : ElemBase {
253 vector<MDeformWeight> dw WARN;
254 int totweight;
255};
256
257// -------------------------------------------------------------------------------
258#define MA_RAYMIRROR 0x40000
259#define MA_TRANSPARENCY 0x10000
260#define MA_RAYTRANSP 0x20000
261#define MA_ZTRANSP 0x00040
262
263struct Material : ElemBase {
264 ID id FAIL;
265
266 float r,g,b WARN;
267 float specr,specg,specb WARN;
268 short har;
269 float ambr,ambg,ambb WARN;
270 float mirr,mirg,mirb;
271 float emit WARN;
272 float ray_mirror;
273 float alpha WARN;
274 float ref;
275 float translucency;
276 int mode;
277 float roughness;
278 float darkness;
279 float refrac;
280
281 float amb;
282 float ang;
283 float spectra;
284 float spec;
285 float zoffs;
286 float add;
287 float fresnel_mir;
288 float fresnel_mir_i;
289 float fresnel_tra;
290 float fresnel_tra_i;
291 float filter;
292 float tx_limit;
293 float tx_falloff;
294 float gloss_mir;
295 float gloss_tra;
296 float adapt_thresh_mir;
297 float adapt_thresh_tra;
298 float aniso_gloss_mir;
299 float dist_mir;
300 float hasize;
301 float flaresize;
302 float subsize;
303 float flareboost;
304 float strand_sta;
305 float strand_end;
306 float strand_ease;
307 float strand_surfnor;
308 float strand_min;
309 float strand_widthfade;
310 float sbias;
311 float lbias;
312 float shad_alpha;
313 float param;
314 float rms;
315 float rampfac_col;
316 float rampfac_spec;
317 float friction;
318 float fh;
319 float reflect;
320 float fhdist;
321 float xyfrict;
322 float sss_radius;
323 float sss_col;
324 float sss_error;
325 float sss_scale;
326 float sss_ior;
327 float sss_colfac;
328 float sss_texfac;
329 float sss_front;
330 float sss_back;
331
332 short material_type;
333 short flag;
334 short ray_depth;
335 short ray_depth_tra;
336 short samp_gloss_mir;
337 short samp_gloss_tra;
338 short fadeto_mir;
339 short shade_flag;
340 short flarec;
341 short starc;
342 short linec;
343 short ringc;
344 short pr_lamp;
345 short pr_texture;
346 short ml_flag;
347 short texco;
348 short mapto;
349 short ramp_show;
350 short pad3;
351 short dynamode;
352 short pad2;
353 short sss_flag;
354 short sss_preset;
355 short shadowonly_flag;
356 short index;
357 short vcol_alpha;
358 short pad4;
359
360 char seed1;
361 char seed2;
362
363 std::shared_ptr<Group> group;
364
365 short diff_shader WARN;
366 short spec_shader WARN;
367
368 std::shared_ptr<MTex> mtex[18];
369};
370
371// -------------------------------------------------------------------------------
372struct Mesh : ElemBase {
373 ID id FAIL;
374
375 int totface FAIL;
376 int totedge FAIL;
377 int totvert FAIL;
378 int totloop;
379 int totpoly;
380
381 short subdiv;
382 short subdivr;
383 short subsurftype;
384 short smoothresh;
385
386 vector<MFace> mface FAIL;
387 vector<MTFace> mtface;
388 vector<TFace> tface;
389 vector<MVert> mvert FAIL;
390 vector<MEdge> medge WARN;
391 vector<MLoop> mloop;
392 vector<MLoopUV> mloopuv;
393 vector<MLoopCol> mloopcol;
394 vector<MPoly> mpoly;
395 vector<MTexPoly> mtpoly;
396 vector<MDeformVert> dvert;
397 vector<MCol> mcol;
398
399 vector< std::shared_ptr<Material> > mat FAIL;
400};
401
402// -------------------------------------------------------------------------------
403struct Library : ElemBase {
404 ID id FAIL;
405
406 char name[240] WARN;
407 char filename[240] FAIL;
408 std::shared_ptr<Library> parent WARN;
409};
410
411// -------------------------------------------------------------------------------
412struct Camera : ElemBase {
413 enum Type {
414 Type_PERSP = 0
415 ,Type_ORTHO = 1
416 };
417
418 ID id FAIL;
419
420 Type type,flag WARN;
421 float lens WARN;
422 float sensor_x WARN;
423 float clipsta, clipend;
424};
425
426
427// -------------------------------------------------------------------------------
428struct Lamp : ElemBase {
429
430 enum FalloffType {
431 FalloffType_Constant = 0x0
432 ,FalloffType_InvLinear = 0x1
433 ,FalloffType_InvSquare = 0x2
434 //,FalloffType_Curve = 0x3
435 //,FalloffType_Sliders = 0x4
436 };
437
438 enum Type {
439 Type_Local = 0x0
440 ,Type_Sun = 0x1
441 ,Type_Spot = 0x2
442 ,Type_Hemi = 0x3
443 ,Type_Area = 0x4
444 //,Type_YFPhoton = 0x5
445 };
446
447 ID id FAIL;
448 //AnimData *adt;
449
450 Type type FAIL;
451 short flags;
452
453 //int mode;
454
455 short colormodel, totex;
456 float r,g,b,k WARN;
457 //float shdwr, shdwg, shdwb;
458
459 float energy, dist, spotsize, spotblend;
460 //float haint;
461
462 float att1, att2;
463 //struct CurveMapping *curfalloff;
464 FalloffType falloff_type;
465
466 //float clipsta, clipend, shadspotsize;
467 //float bias, soft, compressthresh;
468 //short bufsize, samp, buffers, filtertype;
469 //char bufflag, buftype;
470
471 //short ray_samp, ray_sampy, ray_sampz;
472 //short ray_samp_type;
473 short area_shape;
474 float area_size, area_sizey, area_sizez;
475 //float adapt_thresh;
476 //short ray_samp_method;
477
478 //short texact, shadhalostep;
479
480 //short sun_effect_type;
481 //short skyblendtype;
482 //float horizon_brightness;
483 //float spread;
484 float sun_brightness;
485 //float sun_size;
486 //float backscattered_light;
487 //float sun_intensity;
488 //float atm_turbidity;
489 //float atm_inscattering_factor;
490 //float atm_extinction_factor;
491 //float atm_distance_factor;
492 //float skyblendfac;
493 //float sky_exposure;
494 //short sky_colorspace;
495
496 // int YF_numphotons, YF_numsearch;
497 // short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad;
498 // float YF_causticblur, YF_ltradius;
499
500 // float YF_glowint, YF_glowofs;
501 // short YF_glowtype, YF_pad2;
502
503 //struct Ipo *ipo;
504 //struct MTex *mtex[18];
505 // short pr_texture;
506
507 //struct PreviewImage *preview;
508};
509
510// -------------------------------------------------------------------------------
511struct ModifierData : ElemBase {
512 enum ModifierType {
513 eModifierType_None = 0,
514 eModifierType_Subsurf,
515 eModifierType_Lattice,
516 eModifierType_Curve,
517 eModifierType_Build,
518 eModifierType_Mirror,
519 eModifierType_Decimate,
520 eModifierType_Wave,
521 eModifierType_Armature,
522 eModifierType_Hook,
523 eModifierType_Softbody,
524 eModifierType_Boolean,
525 eModifierType_Array,
526 eModifierType_EdgeSplit,
527 eModifierType_Displace,
528 eModifierType_UVProject,
529 eModifierType_Smooth,
530 eModifierType_Cast,
531 eModifierType_MeshDeform,
532 eModifierType_ParticleSystem,
533 eModifierType_ParticleInstance,
534 eModifierType_Explode,
535 eModifierType_Cloth,
536 eModifierType_Collision,
537 eModifierType_Bevel,
538 eModifierType_Shrinkwrap,
539 eModifierType_Fluidsim,
540 eModifierType_Mask,
541 eModifierType_SimpleDeform,
542 eModifierType_Multires,
543 eModifierType_Surface,
544 eModifierType_Smoke,
545 eModifierType_ShapeKey
546 };
547
548 std::shared_ptr<ElemBase> next WARN;
549 std::shared_ptr<ElemBase> prev WARN;
550
551 int type, mode;
552 char name[32];
553};
554
555// -------------------------------------------------------------------------------
556struct SubsurfModifierData : ElemBase {
557
558 enum Type {
559
560 TYPE_CatmullClarke = 0x0,
561 TYPE_Simple = 0x1
562 };
563
564 enum Flags {
565 // some omitted
566 FLAGS_SubsurfUV =1<<3
567 };
568
569 ModifierData modifier FAIL;
570 short subdivType WARN;
571 short levels FAIL;
572 short renderLevels ;
573 short flags;
574};
575
576// -------------------------------------------------------------------------------
577struct MirrorModifierData : ElemBase {
578
579 enum Flags {
580 Flags_CLIPPING =1<<0,
581 Flags_MIRROR_U =1<<1,
582 Flags_MIRROR_V =1<<2,
583 Flags_AXIS_X =1<<3,
584 Flags_AXIS_Y =1<<4,
585 Flags_AXIS_Z =1<<5,
586 Flags_VGROUP =1<<6
587 };
588
589 ModifierData modifier FAIL;
590
591 short axis, flag;
592 float tolerance;
593 std::shared_ptr<Object> mirror_ob;
594};
595
596// -------------------------------------------------------------------------------
597struct Object : ElemBase {
598 ID id FAIL;
599
600 enum Type {
601 Type_EMPTY = 0
602 ,Type_MESH = 1
603 ,Type_CURVE = 2
604 ,Type_SURF = 3
605 ,Type_FONT = 4
606 ,Type_MBALL = 5
607
608 ,Type_LAMP = 10
609 ,Type_CAMERA = 11
610
611 ,Type_WAVE = 21
612 ,Type_LATTICE = 22
613 };
614
615 Type type FAIL;
616 float obmat[4][4] WARN;
617 float parentinv[4][4] WARN;
618 char parsubstr[32] WARN;
619
620 Object* parent WARN;
621 std::shared_ptr<Object> track WARN;
622
623 std::shared_ptr<Object> proxy,proxy_from,proxy_group WARN;
624 std::shared_ptr<Group> dup_group WARN;
625 std::shared_ptr<ElemBase> data FAIL;
626
627 ListBase modifiers;
628
629 Object()
630 : ElemBase()
631 , type( Type_EMPTY )
632 , parent( nullptr )
633 , track()
634 , proxy()
635 , proxy_from()
636 , data() {
637 // empty
638 }
639};
640
641
642// -------------------------------------------------------------------------------
643struct Base : ElemBase {
644 Base* prev WARN;
645 std::shared_ptr<Base> next WARN;
646 std::shared_ptr<Object> object WARN;
647
648 Base()
649 : ElemBase()
650 , prev( nullptr )
651 , next()
652 , object() {
653 // empty
654 // empty
655 }
656};
657
658// -------------------------------------------------------------------------------
659struct Scene : ElemBase {
660 ID id FAIL;
661
662 std::shared_ptr<Object> camera WARN;
663 std::shared_ptr<World> world WARN;
664 std::shared_ptr<Base> basact WARN;
665
666 ListBase base;
667
668 Scene()
669 : ElemBase()
670 , camera()
671 , world()
672 , basact() {
673 // empty
674 }
675};
676
677// -------------------------------------------------------------------------------
678struct Image : ElemBase {
679 ID id FAIL;
680
681 char name[240] WARN;
682
683 //struct anim *anim;
684
685 short ok, flag;
686 short source, type, pad, pad1;
687 int lastframe;
688
689 short tpageflag, totbind;
690 short xrep, yrep;
691 short twsta, twend;
692 //unsigned int bindcode;
693 //unsigned int *repbind;
694
695 std::shared_ptr<PackedFile> packedfile;
696 //struct PreviewImage * preview;
697
698 float lastupdate;
699 int lastused;
700 short animspeed;
701
702 short gen_x, gen_y, gen_type;
703
704 Image()
705 : ElemBase() {
706 // empty
707 }
708};
709
710// -------------------------------------------------------------------------------
711struct Tex : ElemBase {
712
713 // actually, the only texture type we support is Type_IMAGE
714 enum Type {
715 Type_CLOUDS = 1
716 ,Type_WOOD = 2
717 ,Type_MARBLE = 3
718 ,Type_MAGIC = 4
719 ,Type_BLEND = 5
720 ,Type_STUCCI = 6
721 ,Type_NOISE = 7
722 ,Type_IMAGE = 8
723 ,Type_PLUGIN = 9
724 ,Type_ENVMAP = 10
725 ,Type_MUSGRAVE = 11
726 ,Type_VORONOI = 12
727 ,Type_DISTNOISE = 13
728 ,Type_POINTDENSITY = 14
729 ,Type_VOXELDATA = 15
730 };
731
732 enum ImageFlags {
733 ImageFlags_INTERPOL = 1
734 ,ImageFlags_USEALPHA = 2
735 ,ImageFlags_MIPMAP = 4
736 ,ImageFlags_IMAROT = 16
737 ,ImageFlags_CALCALPHA = 32
738 ,ImageFlags_NORMALMAP = 2048
739 ,ImageFlags_GAUSS_MIP = 4096
740 ,ImageFlags_FILTER_MIN = 8192
741 ,ImageFlags_DERIVATIVEMAP = 16384
742 };
743
744 ID id FAIL;
745 // AnimData *adt;
746
747 //float noisesize, turbul;
748 //float bright, contrast, rfac, gfac, bfac;
749 //float filtersize;
750
751 //float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain;
752 //float dist_amount, ns_outscale;
753
754 //float vn_w1;
755 //float vn_w2;
756 //float vn_w3;
757 //float vn_w4;
758 //float vn_mexp;
759 //short vn_distm, vn_coltype;
760
761 //short noisedepth, noisetype;
762 //short noisebasis, noisebasis2;
763
764 //short flag;
765 ImageFlags imaflag;
766 Type type FAIL;
767 //short stype;
768
769 //float cropxmin, cropymin, cropxmax, cropymax;
770 //int texfilter;
771 //int afmax;
772 //short xrepeat, yrepeat;
773 //short extend;
774
775 //short fie_ima;
776 //int len;
777 //int frames, offset, sfra;
778
779 //float checkerdist, nabla;
780 //float norfac;
781
782 //ImageUser iuser;
783
784 //bNodeTree *nodetree;
785 //Ipo *ipo;
786 std::shared_ptr<Image> ima WARN;
787 //PluginTex *plugin;
788 //ColorBand *coba;
789 //EnvMap *env;
790 //PreviewImage * preview;
791 //PointDensity *pd;
792 //VoxelData *vd;
793
794 //char use_nodes;
795
796 Tex()
797 : ElemBase()
798 , imaflag( ImageFlags_INTERPOL )
799 , type( Type_CLOUDS )
800 , ima() {
801 // empty
802 }
803};
804
805// -------------------------------------------------------------------------------
806struct MTex : ElemBase {
807
808 enum Projection {
809 Proj_N = 0
810 ,Proj_X = 1
811 ,Proj_Y = 2
812 ,Proj_Z = 3
813 };
814
815 enum Flag {
816 Flag_RGBTOINT = 0x1
817 ,Flag_STENCIL = 0x2
818 ,Flag_NEGATIVE = 0x4
819 ,Flag_ALPHAMIX = 0x8
820 ,Flag_VIEWSPACE = 0x10
821 };
822
823 enum BlendType {
824 BlendType_BLEND = 0
825 ,BlendType_MUL = 1
826 ,BlendType_ADD = 2
827 ,BlendType_SUB = 3
828 ,BlendType_DIV = 4
829 ,BlendType_DARK = 5
830 ,BlendType_DIFF = 6
831 ,BlendType_LIGHT = 7
832 ,BlendType_SCREEN = 8
833 ,BlendType_OVERLAY = 9
834 ,BlendType_BLEND_HUE = 10
835 ,BlendType_BLEND_SAT = 11
836 ,BlendType_BLEND_VAL = 12
837 ,BlendType_BLEND_COLOR = 13
838 };
839
840 enum MapType {
841 MapType_COL = 1
842 ,MapType_NORM = 2
843 ,MapType_COLSPEC = 4
844 ,MapType_COLMIR = 8
845 ,MapType_REF = 16
846 ,MapType_SPEC = 32
847 ,MapType_EMIT = 64
848 ,MapType_ALPHA = 128
849 ,MapType_HAR = 256
850 ,MapType_RAYMIRR = 512
851 ,MapType_TRANSLU = 1024
852 ,MapType_AMB = 2048
853 ,MapType_DISPLACE = 4096
854 ,MapType_WARP = 8192
855 };
856
857 // short texco, maptoneg;
858 MapType mapto;
859
860 BlendType blendtype;
861 std::shared_ptr<Object> object;
862 std::shared_ptr<Tex> tex;
863 char uvname[32];
864
865 Projection projx,projy,projz;
866 char mapping;
867 float ofs[3], size[3], rot;
868
869 int texflag;
870 short colormodel, pmapto, pmaptoneg;
871 //short normapspace, which_output;
872 //char brush_map_mode;
873 float r,g,b,k WARN;
874 //float def_var, rt;
875
876 //float colfac, varfac;
877
878 float norfac;
879 //float dispfac, warpfac;
880 float colspecfac, mirrfac, alphafac;
881 float difffac, specfac, emitfac, hardfac;
882 //float raymirrfac, translfac, ambfac;
883 //float colemitfac, colreflfac, coltransfac;
884 //float densfac, scatterfac, reflfac;
885
886 //float timefac, lengthfac, clumpfac;
887 //float kinkfac, roughfac, padensfac;
888 //float lifefac, sizefac, ivelfac, pvelfac;
889 //float shadowfac;
890 //float zenupfac, zendownfac, blendfac;
891
892 MTex()
893 : ElemBase() {
894 // empty
895 }
896};
897
898}
899}
900#endif
901