From e62817b8252974b8a98393275874ee303840bf13 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 12 May 2017 18:49:50 +0500 Subject: 2017-05-12 --- depedencies/include/glm/detail/func_geometric.hpp | 113 ++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 depedencies/include/glm/detail/func_geometric.hpp (limited to 'depedencies/include/glm/detail/func_geometric.hpp') diff --git a/depedencies/include/glm/detail/func_geometric.hpp b/depedencies/include/glm/detail/func_geometric.hpp new file mode 100644 index 0000000..2f39bf5 --- /dev/null +++ b/depedencies/include/glm/detail/func_geometric.hpp @@ -0,0 +1,113 @@ +/// @ref core +/// @file glm/detail/func_geometric.hpp +/// +/// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions +/// +/// @defgroup core_func_geometric Geometric functions +/// @ingroup core +/// +/// These operate on vectors as vectors, not component-wise. + +#pragma once + +#include "type_vec3.hpp" + +namespace glm +{ + /// @addtogroup core_func_geometric + /// @{ + + /// Returns the length of x, i.e., sqrt(x * x). + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL length man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL T length( + vecType const & x); + + /// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL distance man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL T distance( + vecType const & p0, + vecType const & p1); + + /// Returns the dot product of x and y, i.e., result = x * y. + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL dot man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL T dot( + vecType const & x, + vecType const & y); + + /// Returns the cross product of x and y. + /// + /// @tparam valType Floating-point scalar types. + /// + /// @see GLSL cross man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template + GLM_FUNC_DECL tvec3 cross( + tvec3 const & x, + tvec3 const & y); + + /// Returns a vector in the same direction as x but with length of 1. + /// According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error. + /// + /// @see GLSL normalize man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL vecType normalize( + vecType const & x); + + /// If dot(Nref, I) < 0.0, return N, otherwise, return -N. + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL faceforward man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL vecType faceforward( + vecType const & N, + vecType const & I, + vecType const & Nref); + + /// For the incident vector I and surface orientation N, + /// returns the reflection direction : result = I - 2.0 * dot(N, I) * N. + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL reflect man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template + GLM_FUNC_DECL genType reflect( + genType const & I, + genType const & N); + + /// For the incident vector I and surface normal N, + /// and the ratio of indices of refraction eta, + /// return the refraction vector. + /// + /// @tparam genType Floating-point vector types. + /// + /// @see GLSL refract man page + /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions + template class vecType> + GLM_FUNC_DECL vecType refract( + vecType const & I, + vecType const & N, + T eta); + + /// @} +}//namespace glm + +#include "func_geometric.inl" -- cgit v1.2.3