Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Static Private Member Functions | List of all members
studentt< CONF, Symmetry, NAME > Class Template Reference

#include <studentt.h>

Public Member Functions

 BBM_IMPORT_CONFIG (CONF)
 
Value eval (const Vec3d &halfway, Mask mask=true) const
 Evaluate the NDF.
 
Vec3d sample (const Vec3d &, const Vec2d &xi, Mask mask=true) const
 Sample the NDF.
 
Value pdf (const Vec3d &, const Vec3d &m, Mask mask=true) const
 PDF of sampling the NDF.
 
Value G1 (const Vec3d &v, const Vec3d &m, Mask mask=true) const
 Monodirectional shadowing and masking term.
 
 BBM_DEFAULT_CONSTRUCTOR (studentt)
 Default constructor.
 

Static Public Attributes

static constexpr string_literal name = NAME
 

Static Private Member Functions

static Value F21 (const Value &z)
 F21(z) (Eq. 23)
 
static Value F22 (const Value &gamma)
 F22(gamma) (Eq. 23)
 
static Value F23 (const Value &gamma)
 F23(gamma) (Eq. 23)
 
static Value F24 (const Value &z)
 F24(z) (Eq. 23)
 

Class Attributes

specular_roughness< symmetry_t< Symmetry, Value > > roughness
 
bsdf_parameter< Value, bsdf_attr::SpecularParameter, 2.0, 40.0, 1.5+Constants::Epsilon()> gamma
 
 BBM_ATTRIBUTES (roughness, gamma)
 

Detailed Description

template<typename CONF, symmetry_v Symmetry = symmetry_v::Isotropic, string_literal NAME = "StudentT">
requires concepts::config<CONF>
class bbm::ndf::studentt< CONF, Symmetry, NAME >

/brief The StudentT Microfacet distribution

Template Parameters
CONF= bbm configuration
Symmetry= isotropic or anisotropic (Default = symmetry_v::Isoptric)
NAME= ndf name (default = STDist)

Implements: concepts::ndf

Member Function Documentation

◆ BBM_ATTRIBUTES()

BBM_ATTRIBUTES ( roughness  ,
gamma   
)

◆ BBM_DEFAULT_CONSTRUCTOR()

BBM_DEFAULT_CONSTRUCTOR ( studentt< CONF, Symmetry, NAME >  )
inline

Default constructor.

◆ BBM_IMPORT_CONFIG()

BBM_IMPORT_CONFIG ( CONF  )

◆ eval()

Value eval ( const Vec3d &  halfway,
Mask  mask = true 
) const
inline

Evaluate the NDF.

Parameters
halfway= vector to eval the NDF for
mask= enable/disbale lanes [default = true]
Returns
the resulting evaluation of the NDF

◆ F21()

static Value F21 ( const Value &  z)
inlinestaticprivate

F21(z) (Eq. 23)

◆ F22()

static Value F22 ( const Value &  gamma)
inlinestaticprivate

F22(gamma) (Eq. 23)

◆ F23()

static Value F23 ( const Value &  gamma)
inlinestaticprivate

F23(gamma) (Eq. 23)

◆ F24()

static Value F24 ( const Value &  z)
inlinestaticprivate

F24(z) (Eq. 23)

◆ G1()

Value G1 ( const Vec3d &  v,
const Vec3d &  m,
Mask  mask = true 
) const
inline

Monodirectional shadowing and masking term.

Parameters
v= incident/outgoing vector
m= microfacet normal \param mask = enable/disable lanes
Returns
the monodirectional shadowing and masking attentuation factor

There does not exist a closed form solution; use the same polynomial approximation as for Beckmann, except with a different 'a' value.

◆ pdf()

Value pdf ( const Vec3d &  ,
const Vec3d &  m,
Mask  mask = true 
) const
inline

PDF of sampling the NDF.

Parameters
view= view direction (ignored)
m= sampled microfacet normal
mask= enable/disable lanes [default = true]
Returns
the PDF of sampling 'm' using the sample method.

◆ sample()

Vec3d sample ( const Vec3d &  ,
const Vec2d &  xi,
Mask  mask = true 
) const
inline

Sample the NDF.

Parameters
view= view direction (ignored)
xi= 2D uniform random variables in [0..1] range
Mask= enable/disbale lanes
Returns
A sampled microfacet normal.

Member Data Documentation

◆ gamma

bsdf_parameter<Value, bsdf_attr::SpecularParameter, 2.0, 40.0, 1.5 + Constants::Epsilon()> gamma

◆ name

constexpr string_literal name = NAME
staticconstexpr

◆ roughness

specular_roughness<symmetry_t<Symmetry,Value> > roughness

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