23 #ifdef __DENOISING_FEATURES__
44 state, path, denoising_feature_throughput);
53 float sum_weight = 0.0f, sum_nonspecular_weight = 0.0f;
55 for (
int i = 0; i < sd->num_closure; i++) {
63 normal += sc->N * sc->sample_weight;
64 sum_weight += sc->sample_weight;
66 float3 closure_albedo = sc->weight;
73 closure_albedo *= bsdf->extra->fresnel_color;
77 closure_albedo *= bsdf->avg_value;
92 diffuse_albedo += closure_albedo;
93 sum_nonspecular_weight += sc->sample_weight;
96 specular_albedo += closure_albedo;
101 if ((sum_weight == 0.0f) || (sum_nonspecular_weight * 4.0f > sum_weight)) {
102 if (sum_weight != 0.0f) {
117 state, path, denoising_feature_throughput);
118 const float3 denoising_albedo =
ensure_finite(denoising_feature_throughput * diffuse_albedo);
138 state, path, denoising_feature_throughput);
203 const float3 position = sd->P;
232 const float matte_weight =
average(throughput) *
234 if (matte_weight > 0.0f) {
239 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
244 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
249 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
254 if (flag &
PASSMASK(DIFFUSE_COLOR)) {
259 if (flag &
PASSMASK(GLOSSY_COLOR)) {
264 if (flag &
PASSMASK(TRANSMISSION_COLOR)) {
271 const float mist_start =
kernel_data.film.mist_start;
272 const float mist_inv_depth =
kernel_data.film.mist_inv_depth;
275 float mist =
saturatef((depth - mist_start) * mist_inv_depth);
278 const float mist_falloff =
kernel_data.film.mist_falloff;
280 if (mist_falloff == 1.0f)
282 else if (mist_falloff == 2.0f)
284 else if (mist_falloff == 0.5f)
287 mist =
powf(mist, mist_falloff);
292 const float mist_output = (1.0f - mist) *
average(throughput * alpha);
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value NORMAL
CCL_NAMESPACE_BEGIN ccl_device_inline float bsdf_get_specular_roughness_squared(ccl_private const ShaderClosure *sc)
ccl_device float3 bsdf_principled_hair_albedo(ccl_private const ShaderClosure *sc)
@ PRINCIPLED_DIFFUSE_RETRO_REFLECTION
#define ccl_device_forceinline
#define ccl_device_inline
#define CCL_NAMESPACE_END
const KernelGlobalsCPU *ccl_restrict KernelGlobals
ccl_device_inline void kernel_write_id_slots(ccl_global float *buffer, int num_slots, float id, float weight)
IconTextureDrawCall normal
ccl_device_inline float camera_distance(KernelGlobals kg, float3 P)
ccl_device_inline float camera_z_depth(KernelGlobals kg, float3 P)
ccl_global float * buffer
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
const uint64_t render_pixel_index
ccl_device_inline float object_pass_id(KernelGlobals kg, int object)
ccl_device_inline float object_cryptomatte_asset_id(KernelGlobals kg, int object)
ccl_device int shader_pass_id(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device_inline float object_cryptomatte_id(KernelGlobals kg, int object)
ccl_device float3 shader_bsdf_average_normal(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float shader_bsdf_average_roughness(ccl_private const ShaderData *sd)
ccl_device float shader_cryptomatte_id(KernelGlobals kg, int shader)
ccl_device float3 shader_bsdf_transparency(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float3 shader_bsdf_transmission(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float3 shader_bsdf_diffuse(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float3 shader_bsdf_glossy(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float3 shader_bsdf_alpha(KernelGlobals kg, ccl_private const ShaderData *sd)
#define CLOSURE_IS_BSDF_MICROFACET_FRESNEL(type)
#define CLOSURE_IS_BSDF_OR_BSSRDF(type)
@ CLOSURE_BSDF_HAIR_PRINCIPLED_ID
@ CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID
@ CLOSURE_BSDF_PRINCIPLED_SHEEN_ID
@ PATH_RAY_SINGLE_PASS_DONE
@ PATH_RAY_DENOISING_FEATURES
@ PATH_RAY_TRANSPARENT_BACKGROUND
ccl_device_inline float average(const float2 &a)
ccl_device_inline float3 zero_float3()
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
CCL_NAMESPACE_BEGIN ccl_device_forceinline ccl_global float * kernel_pass_pixel_render_buffer(KernelGlobals kg, ConstIntegratorState state, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline void kernel_write_data_passes(KernelGlobals kg, IntegratorState state, ccl_private const ShaderData *sd, ccl_global float *ccl_restrict render_buffer)
ccl_device_inline size_t kernel_write_id_pass(ccl_global float *ccl_restrict buffer, size_t depth, float id, float matte_weight)
ccl_device_forceinline float4 primitive_motion_vector(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device_forceinline float3 primitive_uv(KernelGlobals kg, ccl_private const ShaderData *sd)
IntegratorStateCPU *ccl_restrict IntegratorState
#define INTEGRATOR_STATE_WRITE(state, nested_struct, member)
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 float sqr(float a)
ccl_device_inline float saturatef(float a)
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)