ndf concept
More...
#include <ndf.h>
template<typename NDF>
{
{ ndf.sample(std::declval<Vec3d_t<NDF>>(), std::declval<Vec2d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> std::same_as<Vec3d_t<NDF>>;
{ ndf.sample(std::declval<Vec3d_t<NDF>>(), std::declval<Vec2d_t<NDF>>()) } -> std::same_as<Vec3d_t<NDF>>;
{ ndf.pdf(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> std::same_as<Value_t<NDF>>;
{ ndf.pdf(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>()) } -> std::same_as<Value_t<NDF>>;
{ ndf.G1(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
{ ndf.G1(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
}
has_config
Definition: config.h:53
A named class is a class that contains a static constexpr string_literal name.
Definition: named.h:19
ndf concept
Definition: ndf.h:29
true if type is the same as any of the listed types
Definition: util.h:31
typename get_config< T >::Spectrum Spectrum_t
Definition: config.h:68
ndf concept
Each ndf requires:
- concepts::has_config
- concepts::named
- Value/Spectrum eval(const Vec3d& halfway, Mask mask=true) const
- Vec3d sample(const Vec3d& view, const Vec2d& xi, Mask mask=true) const
- Value pdf(const Vec3d& view, const Vec3d& m, Mask mask=true) const
- Value/Spectrum G1(const Vec3d& v, const Vec3d& m, Mask mask=true) const