32 eval->diffuse = value;
39 if (
dot(sc->N, wo) > 0.0f) {
60 eval->diffuse += value;
63 eval->glossy += value;
66 if (
dot(sc->N, wo) > 0.0f) {
67 eval->glossy += value;
86 eval->diffuse *= value;
87 eval->glossy *= value;
93 eval->diffuse *= value;
94 eval->glossy *= value;
126#ifdef __KERNEL_DEBUG_NAN__
128 kernel_assert(!
"Cycles sample with non-finite value detected");
136#ifdef __CLAMP_SAMPLE__
137 float limit = (bounce > 0) ?
kernel_data.integrator.sample_clamp_indirect :
190 contribution_rgb.
y * 2.0f,
191 contribution_rgb.
z * 2.0f,
200#ifdef __SHADOW_CATCHER__
220 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
228 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
239 const float transparent,
254 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
258 buffer +
kernel_data.film.pass_shadow_catcher_matte,
259 make_float4(contribution_rgb.
x, contribution_rgb.
y, contribution_rgb.
z, transparent));
266 if (kernel_shadow_catcher_is_object_pass(path_flag)) {
279 const float transparent,
289 if (kernel_shadow_catcher_is_matte_path(path_flag)) {
310 average(throughput));
326#ifdef __SHADOW_CATCHER__
327 if (film_write_shadow_catcher(kg, path_flag, contribution, buffer)) {
344 const float transparent,
347#ifdef __SHADOW_CATCHER__
348 if (film_write_shadow_catcher_transparent(kg, path_flag, contribution, transparent, buffer)) {
358 make_float4(contribution_rgb.
x, contribution_rgb.
y, contribution_rgb.
z, transparent));
382# ifdef __DENOISING_FEATURES__
386 state, path, denoising_feature_throughput);
387 const Spectrum denoising_albedo = denoising_feature_throughput * contribution;
405 else if (is_shadowcatcher) {
434 transmission_weight * contribution);
442 contribution *= diffuse_weight;
532 transmission_weight * contribution);
540 contribution *= diffuse_weight;
567 const float transparent,
574#ifdef __SHADOW_CATCHER__
575 film_write_shadow_catcher_transparent_only(kg, path_flag, transparent, buffer);
583 const float transparent,
596 const float transparent,
597 const bool is_transparent_background_ray,
606 if (is_transparent_background_ray) {
637 kg,
state, contribution, buffer,
kernel_data.film.pass_emission, lightgroup);
643 const float mis_weight,
656 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)
additional_info("compositor_sum_squared_difference_float_shared") .push_constant(Type output_img float dot(value.rgb, luminance_coefficients)") .define("LOAD(value)"
#define kernel_assert(cond)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define ccl_device_forceinline
#define ccl_device_inline
#define CCL_NAMESPACE_END
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
#define CLOSURE_IS_GLASS(type)
#define CLOSURE_IS_BSDF_GLOSSY(type)
#define CLOSURE_IS_BSDF_DIFFUSE(type)
@ PATH_RAY_SHADOW_CATCHER_HIT
@ PATH_RAY_DENOISING_FEATURES
@ PATH_RAY_SHADOW_CATCHER_BACKGROUND
#define KERNEL_FEATURE_LIGHT_PASSES
#define KERNEL_FEATURE_AO_PASS
#define KERNEL_FEATURE_AO_ADDITIVE
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 Spectrum bsdf_eval_sum(ccl_private const BsdfEval *eval)
ccl_device_inline void bsdf_eval_mul(ccl_private BsdfEval *eval, float value)
CCL_NAMESPACE_BEGIN ccl_device_inline void bsdf_eval_init(ccl_private BsdfEval *eval, ccl_private const ShaderClosure *sc, const float3 wo, Spectrum value)
ccl_device_inline int film_write_sample(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer, int sample, int sample_offset)
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_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(ccl_private const BsdfEval *eval)
ccl_device_forceinline void film_clamp_light(KernelGlobals kg, ccl_private Spectrum *L, int bounce)
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_inline void bsdf_eval_accum(ccl_private BsdfEval *eval, ccl_private const ShaderClosure *sc, const float3 wo, Spectrum value)
ccl_device_inline Spectrum bsdf_eval_pass_diffuse_weight(ccl_private const 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 bool is_zero(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(int pattern, int sample)
const IntegratorShadowStateCPU *ccl_restrict ConstIntegratorShadowState
IntegratorStateCPU *ccl_restrict IntegratorState
const IntegratorStateCPU *ccl_restrict ConstIntegratorState
#define INTEGRATOR_STATE(state, nested_struct, member)
SPECTRUM_DATA_TYPE Spectrum
ccl_device_inline float ensure_finite(float v)
ccl_device_inline bool isfinite_safe(float f)
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_NAMESPACE_BEGIN ccl_device_forceinline ccl_global float * film_pass_pixel_render_buffer(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline void film_write_pass_float4(ccl_global float *ccl_restrict buffer, float4 value)
ccl_device_inline void film_write_pass_float(ccl_global float *ccl_restrict buffer, float value)