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