30 eval->diffuse = value;
44 eval->diffuse += value;
47 eval->glossy += value;
60 eval->diffuse *= value;
61 eval->glossy *= value;
67 eval->diffuse *= value;
68 eval->glossy *= value;
100 #ifdef __KERNEL_DEBUG_NAN__
102 kernel_assert(!
"Cycles sample with non-finite value detected");
110 #ifdef __CLAMP_SAMPLE__
111 float limit = (bounce > 0) ?
kernel_data.integrator.sample_clamp_indirect :
157 const float3 contribution,
172 make_float4(contribution.
x * 2.0f, contribution.
y * 2.0f, contribution.
z * 2.0f, 0.0f));
180 #ifdef __SHADOW_CATCHER__
189 const float3 contribution,
200 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
208 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
218 const float3 contribution,
219 const float transparent,
234 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
237 make_float4(contribution.
x, contribution.
y, contribution.
z, transparent));
244 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
257 const float transparent,
267 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
282 const float3 contribution,
285 #ifdef __SHADOW_CATCHER__
286 if (kernel_accum_shadow_catcher(kg, path_flag, contribution,
buffer)) {
302 const float3 contribution,
303 const float transparent,
307 #ifdef __SHADOW_CATCHER__
308 if (kernel_accum_shadow_catcher_transparent(kg, path_flag, contribution, transparent,
buffer)) {
316 make_float4(contribution.
x, contribution.
y, contribution.
z, transparent));
340 # ifdef __DENOISING_FEATURES__
344 state, path, denoising_feature_throughput);
345 const float3 denoising_albedo = denoising_feature_throughput * contribution;
362 else if (is_shadowcatcher) {
389 const float3 transmission_weight =
one_float3() - diffuse_weight - glossy_weight;
391 transmission_weight * contribution);
399 contribution *= diffuse_weight;
490 const float3 transmission_weight =
one_float3() - diffuse_weight - glossy_weight;
492 transmission_weight * contribution);
500 contribution *= diffuse_weight;
520 state, shadow_path, unshadowed_throughput);
538 const float transparent,
545 kernel_accum_shadow_catcher_transparent_only(kg, path_flag, transparent,
buffer);
552 const float transparent,
565 const float transparent,
566 const bool is_transparent_background_ray,
575 if (is_transparent_background_ray) {
581 kg, path_flag,
sample, contribution, transparent,
buffer);
ccl_device_inline float3 bsdf_eval_pass_diffuse_weight(ccl_private const BsdfEval *eval)
ccl_device_inline void bsdf_eval_accum(ccl_private BsdfEval *eval, const ClosureType closure_type, float3 value)
ccl_device_inline void kernel_accum_transparent(KernelGlobals kg, ConstIntegratorState state, const uint32_t path_flag, const float transparent, ccl_global float *ccl_restrict buffer)
ccl_device_inline void bsdf_eval_mul(ccl_private BsdfEval *eval, float value)
ccl_device_inline void kernel_accum_background(KernelGlobals kg, ConstIntegratorState state, const float3 L, const float transparent, const bool is_transparent_background_ray, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline float3 bsdf_eval_pass_glossy_weight(ccl_private const BsdfEval *eval)
ccl_device_inline bool bsdf_eval_is_zero(ccl_private BsdfEval *eval)
ccl_device_inline void kernel_accum_emission_or_background_pass(KernelGlobals kg, ConstIntegratorState state, float3 contribution, ccl_global float *ccl_restrict buffer, const int pass, const int lightgroup=LIGHTGROUP_NONE)
ccl_device_inline void kernel_accum_holdout(KernelGlobals kg, ConstIntegratorState state, const uint32_t path_flag, const float transparent, ccl_global float *ccl_restrict render_buffer)
ccl_device_forceinline void kernel_accum_clamp(KernelGlobals kg, ccl_private float3 *L, int bounce)
ccl_device_inline void kernel_accum_emission(KernelGlobals kg, ConstIntegratorState state, const float3 L, ccl_global float *ccl_restrict render_buffer, const int lightgroup=LIGHTGROUP_NONE)
ccl_device_forceinline ccl_global float * kernel_accum_pixel_render_buffer(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline float3 bsdf_eval_sum(ccl_private const BsdfEval *eval)
ccl_device_inline void kernel_accum_light(KernelGlobals kg, ConstIntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline void kernel_accum_combined_transparent_pass(KernelGlobals kg, const uint32_t path_flag, const int sample, const float3 contribution, const float transparent, ccl_global float *ccl_restrict buffer)
ccl_device void kernel_accum_adaptive_buffer(KernelGlobals kg, const int sample, const float3 contribution, ccl_global float *ccl_restrict buffer)
ccl_device_inline void kernel_accum_combined_pass(KernelGlobals kg, const uint32_t path_flag, const int sample, const float3 contribution, ccl_global float *ccl_restrict buffer)
ccl_device_inline int kernel_accum_sample(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer, int sample, int sample_offset)
CCL_NAMESPACE_BEGIN ccl_device_inline void bsdf_eval_init(ccl_private BsdfEval *eval, const ClosureType closure_type, float3 value)
ATOMIC_INLINE uint32_t atomic_fetch_and_add_uint32(uint32_t *p, uint32_t x)
__forceinline int reduce_add(const avxi &v)
static T sum(const btAlignedObjectArray< T > &items)
#define kernel_assert(cond)
#define ccl_device_forceinline
#define ccl_device_inline
#define CCL_NAMESPACE_END
const KernelGlobalsCPU *ccl_restrict KernelGlobals
ccl_global float * buffer
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
const uint64_t render_pixel_index
#define CLOSURE_IS_BSDF_GLOSSY(type)
#define CLOSURE_IS_BSDF_DIFFUSE(type)
@ PATH_RAY_SHADOW_CATCHER_HIT
@ PATH_RAY_DENOISING_FEATURES
@ PATH_RAY_SHADOW_FOR_LIGHT
@ PATH_RAY_TRANSPARENT_BACKGROUND
@ PATH_RAY_SHADOW_CATCHER_BACKGROUND
@ KERNEL_FEATURE_LIGHT_PASSES
@ KERNEL_FEATURE_AO_ADDITIVE
ccl_device_inline float2 fabs(const float2 &a)
ccl_device_inline float3 one_float3()
ccl_device_inline float3 zero_float3()
T safe_divide(const T &a, const T &b)
ccl_device_inline bool sample_is_even(int pattern, int sample)
const IntegratorShadowStateCPU *ccl_restrict ConstIntegratorShadowState
const IntegratorStateCPU *ccl_restrict ConstIntegratorState
#define INTEGRATOR_STATE(state, nested_struct, member)
unsigned __int64 uint64_t
ccl_device_inline float ensure_finite(float v)
ccl_device_inline bool isfinite_safe(float f)
CCL_NAMESPACE_BEGIN ccl_device_inline void kernel_write_pass_float(ccl_global float *ccl_restrict buffer, float value)
ccl_device_inline void kernel_write_pass_float3(ccl_global float *ccl_restrict buffer, float3 value)
ccl_device_inline void kernel_write_pass_float4(ccl_global float *ccl_restrict buffer, float4 value)