svn merge -r 22450:22627 https://svn.blender.org/svnroot/bf-blender/branches/blender2...
[blender-staging.git] / source / blender / makesdna / DNA_material_types.h
index cd0b73c8f70dbe5bd073c07bff4f2f369939ece7..b4fdb07b52040155dba2ad29a24e8d53e1d7ea1a 100644 (file)
@@ -32,7 +32,6 @@
 #define DNA_MATERIAL_TYPES_H
 
 #include "DNA_ID.h"
-#include "DNA_scriptlink_types.h"
 #include "DNA_listBase.h"
 
 #ifndef MAX_MTEX
@@ -48,6 +47,34 @@ struct Ipo;
 
 /* WATCH IT: change type? also make changes in ipo.h  */
 
+typedef struct VolumeSettings {
+       float density;
+       float emission;
+       float absorption;
+       float scattering;
+
+       float emission_col[3];
+       float absorption_col[3];
+       float density_scale;
+       float depth_cutoff;
+
+       short phasefunc_type;
+       short vpad[3];
+       float phasefunc_g;
+       
+       float stepsize;
+       float shade_stepsize;
+       
+       short stepsize_type;
+       short shadeflag;
+       short shade_type;
+       short precache_resolution;
+       
+       float ms_diff;
+       float ms_intensity;
+       int ms_steps;
+} VolumeSettings;
+
 typedef struct Material {
        ID id;
        struct AnimData *adt;   /* animation data (must be immediately after id for utilities to use it) */ 
@@ -63,6 +90,8 @@ typedef struct Material {
        float translucency;
        /* end synced with render_types.h */
        
+       struct VolumeSettings vol;
+
        float fresnel_mir, fresnel_mir_i;
        float fresnel_tra, fresnel_tra_i;
        float filter;           /* filter added, for raytrace transparency and transmissivity */
@@ -93,7 +122,7 @@ typedef struct Material {
        
        /* for buttons and render*/
        char rgbsel, texact, pr_type, use_nodes;
-       short pr_back, pr_lamp, pad4, ml_flag;  /* ml_flag is for disable base material */
+       short pr_back, pr_lamp, pr_texture, ml_flag;    /* ml_flag is for disable base material */
        
        /* shaders */
        short diff_shader, spec_shader;
@@ -134,23 +163,22 @@ typedef struct Material {
        /* yafray: absorption color, dispersion parameters and material preset menu */
        float YF_ar, YF_ag, YF_ab, YF_dscale, YF_dpwr;
        int YF_dsmp, YF_preset, YF_djit;
-       
-       ScriptLink scriptlink;
 
        ListBase gpumaterial;           /* runtime */
 } Material;
 
 /* **************** MATERIAL ********************* */
 
-       /* maximum number of materials per material array
-        * (on object, mesh, lamp, etc.)
       */
-#define MAXMAT                 16
+/* maximum number of materials per material array.
+ * (on object, mesh, lamp, etc.). limited by
* short mat_nr in verts, faces. */
+#define MAXMAT                 32767
 
 /* material_type */
 #define MA_TYPE_SURFACE        0
 #define MA_TYPE_HALO   1
 #define MA_TYPE_VOLUME 2
+#define MA_TYPE_WIRE   3
 
 /* flag */
                /* for render */
@@ -162,11 +190,11 @@ typedef struct Material {
 #define MA_TRACEBLE            1
 #define MA_SHADOW              2
 #define MA_SHLESS              4
-#define MA_WIRE                        8
+#define MA_WIRE                        8                       /* deprecated */
 #define MA_VERTEXCOL   16
 #define MA_HALO_SOFT   16
 #define MA_HALO                        32                      /* deprecated */
-#define MA_ZTRA                        64
+#define MA_ZTRANSP             64
 #define MA_VERTEXCOLP  128
 #define MA_ZINV                        256
 #define MA_HALO_RINGS  256
@@ -182,7 +210,7 @@ typedef struct Material {
 #define MA_NOMIST              0x4000
 #define MA_HALO_SHADE  0x4000
 #define MA_HALO_FLARE  0x8000
-#define MA_RADIO               0x10000
+#define MA_TRANSP              0x10000
 #define MA_RAYTRANSP   0x20000
 #define MA_RAYMIRROR   0x40000
 #define MA_SHADOW_TRA  0x80000
@@ -226,7 +254,7 @@ typedef struct Material {
 #define MA_SPEC_WARDISO                4
 
 /* dynamode */
-#define MA_DRAW_DYNABUTS    1
+#define MA_DRAW_DYNABUTS    1          /* deprecated */
 #define MA_FH_NOR              2
 
 /* ramps */
@@ -289,6 +317,14 @@ typedef struct Material {
 #define MAP_WARP               8192
 #define MAP_LAYER              16384
 
+/* volume mapto - reuse definitions for now - a bit naughty! */
+#define MAP_DENSITY                    128
+#define MAP_EMISSION           64
+#define MAP_EMISSION_COL       1
+#define MAP_ABSORPTION         512
+#define MAP_ABSORPTION_COL     8
+#define MAP_SCATTERING         16
+
 /* mapto for halo */
 //#define MAP_HA_COL           1
 //#define MAP_HA_ALPHA 128
@@ -332,5 +368,30 @@ typedef struct Material {
 /* sss_flag */
 #define MA_DIFF_SSS            1
 
+/* vol_stepsize_type */
+#define MA_VOL_STEP_RANDOMIZED 0
+#define MA_VOL_STEP_CONSTANT   1
+#define MA_VOL_STEP_ADAPTIVE   2
+
+/* vol_shadeflag */
+#define MA_VOL_SHADED          1
+#define MA_VOL_RECVSHADOW      4
+#define MA_VOL_PRECACHESHADING 8
+#define MA_VOL_USEALPHA                16
+
+/* vol_shading_type */
+#define MA_VOL_SHADE_NONE                                      0
+#define MA_VOL_SHADE_SINGLE                                    1
+#define MA_VOL_SHADE_MULTIPLE                          2
+#define MA_VOL_SHADE_SINGLEPLUSMULTIPLE                3
+
+/* vol_phasefunc_type */
+#define MA_VOL_PH_ISOTROPIC            0
+#define MA_VOL_PH_MIEHAZY              1
+#define MA_VOL_PH_MIEMURKY             2
+#define MA_VOL_PH_RAYLEIGH             3
+#define MA_VOL_PH_HG                   4
+#define MA_VOL_PH_SCHLICK              5
+
 #endif