70 if (
dot(Ng, *omega_in) > 0.0f) {
72 #ifdef __RAY_DIFFERENTIALS__
74 *domega_in_dx = (2 *
dot(
N, dIdx)) *
N - dIdx;
75 *domega_in_dy = (2 *
dot(
N, dIdy)) *
N - dIdy;
134 if (
dot(Ng, *omega_in) < 0) {
136 #ifdef __RAY_DIFFERENTIALS__
138 *domega_in_dx = -((2 *
dot(
N, dIdx)) *
N - dIdx);
139 *domega_in_dy = -((2 *
dot(
N, dIdy)) *
N - dIdy);
ccl_device float3 bsdf_translucent_eval_transmit(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
ccl_device float3 bsdf_diffuse_eval_reflect(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
ccl_device float3 bsdf_translucent_eval_reflect(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
ccl_device int bsdf_translucent_setup(ccl_private DiffuseBsdf *bsdf)
ccl_device int bsdf_diffuse_setup(ccl_private DiffuseBsdf *bsdf)
ccl_device float3 bsdf_diffuse_eval_transmit(ccl_private const ShaderClosure *sc, const float3 I, const float3 omega_in, ccl_private float *pdf)
ccl_device int bsdf_diffuse_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 int bsdf_translucent_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_NAMESPACE_BEGIN struct DiffuseBsdf DiffuseBsdf
#define CCL_NAMESPACE_END
@ CLOSURE_BSDF_DIFFUSE_ID
@ CLOSURE_BSDF_TRANSLUCENT_ID
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
ccl_device_inline void sample_cos_hemisphere(const float3 N, float randu, float randv, ccl_private float3 *omega_in, ccl_private float *pdf)