33 float cosNI =
dot(bsdf->N, sd->wi);
41 if (
fabsf(bsdf->transformA) < 1e-5f || albedo < 1e-5f) {
43 bsdf->sample_weight = 0.0f;
47 bsdf->weight *= albedo;
48 bsdf->sample_weight *= albedo;
59 const float3 N = bsdf->N, T = bsdf->T,
B = bsdf->B;
60 float a = bsdf->transformA,
b = bsdf->transformB;
62 if (
dot(
N, wo) <= 0.0f) {
68 if (localO.
z <= 0.0f) {
73 float lenSqr =
sqr(a * localO.
x +
b * localO.
z) +
sqr(a * localO.
y) +
sqr(localO.
z);
74 float val = M_1_PI_F * localO.
z *
sqr(a / lenSqr);
89 const float3 N = bsdf->N, T = bsdf->T,
B = bsdf->B;
90 float a = bsdf->transformA,
b = bsdf->transformB;
96 *wo = localO.
x * T + localO.
y *
B + localO.
z *
N;
98 if (
dot(Ng, *wo) <= 0) {
104 float lenSqr =
sqr(a * localO.
x +
b * localO.
z) +
sqr(a * localO.
y) +
sqr(localO.
z);
105 float val = M_1_PI_F * localO.
z *
sqr(a / lenSqr);
MINLINE float safe_sqrtf(float a)
ccl_device int bsdf_sheen_setup(KernelGlobals kg, ccl_private const ShaderData *sd, ccl_private SheenBsdf *bsdf)
ccl_device Spectrum bsdf_sheen_eval(ccl_private const ShaderClosure *sc, const float3 wi, const float3 wo, ccl_private float *pdf)
ccl_device int bsdf_sheen_sample(ccl_private const ShaderClosure *sc, float3 Ng, float3 wi, float2 rand, ccl_private Spectrum *eval, ccl_private float3 *wo, ccl_private float *pdf)
CCL_NAMESPACE_BEGIN struct SheenBsdf SheenBsdf
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
local_group_size(16, 16) .push_constant(Type b
additional_info("compositor_sum_squared_difference_float_shared") .push_constant(Type output_img float dot(value.rgb, luminance_coefficients)") .define("LOAD(value)"
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define CCL_NAMESPACE_END
ccl_device float lookup_table_read_2D(KernelGlobals kg, float x, float y, int offset, int xsize, int ysize)
CCL_NAMESPACE_BEGIN ccl_device float2 sample_uniform_disk(const float2 rand)
ccl_device void make_orthonormals_safe_tangent(const float3 N, const float3 T, ccl_private float3 *a, ccl_private float3 *b)
SPECTRUM_DATA_TYPE Spectrum
ccl_device_inline float sqr(float a)
ccl_device_inline int clamp(int a, int mn, int mx)