1#ifndef _BBM_FRESNEL_CONCEPT_H_
2#define _BBM_FRESNEL_CONCEPT_H_
26 template<
typename Fresnel>
30 typename std::decay_t<Fresnel>::parameter_type;
33 { std::decay_t<Fresnel>::eval( std::declval<
typename std::decay_t<Fresnel>::parameter_type>(), std::declval<Value_t<Fresnel>>(), std::declval<Mask_t<Fresnel>>() ) } ->
concepts::same_as_any<Value_t<Fresnel>, Spectrum_t<Fresnel>>;
36 { std::decay_t<Fresnel>::eval( std::declval<
typename std::decay_t<Fresnel>::parameter_type>(), std::declval<Value_t<Fresnel>>() ) } ->
concepts::same_as_any<Value_t<Fresnel>, Spectrum_t<Fresnel>>;
All BBM methods are defined to operate on a variety of value types and spectrum types....
config concept
Definition: config.h:31
fresnel concept
Definition: fresnel.h:27
has_config
Definition: config.h:53
true if type is the same as any of the listed types
Definition: util.h:31
Defines 'ior' and 'reflectance' types.
#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
typename get_config< T >::Value Value_t
Definition: config.h:67
static Value_t< Config > eval(parameter_type, Value_t< Config >, Mask_t< Config >=true)
PARAM parameter_type
Definition: fresnel.h:50
CONF Config
Definition: fresnel.h:49