1#ifndef _BBM_MASKINGSHADOWING_CONCEPT_H_
2#define _BBM_MASKINGSHADOWING_CONCEPT_H_
43 { std::decay_t<MS>::eval(std::declval<archetype::ndf<get_config<MS>>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>(), std::declval<Mask_t<MS>>()) } ->
concepts::same_as_any<Value_t<MS>, Spectrum_t<MS>>;
46 { std::decay_t<MS>::eval(std::declval<archetype::ndf<get_config<MS>>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>()) } ->
concepts::same_as_any<Value_t<MS>, Spectrum_t<MS>>;
60 static RET
eval(
ndf<Config>, Vec3d_t<Config>, Vec3d_t<Config>, Vec3d_t<Config>, Mask_t<Config> =
true);
config concept
Definition: config.h:31
has_config
Definition: config.h:53
maskingshadowing concept
Definition: maskingshadowing.h:24
ndf concept
Definition: ndf.h:29
true if type is the same as any of the listed types
Definition: util.h:31
Microfacet Normal Distribution contract.
#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
Definition: maskingshadowing.h:58
static RET eval(ndf< Config >, Vec3d_t< Config >, Vec3d_t< Config >, Vec3d_t< Config >, Mask_t< Config >=true)
CONF Config
Definition: maskingshadowing.h:59
Additional basic helper concepts.