21 "HenyeyGreensteinVolume is too large!");
27 volume->g =
signf(volume->g) *
min(
fabsf(volume->g), 1.0f - 1e-3f);
MINLINE float signf(float f)
ccl_device_inline float cos_theta(const float3 w)
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define CCL_NAMESPACE_END
@ CLOSURE_VOLUME_HENYEY_GREENSTEIN_ID
SHADER_CLOSURE_VOLUME_BASE
ccl_device int volume_henyey_greenstein_setup(ccl_private HenyeyGreensteinVolume *volume)
ccl_device Spectrum volume_henyey_greenstein_eval(const ccl_private ShaderData *sd, const ccl_private ShaderVolumeClosure *svc, const float3 wo, ccl_private float *pdf)
ccl_device int volume_henyey_greenstein_sample(const ccl_private ShaderData *sd, const ccl_private ShaderVolumeClosure *svc, const float2 rand, ccl_private Spectrum *eval, ccl_private float3 *wo, ccl_private float *pdf)
ccl_device float3 phase_henyey_greenstein_sample(const float3 D, const float g, const float2 rand, ccl_private float *pdf)
ccl_device float phase_henyey_greenstein(const float cos_theta, const float g)