All BBM methods are defined to operate on a variety of value types and spectrum types. Each BBM class takes a config structure as a template parameter (that satisfies concepts::config). To import common typedefs into the current scope add the macro BBM_IMPORT_CONFIG with the config template parameters as parameter. To import a single 'core' type use Core_t<Config>. More...
#include "concepts/macro.h"#include "concepts/config.h"#include "core/vec.h"#include "core/color.h"#include "core/mat.h"#include "core/constants.h"#include "core/stringconvert.h"#include "bbm/bsdf_flag.h"#include "bbm/bsdfsample.h"#include "bbm/vec3dpair.h"Go to the source code of this file.
Namespaces | |
| namespace | bbm |
Macros | |
| #define | BBM_CHECK_CONFIG(CONF) |
| Helper Macro to validate a configuration. | |
| #define | BBM_DECLARE_FORWARD_IMPORT(STRUCT) template<typename CONF> requires concepts::config<CONF> struct STRUCT; |
| #define | BBM_DECLARE_CORE_TYPE(Core, Type, ...) |
| #define | BBM_DECLARE_SHORTHAND(SHORTHAND, TYPE) |
| #define | BBM_IMPORT_CONFIG(...) |
| Import the configs typedefs in the current scope | |
Typedefs | |
| template<typename T > | |
| using | get_config = typename std::decay_t< T >::Config |
| get_config type trait | |
| template<typename T > | |
| using | Value_t = typename get_config< T >::Value |
| template<typename T > | |
| using | Spectrum_t = typename get_config< T >::Spectrum |
Functions | |
| BBM_DECLARE_FORWARD_IMPORT (bsdfsample) | |
| BBM_DECLARE_FORWARD_IMPORT (vec3dpair) | |
| BBM_DECLARE_CORE_TYPE (Scalar, T, bbm::scalar_t< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Mask, T, bbm::mask_t< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Size, T, bbm::index_t< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (BsdfFlag, T, bbm::replace_scalar_t< bbm::remove_diff_t< Value_t< T > >, bbm::bsdf_flag >) | |
| BBM_DECLARE_CORE_TYPE (Constants, T, bbm::constants< Scalar_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Vec2d, T, bbm::vec2d< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Mat2d, T, bbm::mat2d< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Vec3d, T, bbm::vec3d< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Mat3d, T, bbm::mat3d< Value_t< T > >) | |
| BBM_DECLARE_CORE_TYPE (Complex, T, bbm::complex< Value_t< T > >) | |
| BBM_DECLARE_SHORTHAND (BsdfSample_t, bsdfsample) | |
| BBM_DECLARE_SHORTHAND (Vec3dPair_t, vec3dpair) | |
All BBM methods are defined to operate on a variety of value types and spectrum types. Each BBM class takes a config structure as a template parameter (that satisfies concepts::config). To import common typedefs into the current scope add the macro BBM_IMPORT_CONFIG with the config template parameters as parameter. To import a single 'core' type use Core_t<Config>.
| #define BBM_CHECK_CONFIG | ( | CONF | ) |
Helper Macro to validate a configuration.
| #define BBM_DECLARE_CORE_TYPE | ( | Core, | |
| Type, | |||
| ... | |||
| ) |
| #define BBM_DECLARE_FORWARD_IMPORT | ( | STRUCT | ) | template<typename CONF> requires concepts::config<CONF> struct STRUCT; |
| #define BBM_DECLARE_SHORTHAND | ( | SHORTHAND, | |
| TYPE | |||
| ) |
| #define BBM_IMPORT_CONFIG | ( | ... | ) |
Import the configs typedefs in the current scope
A macro to define common shorthand type aliases in the current scope based on a BBM config structure type.
Any class that meets concepts::has_config can be passed.
Using VA_ARGS for passing the CONFIG argument to handle passing a configs with commas.
Any class that IMPORTs a CONFIG will satisfies concepts::has_config.