|
@@ -33,67 +33,46 @@
|
|
|
namespace glm
|
|
namespace glm
|
|
|
{
|
|
{
|
|
|
template <typename genType>
|
|
template <typename genType>
|
|
|
- GLM_FUNC_QUALIFIER genType clamp
|
|
|
|
|
- (
|
|
|
|
|
- genType const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER genType clamp(genType const & Texcoord)
|
|
|
{
|
|
{
|
|
|
return glm::clamp(Texcoord, genType(0), genType(1));
|
|
return glm::clamp(Texcoord, genType(0), genType(1));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template <typename T, precision P>
|
|
template <typename T, precision P>
|
|
|
- GLM_FUNC_QUALIFIER tvec2<T, P> clamp
|
|
|
|
|
- (
|
|
|
|
|
- tvec2<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec2<T, P> clamp(tvec2<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec2<T, P> Result;
|
|
tvec2<T, P> Result;
|
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
|
- Result[i] = clamp(Texcoord[i]);
|
|
|
|
|
|
|
+ Result[i] = clamp_to_edge(Texcoord[i]);
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template <typename T, precision P>
|
|
template <typename T, precision P>
|
|
|
- GLM_FUNC_QUALIFIER tvec3<T, P> clamp
|
|
|
|
|
- (
|
|
|
|
|
- tvec3<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec3<T, P> clamp(tvec3<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec3<T, P> Result;
|
|
tvec3<T, P> Result;
|
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
|
- Result[i] = clamp(Texcoord[i]);
|
|
|
|
|
|
|
+ Result[i] = clamp_to_edge(Texcoord[i]);
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template <typename T, precision P>
|
|
template <typename T, precision P>
|
|
|
- GLM_FUNC_QUALIFIER tvec4<T, P> clamp
|
|
|
|
|
- (
|
|
|
|
|
- tvec4<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec4<T, P> clamp(tvec4<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec4<T, P> Result;
|
|
tvec4<T, P> Result;
|
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|
|
|
- Result[i] = clamp(Texcoord[i]);
|
|
|
|
|
|
|
+ Result[i] = clamp_to_edge(Texcoord[i]);
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ////////////////////////
|
|
|
|
|
- // repeat
|
|
|
|
|
-
|
|
|
|
|
- template <typename genType>
|
|
|
|
|
- GLM_FUNC_QUALIFIER genType repeat
|
|
|
|
|
- (
|
|
|
|
|
- genType const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename genType>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER genType repeat(genType const & Texcoord)
|
|
|
{
|
|
{
|
|
|
return glm::fract(Texcoord);
|
|
return glm::fract(Texcoord);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec2<T, P> repeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec2<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec2<T, P> repeat(tvec2<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec2<T, P> Result;
|
|
tvec2<T, P> Result;
|
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
@@ -101,11 +80,8 @@ namespace glm
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec3<T, P> repeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec3<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec3<T, P> repeat(tvec3<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec3<T, P> Result;
|
|
tvec3<T, P> Result;
|
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
@@ -113,11 +89,8 @@ namespace glm
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec4<T, P> repeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec4<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec4<T, P> repeat(tvec4<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec4<T, P> Result;
|
|
tvec4<T, P> Result;
|
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|
|
@@ -125,18 +98,13 @@ namespace glm
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ////////////////////////
|
|
|
|
|
- // mirrorRepeat
|
|
|
|
|
-
|
|
|
|
|
- template <typename genType, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER genType mirrorRepeat
|
|
|
|
|
- (
|
|
|
|
|
- genType const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename genType>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER genType mirrorRepeat(genType const & Texcoord)
|
|
|
{
|
|
{
|
|
|
- genType const Clamp = genType(int(glm::floor(Texcoord)) % 2);
|
|
|
|
|
- genType const Floor = glm::floor(Texcoord);
|
|
|
|
|
- genType const Rest = Texcoord - Floor;
|
|
|
|
|
|
|
+ genType const Abs = glm::abs(Texcoord);
|
|
|
|
|
+ genType const Clamp = genType(int(glm::floor(Abs)) % 2);
|
|
|
|
|
+ genType const Floor = glm::floor(Abs);
|
|
|
|
|
+ genType const Rest = Abs - Floor;
|
|
|
genType const Mirror = Clamp + Rest;
|
|
genType const Mirror = Clamp + Rest;
|
|
|
|
|
|
|
|
genType Out;
|
|
genType Out;
|
|
@@ -147,11 +115,8 @@ namespace glm
|
|
|
return Out;
|
|
return Out;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec2<T, P> mirrorRepeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec2<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec2<T, P> mirrorRepeat(tvec2<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec2<T, P> Result;
|
|
tvec2<T, P> Result;
|
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i)
|
|
@@ -159,11 +124,8 @@ namespace glm
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec3<T, P> mirrorRepeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec3<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec3<T, P> mirrorRepeat(tvec3<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec3<T, P> Result;
|
|
tvec3<T, P> Result;
|
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i)
|
|
@@ -171,11 +133,8 @@ namespace glm
|
|
|
return Result;
|
|
return Result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template <typename T, precision P>
|
|
|
|
|
- GLM_FUNC_QUALIFIER tvec4<T, P> mirrorRepeat
|
|
|
|
|
- (
|
|
|
|
|
- tvec4<T, P> const & Texcoord
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ template <typename T, precision P>
|
|
|
|
|
+ GLM_FUNC_QUALIFIER tvec4<T, P> mirrorRepeat(tvec4<T, P> const & Texcoord)
|
|
|
{
|
|
{
|
|
|
tvec4<T, P> Result;
|
|
tvec4<T, P> Result;
|
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|
|
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i)
|