mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
Cleanup: Cycles: Move F82 Fresnel model into helper function
This commit is contained in:
parent
0ec2878cb6
commit
bfcfe730ed
2 changed files with 10 additions and 4 deletions
|
|
@ -258,10 +258,7 @@ ccl_device_forceinline void microfacet_fresnel(KernelGlobals kg,
|
|||
* Essentially, this is the usual Schlick Fresnel with an additional cosI*(1-cosI)^6
|
||||
* term which modulates the reflectivity around acos(1/7) degrees (ca. 82°). */
|
||||
ccl_private FresnelF82Tint *fresnel = (ccl_private FresnelF82Tint *)bsdf->fresnel;
|
||||
const float mu = saturatef(1.0f - cos_theta_i);
|
||||
const float mu5 = sqr(sqr(mu)) * mu;
|
||||
const Spectrum F_schlick = mix(fresnel->f0, one_spectrum(), mu5);
|
||||
*r_reflectance = saturate(F_schlick - fresnel->b * cos_theta_i * mu5 * mu);
|
||||
*r_reflectance = fresnel_f82(cos_theta_i, fresnel->f0, fresnel->b);
|
||||
*r_transmittance = zero_spectrum();
|
||||
}
|
||||
else if (bsdf->fresnel_type == MicrofacetFresnel::GENERALIZED_SCHLICK) {
|
||||
|
|
|
|||
|
|
@ -153,6 +153,15 @@ ccl_device_inline Spectrum fresnel_f82_B(const Spectrum F0, const Spectrum F82)
|
|||
return (7.0f / (f5 * f)) * (F_schlick - F82);
|
||||
}
|
||||
|
||||
/* Evaluate the F82 metallic model for the given parameters. */
|
||||
ccl_device_inline Spectrum fresnel_f82(const float cosi, const Spectrum F0, const Spectrum B)
|
||||
{
|
||||
const float s = saturatef(1.0f - cosi);
|
||||
const float s5 = sqr(sqr(s)) * s;
|
||||
const Spectrum F_schlick = mix(F0, one_spectrum(), s5);
|
||||
return saturate(F_schlick - B * cosi * s5 * s);
|
||||
}
|
||||
|
||||
/* Approximates the average single-scattering Fresnel for a physical conductor. */
|
||||
ccl_device_inline Spectrum fresnel_conductor_Fss(const Spectrum eta, const Spectrum k)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue