LEFT | RIGHT |
1 /* | 1 /* |
2 * Copyright 2011, Blender Foundation. | 2 * Copyright 2011, Blender Foundation. |
3 * | 3 * |
4 * This program is free software; you can redistribute it and/or | 4 * This program is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU General Public License | 5 * modify it under the terms of the GNU General Public License |
6 * as published by the Free Software Foundation; either version 2 | 6 * as published by the Free Software Foundation; either version 2 |
7 * of the License, or (at your option) any later version. | 7 * of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 /* Stack */ | 24 /* Stack */ |
25 | 25 |
26 /* SVM stack has a fixed size */ | 26 /* SVM stack has a fixed size */ |
27 #define SVM_STACK_SIZE 255 | 27 #define SVM_STACK_SIZE 255 |
28 /* SVM stack offsets with this value indicate that it's not on the stack */ | 28 /* SVM stack offsets with this value indicate that it's not on the stack */ |
29 #define SVM_STACK_INVALID 255· | 29 #define SVM_STACK_INVALID 255· |
30 | 30 |
31 /* Nodes */ | 31 /* Nodes */ |
32 | 32 |
33 /* note that we do not simply use 0, 1, 2, .. as values for these. this works | |
34 * around an obscure CUDA bug that happens when compiling for fermi. why it | |
35 * happens i have no idea, but consecutive values are problematic, maybe it | |
36 * generates an incorrect jump table. */ | |
37 | |
38 typedef enum NodeType { | 33 typedef enum NodeType { |
39 NODE_END = 0, | 34 NODE_END = 0, |
40 » NODE_CLOSURE_BSDF = 100, | 35 » NODE_CLOSURE_BSDF, |
41 » NODE_CLOSURE_EMISSION = 200, | 36 » NODE_CLOSURE_EMISSION, |
42 » NODE_CLOSURE_BACKGROUND = 300, | 37 » NODE_CLOSURE_BACKGROUND, |
43 » NODE_CLOSURE_SET_WEIGHT = 400, | 38 » NODE_CLOSURE_SET_WEIGHT, |
44 » NODE_CLOSURE_WEIGHT = 500, | 39 » NODE_CLOSURE_WEIGHT, |
45 » NODE_MIX_CLOSURE = 600, | 40 » NODE_MIX_CLOSURE, |
46 » NODE_JUMP = 700, | 41 » NODE_JUMP, |
47 » NODE_TEX_IMAGE = 1000, | 42 » NODE_TEX_IMAGE, |
48 » NODE_TEX_SKY = 1100, | 43 » NODE_TEX_IMAGE_BOX, |
49 » NODE_GEOMETRY = 1200, | 44 » NODE_TEX_SKY, |
50 » NODE_LIGHT_PATH = 1300, | 45 » NODE_GEOMETRY, |
51 » NODE_VALUE_F = 1400, | 46 » NODE_GEOMETRY_DUPLI, |
52 » NODE_VALUE_V = 1500, | 47 » NODE_LIGHT_PATH, |
53 » NODE_MIX = 1600, | 48 » NODE_VALUE_F, |
54 » NODE_ATTR = 1700, | 49 » NODE_VALUE_V, |
55 » NODE_CONVERT = 1900, | 50 » NODE_MIX, |
56 » NODE_FRESNEL = 2000, | 51 » NODE_ATTR, |
57 » NODE_EMISSION_WEIGHT = 2100, | 52 » NODE_CONVERT, |
58 » NODE_TEX_GRADIENT = 2200, | 53 » NODE_FRESNEL, |
59 » NODE_TEX_VORONOI = 2300, | 54 » NODE_EMISSION_WEIGHT, |
60 » NODE_TEX_MUSGRAVE = 2400, | 55 » NODE_TEX_GRADIENT, |
61 » NODE_TEX_WAVE = 2500, | 56 » NODE_TEX_VORONOI, |
62 » NODE_TEX_MAGIC = 2600, | 57 » NODE_TEX_MUSGRAVE, |
63 » NODE_TEX_NOISE = 3000, | 58 » NODE_TEX_WAVE, |
64 » NODE_SHADER_JUMP = 3100, | 59 » NODE_TEX_MAGIC, |
65 » NODE_SET_DISPLACEMENT = 3200, | 60 » NODE_TEX_NOISE, |
66 » NODE_GEOMETRY_BUMP_DX = 3300, | 61 » NODE_SHADER_JUMP, |
67 » NODE_GEOMETRY_BUMP_DY = 3400, | 62 » NODE_SET_DISPLACEMENT, |
68 » NODE_SET_BUMP = 3500, | 63 » NODE_GEOMETRY_BUMP_DX, |
69 » NODE_MATH = 3600, | 64 » NODE_GEOMETRY_BUMP_DY, |
70 » NODE_VECTOR_MATH = 3700, | 65 » NODE_SET_BUMP, |
71 » NODE_MAPPING = 3800, | 66 » NODE_MATH, |
72 » NODE_TEX_COORD = 3900, | 67 » NODE_VECTOR_MATH, |
73 » NODE_TEX_COORD_BUMP_DX = 4000, | 68 » NODE_MAPPING, |
74 » NODE_TEX_COORD_BUMP_DY = 4100, | 69 » NODE_TEX_COORD, |
75 » NODE_ADD_CLOSURE = 4200, | 70 » NODE_TEX_COORD_BUMP_DX, |
76 » NODE_EMISSION_SET_WEIGHT_TOTAL = 4300, | 71 » NODE_TEX_COORD_BUMP_DY, |
77 » NODE_ATTR_BUMP_DX = 4400, | 72 » NODE_ADD_CLOSURE, |
78 » NODE_ATTR_BUMP_DY = 4500, | 73 » NODE_EMISSION_SET_WEIGHT_TOTAL, |
79 » NODE_TEX_ENVIRONMENT = 4600, | 74 » NODE_ATTR_BUMP_DX, |
80 » NODE_CLOSURE_HOLDOUT = 4700, | 75 » NODE_ATTR_BUMP_DY, |
81 » NODE_LAYER_WEIGHT = 4800, | 76 » NODE_TEX_ENVIRONMENT, |
82 » NODE_CLOSURE_VOLUME = 4900, | 77 » NODE_CLOSURE_HOLDOUT, |
83 » NODE_SEPARATE_RGB = 5000, | 78 » NODE_LAYER_WEIGHT, |
84 » NODE_COMBINE_RGB = 5100, | 79 » NODE_CLOSURE_VOLUME, |
85 » NODE_HSV = 5200, | 80 » NODE_SEPARATE_RGB, |
86 » NODE_CAMERA = 5300, | 81 » NODE_COMBINE_RGB, |
87 » NODE_INVERT = 5400, | 82 » NODE_HSV, |
88 » NODE_NORMAL = 5500, | 83 » NODE_CAMERA, |
89 » NODE_GAMMA = 5600, | 84 » NODE_INVERT, |
90 » NODE_TEX_CHECKER = 5700, | 85 » NODE_NORMAL, |
91 » NODE_BRIGHTCONTRAST = 5800, | 86 » NODE_GAMMA, |
92 » NODE_RGB_RAMP = 5900, | 87 » NODE_TEX_CHECKER, |
| 88 » NODE_BRIGHTCONTRAST, |
| 89 » NODE_RGB_RAMP, |
| 90 » NODE_RGB_CURVES, |
| 91 » NODE_VECTOR_CURVES, |
| 92 » NODE_MIN_MAX, |
93 NODE_RGB_CURVES = 6000, | 93 NODE_RGB_CURVES = 6000, |
94 NODE_MIN_MAX = 6100, | 94 NODE_MIN_MAX = 6100, |
95 NODE_LIGHT_FALLOFF = 6200, | 95 NODE_LIGHT_FALLOFF = 6200, |
96 » NODE_OBJECT_INFO = 6300, | 96 » NODE_OBJECT_INFO = 6300 |
97 » NODE_PARTICLE_INFO = 6400 | |
98 } NodeType; | 97 } NodeType; |
99 | 98 |
100 typedef enum NodeAttributeType { | 99 typedef enum NodeAttributeType { |
101 NODE_ATTR_FLOAT = 0, | |
102 NODE_ATTR_FLOAT3 | |
103 } NodeAttributeType; | |
104 | |
105 typedef enum NodeGeometry { | |
106 NODE_GEOM_P = 0, | |
107 NODE_GEOM_N, | |
108 NODE_GEOM_T, | |
109 NODE_GEOM_I, | |
110 NODE_GEOM_Ng, | |
111 NODE_GEOM_uv | |
112 } NodeGeometry; | |
113 | |
114 typedef enum NodeObjectInfo { | |
115 NODE_INFO_OB_LOCATION, | |
116 NODE_INFO_OB_INDEX, | |
117 NODE_INFO_MAT_INDEX, | |
118 NODE_INFO_OB_RANDOM | |
119 } NodeObjectInfo; | |
120 | |
121 typedef enum NodeParticleInfo { | |
122 NODE_INFO_PAR_AGE, | |
123 NODE_INFO_PAR_LIFETIME | |
124 } NodeParticleInfo; | |
125 | |
126 typedef enum NodeLightPath { | |
127 NODE_LP_camera = 0, | |
128 NODE_LP_shadow, | |
129 NODE_LP_diffuse, | |
130 NODE_LP_glossy, | |
131 NODE_LP_singular, | |
132 NODE_LP_reflection, | |
133 NODE_LP_transmission, | |
134 NODE_LP_backfacing, | |
135 NODE_LP_ray_length | |
136 } NodeLightPath; | |
137 | |
138 typedef enum NodeLightFalloff { | |
139 NODE_LIGHT_FALLOFF_QUADRATIC, | |
140 NODE_LIGHT_FALLOFF_LINEAR, | |
141 NODE_LIGHT_FALLOFF_CONSTANT | |
142 } NodeLightFalloff; | |
143 | |
144 typedef enum NodeTexCoord { | |
145 NODE_TEXCO_NORMAL, | |
146 NODE_TEXCO_OBJECT, | |
147 NODE_TEXCO_CAMERA, | |
148 NODE_TEXCO_WINDOW, | |
149 NODE_TEXCO_REFLECTION | |
150 } NodeTexCoord; | |
151 | |
152 typedef enum NodeMix { | |
153 NODE_MIX_BLEND = 0, | |
154 NODE_MIX_ADD, | |
155 NODE_MIX_MUL, | |
156 NODE_MIX_SUB, | |
157 NODE_MIX_SCREEN, | |
158 NODE_MIX_DIV, | |
159 NODE_MIX_DIFF, | |
160 NODE_MIX_DARK, | |
161 NODE_MIX_LIGHT, | |
162 NODE_MIX_OVERLAY, | |
163 NODE_MIX_DODGE, | |
164 NODE_MIX_BURN, | |
165 NODE_MIX_HUE, | |
166 NODE_MIX_SAT, | |
167 NODE_MIX_VAL, | |
168 NODE_MIX_COLOR, | |
169 NODE_MIX_SOFT, | |
170 NODE_MIX_LINEAR | |
171 } NodeMix; | |
172 | |
173 typedef enum NodeMath { | |
174 NODE_MATH_ADD, | |
175 NODE_MATH_SUBTRACT, | |
176 NODE_MATH_MULTIPLY, | |
177 NODE_MATH_DIVIDE, | |
178 NODE_MATH_SINE, | |
179 NODE_MATH_COSINE, | |
180 NODE_MATH_TANGENT, | |
181 NODE_MATH_ARCSINE, | |
182 NODE_MATH_ARCCOSINE, | |
183 NODE_MATH_ARCTANGENT, | |
184 NODE_MATH_POWER, | |
185 NODE_MATH_LOGARITHM, | |
186 NODE_MATH_MINIMUM, | |
187 NODE_MATH_MAXIMUM, | |
188 NODE_MATH_ROUND, | |
189 NODE_MATH_LESS_THAN, | |
190 NODE_MATH_GREATER_THAN | |
191 } NodeMath; | |
192 | |
193 typedef enum NodeVectorMath { | |
194 NODE_VECTOR_MATH_ADD, | |
195 NODE_VECTOR_MATH_SUBTRACT, | |
196 NODE_VECTOR_MATH_AVERAGE, | |
197 NODE_VECTOR_MATH_DOT_PRODUCT, | |
198 NODE_VECTOR_MATH_CROSS_PRODUCT, | |
199 NODE_VECTOR_MATH_NORMALIZE | |
200 } NodeVectorMath; | |
201 | |
202 typedef enum NodeConvert { | |
203 NODE_CONVERT_FV, | |
204 NODE_CONVERT_CF, | |
205 NODE_CONVERT_VF | |
206 } NodeConvert; | |
207 | |
208 typedef enum NodeDistanceMetric { | |
209 NODE_VORONOI_DISTANCE_SQUARED, | |
210 NODE_VORONOI_ACTUAL_DISTANCE, | |
211 NODE_VORONOI_MANHATTAN, | |
212 NODE_VORONOI_CHEBYCHEV, | |
213 NODE_VORONOI_MINKOVSKY_H, | |
214 NODE_VORONOI_MINKOVSKY_4, | |
215 NODE_VORONOI_MINKOVSKY | |
216 } NodeDistanceMetric; | |
217 | |
218 typedef enum NodeNoiseBasis { | |
219 NODE_NOISE_PERLIN, | |
220 NODE_NOISE_VORONOI_F1, | |
221 NODE_NOISE_VORONOI_F2, | |
222 NODE_NOISE_VORONOI_F3, | |
223 NODE_NOISE_VORONOI_F4, | |
224 NODE_NOISE_VORONOI_F2_F1, | |
225 NODE_NOISE_VORONOI_CRACKLE, | |
226 NODE_NOISE_CELL_NOISE | |
227 } NodeNoiseBasis; | |
228 | |
229 typedef enum NodeWaveType { | |
230 NODE_WAVE_SINE, | |
231 NODE_WAVE_SAW, | |
232 NODE_WAVE_TRI | |
233 } NodeWaveType; | |
234 | |
235 typedef enum NodeMusgraveType { | |
236 NODE_MUSGRAVE_MULTIFRACTAL, | |
237 NODE_MUSGRAVE_FBM, | |
238 NODE_MUSGRAVE_HYBRID_MULTIFRACTAL, | |
239 NODE_MUSGRAVE_RIDGED_MULTIFRACTAL, | |
240 NODE_MUSGRAVE_HETERO_TERRAIN | |
241 } NodeMusgraveType; | |
242 | |
243 typedef enum NodeWoodType { | |
244 NODE_WAVE_BANDS, | |
245 NODE_WAVE_RINGS | |
246 } NodeWoodType; | |
247 | |
248 typedef enum NodeBlendType { | |
249 NODE_BLEND_LINEAR, | |
250 NODE_BLEND_QUADRATIC, | |
251 NODE_BLEND_EASING, | |
252 NODE_BLEND_DIAGONAL, | |
253 NODE_BLEND_RADIAL, | |
254 NODE_BLEND_QUADRATIC_SPHERE, | |
255 NODE_BLEND_SPHERICAL | |
256 } NodeBlendType; | |
257 | |
258 typedef enum NodeBlendAxis { | |
259 NODE_BLEND_HORIZONTAL, | |
260 NODE_BLEND_VERTICAL | |
261 } NodeBlendAxis; | |
262 | |
263 typedef enum NodeMarbleType { | |
264 NODE_MARBLE_SOFT, | |
265 NODE_MARBLE_SHARP, | |
266 NODE_MARBLE_SHARPER | |
267 } NodeMarbleType; | |
268 | |
269 typedef enum NodeStucciType { | |
270 NODE_STUCCI_PLASTIC, | |
271 NODE_STUCCI_WALL_IN, | |
272 NODE_STUCCI_WALL_OUT | |
273 } NodeStucciType; | |
274 | |
275 typedef enum NodeVoronoiColoring { | |
276 NODE_VORONOI_INTENSITY, | |
277 NODE_VORONOI_CELLS | |
278 } NodeVoronoiColoring; | |
279 | |
280 typedef enum NodeBlendWeightType { | |
281 NODE_LAYER_WEIGHT_FRESNEL, | |
282 NODE_LAYER_WEIGHT_FACING | |
283 } NodeBlendWeightType; | |
284 | |
285 typedef enum ShaderType { | |
286 SHADER_TYPE_SURFACE, | |
287 SHADER_TYPE_VOLUME, | |
288 SHADER_TYPE_DISPLACEMENT | |
289 } ShaderType; | |
290 | |
291 /* Closure */ | |
292 | |
293 typedef enum ClosureType { | |
294 CLOSURE_BSDF_ID, | |
295 | |
296 CLOSURE_BSDF_DIFFUSE_ID, | |
297 CLOSURE_BSDF_OREN_NAYAR_ID, | |
298 | |
299 CLOSURE_BSDF_REFLECTION_ID, | |
300 CLOSURE_BSDF_MICROFACET_GGX_ID, | |
301 CLOSURE_BSDF_MICROFACET_BECKMANN_ID, | |
302 CLOSURE_BSDF_WARD_ID, | |
303 CLOSURE_BSDF_WESTIN_SHEEN_ID, | |
304 | |
305 CLOSURE_BSDF_TRANSLUCENT_ID, | |
306 CLOSURE_BSDF_REFRACTION_ID, | |
307 CLOSURE_BSDF_WESTIN_BACKSCATTER_ID, | |
308 CLOSURE_BSDF_ASHIKHMIN_VELVET_ID, | |
309 CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID, | |
310 CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID, | |
311 CLOSURE_BSDF_GLASS_ID, | |
312 | |
313 CLOSURE_BSDF_TRANSPARENT_ID, | |
314 | |
315 CLOSURE_BSSRDF_CUBIC_ID, | |
316 CLOSURE_EMISSION_ID, | |
317 CLOSURE_DEBUG_ID, | |
318 CLOSURE_BACKGROUND_ID, | |
319 CLOSURE_HOLDOUT_ID, | |
320 CLOSURE_SUBSURFACE_ID, | |
321 | |
322 CLOSURE_VOLUME_ID, | |
323 CLOSURE_VOLUME_TRANSPARENT_ID, | |
324 CLOSURE_VOLUME_ISOTROPIC_ID, | |
325 | |
326 NBUILTIN_CLOSURES | |
327 } ClosureType; | |
328 | |
329 /* watch this, being lazy with memory usage */ | |
330 #define CLOSURE_IS_BSDF(type) (type <= CLOSURE_BSDF_TRANSPARENT_ID) | |
331 #define CLOSURE_IS_BSDF_DIFFUSE(type) (type >= CLOSURE_BSDF_DIFFUSE_ID && type <
= CLOSURE_BSDF_OREN_NAYAR_ID) | |
332 #define CLOSURE_IS_BSDF_GLOSSY(type) (type >= CLOSURE_BSDF_REFLECTION_ID && type
<= CLOSURE_BSDF_WESTIN_SHEEN_ID) | |
333 #define CLOSURE_IS_BSDF_TRANSMISSION(type) (type >= CLOSURE_BSDF_TRANSLUCENT_ID
&& type <= CLOSURE_BSDF_GLASS_ID) | |
334 #define CLOSURE_IS_VOLUME(type) (type >= CLOSURE_VOLUME_ID && type <= CLOSURE_VO
LUME_ISOTROPIC_ID) | |
335 #define CLOSURE_IS_EMISSION(type) (type == CLOSURE_EMISSION_ID) | |
336 #define CLOSURE_IS_HOLDOUT(type) (type == CLOSURE_HOLDOUT_ID) | |
337 #define CLOSURE_IS_BACKGROUND(type) (type == CLOSURE_BACKGROUND_ID) | |
338 | |
339 CCL_NAMESPACE_END | |
340 | |
341 #endif /* __SVM_TYPES_H__ */ | |
342 | |
LEFT | RIGHT |