Loading...
Searching...
No Matches
bbm::concepts::bsdfmodel Concept Reference

bsdfmodel concept More...

#include <bsdfmodel.h>

Concept definition

template<typename BSDFMODEL>
concept bbm::concepts::bsdfmodel = requires(const BSDFMODEL& model)
{
{ model.eval(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>(), std::declval<Mask_t<BSDFMODEL>>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.eval(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>())} -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.eval(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>())} -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.eval(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.sample(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec2d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>(), std::declval<Mask_t<BSDFMODEL>>()) } -> std::same_as<BsdfSample_t<BSDFMODEL>>;
{ model.sample(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec2d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>()) } -> std::same_as<BsdfSample_t<BSDFMODEL>>;
{ model.sample(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec2d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>()) } -> std::same_as<BsdfSample_t<BSDFMODEL>>;
{ model.sample(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec2d_t<BSDFMODEL>>()) } -> std::same_as<BsdfSample_t<BSDFMODEL>>;
{ model.pdf(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>(), std::declval<Mask_t<BSDFMODEL>>()) } -> std::same_as<Value_t<BSDFMODEL>>;
{ model.pdf(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>()) } -> std::same_as<Value_t<BSDFMODEL>>;
{ model.pdf(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>()) } -> std::same_as<Value_t<BSDFMODEL>>;
{ model.pdf(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<Vec3d_t<BSDFMODEL>>()) } -> std::same_as<Value_t<BSDFMODEL>>;
{ model.reflectance(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>(), std::declval<Mask_t<BSDFMODEL>>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.reflectance(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>(), std::declval<unit_t>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.reflectance(std::declval<Vec3d_t<BSDFMODEL>>(), std::declval<BsdfFlag_t<BSDFMODEL>>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
{ model.reflectance(std::declval<Vec3d_t<BSDFMODEL>>()) } -> std::same_as<Spectrum_t<BSDFMODEL>>;
}
bsdfmodel concept
Definition: bsdfmodel.h:33
has_config
Definition: config.h:53
A named class is a class that contains a static constexpr string_literal name.
Definition: named.h:19

Detailed Description

bsdfmodel concept

Each bsdfmodel requires: