66 const float3 position = sd->P;
99 const float matte_weight =
average(throughput) *
101 if (matte_weight > 0.0f) {
106 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
111 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
116 cryptomatte_buffer,
kernel_data.film.cryptomatte_depth,
id, matte_weight);
138 const float mist_start =
kernel_data.film.mist_start;
139 const float mist_inv_depth =
kernel_data.film.mist_inv_depth;
142 float mist =
saturatef((depth - mist_start) * mist_inv_depth);
145 const float mist_falloff =
kernel_data.film.mist_falloff;
147 if (mist_falloff == 1.0f)
149 else if (mist_falloff == 2.0f)
151 else if (mist_falloff == 0.5f)
154 mist =
powf(mist, mist_falloff);
159 const float mist_output = (1.0f - mist) *
average(throughput * alpha);
ccl_device_inline void film_write_cryptomatte_slots(ccl_global float *buffer, int num_slots, float id, float weight)
ccl_device_inline void film_write_data_passes_background(KernelGlobals kg, IntegratorState state, ccl_global float *ccl_restrict render_buffer)
CCL_NAMESPACE_BEGIN ccl_device_inline size_t film_write_cryptomatte_pass(ccl_global float *ccl_restrict buffer, size_t depth, float id, float matte_weight)
ccl_device_inline void film_write_data_passes(KernelGlobals kg, IntegratorState state, ccl_private const ShaderData *sd, ccl_global float *ccl_restrict render_buffer)
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define kernel_data_fetch(name, index)
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline float camera_distance(KernelGlobals kg, float3 P)
ccl_device_inline float camera_z_depth(KernelGlobals kg, float3 P)
ccl_gpu_kernel_postfix ccl_global KernelWorkTile const int ccl_global float * render_buffer
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)
@ PATH_RAY_SHADOW_CATCHER_PASS
@ PATH_RAY_SINGLE_PASS_DONE
@ PATH_RAY_TRANSPARENT_BACKGROUND
ccl_device_inline float average(const float2 a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
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)
#define INTEGRATOR_STATE(state, nested_struct, member)
ccl_device Spectrum surface_shader_diffuse(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float3 surface_shader_average_normal(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device Spectrum surface_shader_glossy(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device Spectrum surface_shader_transparency(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device float surface_shader_average_roughness(ccl_private const ShaderData *sd)
ccl_device Spectrum surface_shader_alpha(KernelGlobals kg, ccl_private const ShaderData *sd)
ccl_device Spectrum surface_shader_transmission(KernelGlobals kg, ccl_private const ShaderData *sd)
SPECTRUM_DATA_TYPE Spectrum
ccl_device_inline void film_overwrite_pass_float3(ccl_global float *ccl_restrict buffer, 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_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_float4(ccl_global float *ccl_restrict buffer, float4 value)
ccl_device_inline void film_overwrite_pass_float(ccl_global float *ccl_restrict buffer, float value)
ccl_device_inline void film_write_pass_float(ccl_global float *ccl_restrict buffer, float value)