|
Fermat
|
[Heitz 2014, "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs"]
Classes | |
| struct | Bsdf |
| struct | Edf |
| struct | cugar::BlendBsdf< TBsdf1, TBsdf2 > |
| struct | cugar::DifferentialGeometry |
| struct | cugar::GGXVCavityMicrofacetDistribution |
| struct | cugar::GGXBsdf |
| struct | cugar::GGXSmithMicrofacetDistribution |
| struct | cugar::GGXSmithBsdf |
| struct | cugar::LambertBsdf |
| struct | cugar::LambertEdf |
| struct | cugar::LambertTransBsdf |
| struct | cugar::LTCBsdf |
Enumerations | |
| enum | TransportType { kRadianceTransport = 0, kParticleTransport = 1 } |
| enum | cugar::SphericalMeasure { kSolidAngle = 0, kProjectedSolidAngle = 1 } |
Functions | |
| FERMAT_API void | precompute_glossy_reflectance (const uint32 S, float *tables) |
| FERMAT_API void | precompute_TIR_loss (const uint32 S, float *tables) |
| bool | cugar::bsdf_test (uint32 test_index, const GGXSmithBsdf &bsdf) |
| bool | cugar::bsdf_test () |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Vector3f | cugar::microfacet (const Vector3f V, const Vector3f L, const Vector3f N, const float inv_eta) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Vector3f | cugar::vndf_microfacet (const Vector3f V, const Vector3f L, const Vector3f N, const float inv_eta) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float | cugar::hvd_ggx_eval (const float2 &inv_alpha, const float nh, const float ht, const float hb) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 | cugar::hvd_ggx_sample (const float2 &samples, const float inv_alpha) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 | cugar::hvd_ggx_sample (const float2 &samples, const float2 &inv_alpha) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float2 | cugar::hvd_ggx_invert (const float3 H, const float2 inv_alpha) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 | cugar::vndf_ggx_smith_sample (const float2 samples, const float2 alpha, const Vector3f _V) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float2 | cugar::vndf_ggx_smith_invert (const Vector3f _N, const float2 alpha, const Vector3f _V) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE uint32 | cugar::clip_quad_to_horizon (cugar::Vector3f L[5]) |
| template<typename VectorType > | |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE VectorType | cugar::fresnel_dielectric (const float cos_theta_i, const float cos_theta_t, const VectorType eta) |
| template<typename VectorType > | |
| CUGAR_HOST_DEVICE CUGAR_FORCEINLINE VectorType | cugar::fresnel_dielectric_conductor (const float cos_theta, const VectorType eta, const VectorType eta_k) |
| CUGAR_HOST_DEVICE CUGAR_FORCEINLINE float | cugar::pow5 (const float x) |
| template<typename VectorType > | |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE VectorType | cugar::fresnel_schlick (float cos_theta_i, const float eta, const VectorType fresnel_base) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE bool | cugar::refraction_angle (const Vector3f w_i, const Vector3f N, const float eta, const float cos_theta_i, float *cos_theta_t) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE bool | cugar::refract (const Vector3f w_i, const Vector3f N, const float cos_theta_i, const float eta, Vector3f *out, float *F) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Vector3f | cugar::refract (const Vector3f w_i, const Vector3f N, const float eta, const float cos_theta_i, const float cos_theta_t) |
Spherical measure type
| enum TransportType |
transport type: defines whether we are tracing rays, or particles, i.e. whether the quantity being transported is radiance or power.
|
inline |
unit test
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE uint32 cugar::clip_quad_to_horizon | ( | cugar::Vector3f | L[5] | ) |
clip a quad to the plane z = 0
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE VectorType cugar::fresnel_dielectric | ( | const float | cos_theta_i, |
| const float | cos_theta_t, | ||
| const VectorType | eta | ||
| ) |
| CUGAR_HOST_DEVICE CUGAR_FORCEINLINE VectorType cugar::fresnel_dielectric_conductor | ( | const float | cos_theta, |
| const VectorType | eta, | ||
| const VectorType | eta_k | ||
| ) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE VectorType cugar::fresnel_schlick | ( | float | cos_theta_i, |
| const float | eta, | ||
| const VectorType | fresnel_base | ||
| ) |
| eta | incoming IOR / outgoing IOR |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float cugar::hvd_ggx_eval | ( | const float2 & | inv_alpha, |
| const float | nh, | ||
| const float | ht, | ||
| const float | hb | ||
| ) |
evaluate anisotropic GGX / Trowbridge-Reitz distribution on the non-projected hemisphere
[Walter et al. 2007, "Microfacet models for refraction through rough surfaces"]
nh
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float2 cugar::hvd_ggx_invert | ( | const float3 | H, |
| const float2 | inv_alpha | ||
| ) |
invert the the half-vector anisotropic GGX distribution sampling function
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 cugar::hvd_ggx_sample | ( | const float2 & | samples, |
| const float | inv_alpha | ||
| ) |
sample isotropic GGX distribution on the non-projected hemisphere
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 cugar::hvd_ggx_sample | ( | const float2 & | samples, |
| const float2 & | inv_alpha | ||
| ) |
sample the half-vector anisotropic GGX distribution on the non-projected hemisphere
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Vector3f cugar::microfacet | ( | const Vector3f | V, |
| const Vector3f | L, | ||
| const Vector3f | N, | ||
| const float | inv_eta | ||
| ) |
return the microfacet normal for a given pair of incident and outgoing direction vectors
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE bool cugar::refract | ( | const Vector3f | w_i, |
| const Vector3f | N, | ||
| const float | cos_theta_i, | ||
| const float | eta, | ||
| Vector3f * | out, | ||
| float * | F | ||
| ) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE Vector3f cugar::refract | ( | const Vector3f | w_i, |
| const Vector3f | N, | ||
| const float | eta, | ||
| const float | cos_theta_i, | ||
| const float | cos_theta_t | ||
| ) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE bool cugar::refraction_angle | ( | const Vector3f | w_i, |
| const Vector3f | N, | ||
| const float | eta, | ||
| const float | cos_theta_i, | ||
| float * | cos_theta_t | ||
| ) |
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float2 cugar::vndf_ggx_smith_invert | ( | const Vector3f | _N, |
| const float2 | alpha, | ||
| const Vector3f | _V | ||
| ) |
Inversion function for "A Simpler and Exact Sampling Routine for the GGX Distribution of Visible Normals" https://hal.archives-ouvertes.fr/hal-01509746
| CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float3 cugar::vndf_ggx_smith_sample | ( | const float2 | samples, |
| const float2 | alpha, | ||
| const Vector3f | _V | ||
| ) |
A Simpler and Exact Sampling Routine for the GGX Distribution of Visible Normals https://hal.archives-ouvertes.fr/hal-01509746
1.8.13