Merged changes in the trunk up to revision 51718.
[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
28 /** \file DNA_lamp_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_LAMP_TYPES_H__
33 #define __DNA_LAMP_TYPES_H__
34
35 #include "DNA_defs.h"
36 #include "DNA_ID.h"
37
38 #ifndef MAX_MTEX
39 #define MAX_MTEX        18
40 #endif
41
42 struct AnimData;
43 struct bNodeTree;
44 struct CurveMapping;
45 struct Ipo;
46 struct MTex;
47
48 typedef struct Lamp {
49         ID id;
50         struct AnimData *adt;   /* animation data (must be immediately after id for utilities to use it) */ 
51         
52         short type, flag;
53         int mode;
54         
55         short colormodel, totex;
56         float r, g, b, k;
57         float shdwr, shdwg, shdwb, shdwpad;
58         
59         float energy, dist, spotsize, spotblend;
60         float haint;
61         
62         
63         float att1, att2;       /* Quad1 and Quad2 attenuation */
64         struct CurveMapping *curfalloff;
65         short falloff_type;
66         short pad2;
67         
68         float clipsta, clipend, shadspotsize;
69         float bias, soft, compressthresh, bleedbias, pad5[2];
70         short bufsize, samp, buffers, filtertype;
71         char bufflag, buftype;
72         
73         short ray_samp, ray_sampy, ray_sampz;
74         short ray_samp_type;
75         short area_shape;
76         float area_size, area_sizey, area_sizez;
77         float adapt_thresh;
78         short ray_samp_method;
79         short shadowmap_type;
80         
81         /* texact is for buttons */
82         short texact, shadhalostep;
83         
84         /* sun/sky */
85         short sun_effect_type;
86         short skyblendtype;
87         float horizon_brightness;
88         float spread;
89         float sun_brightness;
90         float sun_size;
91         float backscattered_light;
92         float sun_intensity;
93         float atm_turbidity;
94         float atm_inscattering_factor;
95         float atm_extinction_factor;
96         float atm_distance_factor;
97         float skyblendfac;
98         float sky_exposure;
99         float shadow_frustum_size;              /* BGE Only */
100         short sky_colorspace;
101         char pad4[2];
102
103         struct Ipo *ipo  DNA_DEPRECATED;  /* old animation system, deprecated for 2.5 */
104         struct MTex *mtex[18];                  /* MAX_MTEX */
105         short pr_texture, use_nodes;
106         char pad6[4];
107
108         /* preview */
109         struct PreviewImage *preview;
110
111         /* nodes */
112         struct bNodeTree *nodetree;
113 } Lamp;
114
115 /* **************** LAMP ********************* */
116
117 /* flag */
118 #define LA_DS_EXPAND    1
119         /* NOTE: this must have the same value as MA_DS_SHOW_TEXS, 
120          * otherwise anim-editors will not read correctly
121          */
122 #define LA_DS_SHOW_TEXS 4
123
124 /* type */
125 #define LA_LOCAL                0
126 #define LA_SUN                  1
127 #define LA_SPOT                 2
128 #define LA_HEMI                 3
129 #define LA_AREA                 4
130 /* yafray: extra lamp type used for caustic photonmap */
131 #define LA_YF_PHOTON    5
132
133 /* mode */
134 #define LA_SHAD_BUF             1
135 #define LA_HALO                 2
136 #define LA_LAYER                4
137 #define LA_QUAD                 8       /* no longer used */
138 #define LA_NEG                  16
139 #define LA_ONLYSHADOW   32
140 #define LA_SPHERE               64
141 #define LA_SQUARE               128
142 #define LA_TEXTURE              256
143 #define LA_OSATEX               512
144 /* #define LA_DEEP_SHADOW       1024 */ /* not used anywhere */
145 #define LA_NO_DIFF              2048
146 #define LA_NO_SPEC              4096
147 #define LA_SHAD_RAY             8192
148 /* yafray: lamp shadowbuffer flag, softlight */
149 /* Since it is used with LOCAL lamp, can't use LA_SHAD */
150 /* #define LA_YF_SOFT           16384 */ /* no longer used */
151 #define LA_LAYER_SHADOW 32768
152 #define LA_SHAD_TEX     (1<<16)
153 #define LA_SHOW_CONE    (1<<17)
154
155 /* layer_shadow */
156 #define LA_LAYER_SHADOW_BOTH    0
157 #define LA_LAYER_SHADOW_CAST    1
158 #define LA_LAYER_SHADOW_RECEIVE 2
159
160 /* sun effect type*/
161 #define LA_SUN_EFFECT_SKY                       1
162 #define LA_SUN_EFFECT_AP                        2
163
164 /* falloff_type */
165 #define LA_FALLOFF_CONSTANT             0
166 #define LA_FALLOFF_INVLINEAR            1
167 #define LA_FALLOFF_INVSQUARE    2
168 #define LA_FALLOFF_CURVE                3
169 #define LA_FALLOFF_SLIDERS              4
170
171
172 /* buftype, no flag */
173 #define LA_SHADBUF_REGULAR              0
174 #define LA_SHADBUF_IRREGULAR    1
175 #define LA_SHADBUF_HALFWAY              2
176 #define LA_SHADBUF_DEEP                 3
177
178 /* bufflag, auto clipping */
179 #define LA_SHADBUF_AUTO_START   1
180 #define LA_SHADBUF_AUTO_END             2
181
182 /* filtertype */
183 #define LA_SHADBUF_BOX          0
184 #define LA_SHADBUF_TENT         1
185 #define LA_SHADBUF_GAUSS        2
186
187 /* area shape */
188 #define LA_AREA_SQUARE  0
189 #define LA_AREA_RECT    1
190 #define LA_AREA_CUBE    2
191 #define LA_AREA_BOX             3
192
193 /* ray_samp_method */
194 #define LA_SAMP_CONSTANT                        0
195 #define LA_SAMP_HALTON                          1
196 #define LA_SAMP_HAMMERSLEY                      2
197
198
199 /* ray_samp_type */
200 #define LA_SAMP_ROUND   1
201 #define LA_SAMP_UMBRA   2
202 #define LA_SAMP_DITHER  4
203 #define LA_SAMP_JITTER  8
204
205 /* mapto */
206 #define LAMAP_COL               1
207 #define LAMAP_SHAD              2
208
209 /* shadowmap_type */
210 #define LA_SHADMAP_SIMPLE       0
211 #define LA_SHADMAP_VARIANCE     1
212
213 #endif /* __DNA_LAMP_TYPES_H__ */
214