20static_assert(
sizeof(ShaderClosure) >=
sizeof(
RayPortalClosure),
"RayPortalClosure is too large!");
24 const uint32_t path_flag,
34 sd->closure_transparent_extinction += weight;
44 pc->sample_weight = sample_weight;
CCL_NAMESPACE_BEGIN ccl_device ccl_private ShaderClosure * closure_alloc(ccl_private ShaderData *sd, const int size, ClosureType type, Spectrum weight)
ccl_device Spectrum bsdf_ray_portal_eval(const ccl_private ShaderClosure *sc, const float3 wi, const float3 wo, ccl_private float *pdf)
ccl_device void bsdf_ray_portal_setup(ccl_private ShaderData *sd, const Spectrum weight, const uint32_t path_flag, const float3 position, float3 direction)
#define CLOSURE_WEIGHT_CUTOFF
#define CCL_NAMESPACE_END
@ CLOSURE_BSDF_RAY_PORTAL_ID
ccl_device_inline bool is_zero(const float2 a)
ccl_device_inline float average(const float2 a)