19struct DiffuseRampBsdf {
25static_assert(
sizeof(ShaderClosure) >=
sizeof(DiffuseRampBsdf),
"DiffuseRampBsdf is too large!");
29 const int MAXCOLORS = 8;
31 const float npos =
pos * (
float)(MAXCOLORS - 1);
36 if (ipos >= (MAXCOLORS - 1)) {
37 return colors[MAXCOLORS - 1];
39 const float offset = npos - (
float)ipos;
40 return colors[ipos] * (1.0f - offset) + colors[ipos + 1] * offset;
43ccl_device int bsdf_diffuse_ramp_setup(DiffuseRampBsdf *bsdf)
59 const DiffuseRampBsdf *bsdf = (
const DiffuseRampBsdf *)sc;
62 const float cosNO =
fmaxf(
dot(
N, wo), 0.0f);
79 const DiffuseRampBsdf *bsdf = (
const DiffuseRampBsdf *)sc;
85 if (
dot(Ng, *wo) > 0.0f) {
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define SHADER_CLOSURE_BASE
#define CCL_NAMESPACE_END
VecBase< float, 3 > float3
@ CLOSURE_BSDF_DIFFUSE_RAMP_ID
ccl_device_inline Spectrum rgb_to_spectrum(const float3 rgb)
ccl_device_inline int float_to_int(const float f)
ccl_device_inline void sample_cos_hemisphere(const float3 N, const float2 rand_in, ccl_private float3 *wo, ccl_private float *pdf)