33 #ifndef __BSDF_REFLECTION_H__
34 #define __BSDF_REFLECTION_H__
79 float cosNO =
dot(
N,
I);
81 *omega_in = (2 * cosNO) *
N -
I;
82 if (
dot(Ng, *omega_in) > 0) {
83 #ifdef __RAY_DIFFERENTIALS__
84 *domega_in_dx = 2 *
dot(
N, dIdx) *
N - dIdx;
85 *domega_in_dy = 2 *
dot(
N, dIdy) *
N - dIdy;
CCL_NAMESPACE_BEGIN ccl_device int bsdf_reflection_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_reflection_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 float3 bsdf_reflection_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device float3 bsdf_reflection_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
@ CLOSURE_BSDF_REFLECTION_ID
ccl_device_inline float dot(const float2 &a, const float2 &b)