22 "FournierForandVolume is too large!");
32 IOR =
max(IOR, 1.0f + 1e-3f);
34 volume->c1 = coeffs.
x;
35 volume->c2 = coeffs.
y;
36 volume->c3 = coeffs.
z;
ccl_device_inline float cos_theta(const float3 w)
dot(value.rgb, luminance_coefficients)") DEFINE_VALUE("REDUCE(lhs
#define CCL_NAMESPACE_END
@ CLOSURE_VOLUME_FOURNIER_FORAND_ID
SHADER_CLOSURE_VOLUME_BASE
ccl_device Spectrum volume_fournier_forand_eval(const ccl_private ShaderData *sd, const ccl_private ShaderVolumeClosure *svc, const float3 wo, ccl_private float *pdf)
ccl_device int volume_fournier_forand_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 int volume_fournier_forand_setup(ccl_private FournierForandVolume *volume, float B, float IOR)
ccl_device_inline float3 phase_fournier_forand_coeffs(const float B, const float IOR)
ccl_device float3 phase_fournier_forand_sample(const float3 D, const float3 coeffs, const float2 rand, ccl_private float *pdf)
ccl_device float phase_fournier_forand(const float cos_theta, const float3 coeffs)