Blender  V2.93
kernel/svm/svm.h
Go to the documentation of this file.
1 /*
2  * Copyright 2011-2013 Blender Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __SVM_H__
18 #define __SVM_H__
19 
20 /* Shader Virtual Machine
21  *
22  * A shader is a list of nodes to be executed. These are simply read one after
23  * the other and executed, using an node counter. Each node and its associated
24  * data is encoded as one or more uint4's in a 1D texture. If the data is larger
25  * than an uint4, the node can increase the node counter to compensate for this.
26  * Floats are encoded as int and then converted to float again.
27  *
28  * Nodes write their output into a stack. All stack data in the stack is
29  * floats, since it's all factors, colors and vectors. The stack will be stored
30  * in local memory on the GPU, as it would take too many register and indexes in
31  * ways not known at compile time. This seems the only solution even though it
32  * may be slow, with two positive factors. If the same shader is being executed,
33  * memory access will be coalesced and cached.
34  *
35  * The result of shader execution will be a single closure. This means the
36  * closure type, associated label, data and weight. Sampling from multiple
37  * closures is supported through the mix closure node, the logic for that is
38  * mostly taken care of in the SVM compiler.
39  */
40 
41 #include "kernel/svm/svm_types.h"
42 
44 
45 /* Stack */
46 
48 {
50 
51  return make_float3(stack[a + 0], stack[a + 1], stack[a + 2]);
52 }
53 
55 {
57 
58  stack[a + 0] = f.x;
59  stack[a + 1] = f.y;
60  stack[a + 2] = f.z;
61 }
62 
64 {
66 
67  return stack[a];
68 }
69 
71 {
72  return (a == (uint)SVM_STACK_INVALID) ? __uint_as_float(value) : stack_load_float(stack, a);
73 }
74 
75 ccl_device_inline void stack_store_float(float *stack, uint a, float f)
76 {
78 
79  stack[a] = f;
80 }
81 
83 {
85 
86  return __float_as_int(stack[a]);
87 }
88 
90 {
91  return (a == (uint)SVM_STACK_INVALID) ? (int)value : stack_load_int(stack, a);
92 }
93 
94 ccl_device_inline void stack_store_int(float *stack, uint a, int i)
95 {
97 
98  stack[a] = __int_as_float(i);
99 }
100 
102 {
103  return a != (uint)SVM_STACK_INVALID;
104 }
105 
106 /* Reading Nodes */
107 
108 ccl_device_inline uint4 read_node(KernelGlobals *kg, int *offset)
109 {
110  uint4 node = kernel_tex_fetch(__svm_nodes, *offset);
111  (*offset)++;
112  return node;
113 }
114 
115 ccl_device_inline float4 read_node_float(KernelGlobals *kg, int *offset)
116 {
117  uint4 node = kernel_tex_fetch(__svm_nodes, *offset);
118  float4 f = make_float4(__uint_as_float(node.x),
121  __uint_as_float(node.w));
122  (*offset)++;
123  return f;
124 }
125 
126 ccl_device_inline float4 fetch_node_float(KernelGlobals *kg, int offset)
127 {
128  uint4 node = kernel_tex_fetch(__svm_nodes, offset);
129  return make_float4(__uint_as_float(node.x),
132  __uint_as_float(node.w));
133 }
134 
136 {
137  *x = (i & 0xFF);
138  *y = ((i >> 8) & 0xFF);
139 }
140 
142 {
143  *x = (i & 0xFF);
144  *y = ((i >> 8) & 0xFF);
145  *z = ((i >> 16) & 0xFF);
146 }
147 
149 {
150  *x = (i & 0xFF);
151  *y = ((i >> 8) & 0xFF);
152  *z = ((i >> 16) & 0xFF);
153  *w = ((i >> 24) & 0xFF);
154 }
155 
157 
158 /* Nodes */
159 
160 #include "kernel/svm/svm_noise.h"
161 #include "svm_fractal_noise.h"
162 
166 
167 #include "kernel/svm/svm_aov.h"
170 #include "kernel/svm/svm_brick.h"
172 #include "kernel/svm/svm_bump.h"
173 #include "kernel/svm/svm_camera.h"
174 #include "kernel/svm/svm_checker.h"
175 #include "kernel/svm/svm_clamp.h"
176 #include "kernel/svm/svm_closure.h"
177 #include "kernel/svm/svm_convert.h"
178 #include "kernel/svm/svm_displace.h"
179 #include "kernel/svm/svm_fresnel.h"
180 #include "kernel/svm/svm_gamma.h"
181 #include "kernel/svm/svm_geometry.h"
182 #include "kernel/svm/svm_gradient.h"
183 #include "kernel/svm/svm_hsv.h"
184 #include "kernel/svm/svm_ies.h"
185 #include "kernel/svm/svm_image.h"
186 #include "kernel/svm/svm_invert.h"
188 #include "kernel/svm/svm_magic.h"
190 #include "kernel/svm/svm_mapping.h"
191 #include "kernel/svm/svm_math.h"
192 #include "kernel/svm/svm_mix.h"
193 #include "kernel/svm/svm_musgrave.h"
194 #include "kernel/svm/svm_noisetex.h"
195 #include "kernel/svm/svm_normal.h"
196 #include "kernel/svm/svm_ramp.h"
199 #include "kernel/svm/svm_sky.h"
201 #include "kernel/svm/svm_value.h"
205 #include "kernel/svm/svm_voronoi.h"
206 #include "kernel/svm/svm_voxel.h"
207 #include "kernel/svm/svm_wave.h"
211 
212 #ifdef __SHADER_RAYTRACE__
213 # include "kernel/svm/svm_ao.h"
214 # include "kernel/svm/svm_bevel.h"
215 #endif
216 
218 
219 /* Main Interpreter Loop */
220 #if defined(__KERNEL_OPTIX__) && defined(__SHADER_RAYTRACE__)
221 ccl_device_inline void svm_eval_nodes(KernelGlobals *kg,
222  ShaderData *sd,
224  ccl_global float *buffer,
226  int path_flag)
227 {
228  optixDirectCall<void>(0, kg, sd, state, buffer, type, path_flag);
229 }
230 extern "C" __device__ void __direct_callable__svm_eval_nodes(
231 #else
233 #endif
234  KernelGlobals *kg,
235  ShaderData *sd,
237  ccl_global float *buffer,
239  int path_flag)
240 {
241  float stack[SVM_STACK_SIZE];
242  int offset = sd->shader & SHADER_MASK;
243 
244  while (1) {
245  uint4 node = read_node(kg, &offset);
246 
247  switch (node.x) {
248  case NODE_END:
249  return;
250 #if NODES_GROUP(NODE_GROUP_LEVEL_0)
251  case NODE_SHADER_JUMP: {
252  if (type == SHADER_TYPE_SURFACE)
253  offset = node.y;
254  else if (type == SHADER_TYPE_VOLUME)
255  offset = node.z;
256  else if (type == SHADER_TYPE_DISPLACEMENT)
257  offset = node.w;
258  else
259  return;
260  break;
261  }
262  case NODE_CLOSURE_BSDF:
263  svm_node_closure_bsdf(kg, sd, stack, node, type, path_flag, &offset);
264  break;
266  svm_node_closure_emission(sd, stack, node);
267  break;
269  svm_node_closure_background(sd, stack, node);
270  break;
273  break;
274  case NODE_CLOSURE_WEIGHT:
275  svm_node_closure_weight(sd, stack, node.y);
276  break;
278  svm_node_emission_weight(kg, sd, stack, node);
279  break;
280  case NODE_MIX_CLOSURE:
281  svm_node_mix_closure(sd, stack, node);
282  break;
283  case NODE_JUMP_IF_ZERO:
284  if (stack_load_float(stack, node.z) == 0.0f)
285  offset += node.y;
286  break;
287  case NODE_JUMP_IF_ONE:
288  if (stack_load_float(stack, node.z) == 1.0f)
289  offset += node.y;
290  break;
291  case NODE_GEOMETRY:
292  svm_node_geometry(kg, sd, stack, node.y, node.z);
293  break;
294  case NODE_CONVERT:
295  svm_node_convert(kg, sd, stack, node.y, node.z, node.w);
296  break;
297  case NODE_TEX_COORD:
298  svm_node_tex_coord(kg, sd, path_flag, stack, node, &offset);
299  break;
300  case NODE_VALUE_F:
301  svm_node_value_f(kg, sd, stack, node.y, node.z);
302  break;
303  case NODE_VALUE_V:
304  svm_node_value_v(kg, sd, stack, node.y, &offset);
305  break;
306  case NODE_ATTR:
307  svm_node_attr(kg, sd, stack, node);
308  break;
309  case NODE_VERTEX_COLOR:
310  svm_node_vertex_color(kg, sd, stack, node.y, node.z, node.w);
311  break;
312 # if NODES_FEATURE(NODE_FEATURE_BUMP)
314  svm_node_geometry_bump_dx(kg, sd, stack, node.y, node.z);
315  break;
317  svm_node_geometry_bump_dy(kg, sd, stack, node.y, node.z);
318  break;
320  svm_node_set_displacement(kg, sd, stack, node.y);
321  break;
322  case NODE_DISPLACEMENT:
323  svm_node_displacement(kg, sd, stack, node);
324  break;
326  svm_node_vector_displacement(kg, sd, stack, node, &offset);
327  break;
328 # endif /* NODES_FEATURE(NODE_FEATURE_BUMP) */
329  case NODE_TEX_IMAGE:
330  svm_node_tex_image(kg, sd, stack, node, &offset);
331  break;
332  case NODE_TEX_IMAGE_BOX:
333  svm_node_tex_image_box(kg, sd, stack, node);
334  break;
335  case NODE_TEX_NOISE:
336  svm_node_tex_noise(kg, sd, stack, node.y, node.z, node.w, &offset);
337  break;
338 # if NODES_FEATURE(NODE_FEATURE_BUMP)
339  case NODE_SET_BUMP:
340  svm_node_set_bump(kg, sd, stack, node);
341  break;
342  case NODE_ATTR_BUMP_DX:
343  svm_node_attr_bump_dx(kg, sd, stack, node);
344  break;
345  case NODE_ATTR_BUMP_DY:
346  svm_node_attr_bump_dy(kg, sd, stack, node);
347  break;
349  svm_node_vertex_color_bump_dx(kg, sd, stack, node.y, node.z, node.w);
350  break;
352  svm_node_vertex_color_bump_dy(kg, sd, stack, node.y, node.z, node.w);
353  break;
355  svm_node_tex_coord_bump_dx(kg, sd, path_flag, stack, node, &offset);
356  break;
358  svm_node_tex_coord_bump_dy(kg, sd, path_flag, stack, node, &offset);
359  break;
361  svm_node_set_normal(kg, sd, stack, node.y, node.z);
362  break;
363 # if NODES_FEATURE(NODE_FEATURE_BUMP_STATE)
365  svm_node_enter_bump_eval(kg, sd, stack, node.y);
366  break;
368  svm_node_leave_bump_eval(kg, sd, stack, node.y);
369  break;
370 # endif /* NODES_FEATURE(NODE_FEATURE_BUMP_STATE) */
371 # endif /* NODES_FEATURE(NODE_FEATURE_BUMP) */
372  case NODE_HSV:
373  svm_node_hsv(kg, sd, stack, node, &offset);
374  break;
375 #endif /* NODES_GROUP(NODE_GROUP_LEVEL_0) */
376 
377 #if NODES_GROUP(NODE_GROUP_LEVEL_1)
379  svm_node_closure_holdout(sd, stack, node);
380  break;
381  case NODE_FRESNEL:
382  svm_node_fresnel(sd, stack, node.y, node.z, node.w);
383  break;
384  case NODE_LAYER_WEIGHT:
385  svm_node_layer_weight(sd, stack, node);
386  break;
387 # if NODES_FEATURE(NODE_FEATURE_VOLUME)
388  case NODE_CLOSURE_VOLUME:
389  svm_node_closure_volume(kg, sd, stack, node, type);
390  break;
392  svm_node_principled_volume(kg, sd, stack, node, type, path_flag, &offset);
393  break;
394 # endif /* NODES_FEATURE(NODE_FEATURE_VOLUME) */
395  case NODE_MATH:
396  svm_node_math(kg, sd, stack, node.y, node.z, node.w, &offset);
397  break;
398  case NODE_VECTOR_MATH:
399  svm_node_vector_math(kg, sd, stack, node.y, node.z, node.w, &offset);
400  break;
401  case NODE_RGB_RAMP:
402  svm_node_rgb_ramp(kg, sd, stack, node, &offset);
403  break;
404  case NODE_GAMMA:
405  svm_node_gamma(sd, stack, node.y, node.z, node.w);
406  break;
407  case NODE_BRIGHTCONTRAST:
408  svm_node_brightness(sd, stack, node.y, node.z, node.w);
409  break;
410  case NODE_LIGHT_PATH:
411  svm_node_light_path(sd, state, stack, node.y, node.z, path_flag);
412  break;
413  case NODE_OBJECT_INFO:
414  svm_node_object_info(kg, sd, stack, node.y, node.z);
415  break;
416  case NODE_PARTICLE_INFO:
417  svm_node_particle_info(kg, sd, stack, node.y, node.z);
418  break;
419 # if defined(__HAIR__) && NODES_FEATURE(NODE_FEATURE_HAIR)
420  case NODE_HAIR_INFO:
421  svm_node_hair_info(kg, sd, stack, node.y, node.z);
422  break;
423 # endif /* NODES_FEATURE(NODE_FEATURE_HAIR) */
424 #endif /* NODES_GROUP(NODE_GROUP_LEVEL_1) */
425 
426 #if NODES_GROUP(NODE_GROUP_LEVEL_2)
428  svm_node_texture_mapping(kg, sd, stack, node.y, node.z, &offset);
429  break;
430  case NODE_MAPPING:
431  svm_node_mapping(kg, sd, stack, node.y, node.z, node.w, &offset);
432  break;
433  case NODE_MIN_MAX:
434  svm_node_min_max(kg, sd, stack, node.y, node.z, &offset);
435  break;
436  case NODE_CAMERA:
437  svm_node_camera(kg, sd, stack, node.y, node.z, node.w);
438  break;
440  svm_node_tex_environment(kg, sd, stack, node);
441  break;
442  case NODE_TEX_SKY:
443  svm_node_tex_sky(kg, sd, stack, node, &offset);
444  break;
445  case NODE_TEX_GRADIENT:
446  svm_node_tex_gradient(sd, stack, node);
447  break;
448  case NODE_TEX_VORONOI:
449  svm_node_tex_voronoi(kg, sd, stack, node.y, node.z, node.w, &offset);
450  break;
451  case NODE_TEX_MUSGRAVE:
452  svm_node_tex_musgrave(kg, sd, stack, node.y, node.z, node.w, &offset);
453  break;
454  case NODE_TEX_WAVE:
455  svm_node_tex_wave(kg, sd, stack, node, &offset);
456  break;
457  case NODE_TEX_MAGIC:
458  svm_node_tex_magic(kg, sd, stack, node, &offset);
459  break;
460  case NODE_TEX_CHECKER:
461  svm_node_tex_checker(kg, sd, stack, node);
462  break;
463  case NODE_TEX_BRICK:
464  svm_node_tex_brick(kg, sd, stack, node, &offset);
465  break;
467  svm_node_tex_white_noise(kg, sd, stack, node.y, node.z, node.w, &offset);
468  break;
469  case NODE_NORMAL:
470  svm_node_normal(kg, sd, stack, node.y, node.z, node.w, &offset);
471  break;
472  case NODE_LIGHT_FALLOFF:
473  svm_node_light_falloff(sd, stack, node);
474  break;
475  case NODE_IES:
476  svm_node_ies(kg, sd, stack, node, &offset);
477  break;
478 #endif /* NODES_GROUP(NODE_GROUP_LEVEL_2) */
479 
480 #if NODES_GROUP(NODE_GROUP_LEVEL_3)
481  case NODE_RGB_CURVES:
482  case NODE_VECTOR_CURVES:
483  svm_node_curves(kg, sd, stack, node, &offset);
484  break;
485  case NODE_TANGENT:
486  svm_node_tangent(kg, sd, stack, node);
487  break;
488  case NODE_NORMAL_MAP:
489  svm_node_normal_map(kg, sd, stack, node);
490  break;
491  case NODE_INVERT:
492  svm_node_invert(sd, stack, node.y, node.z, node.w);
493  break;
494  case NODE_MIX:
495  svm_node_mix(kg, sd, stack, node.y, node.z, node.w, &offset);
496  break;
498  svm_node_separate_vector(sd, stack, node.y, node.z, node.w);
499  break;
500  case NODE_COMBINE_VECTOR:
501  svm_node_combine_vector(sd, stack, node.y, node.z, node.w);
502  break;
503  case NODE_SEPARATE_HSV:
504  svm_node_separate_hsv(kg, sd, stack, node.y, node.z, node.w, &offset);
505  break;
506  case NODE_COMBINE_HSV:
507  svm_node_combine_hsv(kg, sd, stack, node.y, node.z, node.w, &offset);
508  break;
509  case NODE_VECTOR_ROTATE:
510  svm_node_vector_rotate(sd, stack, node.y, node.z, node.w);
511  break;
513  svm_node_vector_transform(kg, sd, stack, node);
514  break;
515  case NODE_WIREFRAME:
516  svm_node_wireframe(kg, sd, stack, node);
517  break;
518  case NODE_WAVELENGTH:
519  svm_node_wavelength(kg, sd, stack, node.y, node.z);
520  break;
521  case NODE_BLACKBODY:
522  svm_node_blackbody(kg, sd, stack, node.y, node.z);
523  break;
524  case NODE_MAP_RANGE:
525  svm_node_map_range(kg, sd, stack, node.y, node.z, node.w, &offset);
526  break;
527  case NODE_CLAMP:
528  svm_node_clamp(kg, sd, stack, node.y, node.z, node.w, &offset);
529  break;
530 # ifdef __SHADER_RAYTRACE__
531  case NODE_BEVEL:
532  svm_node_bevel(kg, sd, state, stack, node);
533  break;
535  svm_node_ao(kg, sd, state, stack, node);
536  break;
537 # endif /* __SHADER_RAYTRACE__ */
538 #endif /* NODES_GROUP(NODE_GROUP_LEVEL_3) */
539 
540 #if NODES_GROUP(NODE_GROUP_LEVEL_4)
541 # if NODES_FEATURE(NODE_FEATURE_VOLUME)
542  case NODE_TEX_VOXEL:
543  svm_node_tex_voxel(kg, sd, stack, node, &offset);
544  break;
545 # endif /* NODES_FEATURE(NODE_FEATURE_VOLUME) */
546  case NODE_AOV_START:
548  return;
549  }
550  break;
551  case NODE_AOV_COLOR:
552  svm_node_aov_color(kg, sd, stack, node, buffer);
553  break;
554  case NODE_AOV_VALUE:
555  svm_node_aov_value(kg, sd, stack, node, buffer);
556  break;
557 #endif /* NODES_GROUP(NODE_GROUP_LEVEL_4) */
558  default:
559  kernel_assert(!"Unknown node type was passed to the SVM machine");
560  return;
561  }
562  }
563 }
564 
566 
567 #endif /* __SVM_H__ */
unsigned int uint
Definition: BLI_sys_types.h:83
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
OperationNode * node
ccl_device_inline void stack_store_int(float *stack, uint a, int i)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(float *stack, uint a)
ccl_device_inline float4 read_node_float(KernelGlobals *kg, int *offset)
ccl_device_inline uint4 read_node(KernelGlobals *kg, int *offset)
ccl_device_inline int stack_load_int_default(float *stack, uint a, uint value)
ccl_device_inline float stack_load_float_default(float *stack, uint a, uint value)
ccl_device_inline float stack_load_float(float *stack, uint a)
ccl_device_forceinline void svm_unpack_node_uchar3(uint i, uint *x, uint *y, uint *z)
ccl_device_inline void stack_store_float3(float *stack, uint a, float3 f)
CCL_NAMESPACE_END CCL_NAMESPACE_BEGIN ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg, ShaderData *sd, ccl_addr_space PathState *state, ccl_global float *buffer, ShaderType type, int path_flag)
ccl_device_inline float4 fetch_node_float(KernelGlobals *kg, int offset)
ccl_device_forceinline void svm_unpack_node_uchar4(uint i, uint *x, uint *y, uint *z, uint *w)
ccl_device_inline void stack_store_float(float *stack, uint a, float f)
ccl_device_forceinline void svm_unpack_node_uchar2(uint i, uint *x, uint *y)
ccl_device_inline int stack_load_int(float *stack, uint a)
ccl_device_inline bool stack_valid(uint a)
#define kernel_assert(cond)
#define ccl_addr_space
#define kernel_tex_fetch(tex, index)
#define ccl_device_forceinline
#define ccl_device_inline
#define ccl_global
#define ccl_device_noinline
#define CCL_NAMESPACE_END
#define make_float4(x, y, z, w)
#define make_float3(x, y, z)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int ccl_global float * buffer
ShaderData
@ SHADER_MASK
Definition: kernel_types.h:593
static ulong state[N]
static unsigned a[3]
Definition: RandGen.cpp:92
float z
Definition: sky_float3.h:35
float y
Definition: sky_float3.h:35
float x
Definition: sky_float3.h:35
ccl_device void svm_node_aov_color(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ccl_global float *buffer)
Definition: svm_aov.h:29
ccl_device void svm_node_aov_value(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ccl_global float *buffer)
Definition: svm_aov.h:40
CCL_NAMESPACE_BEGIN ccl_device_inline bool svm_node_aov_check(ccl_addr_space PathState *state, ccl_global float *buffer)
Definition: svm_aov.h:19
ccl_device void svm_node_attr_bump_dx(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
ccl_device void svm_node_attr(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_attribute.h:47
ccl_device void svm_node_attr_bump_dy(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_blackbody(KernelGlobals *kg, ShaderData *sd, float *stack, uint temperature_offset, uint col_offset)
Definition: svm_blackbody.h:37
ccl_device void svm_node_tex_brick(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_brick.h:75
CCL_NAMESPACE_BEGIN ccl_device void svm_node_brightness(ShaderData *sd, float *stack, uint in_color, uint out_color, uint node)
ccl_device void svm_node_leave_bump_eval(KernelGlobals *kg, ShaderData *sd, float *stack, uint offset)
Definition: svm_bump.h:48
CCL_NAMESPACE_BEGIN ccl_device void svm_node_enter_bump_eval(KernelGlobals *kg, ShaderData *sd, float *stack, uint offset)
Definition: svm_bump.h:21
CCL_NAMESPACE_BEGIN ccl_device void svm_node_camera(KernelGlobals *kg, ShaderData *sd, float *stack, uint out_vector, uint out_zdepth, uint out_distance)
Definition: svm_camera.h:19
ccl_device void svm_node_tex_checker(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_checker.h:35
CCL_NAMESPACE_BEGIN ccl_device void svm_node_clamp(KernelGlobals *kg, ShaderData *sd, float *stack, uint value_stack_offset, uint parameters_stack_offsets, uint result_stack_offset, int *offset)
Definition: svm_clamp.h:21
ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ShaderType shader_type, int path_flag, int *offset)
Definition: svm_closure.h:60
ccl_device void svm_node_mix_closure(ShaderData *sd, float *stack, uint4 node)
Definition: svm_closure.h:1166
ccl_device void svm_node_closure_background(ShaderData *sd, float *stack, uint4 node)
Definition: svm_closure.h:1096
ccl_device void svm_node_closure_emission(ShaderData *sd, float *stack, uint4 node)
Definition: svm_closure.h:1079
ccl_device void svm_node_principled_volume(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ShaderType shader_type, int path_flag, int *offset)
Definition: svm_closure.h:964
ccl_device void svm_node_set_normal(KernelGlobals *kg, ShaderData *sd, float *stack, uint in_direction, uint out_normal)
Definition: svm_closure.h:1188
ccl_device void svm_node_emission_weight(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_closure.h:1152
ccl_device void svm_node_closure_set_weight(ShaderData *sd, uint r, uint g, uint b)
Definition: svm_closure.h:1139
ccl_device void svm_node_closure_holdout(ShaderData *sd, float *stack, uint4 node)
Definition: svm_closure.h:1113
ccl_device void svm_node_closure_volume(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ShaderType shader_type)
Definition: svm_closure.h:912
ccl_device void svm_node_closure_weight(ShaderData *sd, float *stack, uint weight_offset)
Definition: svm_closure.h:1145
CCL_NAMESPACE_BEGIN ccl_device void svm_node_convert(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint from, uint to)
Definition: svm_convert.h:21
ccl_device void svm_node_set_displacement(KernelGlobals *kg, ShaderData *sd, float *stack, uint fac_offset)
Definition: svm_displace.h:86
ccl_device void svm_node_vector_displacement(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_displace.h:122
ccl_device void svm_node_displacement(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_displace.h:95
CCL_NAMESPACE_BEGIN ccl_device void svm_node_set_bump(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_displace.h:21
ccl_device void svm_node_layer_weight(ShaderData *sd, float *stack, uint4 node)
Definition: svm_fresnel.h:40
CCL_NAMESPACE_BEGIN ccl_device void svm_node_fresnel(ShaderData *sd, float *stack, uint ior_offset, uint ior_value, uint node)
Definition: svm_fresnel.h:21
CCL_NAMESPACE_BEGIN ccl_device void svm_node_gamma(ShaderData *sd, float *stack, uint in_gamma, uint in_color, uint out_color)
Definition: svm_gamma.h:19
ccl_device void svm_node_object_info(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint out_offset)
Definition: svm_geometry.h:104
ccl_device void svm_node_particle_info(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint out_offset)
Definition: svm_geometry.h:143
CCL_NAMESPACE_BEGIN ccl_device_inline void svm_node_geometry(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint out_offset)
Definition: svm_geometry.h:21
ccl_device void svm_node_geometry_bump_dy(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint out_offset)
Definition: svm_geometry.h:78
ccl_device void svm_node_geometry_bump_dx(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint out_offset)
Definition: svm_geometry.h:54
ccl_device void svm_node_tex_gradient(ShaderData *sd, float *stack, uint4 node)
Definition: svm_gradient.h:63
CCL_NAMESPACE_BEGIN ccl_device void svm_node_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_hsv.h:22
ccl_device void svm_node_ies(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_ies.h:101
ccl_device void svm_node_tex_image(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_image.h:47
ccl_device void svm_node_tex_environment(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_image.h:218
ccl_device void svm_node_tex_image_box(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_image.h:119
ccl_device void svm_node_invert(ShaderData *sd, float *stack, uint in_fac, uint in_color, uint out_color)
Definition: svm_invert.h:24
CCL_NAMESPACE_BEGIN ccl_device void svm_node_light_path(ShaderData *sd, ccl_addr_space PathState *state, float *stack, uint type, uint out_offset, int path_flag)
ccl_device void svm_node_light_falloff(ShaderData *sd, float *stack, uint4 node)
ccl_device void svm_node_tex_magic(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_magic.h:90
ccl_device void svm_node_map_range(KernelGlobals *kg, ShaderData *sd, float *stack, uint value_stack_offset, uint parameters_stack_offsets, uint results_stack_offsets, int *offset)
Definition: svm_map_range.h:27
ccl_device void svm_node_min_max(KernelGlobals *kg, ShaderData *sd, float *stack, uint vec_offset, uint out_offset, int *offset)
Definition: svm_mapping.h:61
ccl_device void svm_node_texture_mapping(KernelGlobals *kg, ShaderData *sd, float *stack, uint vec_offset, uint out_offset, int *offset)
Definition: svm_mapping.h:47
CCL_NAMESPACE_BEGIN ccl_device void svm_node_mapping(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint inputs_stack_offsets, uint result_stack_offset, int *offset)
Definition: svm_mapping.h:21
CCL_NAMESPACE_BEGIN ccl_device void svm_node_math(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint inputs_stack_offsets, uint result_stack_offset, int *offset)
Definition: svm_math.h:19
ccl_device void svm_node_vector_math(KernelGlobals *kg, ShaderData *sd, float *stack, uint type, uint inputs_stack_offsets, uint outputs_stack_offsets, int *offset)
Definition: svm_math.h:38
CCL_NAMESPACE_BEGIN ccl_device void svm_node_mix(KernelGlobals *kg, ShaderData *sd, float *stack, uint fac_offset, uint c1_offset, uint c2_offset, int *offset)
Definition: svm_mix.h:21
ccl_device void svm_node_tex_musgrave(KernelGlobals *kg, ShaderData *sd, float *stack, uint offsets1, uint offsets2, uint offsets3, int *offset)
Definition: svm_musgrave.h:703
ccl_device void svm_node_tex_noise(KernelGlobals *kg, ShaderData *sd, float *stack, uint dimensions, uint offsets1, uint offsets2, int *offset)
Definition: svm_noisetex.h:143
CCL_NAMESPACE_BEGIN ccl_device void svm_node_normal(KernelGlobals *kg, ShaderData *sd, float *stack, uint in_normal_offset, uint out_normal_offset, uint out_dot_offset, int *offset)
Definition: svm_normal.h:19
ccl_device void svm_node_curves(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_ramp.h:77
ccl_device void svm_node_rgb_ramp(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_ramp.h:56
CCL_NAMESPACE_BEGIN ccl_device void svm_node_combine_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, uint hue_in, uint saturation_in, uint value_in, int *offset)
ccl_device void svm_node_separate_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, uint color_in, uint hue_out, uint saturation_out, int *offset)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_combine_vector(ShaderData *sd, float *stack, uint in_offset, uint vector_index, uint out_offset)
ccl_device void svm_node_separate_vector(ShaderData *sd, float *stack, uint ivector_offset, uint vector_index, uint out_offset)
ccl_device void svm_node_tex_sky(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_sky.h:212
ccl_device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_tex_coord(KernelGlobals *kg, ShaderData *sd, int path_flag, float *stack, uint4 node, int *offset)
Definition: svm_tex_coord.h:21
ccl_device void svm_node_tex_coord_bump_dy(KernelGlobals *kg, ShaderData *sd, int path_flag, float *stack, uint4 node, int *offset)
ccl_device void svm_node_tangent(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
ccl_device void svm_node_tex_coord_bump_dx(KernelGlobals *kg, ShaderData *sd, int path_flag, float *stack, uint4 node, int *offset)
Definition: svm_tex_coord.h:97
#define SVM_STACK_SIZE
Definition: svm_types.h:25
@ NODE_AOV_START
Definition: svm_types.h:153
@ NODE_TEX_IMAGE
Definition: svm_types.h:88
@ NODE_GEOMETRY
Definition: svm_types.h:76
@ NODE_CLOSURE_SET_WEIGHT
Definition: svm_types.h:70
@ NODE_EMISSION_WEIGHT
Definition: svm_types.h:72
@ NODE_VECTOR_TRANSFORM
Definition: svm_types.h:144
@ NODE_CLOSURE_HOLDOUT
Definition: svm_types.h:102
@ NODE_NORMAL_MAP
Definition: svm_types.h:136
@ NODE_SEPARATE_HSV
Definition: svm_types.h:141
@ NODE_SET_BUMP
Definition: svm_types.h:91
@ NODE_VERTEX_COLOR_BUMP_DX
Definition: svm_types.h:94
@ NODE_CLOSURE_VOLUME
Definition: svm_types.h:105
@ NODE_TEX_WHITE_NOISE
Definition: svm_types.h:129
@ NODE_TEX_MUSGRAVE
Definition: svm_types.h:124
@ NODE_MIX
Definition: svm_types.h:138
@ NODE_NORMAL
Definition: svm_types.h:130
@ NODE_INVERT
Definition: svm_types.h:137
@ NODE_SET_DISPLACEMENT
Definition: svm_types.h:85
@ NODE_DISPLACEMENT
Definition: svm_types.h:86
@ NODE_VALUE_V
Definition: svm_types.h:80
@ NODE_TEX_WAVE
Definition: svm_types.h:125
@ NODE_CLOSURE_EMISSION
Definition: svm_types.h:68
@ NODE_HAIR_INFO
Definition: svm_types.h:115
@ NODE_MATH
Definition: svm_types.h:107
@ NODE_TEX_ENVIRONMENT
Definition: svm_types.h:120
@ NODE_WAVELENGTH
Definition: svm_types.h:146
@ NODE_MIX_CLOSURE
Definition: svm_types.h:73
@ NODE_CLOSURE_BACKGROUND
Definition: svm_types.h:69
@ NODE_SEPARATE_VECTOR
Definition: svm_types.h:139
@ NODE_IES
Definition: svm_types.h:132
@ NODE_HSV
Definition: svm_types.h:101
@ NODE_VECTOR_CURVES
Definition: svm_types.h:134
@ NODE_CONVERT
Definition: svm_types.h:77
@ NODE_TEX_COORD_BUMP_DY
Definition: svm_types.h:97
@ NODE_LEAVE_BUMP_EVAL
Definition: svm_types.h:100
@ NODE_CAMERA
Definition: svm_types.h:119
@ NODE_MAPPING
Definition: svm_types.h:117
@ NODE_BRIGHTCONTRAST
Definition: svm_types.h:111
@ NODE_PRINCIPLED_VOLUME
Definition: svm_types.h:106
@ NODE_TEX_MAGIC
Definition: svm_types.h:126
@ NODE_END
Definition: svm_types.h:65
@ NODE_VERTEX_COLOR
Definition: svm_types.h:82
@ NODE_FRESNEL
Definition: svm_types.h:103
@ NODE_VALUE_F
Definition: svm_types.h:79
@ NODE_TEX_CHECKER
Definition: svm_types.h:127
@ NODE_PARTICLE_INFO
Definition: svm_types.h:114
@ NODE_OBJECT_INFO
Definition: svm_types.h:113
@ NODE_LAYER_WEIGHT
Definition: svm_types.h:104
@ NODE_TEX_VOXEL
Definition: svm_types.h:152
@ NODE_VECTOR_DISPLACEMENT
Definition: svm_types.h:87
@ NODE_CLAMP
Definition: svm_types.h:149
@ NODE_GEOMETRY_BUMP_DY
Definition: svm_types.h:84
@ NODE_VECTOR_MATH
Definition: svm_types.h:108
@ NODE_CLOSURE_SET_NORMAL
Definition: svm_types.h:98
@ NODE_ATTR_BUMP_DX
Definition: svm_types.h:92
@ NODE_LIGHT_FALLOFF
Definition: svm_types.h:131
@ NODE_VERTEX_COLOR_BUMP_DY
Definition: svm_types.h:95
@ NODE_TEX_BRICK
Definition: svm_types.h:128
@ NODE_AOV_COLOR
Definition: svm_types.h:154
@ NODE_MIN_MAX
Definition: svm_types.h:118
@ NODE_COMBINE_HSV
Definition: svm_types.h:142
@ NODE_ATTR
Definition: svm_types.h:81
@ NODE_TEX_COORD_BUMP_DX
Definition: svm_types.h:96
@ NODE_SHADER_JUMP
Definition: svm_types.h:66
@ NODE_CLOSURE_WEIGHT
Definition: svm_types.h:71
@ NODE_VECTOR_ROTATE
Definition: svm_types.h:143
@ NODE_COMBINE_VECTOR
Definition: svm_types.h:140
@ NODE_GAMMA
Definition: svm_types.h:110
@ NODE_TEX_IMAGE_BOX
Definition: svm_types.h:89
@ NODE_TANGENT
Definition: svm_types.h:135
@ NODE_TEX_GRADIENT
Definition: svm_types.h:122
@ NODE_AMBIENT_OCCLUSION
Definition: svm_types.h:151
@ NODE_WIREFRAME
Definition: svm_types.h:145
@ NODE_JUMP_IF_ONE
Definition: svm_types.h:75
@ NODE_CLOSURE_BSDF
Definition: svm_types.h:67
@ NODE_AOV_VALUE
Definition: svm_types.h:155
@ NODE_ATTR_BUMP_DY
Definition: svm_types.h:93
@ NODE_TEX_COORD
Definition: svm_types.h:78
@ NODE_BEVEL
Definition: svm_types.h:150
@ NODE_BLACKBODY
Definition: svm_types.h:147
@ NODE_MAP_RANGE
Definition: svm_types.h:148
@ NODE_GEOMETRY_BUMP_DX
Definition: svm_types.h:83
@ NODE_TEX_SKY
Definition: svm_types.h:121
@ NODE_RGB_CURVES
Definition: svm_types.h:133
@ NODE_TEX_NOISE
Definition: svm_types.h:90
@ NODE_ENTER_BUMP_EVAL
Definition: svm_types.h:99
@ NODE_JUMP_IF_ZERO
Definition: svm_types.h:74
@ NODE_TEX_VORONOI
Definition: svm_types.h:123
@ NODE_RGB_RAMP
Definition: svm_types.h:109
@ NODE_TEXTURE_MAPPING
Definition: svm_types.h:116
@ NODE_LIGHT_PATH
Definition: svm_types.h:112
ShaderType
Definition: svm_types.h:511
@ SHADER_TYPE_SURFACE
Definition: svm_types.h:512
@ SHADER_TYPE_VOLUME
Definition: svm_types.h:513
@ SHADER_TYPE_DISPLACEMENT
Definition: svm_types.h:514
#define SVM_STACK_INVALID
Definition: svm_types.h:27
CCL_NAMESPACE_BEGIN ccl_device void svm_node_value_f(KernelGlobals *kg, ShaderData *sd, float *stack, uint ivalue, uint out_offset)
Definition: svm_value.h:21
ccl_device void svm_node_value_v(KernelGlobals *kg, ShaderData *sd, float *stack, uint out_offset, int *offset)
Definition: svm_value.h:27
CCL_NAMESPACE_BEGIN ccl_device void svm_node_vector_rotate(ShaderData *sd, float *stack, uint input_stack_offsets, uint axis_stack_offsets, uint result_stack_offset)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_vector_transform(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_vertex_color(KernelGlobals *kg, ShaderData *sd, float *stack, uint layer_id, uint color_offset, uint alpha_offset)
ccl_device void svm_node_vertex_color_bump_dx(KernelGlobals *kg, ShaderData *sd, float *stack, uint layer_id, uint color_offset, uint alpha_offset)
ccl_device void svm_node_vertex_color_bump_dy(KernelGlobals *kg, ShaderData *sd, float *stack, uint layer_id, uint color_offset, uint alpha_offset)
ccl_device void svm_node_tex_voronoi(KernelGlobals *kg, ShaderData *sd, float *stack, uint dimensions, uint feature, uint metric, int *offset)
Definition: svm_voronoi.h:900
CCL_NAMESPACE_BEGIN ccl_device void svm_node_tex_voxel(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_voxel.h:22
ccl_device void svm_node_tex_wave(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int *offset)
Definition: svm_wave.h:85
ccl_device void svm_node_wavelength(KernelGlobals *kg, ShaderData *sd, float *stack, uint wavelength, uint color_out)
CCL_NAMESPACE_BEGIN ccl_device void svm_node_tex_white_noise(KernelGlobals *kg, ShaderData *sd, float *stack, uint dimensions, uint inputs_stack_offsets, uint ouptuts_stack_offsets, int *offset)
ccl_device void svm_node_wireframe(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
Definition: svm_wireframe.h:91
ccl_device_inline float __uint_as_float(uint i)
Definition: util_math.h:232
ccl_device_inline int __float_as_int(float f)
Definition: util_math.h:202
ccl_device_inline float __int_as_float(int i)
Definition: util_math.h:212