13#ifdef __DENOISING_FEATURES__
40 state, path, denoising_feature_throughput);
49 float sum_weight = 0.0f;
50 float sum_nonspecular_weight = 0.0f;
52 for (
int i = 0;
i < sd->num_closure;
i++) {
63 sum_weight += sc->sample_weight;
70 diffuse_albedo += closure_albedo;
71 sum_nonspecular_weight += sc->sample_weight;
74 specular_albedo += closure_albedo;
79 if ((sum_weight == 0.0f) || (sum_nonspecular_weight * 4.0f > sum_weight)) {
80 if (sum_weight != 0.0f) {
95 state, path, denoising_feature_throughput);
117 state, path, denoising_feature_throughput);
CCL_NAMESPACE_BEGIN ccl_device_inline float bsdf_get_specular_roughness_squared(const ccl_private ShaderClosure *sc)
ccl_device_inline Spectrum bsdf_albedo(KernelGlobals kg, const ccl_private ShaderData *sd, const ccl_private ShaderClosure *sc, const bool reflection, const bool transmission)
#define ccl_device_forceinline
const ThreadKernelGlobalsCPU * KernelGlobals
#define CLOSURE_IS_BSDF_OR_BSSRDF(type)
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
@ CLOSURE_BSDF_HAIR_HUANG_ID
@ PATH_RAY_SHADOW_CATCHER_PASS
@ PATH_RAY_DENOISING_FEATURES
ccl_device_inline float ensure_finite(const float v)
ccl_device_inline float2 safe_normalize(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
closure color scatter(string phase, float Anisotropy, float IOR, float Backscatter, float Alpha, float Diameter)
#define INTEGRATOR_STATE_WRITE(state, nested_struct, member)
#define INTEGRATOR_STATE(state, nested_struct, member)
IntegratorStateCPU * IntegratorState
ccl_device_inline void film_write_pass_float3(ccl_global float *ccl_restrict buffer, const float3 value)
ccl_device_inline void film_write_pass_spectrum(ccl_global float *ccl_restrict buffer, Spectrum value)
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)