17 #ifndef __KERNEL_TYPES_H__
18 #define __KERNEL_TYPES_H__
20 #if !defined(__KERNEL_GPU__) && defined(WITH_EMBREE)
21 # include <embree3/rtcore.h>
22 # include <embree3/rtcore_scene.h>
30 #ifndef __KERNEL_GPU__
31 # define __KERNEL_CPU__
37 #ifndef ccl_addr_space
38 # define ccl_addr_space
44 #define OBJECT_MOTION_PASS_SIZE 2
45 #define FILTER_TABLE_SIZE 1024
46 #define RAMP_TABLE_SIZE 256
47 #define SHUTTER_TABLE_SIZE 256
49 #define BSSRDF_MIN_RADIUS 1e-8f
50 #define BSSRDF_MAX_HITS 4
51 #define BSSRDF_MAX_BOUNCES 256
52 #define LOCAL_MAX_HITS 4
54 #define VOLUME_BOUNDS_MAX 1024
56 #define BECKMANN_TABLE_SIZE 256
58 #define SHADER_NONE (~0)
59 #define OBJECT_NONE (~0)
60 #define PRIM_NONE (~0)
61 #define LAMP_NONE (~0)
62 #define ID_NONE (0.0f)
64 #define VOLUME_STACK_SIZE 32
67 #define WORK_POOL_SIZE_GPU 64
68 #define WORK_POOL_SIZE_CPU 1
70 # define WORK_POOL_SIZE WORK_POOL_SIZE_GPU
72 # define WORK_POOL_SIZE WORK_POOL_SIZE_CPU
75 #define SHADER_SORT_BLOCK_SIZE 2048
77 #ifdef __KERNEL_OPENCL__
78 # define SHADER_SORT_LOCAL_SIZE 64
79 #elif defined(__KERNEL_CUDA__)
80 # define SHADER_SORT_LOCAL_SIZE 32
82 # define SHADER_SORT_LOCAL_SIZE 1
88 #define __BACKGROUND__
89 #define __CAUSTICS_TRICKS__
90 #define __VISIBILITY_FLAG__
91 #define __RAY_DIFFERENTIALS__
92 #define __CAMERA_CLIPPING__
93 #define __INTERSECTION_REFINE__
94 #define __CLAMP_SAMPLE__
95 #define __PATCH_EVAL__
96 #define __SHADOW_TRICKS__
97 #define __DENOISING_FEATURES__
98 #define __SHADER_RAYTRACE__
105 #define __MULTI_CLOSURE__
106 #define __TRANSPARENT_SHADOWS__
107 #define __BACKGROUND_MIS__
109 #define __CAMERA_MOTION__
110 #define __OBJECT_MOTION__
112 #define __PRINCIPLED__
113 #define __SUBSURFACE__
115 #define __VOLUME_SCATTER__
117 #define __SHADOW_RECORD_ALL__
118 #define __BRANCHED_PATH__
121 #ifdef __KERNEL_CPU__
125 # define __VOLUME_DECOUPLED__
126 # define __VOLUME_RECORD_ALL__
129 #ifdef __KERNEL_CUDA__
130 # ifdef __SPLIT_KERNEL__
131 # undef __BRANCHED_PATH__
135 #ifdef __KERNEL_OPTIX__
137 # undef __BRANCHED_PATH__
140 #ifdef __KERNEL_OPENCL__
144 #ifdef __NO_CAMERA_MOTION__
145 # undef __CAMERA_MOTION__
147 #ifdef __NO_OBJECT_MOTION__
148 # undef __OBJECT_MOTION__
155 # undef __VOLUME_SCATTER__
157 #ifdef __NO_SUBSURFACE__
158 # undef __SUBSURFACE__
163 #ifdef __NO_BRANCHED_PATH__
164 # undef __BRANCHED_PATH__
166 #ifdef __NO_PATCH_EVAL__
167 # undef __PATCH_EVAL__
169 #ifdef __NO_TRANSPARENT__
170 # undef __TRANSPARENT_SHADOWS__
172 #ifdef __NO_SHADOW_TRICKS__
173 # undef __SHADOW_TRICKS__
175 #ifdef __NO_PRINCIPLED__
176 # undef __PRINCIPLED__
178 #ifdef __NO_DENOISING__
179 # undef __DENOISING_FEATURES__
181 #ifdef __NO_SHADER_RAYTRACE__
182 # undef __SHADER_RAYTRACE__
186 #ifdef WITH_CYCLES_DEBUG
187 # define __KERNEL_DEBUG__
190 #if defined(__SUBSURFACE__) || defined(__SHADER_RAYTRACE__)
191 # define __BVH_LOCAL__
340 #define PASS_NAME_JOIN(a, b) a##_##b
341 #define PASSMASK(pass) (1 << ((PASS_NAME_JOIN(PASS, pass)) % 32))
343 #define PASSMASK_COMPONENT(comp) \
344 (PASSMASK(PASS_NAME_JOIN(comp, DIRECT)) | PASSMASK(PASS_NAME_JOIN(comp, INDIRECT)) | \
345 PASSMASK(PASS_NAME_JOIN(comp, COLOR)))
359 #ifdef __KERNEL_DEBUG__
360 PASS_BVH_TRAVERSED_NODES,
361 PASS_BVH_TRAVERSED_INSTANCES,
362 PASS_BVH_INTERSECTIONS,
398 #define PASS_ANY (~0)
468 #ifdef __KERNEL_DEBUG__
472 typedef struct DebugData {
473 int num_bvh_traversed_nodes;
474 int num_bvh_traversed_instances;
475 int num_bvh_intersections;
525 #ifdef __SHADOW_TRICKS__
550 #ifdef __DENOISING_FEATURES__
556 #ifdef __KERNEL_DEBUG__
557 DebugData debug_data;
573 #ifdef __SHADOW_TRICKS__
646 #ifndef __KERNEL_OPENCL_AMD__
658 #ifdef __RAY_DIFFERENTIALS__
675 #ifdef __KERNEL_DEBUG__
676 int num_traversed_nodes;
677 int num_traversed_instances;
678 int num_intersections;
710 #define PRIMITIVE_PACK_SEGMENT(type, segment) ((segment << PRIMITIVE_NUM_TOTAL) | (type))
711 #define PRIMITIVE_UNPACK_SEGMENT(type) (type >> PRIMITIVE_NUM_TOTAL)
790 #ifdef __MULTI_CLOSURE__
791 # ifdef __SPLIT_KERNEL__
792 # define MAX_CLOSURE 1
794 # ifndef __MAX_CLOSURE__
795 # define MAX_CLOSURE 64
797 # define MAX_CLOSURE __MAX_CLOSURE__
801 # define MAX_CLOSURE 1
816 #define SHADER_CLOSURE_BASE \
819 float sample_weight; \
826 #ifdef __KERNEL_CPU__
966 #ifdef __RAY_DIFFERENTIALS__
982 #ifdef __OBJECT_MOTION__
994 struct KernelGlobals *osl_globals;
1003 int num_closure_left;
1004 float randb_closure;
1005 float3 svm_closure_weight;
1009 float3 closure_emission_background;
1010 float3 closure_transparent_extinction;
1024 #define AS_SHADER_DATA(shader_data_tiny_storage) ((ShaderData *)shader_data_tiny_storage)
1053 #ifdef __DENOISING_FEATURES__
1075 # ifdef __SPLIT_KERNEL__
1264 #ifdef __KERNEL_DEBUG__
1265 int pass_bvh_traversed_nodes;
1266 int pass_bvh_traversed_instances;
1267 int pass_bvh_intersections;
1268 int pass_ray_bounces;
1414 #ifdef __KERNEL_OPTIX__
1415 OptixTraversableHandle
scene;
1419 # ifndef __KERNEL_64_BIT__
1574 #define QUEUE_EMPTY_SLOT -1
1609 #ifdef __BRANCHED_PATH__
1618 # ifdef __SUBSURFACE__
1628 #define RAY_STATE_MASK 0x0F
1629 #define RAY_FLAG_MASK 0xF0
1664 #define ASSIGN_RAY_STATE(ray_state, ray_index, state) \
1665 (ray_state[ray_index] = ((ray_state[ray_index] & RAY_FLAG_MASK) | state))
1666 #define IS_STATE(ray_state, ray_index, state) \
1667 ((ray_index) != QUEUE_EMPTY_SLOT && ((ray_state)[(ray_index)] & RAY_STATE_MASK) == (state))
1668 #define ADD_RAY_FLAG(ray_state, ray_index, flag) \
1669 (ray_state[ray_index] = (ray_state[ray_index] | flag))
1670 #define REMOVE_RAY_FLAG(ray_state, ray_index, flag) \
1671 (ray_state[ray_index] = (ray_state[ray_index] & (~flag)))
1672 #define IS_FLAG(ray_state, ray_index, flag) (ray_state[ray_index] & flag)
1676 #define PATCH_MAX_CONTROL_VERTS 16
1680 #define PATCH_MAP_NODE_IS_SET (1 << 30)
1681 #define PATCH_MAP_NODE_IS_LEAF (1u << 31)
1682 #define PATCH_MAP_NODE_INDEX_MASK (~(PATCH_MAP_NODE_IS_SET | PATCH_MAP_NODE_IS_LEAF))
1699 #define NUM_PMJ_SAMPLES (64 * 64)
1700 #define NUM_PMJ_PATTERNS 48
_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
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define CCL_NAMESPACE_END
void KERNEL_FUNCTION_FULL_NAME() shader(KernelGlobals *kg, uint4 *input, float4 *output, int type, int filter, int i, int offset, int sample)
struct KernelBackground KernelBackground
struct KernelIntegrator KernelIntegrator
struct KernelDistantLight KernelDistantLight
struct KernelFilm KernelFilm
struct KernelParticle KernelParticle
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
@ ATTR_STD_CURVE_INTERCEPT
@ ATTR_STD_GENERATED_TRANSFORM
@ ATTR_STD_MOTION_VERTEX_NORMAL
@ ATTR_STD_VOLUME_TEMPERATURE
@ 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_RANDOM_PER_ISLAND
#define SHADER_CLOSURE_BASE
struct Intersection Intersection
struct KernelBVH KernelBVH
@ PATH_RAY_STORE_SHADOW_INFO
@ PATH_RAY_TERMINATE_AFTER_TRANSPARENT
@ PATH_RAY_SHADOW_NON_CATCHER
@ PATH_RAY_SHADOW_TRANSPARENT_CATCHER
@ PATH_RAY_SHADOW_OPAQUE_CATCHER
@ PATH_RAY_SHADOW_CATCHER
@ PATH_RAY_SHADOW_OPAQUE_NON_CATCHER
@ PATH_RAY_SINGLE_PASS_DONE
@ PATH_RAY_SHADOW_TRANSPARENT
@ PATH_RAY_VOLUME_SCATTER
@ PATH_RAY_SHADOW_TRANSPARENT_NON_CATCHER
@ PATH_RAY_TERMINATE_IMMEDIATE
@ PATH_RAY_ALL_VISIBILITY
@ PATH_RAY_NODE_UNALIGNED
@ PATH_RAY_TRANSPARENT_BACKGROUND
@ PATH_RAY_DIFFUSE_ANCESTOR
struct KernelLight KernelLight
struct KernelShader KernelShader
struct KernelLightDistribution KernelLightDistribution
struct PathState PathState
struct KernelBake KernelBake
ccl_addr_space struct PathRadiance PathRadiance
static_assert_align(KernelCamera, 16)
@ DENOISING_CLEAN_GLOSSY_IND
@ DENOISING_CLEAN_DIFFUSE_DIR
@ DENOISING_CLEAN_ALL_PASSES
@ DENOISING_CLEAN_TRANSMISSION_IND
@ DENOISING_CLEAN_DIFFUSE_IND
@ DENOISING_CLEAN_TRANSMISSION_DIR
@ DENOISING_CLEAN_GLOSSY_DIR
@ SHADER_EXCLUDE_TRANSMIT
ccl_addr_space struct ccl_align(16) ShaderClosure
struct KernelSpotLight KernelSpotLight
@ SD_OBJECT_HAS_VOLUME_ATTRIBUTES
@ SD_OBJECT_INTERSECTS_VOLUME
@ SD_OBJECT_SHADOW_CATCHER
@ SD_OBJECT_TRANSFORM_APPLIED
@ SD_OBJECT_HAS_VERTEX_MOTION
@ SD_OBJECT_NEGATIVE_SCALE_APPLIED
ccl_addr_space struct PathRadianceState PathRadianceState
@ BAKE_FILTER_TRANSMISSION_DIRECT
@ BAKE_FILTER_DIFFUSE_INDIRECT
@ BAKE_FILTER_GLOSSY_INDIRECT
@ BAKE_FILTER_DIFFUSE_DIRECT
@ BAKE_FILTER_TRANSMISSION_INDIRECT
@ BAKE_FILTER_GLOSSY_DIRECT
@ BVH_LAYOUT_MULTI_OPTIX_EMBREE
@ ATTR_ELEMENT_CORNER_BYTE
@ ATTR_ELEMENT_CURVE_KEY_MOTION
@ ATTR_ELEMENT_VERTEX_MOTION
@ LABEL_TRANSMIT_TRANSPARENT
struct VolumeStack VolumeStack
#define VOLUME_STACK_SIZE
struct KernelData KernelData
struct KernelObject KernelObject
@ PASS_TRANSMISSION_DIRECT
@ PASS_TRANSMISSION_COLOR
@ PASS_TRANSMISSION_INDIRECT
@ PASS_ADAPTIVE_AUX_BUFFER
@ PASS_CATEGORY_LIGHT_END
struct VolumeState VolumeState
@ RAY_BRANCHED_VOLUME_INDIRECT
@ RAY_LIGHT_INDIRECT_NEXT_ITER
@ RAY_BRANCHED_SUBSURFACE_INDIRECT
@ RAY_BRANCHED_LIGHT_INDIRECT
@ RAY_BRANCHED_INDIRECT_SHARED
@ RAY_SUBSURFACE_INDIRECT_NEXT_ITER
@ RAY_VOLUME_INDIRECT_NEXT_ITER
struct KernelAreaLight KernelAreaLight
@ PANORAMA_FISHEYE_EQUISOLID
@ PANORAMA_FISHEYE_EQUIDISTANT
@ PANORAMA_EQUIRECTANGULAR
@ SHADER_EVAL_TRANSMISSION_COLOR
@ SHADER_EVAL_TRANSMISSION
@ SHADER_EVAL_DIFFUSE_COLOR
@ SHADER_EVAL_GLOSSY_COLOR
@ SHADER_EVAL_ENVIRONMENT
struct SubsurfaceIndirectRays SubsurfaceIndirectRays
@ DENOISING_PASS_COLOR_VAR
@ DENOISING_PASS_PREFILTERED_VARIANCE
@ DENOISING_PASS_PREFILTERED_NORMAL
@ DENOISING_PASS_PREFILTERED_SHADOWING
@ DENOISING_PASS_SIZE_CLEAN
@ DENOISING_PASS_SIZE_BASE
@ DENOISING_PASS_PREFILTERED_DEPTH
@ DENOISING_PASS_SIZE_PREFILTERED
@ DENOISING_PASS_PREFILTERED_ALBEDO
@ DENOISING_PASS_NORMAL_VAR
@ DENOISING_PASS_ALBEDO_VAR
@ DENOISING_PASS_SHADOW_B
@ DENOISING_PASS_DEPTH_VAR
@ DENOISING_PASS_SHADOW_A
@ DENOISING_PASS_PREFILTERED_COLOR
@ DENOISING_PASS_PREFILTERED_INTENSITY
struct differential3 differential3
@ BAKE_FILTER_TRANSMISSION
struct KernelCamera KernelCamera
@ QUEUE_LIGHT_INDIRECT_ITER
@ QUEUE_SHADOW_RAY_CAST_DL_RAYS
@ QUEUE_SHADER_SORTED_RAYS
@ QUEUE_HITBG_BUFF_UPDATE_TOREGEN_RAYS
@ QUEUE_SHADOW_RAY_CAST_AO_RAYS
@ QUEUE_VOLUME_INDIRECT_ITER
@ QUEUE_SUBSURFACE_INDIRECT_ITER
@ QUEUE_ACTIVE_AND_REGENERATED_RAYS
float transparent_roughness_squared_threshold
ProjectionTransform ndctoworld
float pole_merge_angle_to
int have_perspective_motion
ProjectionTransform rastertocamera
float pole_merge_angle_from
ProjectionTransform worldtoraster
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
KernelBackground background
KernelIntegrator integrator
int pass_transmission_color
int pass_adaptive_aux_buffer
int pass_transmission_indirect
int pass_transmission_direct
int display_pass_components
int pass_bake_differential
float pass_alpha_threshold
int pass_diffuse_indirect
int display_divide_pass_stride
int use_display_pass_alpha
float sample_clamp_indirect
int transparent_max_bounce
int use_ambient_occlusion
int adaptive_stop_per_sample
int sample_all_lights_indirect
float light_inv_rr_threshold
int sample_all_lights_direct
int transparent_min_bounce
int max_transmission_bounce
float sample_clamp_direct
struct KernelLightDistribution::@1195::@1198 lamp
struct KernelLightDistribution::@1195::@1197 mesh_light
KernelDistantLight distant
float shadow_terminator_offset
uint attribute_map_offset
float constant_emission[3]
struct Intersection hits[LOCAL_MAX_HITS]
float3 weight[LOCAL_MAX_HITS]
float3 Ng[LOCAL_MAX_HITS]
float3 color_transmission
struct PathRadianceState state
float3 indirect_transmission
float3 direct_transmission
float shadow_transparency
float3 shadow_background_color
float denoising_feature_weight
float3 denoising_feature_throughput
VolumeStack volume_stack[VOLUME_STACK_SIZE]
struct PathRadianceState L_state[BSSRDF_MAX_HITS]
PathState state[BSSRDF_MAX_HITS]
struct Ray rays[BSSRDF_MAX_HITS]
float3 throughputs[BSSRDF_MAX_HITS]
ccl_global float * buffer