The classic diffuse Lambertian BSDF model. More...
#include <lambertian.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 diffuse 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 &, 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 (lambertian) | |
| Default constructor. | |
Public Attributes | |
| BBM_BSDF_FORWARD | |
Static Public Attributes | |
| static constexpr string_literal | name = NAME |
Class Attributes | |
| diffuse_scale< Spectrum > | albedo |
| BBM_ATTRIBUTES (albedo) | |
The classic diffuse Lambertian BSDF model.
| CONF | = type configuration to use. |
| NAME | = name of the BSDF model. |
Implements: concepts::bsdfmodel
| BBM_ATTRIBUTES | ( | albedo | ) |
|
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) |
Note: Evaluates the classic diffuse BSDF, i.e.. a constant independent of in and out directions above the horizon. No foreshortning is included.
|
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 diffuse 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. |
Follows the convention of Veach; samples incoming directions proportional to the cosine weighted solid angle.
| diffuse_scale<Spectrum> albedo |
| BBM_BSDF_FORWARD |
|
staticconstexpr |