34 eval->diffuse = value;
41 if (
dot(sc->N, wo) > 0.0f) {
62 eval->diffuse += value;
65 eval->glossy += value;
68 if (
dot(sc->N, wo) > 0.0f) {
69 eval->glossy += value;
88 eval->diffuse *= value;
89 eval->glossy *= value;
95 eval->diffuse *= value;
96 eval->glossy *= value;
130#ifdef __KERNEL_DEBUG_NAN__
132 kernel_assert(!
"Cycles sample with non-finite value detected");
140#ifdef __CLAMP_SAMPLE__
141 const float limit = (bounce > 0) ?
kernel_data.integrator.sample_clamp_indirect :
162 const int sample_offset)
194 contribution_rgb.
y * 2.0f,
195 contribution_rgb.
z * 2.0f,
204#ifdef __SHADOW_CATCHER__
212 const uint32_t path_flag,
224 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
232 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
241 const uint32_t path_flag,
243 const float transparent,
258 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
269 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
281 const uint32_t path_flag,
282 const float transparent,
292 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
324 const uint32_t path_flag,
329#ifdef __SHADOW_CATCHER__
330 if (film_write_shadow_catcher(kg, path_flag, contribution, buffer)) {
344 const uint32_t path_flag,
347 const float transparent,
350#ifdef __SHADOW_CATCHER__
351 if (film_write_shadow_catcher_transparent(kg, path_flag, contribution, transparent, buffer)) {
384# ifdef __DENOISING_FEATURES__
388 state, path, denoising_feature_throughput);
389 const Spectrum denoising_albedo = denoising_feature_throughput * contribution;
407 else if (is_shadowcatcher) {
436 transmission_weight * contribution);
444 contribution *= diffuse_weight;
534 transmission_weight * contribution);
542 contribution *= diffuse_weight;
568 const uint32_t path_flag,
569 const float transparent,
576#ifdef __SHADOW_CATCHER__
577 film_write_shadow_catcher_transparent_only(kg, path_flag, transparent, buffer);
584 const uint32_t path_flag,
585 const float transparent,
598 const float transparent,
599 const bool is_transparent_background_ray,
608 if (is_transparent_background_ray) {
639 kg,
state, contribution, buffer,
kernel_data.film.pass_emission, lightgroup);
645 const float mis_weight,
658 kg,
state, contribution, buffer,
kernel_data.film.pass_emission, lightgroup);
MINLINE float safe_divide(float a, float b)
ATOMIC_INLINE uint32_t atomic_fetch_and_add_uint32(uint32_t *p, uint32_t x)
static T sum(const btAlignedObjectArray< T > &items)
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define kernel_assert(cond)
#define CLOSURE_IS_GLASS(type)
#define ccl_device_forceinline
#define CLOSURE_IS_BSDF_GLOSSY(type)
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define KERNEL_FEATURE_LIGHT_PASSES
#define KERNEL_FEATURE_AO_PASS
#define CLOSURE_IS_BSDF_DIFFUSE(type)
#define KERNEL_FEATURE_AO_ADDITIVE
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
@ PATH_RAY_SHADOW_CATCHER_HIT
@ PATH_RAY_DENOISING_FEATURES
@ PATH_RAY_SHADOW_CATCHER_BACKGROUND
ccl_device_inline float3 spectrum_to_rgb(Spectrum s)
ccl_device_inline void film_write_background(KernelGlobals kg, ConstIntegratorState state, const Spectrum L, const float transparent, const bool is_transparent_background_ray, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline void film_write_transparent(KernelGlobals kg, ConstIntegratorState state, const uint32_t path_flag, const float transparent, ccl_global float *ccl_restrict buffer)
ccl_device_inline void film_write_surface_emission(KernelGlobals kg, ConstIntegratorState state, const Spectrum L, const float mis_weight, ccl_global float *ccl_restrict render_buffer, const int lightgroup=LIGHTGROUP_NONE)
ccl_device_inline void film_write_direct_light(KernelGlobals kg, ConstIntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
ccl_device void film_write_adaptive_buffer(KernelGlobals kg, const int sample, const Spectrum contribution, ccl_global float *ccl_restrict buffer)
ccl_device_inline void film_write_holdout(KernelGlobals kg, ConstIntegratorState state, const uint32_t path_flag, const float transparent, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline bool bsdf_eval_is_zero(ccl_private BsdfEval *eval)
ccl_device_inline void film_write_volume_emission(KernelGlobals kg, ConstIntegratorState state, const Spectrum L, ccl_global float *ccl_restrict render_buffer, const int lightgroup=LIGHTGROUP_NONE)
CCL_NAMESPACE_BEGIN ccl_device_inline void bsdf_eval_init(ccl_private BsdfEval *eval, const ccl_private ShaderClosure *sc, const float3 wo, Spectrum value)
ccl_device_inline void film_write_combined_pass(KernelGlobals kg, const uint32_t path_flag, const int sample, const Spectrum contribution, ccl_global float *ccl_restrict buffer)
ccl_device_inline Spectrum bsdf_eval_pass_glossy_weight(const ccl_private BsdfEval *eval)
ccl_device_inline void bsdf_eval_accum(ccl_private BsdfEval *eval, const ccl_private ShaderClosure *sc, const float3 wo, Spectrum value)
ccl_device_inline void bsdf_eval_mul(ccl_private BsdfEval *eval, const float value)
ccl_device_inline int film_write_sample(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer, const int sample, const int sample_offset)
ccl_device_inline Spectrum bsdf_eval_sum(const ccl_private BsdfEval *eval)
ccl_device_inline void film_write_emission_or_background_pass(KernelGlobals kg, ConstIntegratorState state, Spectrum contribution, ccl_global float *ccl_restrict buffer, const int pass, const int lightgroup=LIGHTGROUP_NONE)
ccl_device_forceinline void film_clamp_light(KernelGlobals kg, ccl_private Spectrum *L, const int bounce)
ccl_device_inline Spectrum bsdf_eval_pass_diffuse_weight(const ccl_private BsdfEval *eval)
ccl_device_inline void film_write_combined_transparent_pass(KernelGlobals kg, const uint32_t path_flag, const int sample, const Spectrum contribution, const float transparent, ccl_global float *ccl_restrict buffer)
ccl_device_inline float ensure_finite(const float v)
ccl_device_inline bool isfinite_safe(const float f)
ccl_device_inline bool is_zero(const float2 a)
ccl_device_inline float average(const float2 a)
ccl_device_inline float reduce_add(const float2 a)
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline bool sample_is_class_A(const int pattern, const int sample)
#define INTEGRATOR_STATE(state, nested_struct, member)
const IntegratorShadowStateCPU * ConstIntegratorShadowState
IntegratorStateCPU * IntegratorState
const IntegratorStateCPU * ConstIntegratorState
ccl_device_inline void film_write_pass_float4(ccl_global float *ccl_restrict buffer, const float4 value)
ccl_device_inline void film_write_pass_spectrum(ccl_global float *ccl_restrict buffer, Spectrum value)
ccl_device_forceinline ccl_global float * film_pass_pixel_render_buffer_shadow(KernelGlobals kg, ConstIntegratorShadowState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline void film_write_pass_float(ccl_global float *ccl_restrict buffer, const float value)
CCL_NAMESPACE_BEGIN ccl_device_forceinline ccl_global float * film_pass_pixel_render_buffer(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer)