Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 /* | 1 /* |
2 * $Id$· | |
3 * | |
4 * ***** BEGIN GPL LICENSE BLOCK ***** | 2 * ***** BEGIN GPL LICENSE BLOCK ***** |
5 * | 3 * |
6 * This program is free software; you can redistribute it and/or | 4 * This program is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU General Public License | 5 * modify it under the terms of the GNU General Public License |
8 * as published by the Free Software Foundation; either version 2 | 6 * as published by the Free Software Foundation; either version 2 |
9 * of the License, or (at your option) any later version. | 7 * of the License, or (at your option) any later version. |
10 * | 8 * |
11 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
15 * | 13 * |
16 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
17 * along with this program; if not, write to the Free Software Foundation, | 15 * along with this program; if not, write to the Free Software Foundation, |
18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
19 * | 17 * |
20 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. | 18 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. |
21 * All rights reserved. | 19 * All rights reserved. |
22 * | 20 * |
23 * The Original Code is: all of this file. | 21 * The Original Code is: all of this file. |
24 * | 22 * |
25 * Contributor(s): none yet. | 23 * Contributor(s): none yet. |
26 * | 24 * |
27 * ***** END GPL LICENSE BLOCK ***** | 25 * ***** END GPL LICENSE BLOCK ***** |
28 */ | 26 */ |
29 #ifndef DNA_MATERIAL_TYPES_H | |
30 #define DNA_MATERIAL_TYPES_H | |
31 | 27 |
32 /** \file DNA_material_types.h | 28 /** \file DNA_material_types.h |
33 * \ingroup DNA | 29 * \ingroup DNA |
34 */ | 30 */ |
35 | 31 |
32 #ifndef __DNA_MATERIAL_TYPES_H__ | |
33 #define __DNA_MATERIAL_TYPES_H__ | |
34 | |
35 #include "DNA_defs.h" | |
36 #include "DNA_ID.h" | 36 #include "DNA_ID.h" |
37 #include "DNA_listBase.h" | 37 #include "DNA_listBase.h" |
38 | 38 |
39 #ifndef MAX_MTEX | 39 #ifndef MAX_MTEX |
40 #define MAX_MTEX 18 | 40 #define MAX_MTEX 18 |
41 #endif | 41 #endif |
42 | 42 |
43 struct MTex; | 43 struct MTex; |
44 struct ColorBand; | 44 struct ColorBand; |
45 struct Group; | 45 struct Group; |
(...skipping 21 matching lines...) Expand all Loading... | |
67 short shadeflag; | 67 short shadeflag; |
68 short shade_type; | 68 short shade_type; |
69 short precache_resolution; | 69 short precache_resolution; |
70 | 70 |
71 float stepsize; | 71 float stepsize; |
72 float ms_diff; | 72 float ms_diff; |
73 float ms_intensity; | 73 float ms_intensity; |
74 float ms_spread; | 74 float ms_spread; |
75 } VolumeSettings; | 75 } VolumeSettings; |
76 | 76 |
77 /* Game Engine Options (old Texface mode, transp and flag) */ | |
78 typedef struct GameSettings { | |
79 int flag; | |
80 int alpha_blend; | |
81 int face_ori; | |
brechtvl
2011/03/12 12:14:29
Just name it int face_orientation;, not need for a
| |
82 int pad1; | |
83 } GameSettings; | |
84 | |
85 typedef struct Material { | 77 typedef struct Material { |
86 ID id; | 78 ID id; |
87 struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */· | 79 struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */· |
88 ········ | |
89 short material_type, flag;······ | |
90 /* note, keep this below synced with render_types.h */ | |
91 float r, g, b; | |
92 float specr, specg, specb; | |
93 float mirr, mirg, mirb; | |
94 float ambr, ambb, ambg; | |
95 float amb, emit, ang, spectra, ray_mirror; | |
96 float alpha, ref, spec, zoffs, add; | |
97 float translucency; | |
98 /* end synced with render_types.h */ | |
99 ········ | |
100 struct VolumeSettings vol; | |
101 struct GameSettings gameopt; | |
brechtvl
2011/03/12 12:14:29
Can this just be named "game", opt postfix is not
| |
102 | |
103 float fresnel_mir, fresnel_mir_i; | |
104 float fresnel_tra, fresnel_tra_i; | |
105 float filter; /* filter added, for raytrace transparency and t ransmissivity */ | |
106 float tx_limit, tx_falloff; | |
107 short ray_depth, ray_depth_tra; | |
108 short har; | |
109 char seed1, seed2; | |
110 ········ | |
111 float gloss_mir, gloss_tra; | |
112 short samp_gloss_mir, samp_gloss_tra; | |
113 float adapt_thresh_mir, adapt_thresh_tra; | |
114 float aniso_gloss_mir; | |
115 float dist_mir; | |
116 short fadeto_mir; | |
117 short shade_flag; /* like Cubic interpolation */ | |
118 ················ | |
119 int mode, mode_l; /* mode_l is the or-ed result of all lay er modes */ | |
120 short flarec, starc, linec, ringc; | |
121 float hasize, flaresize, subsize, flareboost; | |
122 float strand_sta, strand_end, strand_ease, strand_surfnor; | |
123 float strand_min, strand_widthfade; | |
124 char strand_uvname[32]; | |
125 ········ | |
126 float sbias; /* shadow bias to prevent terminator pro b */ | |
127 float lbias; /* factor to multiply lampbias with (0.0 = no mult) */ | |
128 float shad_alpha; /* in use for irregular shadowbuffer */ | |
129 int septex; | |
130 ········ | |
131 /* for buttons and render*/ | |
132 char rgbsel, texact, pr_type, use_nodes; | |
133 short pr_back, pr_lamp, pr_texture, ml_flag; /* ml_flag is for disabl e base material */ | |
134 ········ | |
135 /* shaders */ | |
136 short diff_shader, spec_shader; | |
137 float roughness, refrac; | |
138 /* XXX param[4] needs review and improvement (shader system as whole any way) | |
139 This is nasty reused variable for different goals and not easy to RNA ify nicely. -jesterKing */ | |
140 float param[4]; /* size, smooth, size, smooth, for toonshader, 0 (fac) and 1 (fresnel) also for fresnel shader */ | |
141 float rms; | |
142 float darkness; | |
143 short texco, mapto; | |
144 ········ | |
145 /* ramp colors */ | |
146 struct ColorBand *ramp_col; | |
147 struct ColorBand *ramp_spec; | |
148 char rampin_col, rampin_spec; | |
149 char rampblend_col, rampblend_spec; | |
150 short ramp_show, pad3; | |
151 float rampfac_col, rampfac_spec; | |
152 | |
153 struct MTex *mtex[18]; /* MAX_MTEX */ | |
154 struct bNodeTree *nodetree;····· | |
155 struct Ipo *ipo; // XXX depreceated... old animation syst em | |
156 struct Group *group; /* light group */ | |
157 struct PreviewImage * preview; | |
158 | |
159 /* dynamic properties */ | |
160 float friction, fh, reflect; | |
161 float fhdist, xyfrict; | |
162 short dynamode, pad2; | |
163 | |
164 /* subsurface scattering */ | |
165 float sss_radius[3], sss_col[3]; | |
166 float sss_error, sss_scale, sss_ior; | |
167 float sss_colfac, sss_texfac; | |
168 float sss_front, sss_back; | |
169 short sss_flag, sss_preset; | |
170 | |
171 int mapto_textured; /* render-time cache to optimise texture lookups */ | |
172 short shadowonly_flag; /* "shadowsonly" type */ | |
173 short pad; | |
174 | |
175 ListBase gpumaterial; /* runtime */ | |
176 } Material; | |
177 | |
178 | |
179 /* **************** GAME PROPERTIES ********************* */ | |
180 // Blend Transparency Options - alpha_blend /* match GPU_material::GPUBlendMode */ | |
181 #define GEMAT_SOLID 0 /* GPU_BLEND_SOLID */ | |
182 #define GEMAT_ADD 1 /* GPU_BLEND_ADD */ | |
183 #define GEMAT_ALPHA 2 /* GPU_BLEND_ALPHA */ | |
184 #define GEMAT_CLIP 4 /* GPU_BLEND_CLIP */ | |
185 #define GEMAT_ALPHA_SORT 8 /* GPU_BLEND_ALPHA_SORT */ | |
186 | |
187 // Game Options - flag | |
188 #define GEMAT_TWOSIDED 16 /* KX_TWOSIDE */ | |
189 #define GEMAT_SHADED 32 /* KX_LIGHT */ | |
190 #define GEMAT_TEXT 64 /* RAS_RENDER_3DPOLYGON_TEXT */ | |
191 #define GEMAT_NOPHYSICS 128 | |
192 #define GEMAT_INVISIBLE 256 | |
193 | |
194 // Face Orientation Options - face_ori | |
195 #define GEMAT_NORMAL 0 | |
196 #define GEMAT_HALO 512 /* BILLBOARD_SCREENALIGNED */ | |
197 #define GEMAT_BILLBOARD 1024 /* BILLBOARD_AXISALIGNED */ | |
198 #define GEMAT_SHADOW 2048 /* SHADOW */ | |
199 | |
200 // Use Textures - not defined directly in the UI | |
201 #define GEMAT_TEX 4096 /* KX_TEX */ | |
202 | |
203 | |
204 /* **************** MATERIAL ********************* */ | |
205 | |
206 /* maximum number of materials per material array. | |
207 * (on object, mesh, lamp, etc.). limited by | |
208 * short mat_nr in verts, faces. */ | |
209 #define MAXMAT 32767 | |
210 | |
211 /* material_type */ | |
212 #define MA_TYPE_SURFACE 0 | |
213 #define MA_TYPE_HALO 1 | |
214 #define MA_TYPE_VOLUME 2 | |
215 #define MA_TYPE_WIRE 3 | |
216 | |
217 /* flag */ | |
218 /* for render */ | |
219 #define MA_IS_USED 1 | |
220 /* for dopesheet */ | |
221 #define MA_DS_EXPAND 2 | |
222 /* for dopesheet (texture stack expander) | |
223 * NOTE: this must have the same value as other texture stacks,· | |
224 * otherwise anim-editors will not read correctly | |
225 */ | |
226 #define MA_DS_SHOW_TEXS 4 | |
227 | |
228 /* mode (is int) */ | |
229 #define MA_TRACEBLE 1 | |
230 #define MA_SHADOW 2 | |
231 #define MA_SHLESS 4 | |
232 #define MA_WIRE 8 /* deprecated */ | |
233 #define MA_VERTEXCOL 16 | |
234 #define MA_HALO_SOFT 16 | |
235 #define MA_HALO 32 /* deprecated */ | |
236 #define MA_ZTRANSP 64 | |
237 #define MA_VERTEXCOLP 128 | |
238 #define MA_ZINV 256 | |
239 #define MA_HALO_RINGS 256 | |
240 #define MA_ENV 512 | |
241 #define MA_HALO_LINES 512 | |
242 #define MA_ONLYSHADOW 1024 | |
243 #define MA_HALO_XALPHA 1024 | |
244 #define MA_STAR 0x800 | |
245 #define MA_FACETEXTURE 0x800 | |
246 #define MA_HALOTEX 0x1000 | |
247 #define MA_HALOPUNO 0x2000 | |
248 #define MA_ONLYCAST 0x2000 | |
249 #define MA_NOMIST 0x4000 | |
250 #define MA_HALO_SHADE 0x4000 | |
251 #define MA_HALO_FLARE 0x8000 | |
252 #define MA_TRANSP 0x10000 | |
253 #define MA_RAYTRANSP 0x20000 | |
254 #define MA_RAYMIRROR 0x40000 | |
255 #define MA_SHADOW_TRA 0x80000 | |
256 #define MA_RAMP_COL 0x100000 | |
257 #define MA_RAMP_SPEC 0x200000 | |
258 #define MA_RAYBIAS 0x400000 | |
259 #define MA_FULL_OSA 0x800000 | |
260 #define MA_TANGENT_STR 0x1000000 | |
261 #define MA_SHADBUF 0x2000000 | |
262 /* note; we drop MA_TANGENT_STR later to become tangent_u */ | |
263 #define MA_TANGENT_V 0x4000000 | |
264 /* qdn: a bit clumsy this, tangents needed for normal maps separated from shadin g */ | |
265 #define MA_NORMAP_TANG 0x8000000 | |
266 #define MA_GROUP_NOLAY 0x10000000 | |
267 #define MA_FACETEXTURE_ALPHA 0x20000000 | |
268 #define MA_STR_B_UNITS 0x40000000 | |
269 #define MA_STR_SURFDIFF 0x80000000 | |
270 | |
271 #define MA_MODE_MASK 0x6fffffff /* all valid mode bits */ | |
272 | |
273 /* ray mirror fadeout */ | |
274 #define MA_RAYMIR_FADETOSKY 0 | |
275 #define MA_RAYMIR_FADETOMAT 1 | |
276 | |
277 /* shadowonly_flag */ | |
278 #define MA_SO_OLD 0 | |
279 #define MA_SO_SHADOW 1 | |
280 #define MA_SO_SHADED 2 | |
281 | |
282 /* shade_flag */ | |
283 #define MA_CUBIC 1 | |
284 #define MA_OBCOLOR 2 | |
285 #define MA_APPROX_OCCLUSION 4 | |
286 | |
287 /* diff_shader */ | |
288 #define MA_DIFF_LAMBERT 0 | |
289 #define MA_DIFF_ORENNAYAR 1 | |
290 #define MA_DIFF_TOON 2 | |
291 #define MA_DIFF_MINNAERT 3 | |
292 #define MA_DIFF_FRESNEL 4 | |
293 | |
294 /* spec_shader */ | |
295 #define MA_SPEC_COOKTORR 0 | |
296 #define MA_SPEC_PHONG 1 | |
297 #define MA_SPEC_BLINN 2 | |
298 #define MA_SPEC_TOON 3 | |
299 #define MA_SPEC_WARDISO 4 | |
300 | |
301 /* dynamode */ | |
302 #define MA_DRAW_DYNABUTS 1 /* deprecated */ | |
303 #define MA_FH_NOR 2 | |
304 | |
305 /* ramps */ | |
306 #define MA_RAMP_IN_SHADER 0 | |
307 #define MA_RAMP_IN_ENERGY 1 | |
308 #define MA_RAMP_IN_NOR 2 | |
309 #define MA_RAMP_IN_RESULT 3 | |
310 | |
311 #define MA_RAMP_BLEND 0 | |
312 #define MA_RAMP_ADD 1 | |
313 #define MA_RAMP_MULT 2 | |
314 #define MA_RAMP_SUB 3 | |
315 #define MA_RAMP_SCREEN 4 | |
316 #define MA_RAMP_DIV 5 | |
317 #define MA_RAMP_DIFF 6 | |
318 #define MA_RAMP_DARK 7 | |
319 #define MA_RAMP_LIGHT 8 | |
320 #define MA_RAMP_OVERLAY 9 | |
321 #define MA_RAMP_DODGE 10 | |
322 #define MA_RAMP_BURN 11 | |
323 #define MA_RAMP_HUE 12 | |
324 #define MA_RAMP_SAT 13 | |
325 #define MA_RAMP_VAL 14 | |
326 #define MA_RAMP_COLOR 15 | |
327 #define MA_RAMP_SOFT 16· | |
328 #define MA_RAMP_LINEAR 17· | |
329 | |
330 /* texco */ | |
331 #define TEXCO_ORCO 1 | |
332 #define TEXCO_REFL 2 | |
333 #define TEXCO_NORM 4 | |
334 #define TEXCO_GLOB 8 | |
335 #define TEXCO_UV 16 | |
336 #define TEXCO_OBJECT 32 | |
337 #define TEXCO_LAVECTOR 64 | |
338 #define TEXCO_VIEW 128 | |
339 #define TEXCO_STICKY 256 | |
340 #define TEXCO_OSA 512 | |
341 #define TEXCO_WINDOW 1024 | |
342 #define NEED_UV 2048 | |
343 #define TEXCO_TANGENT 4096 | |
344 /* still stored in vertex->accum, 1 D */ | |
345 #define TEXCO_STRAND 8192 | |
346 #define TEXCO_PARTICLE 8192 /* strand is used for normal materials, particle fo r halo materials */ | |
347 #define TEXCO_STRESS 16384 | |
348 #define TEXCO_SPEED 32768 | |
349 | |
350 /* mapto */ | |
351 #define MAP_COL 1 | |
352 #define MAP_NORM 2 | |
353 #define MAP_COLSPEC 4 | |
354 #define MAP_COLMIR 8 | |
355 #define MAP_VARS (0xFFF0) | |
356 #define MAP_REF 16 | |
357 #define MAP_SPEC 32 | |
358 #define MAP_EMIT 64 | |
359 #define MAP_ALPHA 128 | |
360 #define MAP_HAR 256 | |
361 #define MAP_RAYMIRR 512 | |
362 #define MAP_TRANSLU 1024 | |
363 #define MAP_AMB 2048 | |
364 #define MAP_DISPLACE 4096 | |
365 #define MAP_WARP 8192 | |
366 #define MAP_LAYER 16384 /* unused */ | |
367 | |
368 /* volume mapto - reuse definitions for now - a bit naughty! */ | |
369 #define MAP_DENSITY 128 | |
370 #define MAP_EMISSION 64 | |
371 #define MAP_EMISSION_COL 1 | |
372 #define MAP_SCATTERING 16 | |
373 #define MAP_TRANSMISSION_COL 8 | |
374 #define MAP_REFLECTION_COL 4 | |
375 #define MAP_REFLECTION 32 | |
376 | |
377 | |
378 /* mapto for halo */ | |
379 //#define MAP_HA_COL 1 | |
380 //#define MAP_HA_ALPHA 128 | |
381 //#define MAP_HA_HAR 256 | |
382 //#define MAP_HA_SIZE 2 | |
383 //#define MAP_HA_ADD 64 | |
384 | |
385 /* pmapto */ | |
386 /* init */ | |
387 #define MAP_PA_INIT 31 | |
388 #define MAP_PA_TIME 1 | |
389 #define MAP_PA_LIFE 2 | |
390 #define MAP_PA_DENS 4 | |
391 #define MAP_PA_SIZE 8 | |
392 #define MAP_PA_LENGTH 16 | |
393 /* reset */ | |
394 #define MAP_PA_IVEL 32 | |
395 /* physics */ | |
396 #define MAP_PA_PVEL 64 | |
397 /* path cache */ | |
398 #define MAP_PA_CACHE 912 | |
399 #define MAP_PA_CLUMP 128 | |
400 #define MAP_PA_KINK 256 | |
401 #define MAP_PA_ROUGH 512 | |
402 | |
403 /* pr_type */ | |
404 #define MA_FLAT 0 | |
405 #define MA_SPHERE 1 | |
406 #define MA_CUBE 2 | |
407 #define MA_MONKEY 3 | |
408 #define MA_SPHERE_A 4 | |
409 #define MA_TEXTURE 5 | |
410 #define MA_LAMP 6 | |
411 #define MA_SKY 7 | |
412 #define MA_HAIR 10 | |
413 #define MA_ATMOS 11 | |
414 | |
415 /* pr_back */ | |
416 #define MA_DARK 1 | |
417 | |
418 /* sss_flag */ | |
419 #define MA_DIFF_SSS 1 | |
420 | |
421 /* vol_stepsize_type */ | |
422 #define MA_VOL_STEP_RANDOMIZED 0 | |
423 #define MA_VOL_STEP_CONSTANT 1 | |
424 #define MA_VOL_STEP_ADAPTIVE 2 | |
425 | |
426 /* vol_shadeflag */ | |
427 #define MA_VOL_RECV_EXT_SHADOW 1 | |
428 #define MA_VOL_PRECACHESHADING 8 | |
429 | |
430 /* vol_shading_type */ | |
431 #define MA_VOL_SHADE_SHADELESS 0 | |
432 #define MA_VOL_SHADE_SHADOWED 2 | |
433 #define MA_VOL_SHADE_SHADED 1 | |
434 #define MA_VOL_SHADE_MULTIPLE 3 | |
435 #define MA_VOL_SHADE_SHADEDPLUSMULTIPLE 4 | |
436 | |
437 #endif | |
438 | |
LEFT | RIGHT |