Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / source / blender / makesdna / DNA_lamp_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27 #ifndef DNA_LAMP_TYPES_H
28 #define DNA_LAMP_TYPES_H
29
30 /** \file DNA_lamp_types.h
31  *  \ingroup DNA
32  */
33
34 #include "DNA_ID.h"
35
36 #ifndef MAX_MTEX
37 #define MAX_MTEX        18
38 #endif
39
40 struct AnimData;
41 struct bNodeTree;
42 struct CurveMapping;
43 struct Ipo;
44 struct MTex;
45
46 typedef struct Lamp {
47         ID id;
48         struct AnimData *adt;   /* animation data (must be immediately after id for utilities to use it) */ 
49         
50         short type, flag;
51         int mode;
52         
53         short colormodel, totex;
54         float r, g, b, k;
55         float shdwr, shdwg, shdwb, shdwpad;
56         
57         float energy, dist, spotsize, spotblend;
58         float haint;
59         
60         
61         float att1, att2;       /* Quad1 and Quad2 attenuation */
62         struct CurveMapping *curfalloff;
63         short falloff_type;
64         short pad2;
65         
66         float clipsta, clipend, shadspotsize;
67         float bias, soft, compressthresh, pad5[3];
68         short bufsize, samp, buffers, filtertype;
69         char bufflag, buftype;
70         
71         short ray_samp, ray_sampy, ray_sampz;
72         short ray_samp_type;
73         short area_shape;
74         float area_size, area_sizey, area_sizez;
75         float adapt_thresh;
76         short ray_samp_method;
77         short pad1;
78         
79         /* texact is for buttons */
80         short texact, shadhalostep;
81         
82         /* sun/sky */
83         short sun_effect_type;
84         short skyblendtype;
85         float horizon_brightness;
86         float spread;
87         float sun_brightness;
88         float sun_size;
89         float backscattered_light;
90         float sun_intensity;
91         float atm_turbidity;
92         float atm_inscattering_factor;
93         float atm_extinction_factor;
94         float atm_distance_factor;
95         float skyblendfac;
96         float sky_exposure;
97         short sky_colorspace;
98         char pad4[6];
99
100         struct Ipo *ipo;                                // XXX depreceated... old animation system
101         struct MTex *mtex[18];                  /* MAX_MTEX */
102         short pr_texture, use_nodes;
103         char pad6[4];
104
105         /* preview */
106         struct PreviewImage *preview;
107
108         /* nodes */
109         struct bNodeTree *nodetree;     
110 } Lamp;
111
112 /* **************** LAMP ********************* */
113
114 /* flag */
115 #define LA_DS_EXPAND    1
116         /* NOTE: this must have the same value as MA_DS_SHOW_TEXS, 
117          * otherwise anim-editors will not read correctly
118          */
119 #define LA_DS_SHOW_TEXS 4
120
121 /* type */
122 #define LA_LOCAL                0
123 #define LA_SUN                  1
124 #define LA_SPOT                 2
125 #define LA_HEMI                 3
126 #define LA_AREA                 4
127 /* yafray: extra lamp type used for caustic photonmap */
128 #define LA_YF_PHOTON    5
129
130 /* mode */
131 #define LA_SHAD_BUF             1
132 #define LA_HALO                 2
133 #define LA_LAYER                4
134 #define LA_QUAD                 8       /* no longer used */
135 #define LA_NEG                  16
136 #define LA_ONLYSHADOW   32
137 #define LA_SPHERE               64
138 #define LA_SQUARE               128
139 #define LA_TEXTURE              256
140 #define LA_OSATEX               512
141 /* #define LA_DEEP_SHADOW       1024 */ /* not used anywhere */
142 #define LA_NO_DIFF              2048
143 #define LA_NO_SPEC              4096
144 #define LA_SHAD_RAY             8192
145 /* yafray: lamp shadowbuffer flag, softlight */
146 /* Since it is used with LOCAL lamp, can't use LA_SHAD */
147 /* #define LA_YF_SOFT           16384 */ /* no longer used */
148 #define LA_LAYER_SHADOW 32768
149 #define LA_SHAD_TEX     (1<<16)
150 #define LA_SHOW_CONE    (1<<17)
151
152 /* layer_shadow */
153 #define LA_LAYER_SHADOW_BOTH    0
154 #define LA_LAYER_SHADOW_CAST    1
155 #define LA_LAYER_SHADOW_RECEIVE 2
156
157 /* sun effect type*/
158 #define LA_SUN_EFFECT_SKY                       1
159 #define LA_SUN_EFFECT_AP                        2
160
161 /* falloff_type */
162 #define LA_FALLOFF_CONSTANT             0
163 #define LA_FALLOFF_INVLINEAR            1
164 #define LA_FALLOFF_INVSQUARE    2
165 #define LA_FALLOFF_CURVE                3
166 #define LA_FALLOFF_SLIDERS              4
167
168
169 /* buftype, no flag */
170 #define LA_SHADBUF_REGULAR              0
171 #define LA_SHADBUF_IRREGULAR    1
172 #define LA_SHADBUF_HALFWAY              2
173 #define LA_SHADBUF_DEEP                 3
174
175 /* bufflag, auto clipping */
176 #define LA_SHADBUF_AUTO_START   1
177 #define LA_SHADBUF_AUTO_END             2
178
179 /* filtertype */
180 #define LA_SHADBUF_BOX          0
181 #define LA_SHADBUF_TENT         1
182 #define LA_SHADBUF_GAUSS        2
183
184 /* area shape */
185 #define LA_AREA_SQUARE  0
186 #define LA_AREA_RECT    1
187 #define LA_AREA_CUBE    2
188 #define LA_AREA_BOX             3
189
190 /* ray_samp_method */
191 #define LA_SAMP_CONSTANT                        0
192 #define LA_SAMP_HALTON                          1
193 #define LA_SAMP_HAMMERSLEY                      2
194
195
196 /* ray_samp_type */
197 #define LA_SAMP_ROUND   1
198 #define LA_SAMP_UMBRA   2
199 #define LA_SAMP_DITHER  4
200 #define LA_SAMP_JITTER  8
201
202 /* mapto */
203 #define LAMAP_COL               1
204 #define LAMAP_SHAD              2
205
206
207 #endif /* DNA_LAMP_TYPES_H */
208