The Lafortune BRDF model. This implements the model in Eq. 4 in the original paper linked above: More...
#include <lafortune.h>
Public Member Functions | |
| BBM_IMPORT_CONFIG (CONF) | |
| 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 and out direction. | |
| 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 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 (lafortune) | |
| Default constructor. | |
Public Attributes | |
| BBM_BSDF_FORWARD | |
Static Public Attributes | |
| static constexpr string_literal | name = NAME |
| specular_scale< Spectrum > | albedo |
| Class Attributes. | |
| bsdf_parameter< symmetry_t< Symmetry, Value >, bsdf_attr::SpecularParameter, -0.57735026919, std::numeric_limits< Scalar >::max(), std::numeric_limits< Scalar >::min()> | Cxy |
| bsdf_parameter< Value, bsdf_attr::SpecularParameter, 0.57735026919, std::numeric_limits< Scalar >::max(), std::numeric_limits< Scalar >::min()> | Cz |
| specular_sharpness< Value > | sharpness |
| BBM_ATTRIBUTES (albedo, Cxy, Cz, sharpness) | |
The Lafortune BRDF model. This implements the model in Eq. 4 in the original paper linked above:
\( f_r(u, v) = \rho_s [ C_x u_x v_x + C_y u_y v_y + C_z u_z v_z ]^n \)
| CONF | = bbm configuration \tpatam Symmetry = isotropic or anisotropic (Default: symmetry_v::Anisotropic) |
| NAME | = name of the BSDF model (Default: 'Lafortune') |
Implements: concepts::bsdfmodel
|
inline |
Default constructor.
| BBM_IMPORT_CONFIG | ( | CONF | ) |
|
inline |
Evaluate the BSDF for a given in and out direction.
| 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) |
|
inline |
Compute the pdf given an in and out direction.
| 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 |
|
inline |
Return the (approximate) hemispherical reflectance of the BSDF.
| out | = the outgoing direction |
| component | = which reflectance component to eval |
| unit | = unit of computation (ignored) |
| mask | = masking of lanes |
|
inline |
Sample the BSDF given a direction and two random variables.
| 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. |
| specular_scale<Spectrum> albedo |
Class Attributes.
| BBM_BSDF_FORWARD |
| bsdf_parameter<symmetry_t<Symmetry,Value>, bsdf_attr::SpecularParameter, -0.57735026919, std::numeric_limits<Scalar>::max(), std::numeric_limits<Scalar>::min()> Cxy |
| bsdf_parameter<Value, bsdf_attr::SpecularParameter, 0.57735026919, std::numeric_limits<Scalar>::max(), std::numeric_limits<Scalar>::min()> Cz |
|
staticconstexpr |
| specular_sharpness<Value> sharpness |