Blender  V3.3
kernel/svm/types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #pragma once
5 
7 
8 /* Stack */
9 
10 /* SVM stack has a fixed size */
11 #define SVM_STACK_SIZE 255
12 /* SVM stack offsets with this value indicate that it's not on the stack */
13 #define SVM_STACK_INVALID 255
14 
15 #define SVM_BUMP_EVAL_STATE_SIZE 9
16 
17 /* Nodes */
18 
19 typedef enum ShaderNodeType {
20 #define SHADER_NODE_TYPE(name) name,
21 #include "node_types_template.h"
22  NODE_NUM
24 
30 
31 typedef enum NodeAttributeType {
39 
40 typedef enum NodeGeometry {
48 
49 typedef enum NodeObjectInfo {
57 
58 typedef enum NodeParticleInfo {
69 
70 typedef enum NodeHairInfo {
78 
79 typedef enum NodePointInfo {
84 
85 typedef enum NodeLightPath {
102 
103 typedef enum NodeLightFalloff {
108 
109 typedef enum NodeTexCoord {
119 
120 typedef enum NodeMix {
139  NODE_MIX_CLAMP /* used for the clamp UI option */
141 
142 typedef enum NodeMathType {
184 
185 typedef enum NodeVectorMathType {
190 
195 
200 
217 
218 typedef enum NodeClampType {
222 
223 typedef enum NodeMapRangeType {
229 
230 typedef enum NodeMappingType {
236 
237 typedef enum NodeVectorRotateType {
244 
250 
256 
257 typedef enum NodeConvert {
267 
268 typedef enum NodeMusgraveType {
275 
277 
284 
291 
292 typedef enum NodeWaveProfile {
297 
299 
300 typedef enum NodeGradientType {
309 
316 
317 typedef enum NodeVoronoiFeature {
324 
325 typedef enum NodeBlendWeightType {
329 
334 
335 typedef enum NodeTangentAxis {
340 
341 typedef enum NodeNormalMapSpace {
348 
349 typedef enum NodeImageProjection {
355 
356 typedef enum NodeImageFlags {
360 
365 
366 typedef enum NodeBumpOffset {
371 
372 typedef enum NodeTexVoxelSpace {
376 
377 typedef enum NodeAO {
378  NODE_AO_ONLY_LOCAL = (1 << 0),
379  NODE_AO_INSIDE = (1 << 1),
382 
383 typedef enum ShaderType {
389 
396 
397 typedef enum NodeCombSepColorType {
402 
403 /* Closure */
404 
405 typedef enum ClosureType {
406  /* Special type, flags generic node as a non-BSDF. */
408 
410 
411  /* Diffuse */
419 
420  /* Glossy */
433 
434  /* Transmission */
445 
446  /* Special cases */
448 
449  /* BSSRDF */
453 
454  /* Other */
456 
457  /* Volume */
461 
463 
466 
467 /* watch this, being lazy with memory usage */
468 #define CLOSURE_IS_BSDF(type) (type <= CLOSURE_BSDF_TRANSPARENT_ID)
469 #define CLOSURE_IS_BSDF_DIFFUSE(type) \
470  (type >= CLOSURE_BSDF_DIFFUSE_ID && type <= CLOSURE_BSDF_TRANSLUCENT_ID)
471 #define CLOSURE_IS_BSDF_GLOSSY(type) \
472  ((type >= CLOSURE_BSDF_REFLECTION_ID && type <= CLOSURE_BSDF_HAIR_REFLECTION_ID) || \
473  (type == CLOSURE_BSDF_HAIR_PRINCIPLED_ID))
474 #define CLOSURE_IS_BSDF_TRANSMISSION(type) \
475  (type >= CLOSURE_BSDF_REFRACTION_ID && type <= CLOSURE_BSDF_HAIR_TRANSMISSION_ID)
476 #define CLOSURE_IS_BSDF_SINGULAR(type) \
477  (type == CLOSURE_BSDF_REFLECTION_ID || type == CLOSURE_BSDF_REFRACTION_ID || \
478  type == CLOSURE_BSDF_TRANSPARENT_ID)
479 #define CLOSURE_IS_BSDF_TRANSPARENT(type) (type == CLOSURE_BSDF_TRANSPARENT_ID)
480 #define CLOSURE_IS_BSDF_MULTISCATTER(type) \
481  (type == CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID || \
482  type == CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID)
483 #define CLOSURE_IS_BSDF_MICROFACET(type) \
484  ((type >= CLOSURE_BSDF_MICROFACET_GGX_ID && type <= CLOSURE_BSDF_ASHIKHMIN_SHIRLEY_ID) || \
485  (type >= CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID && \
486  type <= CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID) || \
487  (type == CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID))
488 #define CLOSURE_IS_BSDF_MICROFACET_FRESNEL(type) \
489  (type == CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID || \
490  type == CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID || \
491  type == CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_ID || \
492  type == CLOSURE_BSDF_MICROFACET_GGX_CLEARCOAT_ID)
493 #define CLOSURE_IS_BSDF_OR_BSSRDF(type) (type <= CLOSURE_BSSRDF_RANDOM_WALK_FIXED_RADIUS_ID)
494 #define CLOSURE_IS_BSSRDF(type) \
495  (type >= CLOSURE_BSSRDF_BURLEY_ID && type <= CLOSURE_BSSRDF_RANDOM_WALK_FIXED_RADIUS_ID)
496 #define CLOSURE_IS_VOLUME(type) \
497  (type >= CLOSURE_VOLUME_ID && type <= CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID)
498 #define CLOSURE_IS_VOLUME_SCATTER(type) (type == CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID)
499 #define CLOSURE_IS_VOLUME_ABSORPTION(type) (type == CLOSURE_VOLUME_ABSORPTION_ID)
500 #define CLOSURE_IS_HOLDOUT(type) (type == CLOSURE_HOLDOUT_ID)
501 #define CLOSURE_IS_PHASE(type) (type == CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID)
502 #define CLOSURE_IS_GLASS(type) \
503  (type >= CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID && type <= CLOSURE_BSDF_SHARP_GLASS_ID)
504 #define CLOSURE_IS_PRINCIPLED(type) (type == CLOSURE_BSDF_PRINCIPLED_ID)
505 
506 #define CLOSURE_WEIGHT_CUTOFF 1e-5f
507 
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
NodeClampType
@ NODE_CLAMP_RANGE
@ NODE_CLAMP_MINMAX
NodeEnvironmentProjection
@ NODE_ENVIRONMENT_MIRROR_BALL
@ NODE_ENVIRONMENT_EQUIRECTANGULAR
NodeObjectInfo
@ NODE_INFO_OB_INDEX
@ NODE_INFO_MAT_INDEX
@ NODE_INFO_OB_RANDOM
@ NODE_INFO_OB_COLOR
@ NODE_INFO_OB_LOCATION
@ NODE_INFO_OB_ALPHA
NodeMathType
@ NODE_MATH_SINH
@ NODE_MATH_SMOOTH_MIN
@ NODE_MATH_TRUNC
@ NODE_MATH_COSH
@ NODE_MATH_SIGN
@ NODE_MATH_DEGREES
@ NODE_MATH_MODULO
@ NODE_MATH_ABSOLUTE
@ NODE_MATH_DIVIDE
@ NODE_MATH_SINE
@ NODE_MATH_ARCTAN2
@ NODE_MATH_ARCCOSINE
@ NODE_MATH_MULTIPLY_ADD
@ NODE_MATH_POWER
@ NODE_MATH_WRAP
@ NODE_MATH_ARCTANGENT
@ NODE_MATH_MINIMUM
@ NODE_MATH_SQRT
@ NODE_MATH_CEIL
@ NODE_MATH_TANH
@ NODE_MATH_GREATER_THAN
@ NODE_MATH_ADD
@ NODE_MATH_FRACTION
@ NODE_MATH_EXPONENT
@ NODE_MATH_LESS_THAN
@ NODE_MATH_ARCSINE
@ NODE_MATH_MAXIMUM
@ NODE_MATH_LOGARITHM
@ NODE_MATH_COMPARE
@ NODE_MATH_INV_SQRT
@ NODE_MATH_MULTIPLY
@ NODE_MATH_PINGPONG
@ NODE_MATH_ROUND
@ NODE_MATH_FLOOR
@ NODE_MATH_SUBTRACT
@ NODE_MATH_COSINE
@ NODE_MATH_SNAP
@ NODE_MATH_TANGENT
@ NODE_MATH_SMOOTH_MAX
@ NODE_MATH_RADIANS
NodeAttributeOutputType
@ NODE_ATTR_OUTPUT_FLOAT
@ NODE_ATTR_OUTPUT_FLOAT_ALPHA
@ NODE_ATTR_OUTPUT_FLOAT3
ShaderNodeType
@ NODE_NUM
NodeMusgraveType
@ NODE_MUSGRAVE_MULTIFRACTAL
@ NODE_MUSGRAVE_RIDGED_MULTIFRACTAL
@ NODE_MUSGRAVE_HYBRID_MULTIFRACTAL
@ NODE_MUSGRAVE_HETERO_TERRAIN
@ NODE_MUSGRAVE_FBM
NodeBumpOffset
@ NODE_BUMP_OFFSET_DY
@ NODE_BUMP_OFFSET_CENTER
@ NODE_BUMP_OFFSET_DX
NodeMapRangeType
@ NODE_MAP_RANGE_STEPPED
@ NODE_MAP_RANGE_SMOOTHERSTEP
@ NODE_MAP_RANGE_SMOOTHSTEP
@ NODE_MAP_RANGE_LINEAR
NodeWaveBandsDirection
@ NODE_WAVE_BANDS_DIRECTION_Z
@ NODE_WAVE_BANDS_DIRECTION_DIAGONAL
@ NODE_WAVE_BANDS_DIRECTION_Y
@ NODE_WAVE_BANDS_DIRECTION_X
NodeMappingType
@ NODE_MAPPING_TYPE_POINT
@ NODE_MAPPING_TYPE_VECTOR
@ NODE_MAPPING_TYPE_TEXTURE
@ NODE_MAPPING_TYPE_NORMAL
NodeHairInfo
@ NODE_INFO_CURVE_IS_STRAND
@ NODE_INFO_CURVE_LENGTH
@ NODE_INFO_CURVE_TANGENT_NORMAL
@ NODE_INFO_CURVE_THICKNESS
@ NODE_INFO_CURVE_INTERCEPT
@ NODE_INFO_CURVE_RANDOM
@ NODE_AO_INSIDE
@ NODE_AO_GLOBAL_RADIUS
@ NODE_AO_ONLY_LOCAL
NodeVectorTransformConvertSpace
@ NODE_VECTOR_TRANSFORM_CONVERT_SPACE_OBJECT
@ NODE_VECTOR_TRANSFORM_CONVERT_SPACE_WORLD
@ NODE_VECTOR_TRANSFORM_CONVERT_SPACE_CAMERA
NodeTangentAxis
@ NODE_TANGENT_AXIS_Y
@ NODE_TANGENT_AXIS_X
@ NODE_TANGENT_AXIS_Z
NodePrincipledHairParametrization
@ NODE_PRINCIPLED_HAIR_NUM
@ NODE_PRINCIPLED_HAIR_REFLECTANCE
@ NODE_PRINCIPLED_HAIR_DIRECT_ABSORPTION
@ NODE_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION
NodeTexCoord
@ NODE_TEXCO_VOLUME_GENERATED
@ NODE_TEXCO_REFLECTION
@ NODE_TEXCO_WINDOW
@ NODE_TEXCO_OBJECT
@ NODE_TEXCO_DUPLI_UV
@ NODE_TEXCO_DUPLI_GENERATED
@ NODE_TEXCO_CAMERA
@ NODE_TEXCO_NORMAL
ShaderType
@ SHADER_TYPE_BUMP
@ SHADER_TYPE_SURFACE
@ SHADER_TYPE_VOLUME
@ SHADER_TYPE_DISPLACEMENT
NodeVoronoiFeature
@ NODE_VORONOI_SMOOTH_F1
@ NODE_VORONOI_N_SPHERE_RADIUS
@ NODE_VORONOI_F1
@ NODE_VORONOI_F2
@ NODE_VORONOI_DISTANCE_TO_EDGE
NodeGeometry
@ NODE_GEOM_N
@ NODE_GEOM_T
@ NODE_GEOM_uv
@ NODE_GEOM_P
@ NODE_GEOM_Ng
@ NODE_GEOM_I
NodeParticleInfo
@ NODE_INFO_PAR_SIZE
@ NODE_INFO_PAR_LOCATION
@ NODE_INFO_PAR_RANDOM
@ NODE_INFO_PAR_VELOCITY
@ NODE_INFO_PAR_INDEX
@ NODE_INFO_PAR_ANGULAR_VELOCITY
@ NODE_INFO_PAR_AGE
@ NODE_INFO_PAR_LIFETIME
@ NODE_INFO_PAR_ROTATION
NodeWaveType
@ NODE_WAVE_BANDS
@ NODE_WAVE_RINGS
NodeImageFlags
@ NODE_IMAGE_COMPRESS_AS_SRGB
@ NODE_IMAGE_ALPHA_UNASSOCIATE
NodeVoronoiDistanceMetric
@ NODE_VORONOI_EUCLIDEAN
@ NODE_VORONOI_MANHATTAN
@ NODE_VORONOI_CHEBYCHEV
@ NODE_VORONOI_MINKOWSKI
NodeSkyType
@ NODE_SKY_PREETHAM
@ NODE_SKY_NISHITA
@ NODE_SKY_HOSEK
NodeWaveProfile
@ NODE_WAVE_PROFILE_TRI
@ NODE_WAVE_PROFILE_SIN
@ NODE_WAVE_PROFILE_SAW
NodeTexVoxelSpace
@ NODE_TEX_VOXEL_SPACE_WORLD
@ NODE_TEX_VOXEL_SPACE_OBJECT
@ NODE_MIX_DIV
@ NODE_MIX_SOFT
@ NODE_MIX_CLAMP
@ NODE_MIX_LIGHT
@ NODE_MIX_MUL
@ NODE_MIX_DIFF
@ NODE_MIX_BURN
@ NODE_MIX_SUB
@ NODE_MIX_LINEAR
@ NODE_MIX_DARK
@ NODE_MIX_SAT
@ NODE_MIX_COLOR
@ NODE_MIX_SCREEN
@ NODE_MIX_HUE
@ NODE_MIX_BLEND
@ NODE_MIX_OVERLAY
@ NODE_MIX_DODGE
@ NODE_MIX_VAL
@ NODE_MIX_ADD
NodeLightPath
@ NODE_LP_ray_depth
@ NODE_LP_shadow
@ NODE_LP_backfacing
@ NODE_LP_ray_glossy
@ NODE_LP_camera
@ NODE_LP_glossy
@ NODE_LP_transmission
@ NODE_LP_singular
@ NODE_LP_diffuse
@ NODE_LP_ray_diffuse
@ NODE_LP_volume_scatter
@ NODE_LP_ray_transmission
@ NODE_LP_ray_length
@ NODE_LP_ray_transparent
@ NODE_LP_reflection
ClosureType
@ CLOSURE_BSDF_MICROFACET_GGX_CLEARCOAT_ID
@ CLOSURE_VOLUME_ID
@ CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID
@ CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID
@ CLOSURE_BSDF_PHONG_RAMP_ID
@ CLOSURE_BSDF_ASHIKHMIN_SHIRLEY_ID
@ CLOSURE_BSSRDF_RANDOM_WALK_FIXED_RADIUS_ID
@ CLOSURE_BSDF_DIFFUSE_RAMP_ID
@ CLOSURE_BSDF_HAIR_PRINCIPLED_ID
@ CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID
@ CLOSURE_BSDF_MICROFACET_GGX_GLASS_ID
@ CLOSURE_BSDF_DIFFUSE_ID
@ CLOSURE_BSSRDF_BURLEY_ID
@ CLOSURE_BSDF_PRINCIPLED_ID
@ CLOSURE_BSDF_TRANSPARENT_ID
@ CLOSURE_BSDF_ID
@ CLOSURE_BSDF_DIFFUSE_TOON_ID
@ CLOSURE_BSDF_MICROFACET_GGX_ID
@ CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID
@ CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID
@ CLOSURE_BSDF_PRINCIPLED_SHEEN_ID
@ CLOSURE_BSDF_HAIR_TRANSMISSION_ID
@ CLOSURE_NONE_ID
@ CLOSURE_BSDF_SHARP_GLASS_ID
@ CLOSURE_BSDF_MICROFACET_BECKMANN_GLASS_ID
@ CLOSURE_BSSRDF_RANDOM_WALK_ID
@ CLOSURE_BSDF_REFRACTION_ID
@ CLOSURE_BSDF_MICROFACET_BECKMANN_ID
@ CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID
@ CLOSURE_HOLDOUT_ID
@ CLOSURE_BSDF_OREN_NAYAR_ID
@ NBUILTIN_CLOSURES
@ CLOSURE_BSDF_GLOSSY_TOON_ID
@ CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_ID
@ CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID
@ CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID
@ CLOSURE_VOLUME_ABSORPTION_ID
@ CLOSURE_BSDF_HAIR_REFLECTION_ID
@ CLOSURE_BSDF_TRANSLUCENT_ID
@ CLOSURE_BSDF_REFLECTION_ID
@ CLOSURE_BSDF_ASHIKHMIN_VELVET_ID
NodeVectorRotateType
@ NODE_VECTOR_ROTATE_TYPE_AXIS
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Z
@ NODE_VECTOR_ROTATE_TYPE_AXIS_X
@ NODE_VECTOR_ROTATE_TYPE_EULER_XYZ
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Y
NodePointInfo
@ NODE_INFO_POINT_RADIUS
@ NODE_INFO_POINT_RANDOM
@ NODE_INFO_POINT_POSITION
NodeVectorTransformType
@ NODE_VECTOR_TRANSFORM_TYPE_NORMAL
@ NODE_VECTOR_TRANSFORM_TYPE_VECTOR
@ NODE_VECTOR_TRANSFORM_TYPE_POINT
NodeImageProjection
@ NODE_IMAGE_PROJ_SPHERE
@ NODE_IMAGE_PROJ_TUBE
@ NODE_IMAGE_PROJ_BOX
@ NODE_IMAGE_PROJ_FLAT
NodeCombSepColorType
@ NODE_COMBSEP_COLOR_RGB
@ NODE_COMBSEP_COLOR_HSV
@ NODE_COMBSEP_COLOR_HSL
NodeAttributeType
@ NODE_ATTR_FLOAT
@ NODE_ATTR_FLOAT3
@ NODE_ATTR_RGBA
@ NODE_ATTR_FLOAT2
@ NODE_ATTR_FLOAT4
@ NODE_ATTR_MATRIX
NodeGradientType
@ NODE_BLEND_QUADRATIC
@ NODE_BLEND_DIAGONAL
@ NODE_BLEND_EASING
@ NODE_BLEND_RADIAL
@ NODE_BLEND_SPHERICAL
@ NODE_BLEND_QUADRATIC_SPHERE
@ NODE_BLEND_LINEAR
NodeTangentDirectionType
@ NODE_TANGENT_RADIAL
@ NODE_TANGENT_UVMAP
NodeVectorMathType
@ NODE_VECTOR_MATH_NORMALIZE
@ NODE_VECTOR_MATH_LENGTH
@ NODE_VECTOR_MATH_CROSS_PRODUCT
@ NODE_VECTOR_MATH_CEIL
@ NODE_VECTOR_MATH_MODULO
@ NODE_VECTOR_MATH_ADD
@ NODE_VECTOR_MATH_COSINE
@ NODE_VECTOR_MATH_REFLECT
@ NODE_VECTOR_MATH_WRAP
@ NODE_VECTOR_MATH_REFRACT
@ NODE_VECTOR_MATH_DOT_PRODUCT
@ NODE_VECTOR_MATH_ABSOLUTE
@ NODE_VECTOR_MATH_DIVIDE
@ NODE_VECTOR_MATH_TANGENT
@ NODE_VECTOR_MATH_DISTANCE
@ NODE_VECTOR_MATH_FLOOR
@ NODE_VECTOR_MATH_SNAP
@ NODE_VECTOR_MATH_SINE
@ NODE_VECTOR_MATH_FRACTION
@ NODE_VECTOR_MATH_PROJECT
@ NODE_VECTOR_MATH_MULTIPLY
@ NODE_VECTOR_MATH_SCALE
@ NODE_VECTOR_MATH_MAXIMUM
@ NODE_VECTOR_MATH_FACEFORWARD
@ NODE_VECTOR_MATH_SUBTRACT
@ NODE_VECTOR_MATH_MULTIPLY_ADD
@ NODE_VECTOR_MATH_MINIMUM
NodeWaveRingsDirection
@ NODE_WAVE_RINGS_DIRECTION_Y
@ NODE_WAVE_RINGS_DIRECTION_SPHERICAL
@ NODE_WAVE_RINGS_DIRECTION_X
@ NODE_WAVE_RINGS_DIRECTION_Z
NodeBlendWeightType
@ NODE_LAYER_WEIGHT_FACING
@ NODE_LAYER_WEIGHT_FRESNEL
NodeNormalMapSpace
@ NODE_NORMAL_MAP_TANGENT
@ NODE_NORMAL_MAP_WORLD
@ NODE_NORMAL_MAP_BLENDER_WORLD
@ NODE_NORMAL_MAP_BLENDER_OBJECT
@ NODE_NORMAL_MAP_OBJECT
NodeConvert
@ NODE_CONVERT_IF
@ NODE_CONVERT_CI
@ NODE_CONVERT_CF
@ NODE_CONVERT_VF
@ NODE_CONVERT_VI
@ NODE_CONVERT_FI
@ NODE_CONVERT_IV
@ NODE_CONVERT_FV
NodeLightFalloff
@ NODE_LIGHT_FALLOFF_QUADRATIC
@ NODE_LIGHT_FALLOFF_LINEAR
@ NODE_LIGHT_FALLOFF_CONSTANT