1#ifndef _BBM_SCALED_MODEL_H_
2#define _BBM_SCALED_MODEL_H_
25 template<
typename BSDFMODEL,
27 string_literal NAME = BSDFMODEL::name
28 >
requires concepts::bsdfmodel<BSDFMODEL> && concepts::reflection::attributes<BSDFMODEL> && std::constructible_from<BSDFMODEL>
37 using BSDFMODEL::sample;
52 return BSDFMODEL::eval(in, out, component, unit, mask) *
albedo;
66 return BSDFMODEL::reflectance(out, component, unit, mask) *
albedo;
All includes and helpers needed for declaring new bsdfmodels.
Definition: aggregatebsdf.h:29
bsdf_attr
Attribute Property Flags.
Definition: bsdf_attr_flag.h:17
unit_t
Light Unit.
Definition: unit.h:21
Base declaration of attribute; further specialized below.
Definition: attribute.h:26
Scaled BSDF model.
Definition: scaledmodel.h:30
BBM_BSDF_FORWARD
Definition: scaledmodel.h:34
BBM_DEFAULT_CONSTRUCTOR(scaledmodel)
Default constructor.
Definition: scaledmodel.h:79
bsdf_scale< Spectrum, FLAG > albedo
Class Attributes.
Definition: scaledmodel.h:73
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 albedo*BSDFMODELeval.
Definition: scaledmodel.h:50
Spectrum reflectance(const Vec3d &out, BsdfFlag component=bsdf_flag::All, unit_t unit=unit_t::Radiance, Mask mask=true) const
Return albedo*BSSFMODELreflectance.
Definition: scaledmodel.h:64
BBM_IMPORT_CONFIG(BSDFMODEL)
static constexpr string_literal name
Definition: scaledmodel.h:33
Definition: string_literal.h:16