![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
Go to the source code of this file.
Namespaces | |
namespace | Divide |
Handle console commands that start with a forward slash. | |
namespace | Divide::customRNG |
namespace | Divide::customRNG::detail |
namespace | Divide::Util |
namespace | Divide::Angle |
namespace | Divide::Metric |
namespace | Divide::Time |
Macros | |
#define | DVD_CORE_MATH_MATH_HELPER_INL_ |
Functions | |
template<typename Engine > | |
Engine & | Divide::customRNG::detail::getEngine () |
template<typename Engine > | |
void | Divide::customRNG::srand (const U32 seed) |
template<typename Engine > | |
void | Divide::customRNG::srand () |
template<typename T , typename Engine , typename Distribution > requires std::is_arithmetic_v<T> && std::is_fundamental_v<T> | |
T | Divide::customRNG::rand (T min, T max) |
template<typename T , typename Engine , typename Distribution > requires std::is_arithmetic_v<T> | |
T | Divide::customRNG::rand () |
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>> requires std::is_arithmetic_v<T> | |
T | Divide::Random (T min, T max) |
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>> requires std::is_arithmetic_v<T> | |
T | Divide::Random (T max) |
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>> requires std::is_arithmetic_v<T> | |
T | Divide::Random () |
template<typename Engine = std::mt19937_64> | |
void | Divide::SeedRandom () |
template<typename Engine = std::mt19937_64> | |
void | Divide::SeedRandom (U32 seed) |
template<typename T > requires std::is_arithmetic<T> | |
::value constexpr void | Divide::CLAMP (T &n, T min, T max) noexcept |
Clamps value n between min and max. | |
template<typename T > | |
constexpr void | Divide::CLAMP_01 (T &n) noexcept |
template<typename T > requires std::is_arithmetic<T> | |
::value constexpr T | Divide::CLAMPED (T n, T min, T max) noexcept |
template<typename T > requires std::is_arithmetic<T> | |
::value constexpr T | Divide::CLAMPED_01 (T n) noexcept |
template<typename T > requires std::is_arithmetic<T> | |
::value constexpr T | Divide::MAP (T input, T in_min, T in_max, T out_min, T out_max, D64 &slopeOut) noexcept |
template<typename T > | |
constexpr void | Divide::REMAP (T &input, T in_min, T in_max, T out_min, T out_max, D64 &slopeOut) noexcept |
template<typename T > requires std::is_arithmetic<T> | |
::value constexpr T | Divide::SQUARED (T input) noexcept |
template<typename T > | |
void | Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, T rect_x, T rect_y, T rect_z, T rect_w) noexcept |
template<typename T > | |
void | Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, const Rect< T > &rect) noexcept |
template<typename T > | |
void | Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, const vec4< T > &rect) noexcept |
template<typename T > | |
bool | Divide::COORDS_IN_RECT (T input_x, T input_y, T rect_x, T rect_y, T rect_z, T rect_w) noexcept |
template<typename T > | |
bool | Divide::COORDS_IN_RECT (T input_x, T input_y, const Rect< T > &rect) noexcept |
template<typename T > | |
bool | Divide::COORDS_IN_RECT (T input_x, T input_y, const vec4< T > &rect) noexcept |
template<typename T > requires std::is_integral<T> | |
::value &&std::is_unsigned< T >::value constexpr T | Divide::roundup (T value, unsigned maxb=sizeof(T) *CHAR_BIT, unsigned curb=1) |
constexpr U32 | Divide::nextPOW2 (U32 n) noexcept |
constexpr U32 | Divide::prevPOW2 (U32 n) noexcept |
constexpr U32 | Divide::minSquareMatrixSize (U32 elementCount) noexcept |
template<typename T , typename U > | |
T | Divide::Lerp (T v1, T v2, U t) noexcept |
template<typename T , typename U > | |
T | Divide::FastLerp (T v1, T v2, U t) noexcept |
template<typename T > | |
T | Divide::Sqrt (T input) noexcept |
template<typename T , typename U > | |
T | Divide::Sqrt (U input) noexcept |
template<> | |
F32 | Divide::Sqrt (const __m128 input) noexcept |
F32 | Divide::FRACT (F32 floatValue) noexcept |
Helper method to emulate GLSL. | |
constexpr I8 | Divide::FLOAT_TO_CHAR_SNORM (F32_SNORM value) noexcept |
Returns clamped value * 128. | |
constexpr F32_SNORM | Divide::SNORM_CHAR_TO_FLOAT (I8 value) noexcept |
constexpr U8 | Divide::PACKED_FLOAT_TO_CHAR_UNORM (F32_SNORM value) noexcept |
Helper methods to go from an snorm float (-1...1) to packed unorm char (value => (value + 1) * 0.5 => U8) | |
constexpr F32_SNORM | Divide::UNORM_CHAR_TO_PACKED_FLOAT (U8 value) noexcept |
constexpr F32_NORM | Divide::UNORM_CHAR_TO_FLOAT (U8 value) noexcept |
Returns value / 255.f. | |
constexpr U8 | Divide::FLOAT_TO_CHAR_UNORM (F32_NORM value) noexcept |
Returns round(value * 255) | |
F32 | Divide::Util::PACK_VEC3 (F32_SNORM x, F32_SNORM y, F32_SNORM z) noexcept |
F32 | Divide::Util::PACK_VEC3 (U8 x, U8 y, U8 z) noexcept |
void | Divide::Util::UNPACK_VEC3 (F32 src, F32_SNORM &x, F32_SNORM &y, F32_SNORM &z) noexcept |
template<typename T > | |
constexpr DEGREES< T > | Divide::Angle::to_VerticalFoV (DEGREES< T > horizontalFoV, D64 aspectRatio) noexcept |
template<typename T > | |
constexpr DEGREES< T > | Divide::Angle::to_HorizontalFoV (DEGREES< T > verticalFoV, D64 aspectRatio) noexcept |
template<typename T > | |
constexpr RADIANS< T > | Divide::Angle::to_RADIANS (DEGREES< T > angle) noexcept |
template<> | |
constexpr RADIANS< F32 > | Divide::Angle::to_RADIANS (const DEGREES< F32 > angle) noexcept |
template<typename T > | |
constexpr DEGREES< T > | Divide::Angle::to_DEGREES (RADIANS< T > angle) noexcept |
template<> | |
constexpr DEGREES< F32 > | Divide::Angle::to_DEGREES (const RADIANS< F32 > angle) noexcept |
template<typename T > | |
constexpr vec2< RADIANS< T > > | Divide::Angle::to_RADIANS (vec2< DEGREES< T > > angle) noexcept |
template<typename T > | |
constexpr vec2< DEGREES< T > > | Divide::Angle::to_DEGREES (vec2< RADIANS< T > > angle) noexcept |
template<typename T > | |
constexpr vec3< RADIANS< T > > | Divide::Angle::to_RADIANS (const vec3< DEGREES< T > > &angle) noexcept |
template<typename T > | |
constexpr vec3< DEGREES< T > > | Divide::Angle::to_DEGREES (const vec3< RADIANS< T > > &angle) noexcept |
template<typename T > | |
constexpr vec4< RADIANS< T > > | Divide::Angle::to_RADIANS (const vec4< DEGREES< T > > &angle) noexcept |
template<typename T > | |
constexpr vec4< DEGREES< T > > | Divide::Angle::to_DEGREES (const vec4< RADIANS< T > > &angle) noexcept |
template<typename T > | |
constexpr T | Divide::Angle::DegreesToRadians (T angleDegrees) noexcept |
Return the radian equivalent of the given degree value. | |
template<typename T > | |
constexpr T | Divide::Angle::RadiansToDegrees (T angleRadians) noexcept |
Return the degree equivalent of the given radian value. | |
template<typename T > | |
constexpr T | Divide::Angle::Degrees (T degrees) noexcept |
Returns the specified value. Used only for emphasis. | |
template<typename T > | |
constexpr T | Divide::Angle::Radians (T radians) noexcept |
Returns the specified value. Used only for emphasis. | |
template<typename T > | |
constexpr T | Divide::Metric::Tera (T a) |
Base value * 1000000000000. | |
template<typename T > | |
constexpr T | Divide::Metric::Giga (T a) |
Base value * 1000000000. | |
template<typename T > | |
constexpr T | Divide::Metric::Mega (T a) |
Base value * 1000000. | |
template<typename T > | |
constexpr T | Divide::Metric::Kilo (T a) |
Base value * 1000. | |
template<typename T > | |
constexpr T | Divide::Metric::Hecto (T a) |
Base value * 100. | |
template<typename T > | |
constexpr T | Divide::Metric::Deca (T a) |
Base value * 10. | |
template<typename T > | |
constexpr T | Divide::Metric::Base (T a) |
Base value. | |
template<typename T > | |
constexpr T | Divide::Metric::Deci (T a) |
Base value * 0.1. | |
template<typename T > | |
constexpr T | Divide::Metric::Centi (T a) |
Base value * 0.01. | |
template<typename T > | |
constexpr T | Divide::Metric::Milli (T a) |
Base value * 0.001. | |
template<typename T > | |
constexpr T | Divide::Metric::Micro (T a) |
Base value * 0.000001. | |
template<typename T > | |
constexpr T | Divide::Metric::Nano (T a) |
Base value * 0.000000001. | |
template<typename T > | |
constexpr T | Divide::Metric::Pico (T a) |
Base value * 0.000000000001. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Tera (U a) |
Base value * 1000000000000. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Giga (U a) |
Base value * 1000000000. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Mega (U a) |
Base value * 1000000. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Kilo (U a) |
Base value * 1000. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Hecto (U a) |
Base value * 100. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Deca (U a) |
Base value * 10. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Base (U a) |
Base value. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Deci (U a) |
Base value * 0.1. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Centi (U a) |
Base value * 0.01. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Milli (U a) |
Base value * 0.001. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Micro (U a) |
Base value * 0.000001. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Nano (U a) |
Base value * 0.000000001. | |
template<typename T , typename U > | |
constexpr T | Divide::Metric::Pico (U a) |
Base value * 0.000000000001. | |
template<typename T > | |
constexpr T | Divide::Time::Hours (T a) |
template<typename T > | |
constexpr T | Divide::Time::Minutes (T a) |
template<typename T > | |
constexpr T | Divide::Time::Seconds (T a) |
template<typename T > | |
constexpr T | Divide::Time::Milliseconds (T a) |
template<typename T > | |
constexpr T | Divide::Time::Microseconds (T a) |
template<typename T > | |
constexpr T | Divide::Time::Nanoseconds (T a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Hours (U a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Minutes (U a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Seconds (U a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Milliseconds (U a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Microseconds (U a) |
template<typename T , typename U > | |
constexpr T | Divide::Time::Nanoseconds (U a) |
template<typename T = D64, typename U > | |
constexpr T | Divide::Time::NanosecondsToSeconds (U a) noexcept |
template<typename T = D64, typename U > | |
constexpr T | Divide::Time::NanosecondsToMilliseconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::NanosecondsToMicroseconds (U a) noexcept |
template<typename T = D64, typename U > | |
constexpr T | Divide::Time::MicrosecondsToSeconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::MicrosecondsToMilliseconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::MicrosecondsToNanoseconds (U a) noexcept |
template<typename T = D64, typename U > | |
constexpr T | Divide::Time::MillisecondsToSeconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::MillisecondsToMicroseconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::MillisecondsToNanoseconds (U a) noexcept |
template<typename T = D64, typename U > | |
constexpr T | Divide::Time::SecondsToMilliseconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::SecondsToMicroseconds (U a) noexcept |
template<typename T = U64, typename U > | |
constexpr T | Divide::Time::SecondsToNanoseconds (U a) noexcept |
FORCE_INLINE size_t | Divide::Util::GetAlignmentCorrected (const size_t value, const size_t alignment) noexcept |
template<typename T , typename... Rest> | |
FORCE_INLINE void | Divide::Util::Hash_combine (std::size_t &seed, const T &v, const Rest &... rest) noexcept |
a la Boost | |
template<typename T , typename... Rest> requires std::is_integral<T> | |
::value &&std::is_unsigned< T >::value FORCE_INLINE void | Divide::Util::Hash_combine (size_t &seed, const T &v, const Rest &... rest) noexcept |
a la Boost | |
template<typename TargetType , typename SourceType > | |
TargetType | Divide::Util::ConvertData (const SourceType &data) |
template<class FwdIt , class Compare = std::less<typename std::iterator_traits<FwdIt>::value_type>> | |
void | Divide::Util::InsertionSort (FwdIt first, FwdIt last, Compare cmp=Compare()) |
#define DVD_CORE_MATH_MATH_HELPER_INL_ |
Definition at line 33 of file MathHelper.inl.