21 "PrincipledSheenBsdf is too large!");
27 float NdotI =
dot(
N,
I);
38 float NdotL =
dot(
N,
L);
39 float NdotV =
dot(
N,
V);
41 if (NdotL < 0 || NdotV < 0) {
46 float LdotH =
dot(
L,
H);
58 bsdf->sample_weight *= bsdf->avg_value;
74 if (
dot(
N, omega_in) > 0.0f) {
112 if (
dot(Ng, *omega_in) > 0) {
117 #ifdef __RAY_DIFFERENTIALS__
119 *domega_in_dx = -((2 *
dot(
N, dIdx)) *
N - dIdx);
120 *domega_in_dy = -((2 *
dot(
N, dIdy)) *
N - dIdy);
ccl_device int bsdf_principled_sheen_sample(ccl_private const ShaderClosure *sc, float3 Ng, float3 I, float3 dIdx, float3 dIdy, float randu, float randv, ccl_private float3 *eval, ccl_private float3 *omega_in, ccl_private float3 *domega_in_dx, ccl_private float3 *domega_in_dy, ccl_private float *pdf)
ccl_device float3 calculate_principled_sheen_brdf(float3 N, float3 V, float3 L, float3 H, ccl_private float *pdf)
ccl_device int bsdf_principled_sheen_setup(ccl_private const ShaderData *sd, ccl_private PrincipledSheenBsdf *bsdf)
ccl_device_inline float calculate_avg_principled_sheen_brdf(float3 N, float3 I)
ccl_device float3 bsdf_principled_sheen_eval_transmit(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
CCL_NAMESPACE_BEGIN struct PrincipledSheenBsdf PrincipledSheenBsdf
ccl_device float3 bsdf_principled_sheen_eval_reflect(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
ccl_device float schlick_fresnel(float u)
#define ccl_device_inline
#define CCL_NAMESPACE_END
@ CLOSURE_BSDF_PRINCIPLED_SHEEN_ID
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
vec_base< T, Size > normalize(const vec_base< T, Size > &v)
ccl_device_inline void sample_cos_hemisphere(const float3 N, float randu, float randv, ccl_private float3 *omega_in, ccl_private float *pdf)
CCL_NAMESPACE_BEGIN struct Window V