Ack! Error in the renaming code for outliner, it skipped doing the
[blender-staging.git] / source / blender / makesdna / DNA_material_types.h
1 /**
2  * blenlib/DNA_material_types.h (mar-2001 nzc)
3  *
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef DNA_MATERIAL_TYPES_H
35 #define DNA_MATERIAL_TYPES_H
36
37 /*  #include "BLI_listBase.h" */
38
39 #include "DNA_ID.h"
40 #include "DNA_scriptlink_types.h"
41
42 #ifndef MAX_MTEX
43 #define MAX_MTEX        10
44 #endif
45
46 struct MTex;
47 struct Ipo;
48 struct Material;
49 struct ColorBand;
50
51 /* WATCH IT: change type? also make changes in ipo.h  */
52
53 typedef struct Material {
54         ID id;
55         
56         short colormodel, lay;          /* lay: for dynamics (old engine, until 2.04) */
57         float r, g, b;
58         float specr, specg, specb;
59         float mirr, mirg, mirb;
60         float ambr, ambb, ambg;
61         
62         float amb, emit, ang, spectra, ray_mirror;
63         float alpha, ref, spec, zoffs, add;
64         float translucency;
65         float fresnel_mir, fresnel_mir_i;
66         float fresnel_tra, fresnel_tra_i;
67         float filter;           /* filter added, for raytrace transparency */
68         short ray_depth, ray_depth_tra;
69         short har;
70         char seed1, seed2;
71         
72         int mode; 
73         int mode2; /* even more material settings :) */
74         short flarec, starc, linec, ringc;
75         float hasize, flaresize, subsize, flareboost;
76         float strand_sta, strand_end, strand_ease;
77         
78         /* for buttons and render*/
79         char rgbsel, texact, pr_type, pad;
80         short pr_back, pr_lamp, septex, pad4;
81         int pad5;
82         
83         /* shaders */
84         short diff_shader, spec_shader;
85         float roughness, refrac;
86         float param[4];         /* size, smooth, size, smooth, for toonshader */
87         float rms;
88         float darkness;
89         short texco, mapto;
90         
91         /* ramp colors */
92         struct ColorBand *ramp_col;
93         struct ColorBand *ramp_spec;
94         char rampin_col, rampin_spec;
95         char rampblend_col, rampblend_spec;
96         short ramp_show, pad3;
97         float rampfac_col, rampfac_spec;
98
99         struct MTex *mtex[10];
100         struct Ipo *ipo;
101         
102         /* dynamic properties */
103         float friction, fh, reflect;
104         float fhdist, xyfrict;
105         short dynamode, pad2;
106
107         /* yafray: absorption color, dispersion parameters and material preset menu */
108         float YF_ar, YF_ag, YF_ab, YF_dscale, YF_dpwr;
109         int YF_dsmp, YF_preset, YF_djit;
110
111         ScriptLink scriptlink;
112 } Material;
113
114 /* **************** MATERIAL ********************* */
115
116         /* maximum number of materials per material array
117          * (on object, mesh, lamp, etc.)
118          */
119 #define MAXMAT                  16
120
121 /* colormodel */
122 #define MA_RGB                  0
123 #define MA_CMYK                 1
124 #define MA_YUV                  2
125 #define MA_HSV                  3
126
127 /* mode (is int) */
128 #define MA_TRACEBLE             1
129 #define MA_SHADOW               2
130 #define MA_SHLESS               4
131 #define MA_WIRE                 8
132 #define MA_VERTEXCOL    16
133 #define MA_HALO                 32
134 #define MA_ZTRA                 64
135 #define MA_VERTEXCOLP   128
136 #define MA_ZINV                 256
137 #define MA_HALO_RINGS   256
138 #define MA_ENV                  512
139 #define MA_HALO_LINES   512
140 #define MA_ONLYSHADOW   1024
141 #define MA_HALO_XALPHA  1024
142 #define MA_STAR                 0x800
143 #define MA_FACETEXTURE  0x800
144 #define MA_HALOTEX              0x1000
145 #define MA_HALOPUNO             0x2000
146 #define MA_NOMIST               0x4000
147 #define MA_HALO_SHADE   0x4000
148 #define MA_HALO_FLARE   0x8000
149 #define MA_RADIO                0x10000
150 #define MA_RAYTRANSP    0x20000
151 #define MA_RAYMIRROR    0x40000
152 #define MA_SHADOW_TRA   0x80000
153 #define MA_RAMP_COL             0x100000
154 #define MA_RAMP_SPEC    0x200000
155 #define MA_RAYBIAS              0x400000
156 #define MA_FULL_OSA             0x800000
157 #define MA_TANGENT_STR  0x1000000
158 #define MA_SHADBUF              0x2000000
159
160 #define MA_MODE_MASK    0x3ffffff       /* all valid mode bits */
161
162 /* diff_shader */
163 #define MA_DIFF_LAMBERT         0
164 #define MA_DIFF_ORENNAYAR       1
165 #define MA_DIFF_TOON            2
166 #define MA_DIFF_MINNAERT        3
167
168 /* spec_shader */
169 #define MA_SPEC_COOKTORR        0
170 #define MA_SPEC_PHONG           1
171 #define MA_SPEC_BLINN           2
172 #define MA_SPEC_TOON            3
173 #define MA_SPEC_WARDISO         4
174
175 /* dynamode */
176 #define MA_DRAW_DYNABUTS    1
177 #define MA_FH_NOR               2
178
179 /* ramps */
180 #define MA_RAMP_IN_SHADER       0
181 #define MA_RAMP_IN_ENERGY       1
182 #define MA_RAMP_IN_NOR          2
183 #define MA_RAMP_IN_RESULT       3
184
185 #define MA_RAMP_BLEND           0
186 #define MA_RAMP_ADD                     1
187 #define MA_RAMP_MULT            2
188 #define MA_RAMP_SUB                     3
189 #define MA_RAMP_SCREEN          4
190 #define MA_RAMP_DIV                     5
191 #define MA_RAMP_DIFF            6
192 #define MA_RAMP_DARK            7
193 #define MA_RAMP_LIGHT           8
194
195 /* texco */
196 #define TEXCO_ORCO              1
197 #define TEXCO_REFL              2
198 #define TEXCO_NORM              4
199 #define TEXCO_GLOB              8
200 #define TEXCO_UV                16
201 #define TEXCO_OBJECT    32
202 #define TEXCO_LAVECTOR  64
203 #define TEXCO_VIEW              128
204 #define TEXCO_STICKY    256
205 #define TEXCO_OSA               512
206 #define TEXCO_WINDOW    1024
207 #define NEED_UV                 2048
208         /* optim = use simpler AA */
209 #define TEXCO_OPTIM             4096
210         /* stored in vertex->accum, 1 D */
211 #define TEXCO_STRAND    8192
212
213 /* mapto */
214 #define MAP_COL                 1
215 #define MAP_NORM                2
216 #define MAP_COLSPEC             4
217 #define MAP_COLMIR              8
218 #define MAP_VARS                (0xFFF0)
219 #define MAP_REF                 16
220 #define MAP_SPEC                32
221 #define MAP_EMIT                64
222 #define MAP_ALPHA               128
223 #define MAP_HAR                 256
224 #define MAP_RAYMIRR             512
225 #define MAP_TRANSLU             1024
226 #define MAP_AMB                 2048
227 #define MAP_DISPLACE    4096
228 #define MAP_WARP                8192
229
230 /* pr_type */
231 #define MA_FLAT                 0
232 #define MA_SPHERE               1
233 #define MA_CUBE                 2
234
235 /* pr_back */
236 #define MA_DARK                 1
237
238 #endif
239