30 template<
typename CONF, string_literal NAME=
"NganWard">
requires concepts::config<CONF>
88 if(bbm::none(mask))
return Spectrum(0);
91 Spectrum result =
base::eval(in, out, component, unit, mask);
115 if(bbm::none(mask))
return Spectrum(0);
167 using nganhe =
scaledmodel<ndf_sampler<he_base<CONF, fresnel::cook<CONF>,
he_eq25::Errata,
he_eq78::Westin, 4, 64,
true, 18>, 90, 1,
"NganHe">,
bsdf_attr::SpecularScale>;
The sum of different BSDF models.
Implements the specular component from: "An anisotropic phong BRDF model" [Ashikhmin and Shirley 2000...
#define BBM_EXPORT_BSDFMODEL(BsdfModel)
Definition: bbm_fromstring.h:49
Implements: "The Modifed Phong BSDF model for physically based rendering".
The Lafortune BRDF model. This implements the model in Eq. 4 in the original paper linked above:
Definition: lafortune.h:30
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.
Definition: lafortune.h:46
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.
Definition: lafortune.h:77
specular_sharpness< Value > sharpness
Definition: lafortune.h:165
bsdf_parameter< Value, bsdf_attr::SpecularParameter, 0.57735026919, std::numeric_limits< Scalar >::max(), std::numeric_limits< Scalar >::min()> Cz
Definition: lafortune.h:164
bsdf_parameter< symmetry_t< Symmetry, Value >, bsdf_attr::SpecularParameter, -0.57735026919, std::numeric_limits< Scalar >::max(), std::numeric_limits< Scalar >::min()> Cxy
Definition: lafortune.h:163
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.
Definition: lafortune.h:151
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.
Definition: lafortune.h:122
Ngan's Lafortune: standard Lafortune times an additional normalization factor:
Definition: ngan.h:56
BBM_BSDF_FORWARD
Definition: ngan.h:62
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 BSDF for a given in and out direction.
Definition: ngan.h:79
Spectrum reflectance(const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
Return the (approximate) reflectance of the BSDF.
Definition: ngan.h:109
BBM_DEFAULT_CONSTRUCTOR(nganlafortune)
Default constructor.
Definition: ngan.h:128
static constexpr string_literal name
Definition: ngan.h:61
The modified Phong BSDF model. This is the classic Phong BSDF model with appropriate normalization an...
Definition: phong.h:27
The anisotropic Ward BSDF model.
Definition: ward.h:28
The anisotropic Ward-Duer BSDF model.
Definition: wardduer.h:31
bsdfmodel concept
Definition: bsdfmodel.h:33
config concept
Definition: config.h:31
Implements the Cook-Torrance BSDF Model [SIGGRAPH'82]: https://doi.org/10.1145/357290....
Implements: "Non-Linear Approximation of Reflectance Functions".
The classic diffuse Lambertian BSDF model.
#define BBM_CHECK_CONCEPT(CONCEPTNAME, CLASSNAME,...)
Check a class for a concept with bbm::concepts::archetypes in the namespace.
Definition: macro.h:35
constexpr decltype(auto) z(bbm::vec3d< T > &v)
Definition: vec.h:26
Definition: aggregatebsdf.h:29
constexpr auto select(MASK &&mask, const A &a, const A &b)
Definition: backbone.h:255
constexpr auto is_set(const FLAGNAME &a, const FLAG &flag)
Check if all in 'flag' are also set in 'a'; compatible with packet types.
Definition: flags.h:100
unit_t
Light Unit.
Definition: unit.h:21
Implements the Fresnel reflectance equation as proposed by Schlick [Comp. Graph. Forum '94]: https://...
Definition: fresnel_schlick.h:21
Vgroove shadowing and masking.
Definition: vgroove.h:26
static constexpr literal Cook
Definition: microfacet.h:35
Scaled BSDF model.
Definition: scaledmodel.h:30
Definition: string_literal.h:16
Implements: "Measuring and modeling anisotropic reflection" [Ward 1992]: https://doi....
Implements: "An Improved Normalization for the Ward Reflectance Model" [Arne Duer 2006]: https://doi....