28 template<
typename BSDFMODEL>
requires concepts::bsdfmodel<BSDFMODEL>
29 class bsdf :
virtual public bsdf_base< get_config<BSDFMODEL>>,
public BSDFMODEL
38 using BSDFMODEL::BSDFMODEL;
41 bsdf(
const BSDFMODEL& model) : BSDFMODEL(model) {}
44 using BSDFMODEL::operator=;
58 return BSDFMODEL::eval(in, out, component, unit, mask);
75 return BSDFMODEL::sample(out, xi, component, unit, mask);
91 return BSDFMODEL::pdf(in, out, component, unit, mask);
106 return BSDFMODEL::reflectance(out, component, unit, mask);
113 virtual std::string
toString(
void)
const override final
115 return bbm::toString(
static_cast<const BSDFMODEL&
>(*
this) );
123 return bsdf( bbm::fromString<BSDFMODEL>(str) );
All BBM methods are defined to operate on a variety of value types and spectrum types....
Abstract base definition of a BSDF (with virtual functions)
Enumerate all BSDF parameters (e.g., stack in a vector).
BSDF implementation of a BSDF model.
Definition: bsdf.h:30
virtual bbm::vector< Value > parameter_upper_bound(bsdf_attr flags=bsdf_attr::All) const override final
Definition: bsdf.h:149
virtual bbm::vector< Value > parameter_lower_bound(bsdf_attr flags=bsdf_attr::All) const override final
Definition: bsdf.h:144
virtual bbm::vector< Value > parameter_default_values(bsdf_attr flags=bsdf_attr::All) const override final
Definition: bsdf.h:139
virtual Value pdf(const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const override final
Virtual passthrough of the pdf function.
Definition: bsdf.h:89
virtual Spectrum eval(const Vec3d &in, const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const override final
Virtual passthrough of eval function.
Definition: bsdf.h:56
virtual BsdfSample sample(const Vec3d &out, const Vec2d &xi, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const override final
Virtual passthrough of sample function.
Definition: bsdf.h:73
BBM_BSDF_FORWARD
Definition: bsdf.h:35
virtual bbm::vector< Value & > parameter_values(bsdf_attr flags=bsdf_attr::All) override final
Definition: bsdf.h:129
BBM_IMPORT_CONFIG(BSDFMODEL)
virtual bbm::vector< const Value & > parameter_values(bsdf_attr flags=bsdf_attr::All) const override final
Definition: bsdf.h:134
virtual Spectrum reflectance(const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const override final
Virtual passthrough of the hemispherical reflectance function.
Definition: bsdf.h:104
static constexpr string_literal name
Definition: bsdf.h:34
bsdf(const BSDFMODEL &model)
Construct directly from a BSDF model.
Definition: bsdf.h:41
virtual std::string toString(void) const override final
Pipe toString to BSDFMODEL.
Definition: bsdf.h:113
static bsdf fromString(const std::string &str)
construct the bsdf from a string
Definition: bsdf.h:121
Definition: vector_util.h:27
bsdf concept
Definition: bsdf.h:29
bsdf contract: virtual interface wrapper around bsdfmodels
#define BBM_CHECK_CONCEPT(CONCEPTNAME, CLASSNAME,...)
Check a class for a concept with bbm::concepts::archetypes in the namespace.
Definition: macro.h:35
Definition: aggregatebsdf.h:29
auto parameter_default_values(MODEL &&model, bsdf_attr flag=bsdf_attr::All)
Enumerate the default parameters of a BSDF model in a vector.
Definition: bsdf_enumerate.h:142
auto parameter_upper_bound(MODEL &&model, bsdf_attr flag=bsdf_attr::All)
Enumerate the upper bound of the parameters of a BSDF model in a vector.
Definition: bsdf_enumerate.h:213
std::string toString(const T &)
toString alias
Definition: stringconvert.h:594
auto parameter_lower_bound(MODEL &&model, bsdf_attr flag=bsdf_attr::All)
Enumerate the lower bound of the parameters of a BSDF model in a vector.
Definition: bsdf_enumerate.h:178
auto parameter_values(MODEL &&model, bsdf_attr flag=bsdf_attr::All)
Enumerate the parameters of a BSDF model in a vector.
Definition: bsdf_enumerate.h:103
bsdf_attr
Attribute Property Flags.
Definition: bsdf_attr_flag.h:17
unit_t
Light Unit.
Definition: unit.h:21
Forward declaration.
Definition: bsdf_base.h:55
Definition: string_literal.h:16