6 #if !defined(__KERNEL_GPU__) && defined(WITH_EMBREE)
7 # include <embree3/rtcore.h>
8 # include <embree3/rtcore_scene.h>
25 #define OBJECT_MOTION_PASS_SIZE 2
26 #define FILTER_TABLE_SIZE 1024
27 #define RAMP_TABLE_SIZE 256
28 #define SHUTTER_TABLE_SIZE 256
30 #define BSSRDF_MIN_RADIUS 1e-8f
31 #define BSSRDF_MAX_HITS 4
32 #define BSSRDF_MAX_BOUNCES 256
33 #define LOCAL_MAX_HITS 4
35 #define VOLUME_BOUNDS_MAX 1024
37 #define BECKMANN_TABLE_SIZE 256
39 #define SHADER_NONE (~0)
40 #define OBJECT_NONE (~0)
41 #define PRIM_NONE (~0)
42 #define LAMP_NONE (~0)
43 #define ID_NONE (0.0f)
44 #define PASS_UNUSED (~0)
45 #define LIGHTGROUP_NONE (~0)
47 #define INTEGRATOR_SHADOW_ISECT_SIZE_CPU 1024U
48 #define INTEGRATOR_SHADOW_ISECT_SIZE_GPU 4U
51 # define INTEGRATOR_SHADOW_ISECT_SIZE INTEGRATOR_SHADOW_ISECT_SIZE_GPU
53 # define INTEGRATOR_SHADOW_ISECT_SIZE INTEGRATOR_SHADOW_ISECT_SIZE_CPU
59 #define __BACKGROUND__
60 #define __CAUSTICS_TRICKS__
61 #define __VISIBILITY_FLAG__
62 #define __RAY_DIFFERENTIALS__
63 #define __CAMERA_CLIPPING__
64 #define __INTERSECTION_REFINE__
65 #define __CLAMP_SAMPLE__
66 #define __PATCH_EVAL__
67 #define __SHADOW_CATCHER__
68 #define __DENOISING_FEATURES__
69 #define __SHADER_RAYTRACE__
73 #define __POINTCLOUD__
77 #define __TRANSPARENT_SHADOWS__
78 #define __BACKGROUND_MIS__
80 #define __CAMERA_MOTION__
81 #define __OBJECT_MOTION__
82 #define __PRINCIPLED__
83 #define __SUBSURFACE__
86 #define __SHADOW_RECORD_ALL__
87 #define __BRANCHED_PATH__
90 #ifndef __KERNEL_GPU__
94 # define __VOLUME_RECORD_ALL__
99 #ifndef __KERNEL_METAL__
104 #ifdef __KERNEL_FEATURES__
105 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_CAMERA_MOTION)
106 # undef __CAMERA_MOTION__
108 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_OBJECT_MOTION)
109 # undef __OBJECT_MOTION__
111 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_HAIR)
114 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_POINTCLOUD)
115 # undef __POINTCLOUD__
117 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_VOLUME)
120 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_SUBSURFACE)
121 # undef __SUBSURFACE__
123 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_PATCH_EVALUATION)
124 # undef __PATCH_EVAL__
126 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_TRANSPARENT)
127 # undef __TRANSPARENT_SHADOWS__
129 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_SHADOW_CATCHER)
130 # undef __SHADOW_CATCHER__
132 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_PRINCIPLED)
133 # undef __PRINCIPLED__
135 # if !(__KERNEL_FEATURES & KERNEL_FEATURE_DENOISING)
136 # undef __DENOISING_FEATURES__
140 #ifdef WITH_CYCLES_DEBUG_NAN
141 # define __KERNEL_DEBUG_NAN__
146 #if defined(__SUBSURFACE__) || defined(__SHADER_RAYTRACE__)
147 # define __BVH_LOCAL__
304 #define SHADOW_CATCHER_VISIBILITY_SHIFT(visibility) ((visibility) << 16)
306 #define SHADOW_CATCHER_PATH_VISIBILITY(path_flag, visibility) \
307 (((path_flag)&PATH_RAY_SHADOW_CATCHER_PASS) ? SHADOW_CATCHER_VISIBILITY_SHIFT(visibility) : \
310 #define SHADOW_CATCHER_OBJECT_VISIBILITY(is_shadow_catcher, visibility) \
311 (((is_shadow_catcher) ? SHADOW_CATCHER_VISIBILITY_SHIFT(visibility) : 0) | (visibility))
330 #define PASS_NAME_JOIN(a, b) a##_##b
331 #define PASSMASK(pass) (1 << ((PASS_NAME_JOIN(PASS, pass)) % 32))
405 #define PASS_ANY (~0)
532 #ifdef __RAY_DIFFERENTIALS__
575 #define PRIMITIVE_INDEX(type) (bitscan((uint32_t)(type)) * 2 + (((type)&PRIMITIVE_MOTION) ? 1 : 0))
578 #define PRIMITIVE_PACK_SEGMENT(type, segment) ((segment << PRIMITIVE_NUM_BITS) | (type))
579 #define PRIMITIVE_UNPACK_SEGMENT(type) (type >> PRIMITIVE_NUM_BITS)
674 #ifndef __MAX_CLOSURE__
675 # define MAX_CLOSURE 64
677 # define MAX_CLOSURE __MAX_CLOSURE__
685 #ifndef __CAUSTICS_MAX_CLOSURE__
686 # define CAUSTICS_MAX_CLOSURE 4
688 # define CAUSTICS_MAX_CLOSURE __CAUSTICS_MAX_CLOSURE__
691 #ifndef __MAX_VOLUME_STACK_SIZE__
692 # define MAX_VOLUME_STACK_SIZE 32
694 # define MAX_VOLUME_STACK_SIZE __MAX_VOLUME_STACK_SIZE__
697 #define MAX_VOLUME_CLOSURE 8
711 #define SHADER_CLOSURE_BASE \
714 float sample_weight; \
721 #ifndef __KERNEL_GPU__
876 #ifdef __RAY_DIFFERENTIALS__
892 #ifdef __OBJECT_MOTION__
914 int num_closure_left;
915 float3 svm_closure_weight;
919 float3 closure_emission_background;
920 float3 closure_transparent_extinction;
943 #define AS_SHADER_DATA(shader_data_tiny_storage) \
944 ((ccl_private ShaderData *)shader_data_tiny_storage)
1123 #define KERNEL_STRUCT_BEGIN(name, parent) struct name {
1124 #define KERNEL_STRUCT_END(name) \
1127 static_assert_align(name, 16);
1129 #ifdef __KERNEL_USE_DATA_CONSTANTS__
1130 # define KERNEL_STRUCT_MEMBER(parent, type, name) type __unused_##name;
1132 # define KERNEL_STRUCT_MEMBER(parent, type, name) type name;
1165 #define KERNEL_STRUCT_BEGIN(name, parent) name parent;
1169 #ifdef __KERNEL_OPTIX__
1171 #elif defined __METALRT__
1176 # ifndef __KERNEL_64_BIT__
1330 #define PATCH_MAX_CONTROL_VERTS 16
1334 #define PATCH_MAP_NODE_IS_SET (1 << 30)
1335 #define PATCH_MAP_NODE_IS_LEAF (1u << 31)
1336 #define PATCH_MAP_NODE_INDEX_MASK (~(PATCH_MAP_NODE_IS_SET | PATCH_MAP_NODE_IS_LEAF))
1368 #define NUM_PMJ_DIVISIONS 32
1369 #define NUM_PMJ_SAMPLES ((NUM_PMJ_DIVISIONS) * (NUM_PMJ_DIVISIONS))
1370 #define NUM_PMJ_PATTERNS 1
1414 #define DECLARE_FILM_CONVERT_KERNEL(variant) \
1415 DEVICE_KERNEL_FILM_CONVERT_##variant, DEVICE_KERNEL_FILM_CONVERT_##variant##_HALF_RGBA
1430 #undef DECLARE_FILM_CONVERT_KERNEL
1517 #define KERNEL_FEATURE_NODE_MASK_SURFACE_LIGHT \
1518 (KERNEL_FEATURE_NODE_EMISSION | KERNEL_FEATURE_NODE_VORONOI_EXTRA | \
1519 KERNEL_FEATURE_NODE_LIGHT_PATH)
1520 #define KERNEL_FEATURE_NODE_MASK_SURFACE_BACKGROUND \
1521 (KERNEL_FEATURE_NODE_MASK_SURFACE_LIGHT | KERNEL_FEATURE_NODE_AOV)
1522 #define KERNEL_FEATURE_NODE_MASK_SURFACE_SHADOW \
1523 (KERNEL_FEATURE_NODE_BSDF | KERNEL_FEATURE_NODE_EMISSION | KERNEL_FEATURE_NODE_VOLUME | \
1524 KERNEL_FEATURE_NODE_BUMP | KERNEL_FEATURE_NODE_BUMP_STATE | \
1525 KERNEL_FEATURE_NODE_VORONOI_EXTRA | KERNEL_FEATURE_NODE_LIGHT_PATH)
1526 #define KERNEL_FEATURE_NODE_MASK_SURFACE \
1527 (KERNEL_FEATURE_NODE_MASK_SURFACE_SHADOW | KERNEL_FEATURE_NODE_RAYTRACE | \
1528 KERNEL_FEATURE_NODE_AOV | KERNEL_FEATURE_NODE_LIGHT_PATH)
1529 #define KERNEL_FEATURE_NODE_MASK_VOLUME \
1530 (KERNEL_FEATURE_NODE_EMISSION | KERNEL_FEATURE_NODE_VOLUME | \
1531 KERNEL_FEATURE_NODE_VORONOI_EXTRA | KERNEL_FEATURE_NODE_LIGHT_PATH)
1532 #define KERNEL_FEATURE_NODE_MASK_DISPLACEMENT \
1533 (KERNEL_FEATURE_NODE_VORONOI_EXTRA | KERNEL_FEATURE_NODE_BUMP | KERNEL_FEATURE_NODE_BUMP_STATE)
1534 #define KERNEL_FEATURE_NODE_MASK_BUMP KERNEL_FEATURE_NODE_MASK_DISPLACEMENT
1539 #ifdef __KERNEL_GPU__
1540 # define IF_KERNEL_FEATURE(feature) if ((node_feature_mask & (KERNEL_FEATURE_##feature)) != 0U)
1541 # define IF_KERNEL_NODES_FEATURE(feature) \
1542 if ((node_feature_mask & (KERNEL_FEATURE_NODE_##feature)) != 0U)
1544 # define IF_KERNEL_FEATURE(feature) \
1545 if constexpr ((node_feature_mask & (KERNEL_FEATURE_##feature)) != 0U)
1546 # define IF_KERNEL_NODES_FEATURE(feature) \
1547 if constexpr ((node_feature_mask & (KERNEL_FEATURE_NODE_##feature)) != 0U)
_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
int pad[32 - sizeof(int)]
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define CCL_NAMESPACE_END
struct KernelDistantLight KernelDistantLight
struct KernelShaderEvalInput KernelShaderEvalInput
@ PATH_MNEE_RECEIVER_ANCESTOR
@ PATH_MNEE_CULL_LIGHT_CONNECTION
struct KernelParticle KernelParticle
@ FILTER_CLOSURE_EMISSION
@ FILTER_CLOSURE_TRANSPARENT
@ FILTER_CLOSURE_DIRECT_LIGHT
@ FILTER_CLOSURE_TRANSMISSION
#define DECLARE_FILM_CONVERT_KERNEL(variant)
struct differential differential
struct LocalIntersection LocalIntersection
struct KernelTables KernelTables
@ SD_HAS_TRANSPARENT_SHADOW
@ SD_HAS_CONSTANT_EMISSION
@ SD_NEED_VOLUME_ATTRIBUTES
@ SD_HETEROGENEOUS_VOLUME
struct AttributeDescriptor AttributeDescriptor
@ PRIMITIVE_MOTION_CURVE_RIBBON
@ PRIMITIVE_MOTION_TRIANGLE
@ PRIMITIVE_MOTION_CURVE_THICK
#define MAX_VOLUME_CLOSURE
@ ATTR_STD_CURVE_INTERCEPT
@ ATTR_STD_GENERATED_TRANSFORM
@ ATTR_STD_MOTION_VERTEX_NORMAL
@ ATTR_STD_VOLUME_VELOCITY_Y
@ ATTR_STD_VOLUME_TEMPERATURE
@ ATTR_STD_VOLUME_VELOCITY_Z
@ ATTR_STD_VOLUME_DENSITY
@ ATTR_STD_POSITION_UNDISPLACED
@ ATTR_STD_VOLUME_VELOCITY
@ ATTR_STD_POSITION_UNDEFORMED
@ ATTR_STD_MOTION_VERTEX_POSITION
@ ATTR_STD_UV_TANGENT_SIGN
@ ATTR_STD_SHADOW_TRANSPARENCY
@ ATTR_STD_VOLUME_VELOCITY_X
@ ATTR_STD_RANDOM_PER_ISLAND
#define SHADER_CLOSURE_BASE
struct Intersection Intersection
@ DIRECT_LIGHT_SAMPLING_MIS
@ DIRECT_LIGHT_SAMPLING_NUM
@ DIRECT_LIGHT_SAMPLING_NEE
@ DIRECT_LIGHT_SAMPLING_FORWARD
struct ShaderVolumeClosure ShaderVolumeClosure
@ PATH_RAY_SHADOW_CATCHER_HIT
@ PATH_RAY_TERMINATE_AFTER_TRANSPARENT
@ PATH_RAY_SUBSURFACE_USE_FRESNEL
@ PATH_RAY_SUBSURFACE_BACKFACING
@ PATH_RAY_TERMINATE_AFTER_VOLUME
@ PATH_RAY_SHADOW_CATCHER_PASS
@ PATH_RAY_SINGLE_PASS_DONE
@ PATH_RAY_SHADOW_TRANSPARENT
@ PATH_RAY_VOLUME_SCATTER
@ PATH_RAY_TERMINATE_IN_NEXT_VOLUME
@ PATH_RAY_DENOISING_FEATURES
@ PATH_RAY_SHADOW_FOR_LIGHT
@ PATH_RAY_ALL_VISIBILITY
@ PATH_RAY_SUBSURFACE_DISK
@ PATH_RAY_NODE_UNALIGNED
@ PATH_RAY_TRANSPARENT_BACKGROUND
@ PATH_RAY_SHADOW_CATCHER_BACKGROUND
@ PATH_RAY_TERMINATE_ON_NEXT_SURFACE
@ PATH_RAY_DIFFUSE_ANCESTOR
@ PATH_RAY_SUBSURFACE_RANDOM_WALK
@ KERNEL_FEATURE_NODE_VOLUME
@ KERNEL_FEATURE_NODE_EMISSION
@ KERNEL_FEATURE_NODE_BSDF
@ KERNEL_FEATURE_NODE_BUMP
@ KERNEL_FEATURE_LIGHT_PASSES
@ KERNEL_FEATURE_OBJECT_MOTION
@ KERNEL_FEATURE_NODE_AOV
@ KERNEL_FEATURE_SUBSURFACE
@ KERNEL_FEATURE_PRINCIPLED
@ KERNEL_FEATURE_CAMERA_MOTION
@ KERNEL_FEATURE_SHADOW_CATCHER
@ KERNEL_FEATURE_AO_ADDITIVE
@ KERNEL_FEATURE_NODE_LIGHT_PATH
@ KERNEL_FEATURE_TRANSPARENT
@ KERNEL_FEATURE_HAIR_THICK
@ KERNEL_FEATURE_PATCH_EVALUATION
@ KERNEL_FEATURE_PATH_TRACING
@ KERNEL_FEATURE_SHADOW_PASS
@ KERNEL_FEATURE_NODE_VORONOI_EXTRA
@ KERNEL_FEATURE_NODE_BUMP_STATE
@ KERNEL_FEATURE_POINTCLOUD
@ KERNEL_FEATURE_DENOISING
@ KERNEL_FEATURE_NODE_RAYTRACE
struct KernelFilmConvert KernelFilmConvert
struct KernelCurveSegment KernelCurveSegment
struct KernelLight KernelLight
struct KernelShader KernelShader
struct KernelLightDistribution KernelLightDistribution
struct AttributeMap AttributeMap
struct KernelBake KernelBake
static_assert_align(KernelCamera, 16)
struct RaySelfPrimitives RaySelfPrimitives
@ SHADER_EXCLUDE_SHADOW_CATCHER
@ SHADER_EXCLUDE_TRANSMIT
@ DEVICE_KERNEL_INTEGRATOR_NUM
struct KernelCurve KernelCurve
struct KernelSpotLight KernelSpotLight
@ SD_OBJECT_HAS_VOLUME_ATTRIBUTES
@ SD_OBJECT_INTERSECTS_VOLUME
@ SD_OBJECT_HAS_VOLUME_MOTION
@ SD_OBJECT_CAUSTICS_RECEIVER
@ SD_OBJECT_SHADOW_CATCHER
@ SD_OBJECT_TRANSFORM_APPLIED
@ SD_OBJECT_HAS_VERTEX_MOTION
@ SD_OBJECT_NEGATIVE_SCALE_APPLIED
@ SD_OBJECT_CAUSTICS_CASTER
@ BVH_LAYOUT_MULTI_METAL_EMBREE
@ BVH_LAYOUT_MULTI_OPTIX_EMBREE
@ ATTR_ELEMENT_CORNER_BYTE
@ ATTR_ELEMENT_CURVE_KEY_MOTION
@ ATTR_ELEMENT_VERTEX_MOTION
@ LABEL_TRANSMIT_TRANSPARENT
@ LABEL_SUBSURFACE_SCATTER
struct VolumeStack VolumeStack
struct ShaderVolumePhases ShaderVolumePhases
struct KernelData KernelData
struct KernelObject KernelObject
@ PASS_SHADOW_CATCHER_SAMPLE_COUNT
@ PASS_TRANSMISSION_DIRECT
@ PASS_TRANSMISSION_COLOR
@ PASS_SHADOW_CATCHER_MATTE
@ PASS_TRANSMISSION_INDIRECT
@ PASS_ADAPTIVE_AUX_BUFFER
@ PASS_DENOISING_PREVIOUS
@ PASS_CATEGORY_LIGHT_END
struct KernelWorkTile KernelWorkTile
struct ccl_align(16) ShaderClosure
struct KernelAreaLight KernelAreaLight
@ PANORAMA_FISHEYE_EQUISOLID
@ PANORAMA_FISHEYE_EQUIDISTANT
@ PANORAMA_FISHEYE_LENS_POLYNOMIAL
@ PANORAMA_EQUIRECTANGULAR
#define CAUSTICS_MAX_CLOSURE
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_CHECK
@ DEVICE_KERNEL_INTEGRATOR_RESET
@ DEVICE_KERNEL_INTEGRATOR_QUEUED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_SHADE_LIGHT
@ DEVICE_KERNEL_FILTER_COLOR_PREPROCESS
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE
@ DEVICE_KERNEL_SHADER_EVAL_DISPLACE
@ DEVICE_KERNEL_INTEGRATOR_SHADOW_CATCHER_COUNT_POSSIBLE_SPLITS
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SUBSURFACE
@ DEVICE_KERNEL_INTEGRATOR_QUEUED_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_FILTER_GUIDING_SET_FAKE_ALBEDO
@ DEVICE_KERNEL_FILTER_COLOR_POSTPROCESS
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_TERMINATED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_VOLUME_STACK
@ DEVICE_KERNEL_SHADER_EVAL_BACKGROUND
@ DEVICE_KERNEL_INTEGRATOR_SORTED_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_STATES
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_RAYTRACE
@ DEVICE_KERNEL_FILTER_GUIDING_PREPROCESS
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_STATES
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_MNEE
@ DEVICE_KERNEL_INTEGRATOR_TERMINATED_SHADOW_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_MEGAKERNEL
@ DEVICE_KERNEL_INTEGRATOR_ACTIVE_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INIT_FROM_CAMERA
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_FILTER_Y
@ DEVICE_KERNEL_ADAPTIVE_SAMPLING_CONVERGENCE_FILTER_X
@ DEVICE_KERNEL_CRYPTOMATTE_POSTPROCESS
@ DEVICE_KERNEL_INTEGRATOR_COMPACT_PATHS_ARRAY
@ DEVICE_KERNEL_INTEGRATOR_INIT_FROM_BAKE
@ DEVICE_KERNEL_SHADER_EVAL_CURVE_SHADOW_TRANSPARENCY
@ DEVICE_KERNEL_INTEGRATOR_SHADE_VOLUME
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST
@ DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND
@ DEVICE_KERNEL_PREFIX_SUM
struct differential3 differential3
struct KernelCamera KernelCamera
ShaderDataCausticsStorage
ProjectionTransform ndctoworld
float pole_merge_angle_to
int have_perspective_motion
ProjectionTransform rastertocamera
float pole_merge_angle_from
ProjectionTransform worldtoraster
float fisheye_lens_polynomial_bias
Transform motion_pass_post
float4 equirectangular_range
ProjectionTransform screentoworld
ProjectionTransform perspective_post
float rolling_shutter_duration
ProjectionTransform perspective_pre
ProjectionTransform worldtoscreen
Transform motion_pass_pre
ProjectionTransform worldtondc
float convergence_distance
ProjectionTransform rastertoworld
float4 fisheye_lens_polynomial_coefficients
int pass_shadow_catcher_matte
int use_approximate_shadow_catcher_background
int pass_adaptive_aux_buffer
int use_approximate_shadow_catcher
int pass_shadow_catcher_sample_count
struct KernelLightDistribution::@1252::@1254 mesh_light
struct KernelLightDistribution::@1252::@1255 lamp
KernelDistantLight distant
float shadow_terminator_geometry_offset
uint attribute_map_offset
float shadow_terminator_shading_offset
float constant_emission[3]
struct Intersection hits[LOCAL_MAX_HITS]
float3 Ng[LOCAL_MAX_HITS]
ShaderVolumeClosure closure[MAX_VOLUME_CLOSURE]