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

The Low et al. Microfacet BRDF model. More...

#include <lowmicrofacet.h>

Inherits microfacet< NDF, MaskingShadowing, Fresnel, NormalizationFactor, NAME >.

Public Member Functions

 BBM_IMPORT_CONFIG (CONF)
 
Spectrum eval (const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
 Evaluate the A*baseeval.
 
Spectrum reflectance (const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
 Return albedo*basereflectance.
 
 BBM_DEFAULT_CONSTRUCTOR (lowmicrofacet)
 Default constructor.
 
BsdfSample sample (const Vec3d &out, const Vec2d &xi, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
 Sample the microfacet BSDF given a direction and two random variables.
 
Value pdf (const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t=unit_t::Radiance, Mask mask=true) const
 Compute the pdf given an in and out direction.
 
- Public Member Functions inherited from microfacet< NDF, MaskingShadowing, Fresnel, NormalizationFactor, NAME >
 BBM_IMPORT_CONFIG (NDF)
 
Spectrum eval (const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t=unit_t::Radiance, Mask mask=true) const
 Evaluate the BSDF for a given in-out direction pair.
 
BsdfSample sample (const Vec3d &out, const Vec2d &xi, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
 Sample the microfacet BSDF given a direction and two random variables.
 
Value pdf (const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t=unit_t::Radiance, Mask mask=true) const
 Compute the pdf given an in and out direction.
 
Spectrum reflectance (const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t=unit_t::Radiance, Mask mask=true) const
 Return the (approximate) hemispherical reflectance of the BSDF.
 
 BBM_DEFAULT_CONSTRUCTOR (microfacet)
 Default constructor.
 
 BBM_ATTRIBUTES (reflection::attributes(ndf), eta)
 

Static Public Attributes

static constexpr string_literal name = NAME
 
- Static Public Attributes inherited from microfacet< NDF, MaskingShadowing, Fresnel, NormalizationFactor, NAME >
static constexpr string_literal name = NAME
 

Private Types

using base = microfacet< ndf::low< CONF >, maskingshadowing::vgroove< CONF >, fresnel::cook< CONF >, NormalizationFactor, NAME >
 

Private Member Functions

 BBM_BASETYPES (base)
 
bsdf_parameter< Spectrum, bsdf_attr::SpecularParameterA
 Class Attributes.
 
 BBM_ATTRIBUTES (A)
 

Additional Inherited Members

- Public Attributes inherited from microfacet< NDF, MaskingShadowing, Fresnel, NormalizationFactor, NAME >
 BBM_BSDF_FORWARD
 
NDF ndf
 
fresnel_parameter< typename std::decay_t< Fresnel >::parameter_type > eta
 

Detailed Description

template<typename CONF, auto NormalizationFactor = microfacet_n::Cook, string_literal NAME = "LowMicrofacet">
requires concepts::config<CONF>
class bbm::lowmicrofacet< CONF, NormalizationFactor, NAME >

The Low et al. Microfacet BRDF model.

Template Parameters
CONF= bbm configuration
NormalizationFactor= see below (Default: normalization_v::Cook)
NAME=model name (default = LowMicrofacet)

The Low et al. Microfacet BSDF model is a specialization microfacet that uses an unnormalized scale 'A'.

Both Low et al's supplemental document as well as the paper (Eq. 15) do not list any normalization factor, which makes sense since 'A' is not normalized. This is the default behavior of this implementation. However, the MERL-MIT BRDF fits listed in Low et al.'s supplemental document includes an additional (incorrect) normalization factor of 'Pi'

Implements: concepts::bsdfmodel

Member Typedef Documentation

◆ base

using base = microfacet<ndf::low<CONF>, maskingshadowing::vgroove<CONF>, fresnel::cook<CONF>, NormalizationFactor, NAME>
private

Member Function Documentation

◆ BBM_ATTRIBUTES()

BBM_ATTRIBUTES ( A  )

◆ BBM_BASETYPES()

BBM_BASETYPES ( base  )
private

◆ BBM_DEFAULT_CONSTRUCTOR()

BBM_DEFAULT_CONSTRUCTOR ( lowmicrofacet< CONF, NormalizationFactor, NAME >  )
inline

Default constructor.

◆ BBM_IMPORT_CONFIG()

BBM_IMPORT_CONFIG ( CONF  )

◆ eval()

Spectrum eval ( const Vec3d &  in,
const Vec3d &  out,
BsdfFlag  component = bsdf_flag::All,
unit_t  unit = unit_t::Radiance,
Mask  mask = true 
) const
inline

Evaluate the A*baseeval.

Parameters
in= incident direction
out= outgoing direction
component= which reflectance component to eval
unit= unit of computation (ignored)
mask= masking of lanes (e.g., for Packet eval)
Returns
Evaluation of the BSDF per spectrum.

◆ pdf()

Value pdf ( const Vec3d &  in,
const Vec3d &  out,
BsdfFlag  component = bsdf_flag::All,
unit_t  = unit_t::Radiance,
Mask  mask = true 
) const
inline

Compute the pdf given an in and out direction.

Parameters
in= the incoming (sampled) direction
out= the outgoing (given) direction
component= which reflectance component was sampled
unit= unit of computation (ignored)
mask= masking of lanes
Returns
the PDF that the incoming direction would be sampled given the outgoing direction.

◆ reflectance()

Spectrum reflectance ( const Vec3d &  out,
BsdfFlag  component = bsdf_flag::All,
unit_t  unit = unit_t::Radiance,
Mask  mask = true 
) const
inline

Return albedo*basereflectance.

Parameters
out= the outgoing direction
component= which reflectance component to eval
unit= unit of computation (ignored)
mask= masking of lanes
Returns
the approximate hemispherical reflectance of the BSDF for a given direction

◆ sample()

BsdfSample sample ( const Vec3d &  out,
const Vec2d &  xi,
BsdfFlag  component = bsdf_flag::All,
unit_t  unit = unit_t::Radiance,
Mask  mask = true 
) const
inline

Sample the microfacet BSDF given a direction and two random variables.

Parameters
out= outgoing direction
xi= two random variables stored in a Vec2d
component= which reflectance component to sample
unit= unit of computation (ignored)
mask= masking of lanes.
Returns
A bsdfSample containing the sampled direction and the corresponding pdf.

Member Data Documentation

◆ A

Class Attributes.

◆ name

constexpr string_literal name = NAME
staticconstexpr

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