-inline T abs (T val);
-
-template<>
-inline GLValue::Fixed abs (GLValue::Fixed val)
-{
- return GLValue::Fixed::create(0x7FFFu & val.getValue());
-}
-
-template<>
-inline GLValue::Ubyte abs (GLValue::Ubyte val)
-{
- return val;
-}
-
-template<>
-inline GLValue::Byte abs (GLValue::Byte val)
-{
- return GLValue::Byte::create(0x7Fu & val.getValue());
-}
-
-template<>
-inline GLValue::Ushort abs (GLValue::Ushort val)
-{
- return val;
-}
-
-template<>
-inline GLValue::Short abs (GLValue::Short val)
-{
- return GLValue::Short::create(0x7FFFu & val.getValue());
-}
-
-template<>
-inline GLValue::Float abs (GLValue::Float val)
-{
- return GLValue::Float::create(std::fabs(val.to<float>()));
-}
-
-template<>
-inline GLValue::Uint abs (GLValue::Uint val)
-{
- return val;
-}
-
-template<>
-inline GLValue::Int abs (GLValue::Int val)
-{
- return GLValue::Int::create(0x7FFFFFFFu & val.getValue());
-}
-
-template<>
-inline GLValue::Half abs (GLValue::Half val)
-{
- return GLValue::Half::create(std::fabs(val.to<float>()));
-}
-
-template<>
-inline GLValue::Double abs (GLValue::Double val)
-{
- return GLValue::Double::create(std::fabs(val.to<float>()));
-}
-
-template<class T>