Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
ph::IsoTrowbridgeReitzConstant Class Reference

#include <IsoTrowbridgeReitzConstant.h>

Inheritance diagram for ph::IsoTrowbridgeReitzConstant:
ph::IsoTrowbridgeReitz ph::TrowbridgeReitz ph::ShapeInvariantMicrofacet ph::Microfacet

Public Member Functions

 IsoTrowbridgeReitzConstant (real alpha, EMaskingShadowing maskingShadowingType)
 
std::array< real, 2 > getAlphas (const SurfaceHit &X) const override
 
- Public Member Functions inherited from ph::IsoTrowbridgeReitz
 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.
 
- Public Member Functions inherited from ph::TrowbridgeReitz
 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
 
- Public Member Functions inherited from ph::ShapeInvariantMicrofacet
 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
 
- Public Member Functions inherited from ph::Microfacet
virtual ~Microfacet ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from ph::ShapeInvariantMicrofacet
real smithG1 (real lambdaValue) const
 
real empiricalPhiCorrelation (const SurfaceHit &X, const math::Vector3R &L, const math::Vector3R &V) const
 
real projectedDistribution (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H) const
 
real visibleDistribution (const SurfaceHit &X, const math::Vector3R &N, const math::Vector3R &H, const math::Vector3R &V) const
 
- Static Protected Member Functions inherited from ph::Microfacet
static bool isSidednessAgreed (real NoD, real HoD)
 
static bool isSidednessAgreed (real NoL, real NoV, real HoL, real HoV)
 
- Protected Attributes inherited from ph::ShapeInvariantMicrofacet
EMaskingShadowing m_maskingShadowingType
 

Constructor & Destructor Documentation

◆ IsoTrowbridgeReitzConstant()

ph::IsoTrowbridgeReitzConstant::IsoTrowbridgeReitzConstant ( real alpha,
EMaskingShadowing maskingShadowingType )
inline

Member Function Documentation

◆ getAlphas()

std::array< real, 2 > ph::IsoTrowbridgeReitzConstant::getAlphas ( const SurfaceHit & X) const
inlineoverridevirtual
Returns
\( \left( \alpha_u, \alpha_v \right) \) in the U and V directions of the macrosirface parametrization. Guaranteed to have \( \alpha_u = \alpha_v \) for an isotropic distribution.

Implements ph::IsoTrowbridgeReitz.


The documentation for this class was generated from the following file: