33 #ifndef __BSDF_DIFFUSE_H__
34 #define __BSDF_DIFFUSE_H__
100 if (
dot(Ng, *omega_in) > 0.0f) {
102 #ifdef __RAY_DIFFERENTIALS__
104 *domega_in_dx = (2 *
dot(
N, dIdx)) *
N - dIdx;
105 *domega_in_dy = (2 *
dot(
N, dIdy)) *
N - dIdy;
162 if (
dot(Ng, *omega_in) < 0) {
164 #ifdef __RAY_DIFFERENTIALS__
166 *domega_in_dx = -((2 *
dot(
N, dIdx)) *
N - dIdx);
167 *domega_in_dy = -((2 *
dot(
N, dIdy)) *
N - dIdy);
CCL_NAMESPACE_BEGIN typedef ccl_addr_space struct DiffuseBsdf DiffuseBsdf
ccl_device float3 bsdf_diffuse_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device int bsdf_diffuse_setup(DiffuseBsdf *bsdf)
ccl_device int bsdf_diffuse_sample(const ShaderClosure *sc, float3 Ng, float3 I, float3 dIdx, float3 dIdy, float randu, float randv, float3 *eval, float3 *omega_in, float3 *domega_in_dx, float3 *domega_in_dy, float *pdf)
ccl_device bool bsdf_diffuse_merge(const ShaderClosure *a, const ShaderClosure *b)
ccl_device float3 bsdf_translucent_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device float3 bsdf_translucent_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device float3 bsdf_diffuse_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device int bsdf_translucent_setup(DiffuseBsdf *bsdf)
ccl_device int bsdf_translucent_sample(const ShaderClosure *sc, float3 Ng, float3 I, float3 dIdx, float3 dIdy, float randu, float randv, float3 *eval, float3 *omega_in, float3 *domega_in_dx, float3 *domega_in_dy, float *pdf)
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
ccl_device_inline void sample_cos_hemisphere(const float3 N, float randu, float randv, float3 *omega_in, float *pdf)
@ CLOSURE_BSDF_DIFFUSE_ID
@ CLOSURE_BSDF_TRANSLUCENT_ID
ccl_device_inline float dot(const float2 &a, const float2 &b)
ccl_device_inline bool isequal_float3(const float3 a, const float3 b)