diff --git a/glm/detail/func_geometric.inl b/glm/detail/func_geometric.inl index aec15efe..b3590152 100644 --- a/glm/detail/func_geometric.inl +++ b/glm/detail/func_geometric.inl @@ -114,9 +114,12 @@ namespace detail { GLM_FUNC_QUALIFIER static vec call(vec const& I, vec const& N, T eta) { + assert(eta >= static_cast(-1) && eta <= static_cast(1)); + T const dotValue(dot(N, I)); T const k(static_cast(1) - eta * eta * (static_cast(1) - dotValue * dotValue)); - return (eta * I - (eta * dotValue + std::sqrt(k)) * N) * static_cast(k >= static_cast(0)); + vec const Result = (eta * I - (eta * dotValue + std::sqrt(k)) * N) * static_cast(k >= static_cast(0)); + return Result; } }; }//namespace detail diff --git a/glm/geometric.hpp b/glm/geometric.hpp index e0380830..28d76199 100644 --- a/glm/geometric.hpp +++ b/glm/geometric.hpp @@ -99,6 +99,8 @@ namespace glm /// and the ratio of indices of refraction eta, /// return the refraction vector. /// + /// @param eta Indice of refraction. Must be a value between -1 and 1 inclusively. + /// /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector. /// @tparam T Floating-point scalar types. /// diff --git a/readme.md b/readme.md index 16052c15..0670cd92 100644 --- a/readme.md +++ b/readme.md @@ -68,6 +68,7 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate) - Splitted headers into EXT extensions to improve compilation time #670 - Added separated performance tests - Refactor manual, lists all configuration defines +- Clarified refract valid range of the indices of refraction, between -1 and 1 inclusively #806 #### Fixes: - Fixed SIMD detection on Clang and GCC