|
| IsoTrowbridgeReitzTextured (const std::shared_ptr< TTexture< real > > &alpha, EMaskingShadowing maskingShadowingType) |
|
std::array< real, 2 > | getAlphas (const SurfaceHit &X) const override |
|
| IsoTrowbridgeReitz (EMaskingShadowing maskingShadowingType) |
|
real | lambda (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &unitDir, const std::array< real, 2 > &alphas) const override |
| The \( \Lambda \left( a \right) \) function that appears in the masking-shadowing term. For isotropic distributions, the variable \( a \) is normally calculated as \( a = \frac{1}{\alpha \tan \left( \theta \right)} \), where \( \frac{1}{\tan \left( \theta \right)} \) is the slope of the unit direction unitDir (with respect to the macrosurface normal N . For anisotropic distributions, see the implementation of AnisoTrowbridgeReitz as an example for calculating \( a \) from the parameters.
|
|
real | distribution (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H) const override |
| Distribution of the microfacet normal. The \( D \) term. Also commonly knwon as the NDF (normal distribution function). This term is defined in the half-angle/microfacet space (the angle between N and H ) unless otherwise noted.
|
|
void | sampleH (const SurfaceHit &X, const math::Vector3R &N, const std::array< real, 2 > &sample, math::Vector3R *out_H) const override |
| Generate a microfacet normal H for the distribution. This samples all possible H vectors for the distribution.
|
|
| TrowbridgeReitz (EMaskingShadowing maskingShadowingType) |
|
void | sampleVisibleH (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &V, const std::array< real, 2 > &sample, math::Vector3R *out_H) const override |
| Same as sampleH() , but tries to take geometry term into consideration. This samples only potentially visible H vectors for the distribution. If unable to fully or partly incorporate visibility information from the geometry term, this method will fallback to sampleH() .
|
|
lta::PDF | pdfSampleVisibleH (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &V) const override |
|
| ShapeInvariantMicrofacet (EMaskingShadowing maskingShadowingType) |
|
real | geometry (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &L, const math::Vector3R &V) const override |
| Masking and shadowing due to nearby microfacets. The \( G \) term.
|
|
lta::PDF | pdfSampleH (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H) const override |
|
virtual | ~Microfacet ()=default |
|