21#ifdef __TRANSPARENT_SHADOWS__
53 shadow_volume_stack_enter_exit(kg,
state, shadow_sd);
69 const int num_recorded_hits,
92 shader_setup_from_volume(kg, shadow_sd, &ray,
OBJECT_NONE);
95 const float step_size = volume_stack_step_size(kg, volume_read_lambda_pass);
97 volume_shadow_heterogeneous(kg,
state, &ray, shadow_sd, throughput, step_size);
109 for (
uint hit = 0; hit < num_recorded_hits + 1; hit++) {
113 if (!integrator_state_shadow_volume_stack_is_empty(kg,
state)) {
115 integrate_transparent_volume_shadow(kg,
state, hit, num_recorded_hits, &throughput);
126 if (hit < num_recorded_hits) {
127 const Spectrum shadow = integrate_transparent_surface_shadow(kg,
state, hit);
161#ifdef __TRANSPARENT_SHADOWS__
163 const bool opaque = integrate_transparent_shadow(kg,
state, num_hits);
ccl_device_forceinline float intersection_t_offset(const float t)
#define ccl_optional_struct_init
#define AS_SHADER_DATA(shader_data_tiny_storage)
#define INTEGRATOR_SHADOW_ISECT_SIZE
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
ccl_device_forceinline void guiding_record_direct_light(KernelGlobals kg, IntegratorShadowState state)
ShaderData ShaderDataTinyStorage
@ DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW
@ DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW
ccl_device_inline void film_write_direct_light(KernelGlobals kg, ConstIntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline bool is_zero(const float2 a)
#define PROFILING_INIT(kg, event)
@ PROFILING_SHADE_SHADOW_SURFACE
@ PROFILING_SHADE_SHADOW_VOLUME
@ PROFILING_SHADE_SHADOW_SETUP
ccl_device void integrator_shade_shadow(KernelGlobals kg, IntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
CCL_NAMESPACE_BEGIN ccl_device_inline bool shadow_intersections_has_remaining(const uint num_hits)
ccl_device_inline void shader_setup_from_ray(KernelGlobals kg, ccl_private ShaderData *ccl_restrict sd, const ccl_private Ray *ccl_restrict ray, const ccl_private Intersection *ccl_restrict isect)
IntegratorShadowStateCPU * IntegratorShadowState
#define INTEGRATOR_STATE_WRITE(state, nested_struct, member)
#define INTEGRATOR_STATE(state, nested_struct, member)
#define INTEGRATOR_STATE_ARRAY(state, nested_struct, array_index, member)
ccl_device_forceinline void integrator_shadow_path_terminate(KernelGlobals kg, IntegratorShadowState state, const DeviceKernel current_kernel)
ccl_device_forceinline void integrator_shadow_path_next(KernelGlobals kg, IntegratorShadowState state, const DeviceKernel current_kernel, const DeviceKernel next_kernel)
ccl_device_forceinline void integrator_state_read_shadow_ray(ConstIntegratorShadowState state, ccl_private Ray *ccl_restrict ray)
ccl_device_forceinline void integrator_state_read_shadow_isect(ConstIntegratorShadowState state, ccl_private Intersection *ccl_restrict isect, const int index)
ccl_device void surface_shader_eval(KernelGlobals kg, ConstIntegratorGenericState state, ccl_private ShaderData *ccl_restrict sd, ccl_global float *ccl_restrict buffer, const uint32_t path_flag, bool use_caustics_storage=false)
ccl_device Spectrum surface_shader_transparency(KernelGlobals kg, const ccl_private ShaderData *sd)