17typedef struct DiffuseRampBsdf {
23static_assert(
sizeof(
ShaderClosure) >=
sizeof(DiffuseRampBsdf),
"DiffuseRampBsdf is too large!");
29 float npos =
pos * (
float)(MAXCOLORS - 1);
33 if (ipos >= (MAXCOLORS - 1))
34 return colors[MAXCOLORS - 1];
35 float offset = npos - (
float)ipos;
36 return colors[ipos] * (1.0f - offset) + colors[ipos + 1] * offset;
39ccl_device int bsdf_diffuse_ramp_setup(DiffuseRampBsdf *bsdf)
52 const DiffuseRampBsdf *bsdf = (
const DiffuseRampBsdf *)sc;
57 *pdf = cosNO * M_1_PI_F;
58 return rgb_to_spectrum(bsdf_diffuse_ramp_get_color(bsdf->colors, cosNO) * M_1_PI_F);
74 const DiffuseRampBsdf *bsdf = (
const DiffuseRampBsdf *)sc;
80 if (
dot(Ng, *wo) > 0.0f) {
additional_info("compositor_sum_squared_difference_float_shared") .push_constant(Type output_img float dot(value.rgb, luminance_coefficients)") .define("LOAD(value)"
#define CCL_NAMESPACE_END
draw_view in_light_buf[] float
@ CLOSURE_BSDF_DIFFUSE_RAMP_ID
#define SHADER_CLOSURE_BASE
ccl_device_inline Spectrum rgb_to_spectrum(float3 rgb)
ccl_device_inline void sample_cos_hemisphere(const float3 N, float2 rand_in, ccl_private float3 *wo, ccl_private float *pdf)
SPECTRUM_DATA_TYPE Spectrum
ccl_device_inline int float_to_int(float f)