13#ifdef __DENOISING_FEATURES__
40 state, path, denoising_feature_throughput);
49 float sum_weight = 0.0f, sum_nonspecular_weight = 0.0f;
51 for (
int i = 0; i < sd->num_closure; i++) {
62 sum_weight += sc->sample_weight;
69 diffuse_albedo += closure_albedo;
70 sum_nonspecular_weight += sc->sample_weight;
73 specular_albedo += closure_albedo;
78 if ((sum_weight == 0.0f) || (sum_nonspecular_weight * 4.0f > sum_weight)) {
79 if (sum_weight != 0.0f) {
94 state, path, denoising_feature_throughput);
116 state, path, denoising_feature_throughput);
CCL_NAMESPACE_BEGIN ccl_device_inline float bsdf_get_specular_roughness_squared(ccl_private const ShaderClosure *sc)
ccl_device_inline Spectrum bsdf_albedo(KernelGlobals kg, ccl_private const ShaderData *sd, ccl_private const ShaderClosure *sc, const bool reflection, const bool transmission)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define ccl_device_forceinline
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
#define CLOSURE_IS_BSDF_OR_BSSRDF(type)
@ CLOSURE_BSDF_HAIR_HUANG_ID
@ PATH_RAY_SHADOW_CATCHER_PASS
@ PATH_RAY_DENOISING_FEATURES
ccl_device_inline float average(const float2 a)
ccl_device_inline float2 safe_normalize(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
IntegratorStateCPU *ccl_restrict IntegratorState
#define INTEGRATOR_STATE_WRITE(state, nested_struct, member)
#define INTEGRATOR_STATE(state, nested_struct, member)
SPECTRUM_DATA_TYPE Spectrum
ccl_device_inline float ensure_finite(float v)
ccl_device_inline float sqr(float a)
ccl_device_inline void film_write_pass_spectrum(ccl_global float *ccl_restrict buffer, Spectrum value)
ccl_device_inline void film_write_pass_float3(ccl_global float *ccl_restrict buffer, float3 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)
ccl_device_inline void film_write_pass_float(ccl_global float *ccl_restrict buffer, float value)