Skip to content

Instantly share code, notes, and snippets.

@est77
Created September 1, 2015 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save est77/b9fa07028020ceead4a3 to your computer and use it in GitHub Desktop.
Save est77/b9fa07028020ceead4a3 to your computer and use it in GitHub Desktop.
// two C1
template <typename T>
inline T fresnel_first_moment(const T eta)
{
return
eta < T(1.0)
? T(0.919317) + eta * (T(-3.4793) + eta * (T(6.75335) + eta * (T(-7.80989) + eta * (T(4.98554) - eta * T(1.36881)))))
: T(-9.23372) + eta * (T(22.2272) + eta * (T(-20.9292) + eta * (T(10.2291) + eta * (T(-2.54396) + eta * T(0.254913)))));
}
// three C2
template <typename T>
inline T fresnel_second_moment(const T eta)
{
const T rcp_eta = T(1.0) / eta;
return
eta < T(1.0)
? T(0.828421) + eta * (T(-2.62051) + eta * (T(3.36231) + eta * (T(-1.95284) + eta * (T(0.236494) + eta * T(0.145787)))))
: T(-1641.1) + (((T(135.926) * rcp_eta) - T(656.175)) * rcp_eta + T(1376.53)) * rcp_eta
+ eta * (T(1213.67) + eta * (T(-568.556) + eta * (T(164.798) + eta * (T(-27.0181) + eta * T(1.91826)))));
}
template <typename T>
inline T fresnel_internal_diffuse_reflectance(const T eta)
{
const T rcp_eta = T(1.0) / eta;
const T rcp_eta2 = rcp_eta * rcp_eta;
return
eta < T(1.0)
? T(-0.4399) + T(0.7099) * rcp_eta - T(0.3319) * rcp_eta2 + T(0.0636) * rcp_eta * rcp_eta2
: T(-1.4399) * rcp_eta2 + T(0.7099) * rcp_eta + T(0.6681) + T(0.0636) * eta;
}
// Cphi = 1/4 * (1 - 2C1)
// Ce = 1/2 * (1 - 3C2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment