diff --git a/glm/core/func_common.hpp b/glm/core/func_common.hpp index 00f9333c..ec564bf8 100644 --- a/glm/core/func_common.hpp +++ b/glm/core/func_common.hpp @@ -27,23 +27,31 @@ namespace glm ///@{ //! Returns x if x >= 0; otherwise, it returns -x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL abs man page + //! \li GLSL 1.30.08 specification, section 8.3 template genFIType abs(genFIType const & x); //! Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL sign man page + //! \li GLSL 1.30.08 specification, section 8.3 template genFIType sign(genFIType const & x); //! Returns a value equal to the nearest integer that is less then or equal to x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL floor man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType floor(genType const & x); //! Returns a value equal to the nearest integer to x //! whose absolute value is not larger than the absolute value of x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL trunc man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType trunc(genType const & x); @@ -52,31 +60,41 @@ namespace glm //! implementation, presumably the direction that is fastest. //! This includes the possibility that round(x) returns the //! same value as roundEven(x) for all values of x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL round man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType round(genType const & x); //! Returns a value equal to the nearest integer to x. //! A fractional part of 0.5 will round toward the nearest even //! integer. (Both 3.5 and 4.5 for x will return 4.0.) - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL roundEven man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType roundEven(genType const & x); //! Returns a value equal to the nearest integer //! that is greater than or equal to x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL ceil man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType ceil(genType const & x); //! Return x - floor(x). - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL fract man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType fract(genType const & x); //! Modulus. Returns x - y * floor(x / y) //! for each component in x using the floating point value y. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL mod man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType mod( genType const & x, @@ -84,7 +102,9 @@ namespace glm //! Modulus. Returns x - y * floor(x / y) //! for each component in x using the floating point value y. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL mod man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType mod( genType const & x, @@ -94,14 +114,18 @@ namespace glm //! part (as a whole number floating point value). Both the //! return value and the output parameter will have the same //! sign as x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL modf man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType modf( genType const & x, genType & i); //! Returns y if y < x; otherwise, it returns x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL min man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType min( genType const & x, @@ -113,7 +137,9 @@ namespace glm typename genType::value_type const & y); //! Returns y if x < y; otherwise, it returns x. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL max man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType max( genType const & x, @@ -126,7 +152,9 @@ namespace glm //! Returns min(max(x, minVal), maxVal) for each component in x //! using the floating-point values minVal and maxVal. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL clamp man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType clamp( genType const & x, @@ -155,8 +183,9 @@ namespace glm //! provides different functionality than //! genType mix(genType x, genType y, genType(a)) //! where a is a Boolean vector. - //! - //! From GLSL 1.30.08 specification, section 8.3 + //! + //! \li GLSL mix man page + //! \li GLSL 1.30.08 specification, section 8.3 //! //! \param[in] x Floating point scalar or vector. //! \param[in] y Floating point scalar or vector. @@ -167,7 +196,9 @@ namespace glm genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); //! Returns 0.0 if x < edge, otherwise it returns 1.0. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL step man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType step( genType const & edge, @@ -187,7 +218,9 @@ namespace glm //! t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); //! return t * t * (3 – 2 * t); //! Results are undefined if edge0 >= edge1. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL smoothstep man page + //! \li GLSL 1.30.08 specification, section 8.3 template genType smoothstep( genType const & edge0, @@ -205,7 +238,9 @@ namespace glm //! floating point representations. Returns false otherwise, //! including for implementations with no NaN //! representations. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL isnan man page + //! \li GLSL 1.30.08 specification, section 8.3 template typename genType::bool_type isnan(genType const & x); @@ -214,35 +249,56 @@ namespace glm //! set of floating point representations. Returns false //! otherwise, including for implementations with no infinity //! representations. - //! (From GLSL 1.30.08 specification, section 8.3) + //! + //! \li GLSL isinf man page + //! \li GLSL 1.30.08 specification, section 8.3 template typename genType::bool_type isinf(genType const & x); - //! Returns a signed or unsigned integer value representing + //! Returns a signed integer value representing //! the encoding of a floating-point value. The floatingpoint //! value's bit-level representation is preserved. - //! (From GLSL 4.00.08 specification, section 8.3) + //! + //! \li GLSL floatBitsToInt man page + //! \li GLSL 4.00.08 specification, section 8.3 template genIType floatBitsToInt(genType const & value); - //! Returns a signed or unsigned integer value representing + //! Returns a unsigned integer value representing //! the encoding of a floating-point value. The floatingpoint //! value's bit-level representation is preserved. - //! (From GLSL 4.00.08 specification, section 8.3) + //! + //! \li GLSL floatBitsToUint man page + //! \li GLSL 4.00.08 specification, section 8.3 template - genUType floatBitsToInt(genType const & value); + genUType floatBitsToUint(genType const & value); //! Returns a floating-point value corresponding to a signed - //! or unsigned integer encoding of a floating-point value. + //! integer encoding of a floating-point value. //! If an inf or NaN is passed in, it will not signal, and the //! resulting floating point value is unspecified. Otherwise, //! the bit-level representation is preserved. - //! (From GLSL 4.00.08 specification, section 8.3) - template - genType intBitsToFloat(genIUType const & value); - + //! + //! \li GLSL intBitsToFloat man page + //! \li GLSL 4.00.08 specification, section 8.3 + template + genType intBitsToFloat(genIType const & value); + + //! Returns a floating-point value corresponding to a + //! unsigned integer encoding of a floating-point value. + //! If an inf or NaN is passed in, it will not signal, and the + //! resulting floating point value is unspecified. Otherwise, + //! the bit-level representation is preserved. + //! + //! \li GLSL uintBitsToFloat man page + //! \li GLSL 4.00.08 specification, section 8.3 + template + genType uintBitsToFloat(genUType const & value); + //! Computes and returns a * b + c. - //! (From GLSL 4.00.08 specification, section 8.3) + //! + //! \li GLSL fma man page + //! \li GLSL 4.00.08 specification, section 8.3 template genType fma(genType const & a, genType const & b, genType const & c); diff --git a/glm/core/func_exponential.hpp b/glm/core/func_exponential.hpp index b5a027f0..7871397f 100644 --- a/glm/core/func_exponential.hpp +++ b/glm/core/func_exponential.hpp @@ -25,40 +25,54 @@ namespace glm ///@{ //! Returns x raised to the y power. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL pow man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType pow(genType const & x, genType const & y); //! Returns the natural exponentiation of x, i.e., e^x. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL exp man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType exp(genType const & x); //! Returns the natural logarithm of x, i.e., //! returns the value y which satisfies the equation x = e^y. //! Results are undefined if x <= 0. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL log man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType log(genType const & x); //! Returns 2 raised to the x power. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL exp2 man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType exp2(genType const & x); //! Returns the base 2 log of x, i.e., returns the value y, //! which satisfies the equation x = 2 ^ y. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL log2 man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType log2(genType const & x); //! Returns the positive square root of x. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL sqrt man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType sqrt(genType const & x); //! Returns the reciprocal of the positive square root of x. - //! (From GLSL 1.30.08 specification, section 8.2) + //! + //! \li GLSL inversesqrt man page + //! \li GLSL 1.30.08 specification, section 8.2 template genType inversesqrt(genType const & x); diff --git a/glm/core/func_geometric.hpp b/glm/core/func_geometric.hpp index a6bdc37e..c82d1043 100644 --- a/glm/core/func_geometric.hpp +++ b/glm/core/func_geometric.hpp @@ -25,40 +25,52 @@ namespace glm ///@{ //! Returns the length of x, i.e., sqrt(x * x). - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL length man page + //! \li GLSL 1.30.08 specification, section 8.4 template typename genType::value_type length( genType const & x); //! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL distance man page + //! \li GLSL 1.30.08 specification, section 8.4 template typename genType::value_type distance( genType const & p0, genType const & p1); //! Returns the dot product of x and y, i.e., result = x * y. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL dot man page + //! \li GLSL 1.30.08 specification, section 8.4 template typename genType::value_type dot( genType const & x, genType const & y); //! Returns the cross product of x and y. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL cross man page + //! \li GLSL 1.30.08 specification, section 8.4 template detail::tvec3 cross( detail::tvec3 const & x, detail::tvec3 const & y); //! Returns a vector in the same direction as x but with length of 1. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL normalize man page + //! \li GLSL 1.30.08 specification, section 8.4 template genType normalize( genType const & x); //! If dot(Nref, I) < 0.0, return N, otherwise, return -N. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL faceforward man page + //! \li GLSL 1.30.08 specification, section 8.4 template genType faceforward( genType const & N, @@ -67,7 +79,9 @@ namespace glm //! For the incident vector I and surface orientation N, //! returns the reflection direction : result = I - 2.0 * dot(N, I) * N. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL reflect man page + //! \li GLSL 1.30.08 specification, section 8.4 template genType reflect( genType const & I, @@ -76,7 +90,9 @@ namespace glm //! For the incident vector I and surface normal N, //! and the ratio of indices of refraction eta, //! return the refraction vector. - //! (From GLSL 1.30.08 specification, section 8.4) + //! + //! \li GLSL refract man page + //! \li GLSL 1.30.08 specification, section 8.4 template genType refract( genType const & I, diff --git a/glm/core/func_integer.hpp b/glm/core/func_integer.hpp index 4c50bb9f..b411b580 100644 --- a/glm/core/func_integer.hpp +++ b/glm/core/func_integer.hpp @@ -28,7 +28,8 @@ namespace glm //! modulo pow(2, 32). The value carry is set to 0 if the sum was //! less than pow(2, 32), or to 1 otherwise. //! - //! (From GLSL 4.00.08 specification, section 8.8) + //! \li GLSL uaddCarry man page + //! \li GLSL 4.00.08 specification, section 8.8 template genUType uaddCarry( genUType const & x, @@ -38,8 +39,9 @@ namespace glm //! Subtracts the 32-bit unsigned integer y from x, returning //! the difference if non-negative, or pow(2, 32) plus the difference //! otherwise. The value borrow is set to 0 if x >= y, or to 1 otherwise. - //! - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL usubBorrow man page + //! \li GLSL 4.00.08 specification, section 8.8 template genUType usubBorrow( genUType const & x, @@ -49,7 +51,9 @@ namespace glm //! Multiplies 32-bit integers x and y, producing a 64-bit //! result. The 32 least-significant bits are returned in lsb. //! The 32 most-significant bits are returned in msb. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL umulExtended man page + //! \li GLSL 4.00.08 specification, section 8.8 template void umulExtended( genUType const & x, @@ -60,7 +64,9 @@ namespace glm //! Multiplies 32-bit integers x and y, producing a 64-bit //! result. The 32 least-significant bits are returned in lsb. //! The 32 most-significant bits are returned in msb. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL imulExtended man page + //! \li GLSL 4.00.08 specification, section 8.8 template void imulExtended( genIType const & x, @@ -79,7 +85,8 @@ namespace glm //! offset and bits is greater than the number of bits used //! to store the operand. //! - //! (From GLSL 4.00.08 specification, section 8.8) + //! \li GLSL bitfieldExtract man page + //! \li GLSL 4.00.08 specification, section 8.8 template genIUType bitfieldExtract( genIUType const & Value, @@ -96,7 +103,8 @@ namespace glm //! offset and bits is greater than the number of bits used to //! store the operand. //! - //! (From GLSL 4.00.08 specification, section 8.8) + //! \li GLSL bitfieldInsert man page + //! \li GLSL 4.00.08 specification, section 8.8 template genIUType bitfieldInsert( genIUType const & Base, @@ -107,19 +115,25 @@ namespace glm //! Returns the reversal of the bits of value. //! The bit numbered n of the result will be taken from bit (bits - 1) - n of value, //! where bits is the total number of bits used to represent value. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL bitfieldReverse man page + //! \li GLSL 4.00.08 specification, section 8.8 template genIUType bitfieldReverse(genIUType const & value); //! Returns the number of bits set to 1 in the binary representation of value. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL bitCount man page + //! \li GLSL 4.00.08 specification, section 8.8 template class C> typename C::signed_type bitCount(C const & Value); //! Returns the bit number of the least significant bit set to //! 1 in the binary representation of value. //! If value is zero, -1 will be returned. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL findLSB man page + //! \li GLSL 4.00.08 specification, section 8.8 template class C> typename C::signed_type findLSB(C const & Value); @@ -127,7 +141,9 @@ namespace glm //! For positive integers, the result will be the bit number of the most significant bit set to 1. //! For negative integers, the result will be the bit number of the most significant //! bit set to 0. For a value of zero or negative one, -1 will be returned. - //! (From GLSL 4.00.08 specification, section 8.8) + //! + //! \li GLSL findMSB man page + //! \li GLSL 4.00.08 specification, section 8.8 template class C> typename C::signed_type findMSB(C const & Value); diff --git a/glm/core/func_matrix.hpp b/glm/core/func_matrix.hpp index 4ea7ce07..6a60b475 100644 --- a/glm/core/func_matrix.hpp +++ b/glm/core/func_matrix.hpp @@ -26,7 +26,9 @@ namespace glm //! Multiply matrix x by matrix y component-wise, i.e., //! result[i][j] is the scalar product of x[i][j] and y[i][j]. - //! (From GLSL 1.30.08 specification, section 8.5) + //! + //! \li GLSL matrixCompMult man page + //! \li GLSL 1.30.08 specification, section 8.5 template matType matrixCompMult( matType const & x, @@ -35,50 +37,66 @@ namespace glm //! Treats the first parameter c as a column vector //! and the second parameter r as a row vector //! and does a linear algebraic matrix multiply c * r. - //! (From GLSL 1.30.08 specification, section 8.5) - template + //! + //! \li GLSL outerProduct man page + //! \li GLSL 1.30.08 specification, section 8.5 + template matType outerProduct( vecType const & c, vecType const & r); //! Returns the transposed matrix of x - //! (From GLSL 1.30.08 specification, section 8.5) - template + //! + //! \li GLSL transpose man page + //! \li GLSL 1.30.08 specification, section 8.5 + template typename matType::transpose_type transpose( matType const & x); //! Return the determinant of a mat2 matrix. - //! (From GLSL 1.50.09 specification, section 8.5).. + //! + //! \li GLSL determinant man page + //! \li GLSL 1.30.08 specification, section 8.5 template typename detail::tmat2x2::value_type determinant( detail::tmat2x2 const & m); //! Return the determinant of a mat3 matrix. - //! (From GLSL 1.50.09 specification, section 8.5). + //! + //! \li GLSL determinant man page + //! \li GLSL 1.30.08 specification, section 8.5 template typename detail::tmat3x3::value_type determinant( detail::tmat3x3 const & m); //! Return the determinant of a mat4 matrix. - //! (From GLSL 1.50.09 specification, section 8.5). - template + //! + //! \li GLSL determinant man page + //! \li GLSL 1.30.08 specification, section 8.5 + template typename detail::tmat4x4::value_type determinant( detail::tmat4x4 const & m); //! Return the inverse of a mat2 matrix. - //! (From GLSL 1.40.07 specification, section 8.5). + //! + //! \li GLSL inverse man page + //! \li GLSL 1.40.07 specification, section 8.5 template detail::tmat2x2 inverse( detail::tmat2x2 const & m); //! Return the inverse of a mat3 matrix. - //! (From GLSL 1.40.07 specification, section 8.5). + //! + //! \li GLSL inverse man page + //! \li GLSL 1.40.07 specification, section 8.5 template detail::tmat3x3 inverse( detail::tmat3x3 const & m); //! Return the inverse of a mat4 matrix. - //! (From GLSL 1.40.07 specification, section 8.5). + //! + //! \li GLSL inverse man page + //! \li GLSL 1.40.07 specification, section 8.5 template detail::tmat4x4 inverse( detail::tmat4x4 const & m); diff --git a/glm/core/func_noise.hpp b/glm/core/func_noise.hpp index 4af5f7d4..b76ec4b4 100644 --- a/glm/core/func_noise.hpp +++ b/glm/core/func_noise.hpp @@ -24,23 +24,31 @@ namespace glm /// \addtogroup core_funcs ///@{ - // Returns a 1D noise value based on the input value x. - // From GLSL 1.30.08 specification, section 8.9. + //! Returns a 1D noise value based on the input value x. + //! + //! \li GLSL noise1 man page + //! \li GLSL 1.30.08 specification, section 8.9 template typename genType::value_type noise1(genType const & x); - // Returns a 2D noise value based on the input value x. - // From GLSL 1.30.08 specification, section 8.9. + //! Returns a 2D noise value based on the input value x. + //! + //! \li GLSL noise2 man page + //! \li GLSL 1.30.08 specification, section 8.9 template detail::tvec2 noise2(genType const & x); - // Returns a 3D noise value based on the input value x. - // From GLSL 1.30.08 specification, section 8.9. + //! Returns a 3D noise value based on the input value x. + //! + //! \li GLSL noise3 man page + //! \li GLSL 1.30.08 specification, section 8.9 template detail::tvec3 noise3(genType const & x); - // Returns a 4D noise value based on the input value x. - // From GLSL 1.30.08 specification, section 8.9. + //! Returns a 4D noise value based on the input value x. + //! + //! \li GLSL noise4 man page + //! \li GLSL 1.30.08 specification, section 8.9 template detail::tvec4 noise4(genType const & x); diff --git a/glm/core/func_packing.hpp b/glm/core/func_packing.hpp index 9704d70a..3b427785 100644 --- a/glm/core/func_packing.hpp +++ b/glm/core/func_packing.hpp @@ -24,15 +24,101 @@ namespace glm /// \addtogroup core_funcs ///@{ + //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. + //! Then, the results are packed into the returned 32-bit unsigned integer. + //! + //! The conversion for component c of v to fixed point is done as follows: + //! packUnorm2x16: round(clamp(c, 0, +1) * 65535.0) + //! + //! The first component of the vector will be written to the least significant bits of the output; + //! the last component will be written to the most significant bits. + //! + //! \li GLSL packUnorm2x16 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::uint32 packUnorm2x16(detail::tvec2 const & v); + + //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. + //! Then, the results are packed into the returned 32-bit unsigned integer. + //! + //! The conversion for component c of v to fixed point is done as follows: + //! packUnorm4x8: round(clamp(c, 0, +1) * 255.0) + //! + //! The first component of the vector will be written to the least significant bits of the output; + //! the last component will be written to the most significant bits. + //! + //! \li GLSL packUnorm4x8 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::uint32 packUnorm4x8(detail::tvec4 const & v); + + //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. + //! Then, the results are packed into the returned 32-bit unsigned integer. + //! + //! The conversion for component c of v to fixed point is done as follows: + //! packSnorm4x8: round(clamp(c, -1, +1) * 127.0) + //! + //! The first component of the vector will be written to the least significant bits of the output; + //! the last component will be written to the most significant bits. + //! + //! \li GLSL packSnorm4x8 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::uint32 packSnorm4x8(detail::tvec4 const & v); + //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. + //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. + //! + //! The conversion for unpacked fixed-point value f to floating point is done as follows: + //! unpackUnorm2x16: f / 65535.0 + //! + //! The first component of the returned vector will be extracted from the least significant bits of the input; + //! the last component will be extracted from the most significant bits. + //! + //! \li GLSL unpackUnorm2x16 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::tvec2 unpackUnorm2x16(detail::uint32 const & p); - detail::tvec4 unpackUnorm4x8(detail::uint32 const & p); + + //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. + //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. + //! + //! The conversion for unpacked fixed-point value f to floating point is done as follows: + //! unpackUnorm4x8: f / 255.0 + //! + //! The first component of the returned vector will be extracted from the least significant bits of the input; + //! the last component will be extracted from the most significant bits. + //! + //! \li GLSL unpackUnorm4x8 man page + //! \li GLSL 4.00.08 specification, section 8.4 + detail::tvec4 unpackUnorm4x8(detail::uint32 const & p); + + //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. + //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. + //! + //! The conversion for unpacked fixed-point value f to floating point is done as follows: + //! unpackSnorm4x8: clamp(f / 127.0, -1, +1) + //! + //! The first component of the returned vector will be extracted from the least significant bits of the input; + //! the last component will be extracted from the most significant bits. + //! + //! \li GLSL unpackSnorm4x8 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::tvec4 unpackSnorm4x8(detail::uint32 const & p); + //! Returns a double-precision value obtained by packing the components of v into a 64-bit value. + //! If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. + //! Otherwise, the bit- level representation of v is preserved. + //! The first vector component specifies the 32 least significant bits; + //! the second component specifies the 32 most significant bits. + //! + //! \li GLSL packDouble2x32 man page + //! \li GLSL 4.00.08 specification, section 8.4 double packDouble2x32(detail::tvec2 const & v); + + //! Returns a two-component unsigned integer vector representation of v. + //! The bit-level representation of v is preserved. + //! The first component of the vector contains the 32 least significant bits of the double; + //! the second component consists the 32 most significant bits. + //! + //! \li GLSL unpackDouble2x32 man page + //! \li GLSL 4.00.08 specification, section 8.4 detail::tvec2 unpackDouble2x32(double const & v); ///@} diff --git a/glm/core/func_trigonometric.hpp b/glm/core/func_trigonometric.hpp index 4d147bfb..34e62579 100644 --- a/glm/core/func_trigonometric.hpp +++ b/glm/core/func_trigonometric.hpp @@ -27,43 +27,57 @@ namespace glm ///@{ //! Converts degrees to radians and returns the result. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL radians man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType radians(genType const & degrees); //! Converts radians to degrees and returns the result. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL degrees man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType degrees(genType const & radians); //! The standard trigonometric sine function. //! The values returned by this function will range from [-1, 1]. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL sin man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType sin(genType const & angle); //! The standard trigonometric cosine function. //! The values returned by this function will range from [-1, 1]. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL cos man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType cos(genType const & angle); //! The standard trigonometric tangent function. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL tan man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType tan(genType const & angle); //! Arc sine. Returns an angle whose sine is x. //! The range of values returned by this function is [-PI/2, PI/2]. //! Results are undefined if |x| > 1. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL asin man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType asin(genType const & x); //! Arc cosine. Returns an angle whose sine is x. //! The range of values returned by this function is [0, PI]. //! Results are undefined if |x| > 1. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL acos man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType acos(genType const & x); @@ -72,45 +86,61 @@ namespace glm //! quadrant the angle is in. The range of values returned //! by this function is [-PI, PI]. Results are undefined //! if x and y are both 0. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL atan man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType atan(genType const & y, genType const & x); //! Arc tangent. Returns an angle whose tangent is y_over_x. //! The range of values returned by this function is [-PI/2, PI/2]. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL atan man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType atan(genType const & y_over_x); //! Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2 - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL sinh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType sinh(genType const & angle); //! Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2 - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL cosh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType cosh(genType const & angle); //! Returns the hyperbolic tangent function, sinh(angle) / cosh(angle) - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL tanh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType tanh(genType const & angle); //! Arc hyperbolic sine; returns the inverse of sinh. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL asinh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType asinh(genType const & x); //! Arc hyperbolic cosine; returns the non-negative inverse //! of cosh. Results are undefined if x < 1. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL acosh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType acosh(genType const & x); //! Arc hyperbolic tangent; returns the inverse of tanh. //! Results are undefined if abs(x) >= 1. - //! (From GLSL 1.30.08 specification, section 8.1) + //! + //! \li GLSL atanh man page + //! \li GLSL 1.30.08 specification, section 8.1 template genType atanh(genType const & x); diff --git a/glm/core/func_vector_relational.hpp b/glm/core/func_vector_relational.hpp index 66932279..2f899e66 100644 --- a/glm/core/func_vector_relational.hpp +++ b/glm/core/func_vector_relational.hpp @@ -20,7 +20,7 @@ namespace glm namespace core{ namespace function{ - //! Define vector relational functions from Section 8.3 of GLSL 1.30.8 specification. + //! Define vector relational functions from Section 8.6 of GLSL 1.30.8 specification. //! Included in glm namespace. namespace vector_relational { @@ -28,8 +28,10 @@ namespace glm ///@{ //! Returns the component-wise comparison result of x < y. - //! (From GLSL 1.30.08 specification, section 8.6) - template class vecType> + //! + //! \li GLSL lessThan man page + //! \li GLSL 1.30.08 specification, section 8.6 + template class vecType> inline typename vecType::bool_type lessThan ( vecType const & x, @@ -49,7 +51,9 @@ namespace glm } //! Returns the component-wise comparison of result x <= y. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL lessThanEqual man page + //! \li GLSL 1.30.08 specification, section 8.6 template class vecType> inline typename vecType::bool_type lessThanEqual ( @@ -69,7 +73,9 @@ namespace glm } //! Returns the component-wise comparison of result x > y. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL greaterThan man page + //! \li GLSL 1.30.08 specification, section 8.6 template class vecType> inline typename vecType::bool_type greaterThan ( @@ -89,7 +95,9 @@ namespace glm } //! Returns the component-wise comparison of result x >= y. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL greaterThanEqual man page + //! \li GLSL 1.30.08 specification, section 8.6 template class vecType> inline typename vecType::bool_type greaterThanEqual ( @@ -109,7 +117,9 @@ namespace glm } //! Returns the component-wise comparison of result x == y. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL equal man page + //! \li GLSL 1.30.08 specification, section 8.6 template class vecType> inline typename vecType::bool_type equal ( @@ -127,7 +137,9 @@ namespace glm } //! Returns the component-wise comparison of result x != y. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL notEqual man page + //! \li GLSL 1.30.08 specification, section 8.6 template class vecType> inline typename vecType::bool_type notEqual ( @@ -145,7 +157,9 @@ namespace glm } //! Returns true if any component of x is true. - //! (From GLSL 1.30.08 specification, section 8.6) + //! + //! \li GLSL any man page + //! \li GLSL 1.30.08 specification, section 8.6 template