Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030
00031 namespace glm{
00032 namespace detail
00033 {
00034 template <typename T>
00035 GLM_FUNC_QUALIFIER T mod289(T const & x)
00036 {
00037 return x - floor(x * static_cast<T>(1.0) / static_cast<T>(289.0)) * static_cast<T>(289.0);
00038 }
00039
00040 template <typename T>
00041 GLM_FUNC_QUALIFIER T permute(T const & x)
00042 {
00043 return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
00044 }
00045
00046 template <typename T, precision P>
00047 GLM_FUNC_QUALIFIER tvec2<T, P> permute(tvec2<T, P> const & x)
00048 {
00049 return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
00050 }
00051
00052 template <typename T, precision P>
00053 GLM_FUNC_QUALIFIER tvec3<T, P> permute(tvec3<T, P> const & x)
00054 {
00055 return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
00056 }
00057
00058 template <typename T, precision P>
00059 GLM_FUNC_QUALIFIER tvec4<T, P> permute(tvec4<T, P> const & x)
00060 {
00061 return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
00062 }
00063
00064
00065
00066
00067
00068
00069
00070 template <typename T>
00071 GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r)
00072 {
00073 return T(1.79284291400159) - T(0.85373472095314) * r;
00074 }
00075
00076 template <typename T, precision P>
00077 GLM_FUNC_QUALIFIER detail::tvec2<T, P> taylorInvSqrt(detail::tvec2<T, P> const & r)
00078 {
00079 return T(1.79284291400159) - T(0.85373472095314) * r;
00080 }
00081
00082 template <typename T, precision P>
00083 GLM_FUNC_QUALIFIER detail::tvec3<T, P> taylorInvSqrt(detail::tvec3<T, P> const & r)
00084 {
00085 return T(1.79284291400159) - T(0.85373472095314) * r;
00086 }
00087
00088 template <typename T, precision P>
00089 GLM_FUNC_QUALIFIER detail::tvec4<T, P> taylorInvSqrt(detail::tvec4<T, P> const & r)
00090 {
00091 return T(1.79284291400159) - T(0.85373472095314) * r;
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101 template <typename T, precision P>
00102 GLM_FUNC_QUALIFIER detail::tvec2<T, P> fade(detail::tvec2<T, P> const & t)
00103 {
00104 return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
00105 }
00106
00107 template <typename T, precision P>
00108 GLM_FUNC_QUALIFIER detail::tvec3<T, P> fade(detail::tvec3<T, P> const & t)
00109 {
00110 return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
00111 }
00112
00113 template <typename T, precision P>
00114 GLM_FUNC_QUALIFIER detail::tvec4<T, P> fade(detail::tvec4<T, P> const & t)
00115 {
00116 return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
00117 }
00118
00119
00120
00121
00122
00123
00124
00125 }
00126 }
00127