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