diff --git a/glm/core/func_noise.inl b/glm/core/func_noise.inl index c780534e..a8e700ec 100644 --- a/glm/core/func_noise.inl +++ b/glm/core/func_noise.inl @@ -12,6 +12,41 @@ namespace glm namespace core{ namespace function{ namespace noise{ + namespace detail + { + template + inline vecType permute + ( + vecType const & x0, + detail::tvec3 const & p + ) + { + vecType x1 = mod(x0 * p.y, p.x); + return floor( mod( (x1 + p.z) *x0, p.x )); + } + + inline detail::tvec2 permute + ( + detail::tvec2 const & x0, + detail::tvec3 const & p + ) + { + vec2 x1 = mod(x0 * p.y, p.x); + return floor( mod( (x1 + p.z) *x0, p.x )); + } + + inline vec3 permute(vec3 x0,vec3 p) + { + vec3 x1 = mod(x0 * p.y, p.x); + return floor( mod( (x1 + p.z) *x0, p.x )); + } + + inline vec4 permute(vec4 x0,vec3 p) + { + vec4 x1 = mod(x0 * p.y, p.x); + return floor( mod( (x1 + p.z) *x0, p.x )); + } + }//namespace detail // noise1 template