Merge remote-tracking branch 'origin/master' into blender2.8
[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         float coeff_const, coeff_lin, coeff_quad, coeff_pad;
65         struct CurveMapping *curfalloff;
66         short falloff_type;
67         short pad2;
68         
69         float clipsta, clipend;
70         float bias, soft, compressthresh, bleedbias, bleedexp;
71         short bufsize, samp, buffers, filtertype;
72         char bufflag, buftype;
73         
74         short ray_samp, ray_sampy, ray_sampz;
75         short ray_samp_type;
76         short area_shape;
77         float area_size, area_sizey, area_sizez;
78         float adapt_thresh;
79         short ray_samp_method;
80         short shadowmap_type;
81         
82         /* texact is for buttons */
83         short texact, shadhalostep;
84         
85         /* sun/sky */
86         short sun_effect_type;
87         short skyblendtype;
88         float horizon_brightness;
89         float spread;
90         float sun_brightness;
91         float sun_size;
92         float backscattered_light;
93         float sun_intensity;
94         float atm_turbidity;
95         float atm_inscattering_factor;
96         float atm_extinction_factor;
97         float atm_distance_factor;
98         float skyblendfac;
99         float sky_exposure;
100         float shadow_frustum_size;              /* BGE Only */
101         short sky_colorspace;
102         char pad4[2];
103
104         struct Ipo *ipo  DNA_DEPRECATED;  /* old animation system, deprecated for 2.5 */
105         struct MTex *mtex[18];                  /* MAX_MTEX */
106         short pr_texture, use_nodes;
107         char pad6[4];
108
109         /* Eevee */
110         float cascade_max_dist;
111         float cascade_exponent;
112         float cascade_fade;
113         int cascade_count;
114
115         /* preview */
116         struct PreviewImage *preview;
117
118         /* nodes */
119         struct bNodeTree *nodetree;
120 } Lamp;
121
122 /* **************** LAMP ********************* */
123
124 /* flag */
125 #define LA_DS_EXPAND    1
126         /* NOTE: this must have the same value as MA_DS_SHOW_TEXS, 
127          * otherwise anim-editors will not read correctly
128          */
129 #define LA_DS_SHOW_TEXS 4
130
131 /* type */
132 #define LA_LOCAL                0
133 #define LA_SUN                  1
134 #define LA_SPOT                 2
135 #define LA_HEMI                 3
136 #define LA_AREA                 4
137
138 /* mode */
139 #define LA_SHAD_BUF             (1 << 0)
140 #define LA_HALO                 (1 << 1)
141 #define LA_LAYER                (1 << 2)
142 #define LA_QUAD                 (1 << 3) /* no longer used */
143 #define LA_NEG                  (1 << 4)
144 #define LA_ONLYSHADOW   (1 << 5)
145 #define LA_SPHERE               (1 << 6)
146 #define LA_SQUARE               (1 << 7)
147 #define LA_TEXTURE              (1 << 8)
148 #define LA_OSATEX               (1 << 9)
149 /* #define LA_DEEP_SHADOW       (1 << 10) */ /* not used anywhere */
150 #define LA_NO_DIFF              (1 << 11)
151 #define LA_NO_SPEC              (1 << 12)
152 #define LA_SHAD_RAY             (1 << 13)
153 /* yafray: lamp shadowbuffer flag, softlight */
154 /* Since it is used with LOCAL lamp, can't use LA_SHAD */
155 /* #define LA_YF_SOFT           (1 << 14) */ /* no longer used */
156 #define LA_LAYER_SHADOW (1 << 15)
157 #define LA_SHAD_TEX     (1 << 16)
158 #define LA_SHOW_CONE    (1 << 17)
159 #define LA_SHOW_SHADOW_BOX (1 << 18)
160
161 /* layer_shadow */
162 #define LA_LAYER_SHADOW_BOTH    0
163 #define LA_LAYER_SHADOW_CAST    1
164 #define LA_LAYER_SHADOW_RECEIVE 2
165
166 /* sun effect type*/
167 #define LA_SUN_EFFECT_SKY                       1
168 #define LA_SUN_EFFECT_AP                        2
169
170 /* falloff_type */
171 #define LA_FALLOFF_CONSTANT                     0
172 #define LA_FALLOFF_INVLINEAR            1
173 #define LA_FALLOFF_INVSQUARE            2
174 #define LA_FALLOFF_CURVE                        3
175 #define LA_FALLOFF_SLIDERS                      4
176 #define LA_FALLOFF_INVCOEFFICIENTS      5
177
178
179 /* buftype, no flag */
180 #define LA_SHADBUF_REGULAR              0
181 #define LA_SHADBUF_IRREGULAR    1
182 #define LA_SHADBUF_HALFWAY              2
183 #define LA_SHADBUF_DEEP                 3
184
185 /* bufflag, auto clipping */
186 #define LA_SHADBUF_AUTO_START   1
187 #define LA_SHADBUF_AUTO_END             2
188
189 /* filtertype */
190 #define LA_SHADBUF_BOX          0
191 #define LA_SHADBUF_TENT         1
192 #define LA_SHADBUF_GAUSS        2
193
194 /* area shape */
195 #define LA_AREA_SQUARE  0
196 #define LA_AREA_RECT    1
197 #define LA_AREA_CUBE    2
198 #define LA_AREA_BOX             3
199
200 /* ray_samp_method */
201 #define LA_SAMP_CONSTANT                        0
202 #define LA_SAMP_HALTON                          1
203 #define LA_SAMP_HAMMERSLEY                      2
204
205
206 /* ray_samp_type */
207 // #define LA_SAMP_ROUND        1  // UNUSED
208 #define LA_SAMP_UMBRA   2
209 #define LA_SAMP_DITHER  4
210 #define LA_SAMP_JITTER  8
211
212 /* mapto */
213 #define LAMAP_COL               1
214 #define LAMAP_SHAD              2
215
216 /* shadowmap_type */
217 #define LA_SHADMAP_SIMPLE       0
218 #define LA_SHADMAP_VARIANCE     1
219
220 #endif /* __DNA_LAMP_TYPES_H__ */
221