|
Photon Engine 2.0.0-beta
A physically based renderer.
|
#include "Math/math.h"#include <Common/assertion.h>#include <concepts>#include <type_traits>#include <climits>#include <limits>Go to the source code of this file.
Namespaces | |
| namespace | ph |
| The root for all renderer implementations. | |
| namespace | ph::math |
| Math functions and utilities. | |
| namespace | ph::math::radical_inverse_detail |
Functions | |
| template<std::integral Value, std::integral Base> | |
| constexpr Value | ph::math::radical_inverse_detail::reverse_limit (const Value nextDigit, const Base base) |
The max value x such that x * base + nextDigit will not overflow its type. | |
| template<std::floating_point Result, std::integral Base> | |
| constexpr auto | ph::math::radical_inverse_detail::num_meaningful_digits (const Base base) |
Number of reversed digits that will have effect on the type Result. Due to the limited precision of floating-point types, only a limited number of digits may have an effect on the final radical inversed value. | |
| template<std::floating_point Result, std::unsigned_integral Value> | |
| constexpr Result | ph::math::radical_inverse_detail::base_2_scaler () |
| template<auto BASE, std::floating_point Result, std::integral Value> | |
| Result | ph::math::radical_inverse (const Value value) |
| Compute radical inverse of a value. | |
| template<auto BASE, std::floating_point Result, std::integral Value, typename DigitPermuter > | |
| Result | ph::math::radical_inverse_permuted (const Value dimIndex, const Value value, DigitPermuter permuter) |
Same as radical_inverse(), with permutation ability. It is guaranteed that no more than radical_inverse_detail::num_meaningful_digits() digits will be processed during the radical inverse. | |