f81f79f2b25a2a0fe8beceb783e1bbec00ad79d6
[blender.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 struct MTex;
43 struct Ipo;
44 struct Material;
45
46 /* WATCH IT: change type? also make changes in ipo.h  */
47
48 typedef struct Material {
49         ID id;
50         
51         short colormodel, lay;          /* lay: for dynamics (old engine, until 2.04) */
52         float r, g, b;
53         float specr, specg, specb;
54         float mirr, mirg, mirb;
55         float ambr, ambb, ambg;
56         
57         float amb, emit, ang, spectra, ray_mirror;
58         float alpha, ref, spec, zoffs, add;
59         float translucency;
60         float fresnel_mir, fresnel_mir_i;
61         float fresnel_tra, fresnel_tra_i;
62         short ray_depth, ray_depth_tra;
63         short har;
64         char seed1, seed2;
65         
66         int mode; 
67         int mode2; /* even more material settings :) */
68         short flarec, starc, linec, ringc;
69         float hasize, flaresize, subsize, flareboost;
70         
71         /* for buttons and render*/
72         char rgbsel, texact, pr_type, septex;
73         short pr_back, pr_lamp;
74
75         /* shaders */
76         short diff_shader, spec_shader;
77         float roughness, refrac;
78         float param[4];         /* size, smooth, size, smooth, for toonshader */
79         short texco, mapto;
80         
81         struct MTex *mtex[8];
82         struct Ipo *ipo;
83         struct Material *ren;
84         
85         /* dynamic properties */
86         float friction, fh, reflect;
87         float fhdist, xyfrict;
88         short dynamode, pad2;
89         
90         ScriptLink scriptlink;
91 } Material;
92
93 /* **************** MATERIAL ********************* */
94
95         /* maximum number of materials per material array
96          * (on object, mesh, lamp, etc.)
97          */
98 #define MAXMAT                  16
99
100 /* colormodel */
101 #define MA_RGB                  0
102 #define MA_CMYK                 1
103 #define MA_YUV                  2
104 #define MA_HSV                  3
105
106 /* mode (is int) */
107 #define MA_TRACEBLE             1
108 #define MA_SHADOW               2
109 #define MA_SHLESS               4
110 #define MA_WIRE                 8
111 #define MA_VERTEXCOL    16
112 #define MA_HALO                 32
113 #define MA_ZTRA                 64
114 #define MA_VERTEXCOLP   128
115 #define MA_ZINV                 256
116 #define MA_HALO_RINGS   256
117 #define MA_ENV                  512
118 #define MA_HALO_LINES   512
119 #define MA_ONLYSHADOW   1024
120 #define MA_HALO_XALPHA  1024
121 #define MA_STAR                 0x800
122 #define MA_FACETEXTURE  0x800
123 #define MA_HALOTEX              0x1000
124 #define MA_HALOPUNO             0x2000
125 #define MA_NOMIST               0x4000
126 #define MA_HALO_SHADE   0x4000
127 #define MA_HALO_FLARE   0x8000
128 #define MA_RADIO                0x10000
129 #define MA_RAYTRANSP    0x20000
130 #define MA_RAYMIRROR    0x40000
131 #define MA_SHADOW_TRA   0x80000
132
133 /* diff_shader */
134 #define MA_DIFF_LAMBERT         0
135 #define MA_DIFF_ORENNAYAR       1
136 #define MA_DIFF_TOON            2
137
138 /* spec_shader */
139 #define MA_SPEC_COOKTORR        0
140 #define MA_SPEC_PHONG           1
141 #define MA_SPEC_BLINN           2
142 #define MA_SPEC_TOON            3
143
144 /* dynamode */
145 #define MA_DRAW_DYNABUTS    1
146 #define MA_FH_NOR               2
147
148 /* texco */
149 #define TEXCO_ORCO              1
150 #define TEXCO_REFL              2
151 #define TEXCO_NORM              4
152 #define TEXCO_GLOB              8
153 #define TEXCO_UV                16
154 #define TEXCO_OBJECT    32
155 #define TEXCO_LAVECTOR  64
156 #define TEXCO_VIEW              128
157 #define TEXCO_STICKY    256
158 #define TEXCO_OSA               512
159 #define TEXCO_WINDOW    1024
160 #define NEED_UV                 2048
161
162 /* mapto */
163 #define MAP_COL                 1
164 #define MAP_NORM                2
165 #define MAP_COLSPEC             4
166 #define MAP_COLMIR              8
167 #define MAP_VARS                (0xFFF0)
168 #define MAP_REF                 16
169 #define MAP_SPEC                32
170 #define MAP_EMIT                64
171 #define MAP_ALPHA               128
172 #define MAP_HAR                 256
173 #define MAP_RAYMIRR             512
174 #define MAP_TRANSLU             1024
175
176 /* pr_type */
177 #define MA_FLAT                 0
178 #define MA_SPHERE               1
179 #define MA_CUBE                 2
180
181 /* pr_back */
182 #define MA_DARK                 1
183
184 #endif
185