33 #ifndef __BSDF_TRANSPARENT_H__
34 #define __BSDF_TRANSPARENT_H__
47 sd->closure_transparent_extinction += weight;
50 for (
int i = 0; i < sd->num_closure; i++) {
55 sc->sample_weight += sample_weight;
62 sd->closure_transparent_extinction = weight;
68 sd->num_closure_left = 1;
76 bsdf->sample_weight = sample_weight;
80 sd->num_closure_left = 0;
116 #ifdef __RAY_DIFFERENTIALS__
117 *domega_in_dx = -dIdx;
118 *domega_in_dy = -dIdy;
CCL_NAMESPACE_BEGIN ccl_device ShaderClosure * closure_alloc(ShaderData *sd, int size, ClosureType type, float3 weight)
ccl_device int bsdf_transparent_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_NAMESPACE_BEGIN ccl_device void bsdf_transparent_setup(ShaderData *sd, const float3 weight, int path_flag)
ccl_device float3 bsdf_transparent_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
ccl_device float3 bsdf_transparent_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
@ CLOSURE_BSDF_TRANSPARENT_ID
#define CLOSURE_WEIGHT_CUTOFF
ccl_device_inline float average(const float2 &a)