20 #include "../gtc/quaternion.hpp" 
   21 #include "../gtc/vec1.hpp" 
   22 #include "../vec2.hpp" 
   23 #include "../vec3.hpp" 
   24 #include "../vec4.hpp" 
   25 #include "../mat2x2.hpp" 
   26 #include "../mat2x3.hpp" 
   27 #include "../mat2x4.hpp" 
   28 #include "../mat3x2.hpp" 
   29 #include "../mat3x3.hpp" 
   30 #include "../mat3x4.hpp" 
   31 #include "../mat4x2.hpp" 
   32 #include "../mat4x3.hpp" 
   33 #include "../mat4x4.hpp" 
   35 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) 
   36 #       pragma message("GLM: GLM_GTC_type_precision extension included") 
  194         typedef detail::int8 int8;
 
  198         typedef detail::int16 int16;
 
  202         typedef detail::int32 int32;
 
  206         typedef detail::int64 int64;
 
  208 #if GLM_HAS_EXTENDED_INTEGER_TYPE 
  214         typedef detail::int8 
int8_t;
 
  233         typedef detail::int8 
i8;
 
  237         typedef detail::int16 
i16;
 
  241         typedef detail::int32 
i32;
 
  245         typedef detail::int64 
i64;
 
  250         typedef vec<1, i8, defaultp> 
i8vec1;
 
  254         typedef vec<2, i8, defaultp> 
i8vec2;
 
  258         typedef vec<3, i8, defaultp> 
i8vec3;
 
  262         typedef vec<4, i8, defaultp> 
i8vec4;
 
  267         typedef vec<1, i16, defaultp> 
i16vec1;
 
  271         typedef vec<2, i16, defaultp> 
i16vec2;
 
  275         typedef vec<3, i16, defaultp> 
i16vec3;
 
  279         typedef vec<4, i16, defaultp> 
i16vec4;
 
  284         typedef vec<1, i32, defaultp> 
i32vec1;
 
  288         typedef vec<2, i32, defaultp> 
i32vec2;
 
  292         typedef vec<3, i32, defaultp> 
i32vec3;
 
  296         typedef vec<4, i32, defaultp> 
i32vec4;
 
  301         typedef vec<1, i64, defaultp> 
i64vec1;
 
  305         typedef vec<2, i64, defaultp> 
i64vec2;
 
  309         typedef vec<3, i64, defaultp> 
i64vec3;
 
  313         typedef vec<4, i64, defaultp> 
i64vec4;
 
  465         typedef detail::uint8 uint8;
 
  469         typedef detail::uint16 uint16;
 
  473         typedef detail::uint32 uint32;
 
  477         typedef detail::uint64 uint64;
 
  479 #if GLM_HAS_EXTENDED_INTEGER_TYPE 
  504         typedef detail::uint8 
u8;
 
  508         typedef detail::uint16 
u16;
 
  512         typedef detail::uint32 
u32;
 
  516         typedef detail::uint64 
u64;
 
  522         typedef vec<1, u8, defaultp> 
u8vec1;
 
  526         typedef vec<2, u8, defaultp> 
u8vec2;
 
  530         typedef vec<3, u8, defaultp> 
u8vec3;
 
  534         typedef vec<4, u8, defaultp> 
u8vec4;
 
  539         typedef vec<1, u16, defaultp> 
u16vec1;
 
  543         typedef vec<2, u16, defaultp> 
u16vec2;
 
  547         typedef vec<3, u16, defaultp> 
u16vec3;
 
  551         typedef vec<4, u16, defaultp> 
u16vec4;
 
  556         typedef vec<1, u32, defaultp> 
u32vec1;
 
  560         typedef vec<2, u32, defaultp> 
u32vec2;
 
  564         typedef vec<3, u32, defaultp> 
u32vec3;
 
  568         typedef vec<4, u32, defaultp> 
u32vec4;
 
  573         typedef vec<1, u64, defaultp> 
u64vec1;
 
  577         typedef vec<2, u64, defaultp> 
u64vec2;
 
  581         typedef vec<3, u64, defaultp> 
u64vec3;
 
  585         typedef vec<4, u64, defaultp> 
u64vec4;
 
  593         typedef detail::float32 float32;
 
  603 #       ifndef GLM_FORCE_SINGLE_ONLY 
  604                 typedef detail::float64 float64;
 
  615 #       endif//GLM_FORCE_SINGLE_ONLY 
  619         typedef vec<1, float, defaultp> 
fvec1;
 
  623         typedef vec<2, float, defaultp> 
fvec2;
 
  627         typedef vec<3, float, defaultp> 
fvec3;
 
  631         typedef vec<4, float, defaultp> 
fvec4;
 
  636         typedef vec<1, f32, defaultp> 
f32vec1;
 
  640         typedef vec<2, f32, defaultp> 
f32vec2;
 
  644         typedef vec<3, f32, defaultp> 
f32vec3;
 
  648         typedef vec<4, f32, defaultp> 
f32vec4;
 
  650 #       ifndef GLM_FORCE_SINGLE_ONLY 
  651                 typedef vec<1, f64, defaultp> 
f64vec1;
 
  657                 typedef vec<2, f64, defaultp> 
f64vec2;
 
  661                 typedef vec<3, f64, defaultp> 
f64vec3;
 
  665                 typedef vec<4, f64, defaultp> 
f64vec4;
 
  666 #       endif//GLM_FORCE_SINGLE_ONLY 
  678         typedef mat<2, 2, f32, defaultp> 
fmat2;
 
  682         typedef mat<3, 3, f32, defaultp> 
fmat3;
 
  686         typedef mat<4, 4, f32, defaultp> 
fmat4;
 
  695         typedef mat<2, 2, f32, defaultp> 
fmat2x2;
 
  699         typedef mat<2, 3, f32, defaultp> 
fmat2x3;
 
  703         typedef mat<2, 4, f32, defaultp> 
fmat2x4;
 
  707         typedef mat<3, 2, f32, defaultp> 
fmat3x2;
 
  711         typedef mat<3, 3, f32, defaultp> 
fmat3x3;
 
  715         typedef mat<3, 4, f32, defaultp> 
fmat3x4;
 
  719         typedef mat<4, 2, f32, defaultp> 
fmat4x2;
 
  723         typedef mat<4, 3, f32, defaultp> 
fmat4x3;
 
  727         typedef mat<4, 4, f32, defaultp> 
fmat4x4;
 
  736         typedef mat<2, 2, f32, defaultp> 
f32mat2;
 
  740         typedef mat<3, 3, f32, defaultp> 
f32mat3;
 
  744         typedef mat<4, 4, f32, defaultp> 
f32mat4;
 
  753         typedef mat<2, 2, f32, defaultp> 
f32mat2x2;
 
  757         typedef mat<2, 3, f32, defaultp> 
f32mat2x3;
 
  761         typedef mat<2, 4, f32, defaultp> 
f32mat2x4;
 
  765         typedef mat<3, 2, f32, defaultp> 
f32mat3x2;
 
  769         typedef mat<3, 3, f32, defaultp> 
f32mat3x3;
 
  773         typedef mat<3, 4, f32, defaultp> 
f32mat3x4;
 
  777         typedef mat<4, 2, f32, defaultp> 
f32mat4x2;
 
  781         typedef mat<4, 3, f32, defaultp> 
f32mat4x3;
 
  785         typedef mat<4, 4, f32, defaultp> 
f32mat4x4;
 
  788 #       ifndef GLM_FORCE_SINGLE_ONLY 
  796         typedef mat<2, 2, f64, defaultp> 
f64mat2;
 
  800         typedef mat<3, 3, f64, defaultp> 
f64mat3;
 
  804         typedef mat<4, 4, f64, defaultp> 
f64mat4;
 
  813         typedef mat<2, 2, f64, defaultp> 
f64mat2x2;
 
  817         typedef mat<2, 3, f64, defaultp> 
f64mat2x3;
 
  821         typedef mat<2, 4, f64, defaultp> 
f64mat2x4;
 
  825         typedef mat<3, 2, f64, defaultp> 
f64mat3x2;
 
  829         typedef mat<3, 3, f64, defaultp> 
f64mat3x3;
 
  833         typedef mat<3, 4, f64, defaultp> 
f64mat3x4;
 
  837         typedef mat<4, 2, f64, defaultp> 
f64mat4x2;
 
  841         typedef mat<4, 3, f64, defaultp> 
f64mat4x3;
 
  845         typedef mat<4, 4, f64, defaultp> 
f64mat4x4;
 
  847 #       endif//GLM_FORCE_SINGLE_ONLY 
  854         typedef tquat<f32, defaultp> 
f32quat;
 
  856 #       ifndef GLM_FORCE_SINGLE_ONLY 
  860         typedef tquat<f64, defaultp> 
f64quat;
 
  862 #       endif//GLM_FORCE_SINGLE_ONLY 
  867 #include "type_precision.inl" 
detail::uint64 lowp_u64
Low qualifier 64 bit unsigned integer type. 
highp_u64vec2 u64vec2
Default qualifier 64 bit unsigned integer vector of 2 components type. 
highp_u32vec4 u32vec4
Default qualifier 32 bit unsigned integer vector of 4 components type. 
detail::int16 lowp_i16
Low qualifier 16 bit signed integer type. 
highp_i64vec2 i64vec2
Default qualifier 64 bit signed integer vector of 2 components type. 
highp_f32mat3x3 fmat3x3
Default single-qualifier floating-point 3x3 matrix. 
detail::int64 mediump_int64_t
Medium qualifier 64 bit signed integer type. 
detail::uint8 highp_uint8_t
Medium qualifier 8 bit unsigned integer type. 
detail::int64 lowp_int64_t
Low qualifier 64 bit signed integer type. 
detail::uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type. 
fmat3x3 fmat3
Default single-qualifier floating-point 3x3 matrix. 
detail::int16 mediump_i16
Medium qualifier 16 bit signed integer type. 
detail::int32 lowp_int32
Low qualifier 32 bit signed integer type. 
f64mat3x3 f64mat3
Default double-qualifier floating-point 3x3 matrix. 
detail::uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type. 
detail::int64 highp_i64
High qualifier 64 bit signed integer type. 
highp_f32mat4x2 fmat4x2
Default single-qualifier floating-point 4x2 matrix. 
highp_u16vec4 u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type. 
detail::uint32 uint32_t
32 bit unsigned integer type. 
detail::int32 int32_t
32 bit signed integer type. 
highp_i16vec1 i16vec1
Default qualifier 16 bit signed integer scalar type. 
highp_u32vec2 u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type. 
detail::uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type. 
detail::uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type. 
highp_f32mat2x4 f32mat2x4
Default single-qualifier floating-point 2x4 matrix. 
detail::uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type. 
detail::int8 i8
8 bit signed integer type. 
detail::int64 lowp_int64
Low qualifier 64 bit signed integer type. 
detail::int16 lowp_int16_t
Low qualifier 16 bit signed integer type. 
highp_i8vec2 i8vec2
Default qualifier 8 bit signed integer vector of 2 components type. 
detail::uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type. 
highp_f64mat3x2 f64mat3x2
Default double-qualifier floating-point 3x2 matrix. 
highp_u16vec1 u16vec1
Default qualifier 16 bit unsigned integer scalar type. 
highp_f64mat4x2 f64mat4x2
Default double-qualifier floating-point 4x2 matrix. 
f64mat2x2 f64mat2
Default double-qualifier floating-point 2x2 matrix. 
detail::uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type. 
detail::int64 highp_int64
High qualifier 64 bit signed integer type. 
highp_f32vec1 f32vec1
Default single-qualifier floating-point vector of 1 components. 
highp_f32vec4 fvec4
Default single-qualifier floating-point vector of 4 components. 
detail::uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type. 
highp_float32_t f32
Default 32 bit single-qualifier floating-point scalar. 
detail::int8 lowp_i8
Low qualifier 8 bit signed integer type. 
highp_f32mat3x4 fmat3x4
Default single-qualifier floating-point 3x4 matrix. 
highp_u64vec1 u64vec1
Default qualifier 64 bit unsigned integer scalar type. 
highp_i16vec4 i16vec4
Default qualifier 16 bit signed integer vector of 4 components type. 
detail::int32 highp_int32_t
32 bit signed integer type. 
highp_f32mat2x4 fmat2x4
Default single-qualifier floating-point 2x4 matrix. 
detail::int64 mediump_int64
Medium qualifier 64 bit signed integer type. 
detail::uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type. 
highp_f64quat f64quat
Default double-qualifier floating-point quaternion. 
detail::uint8 lowp_u8
Low qualifier 8 bit unsigned integer type. 
highp_f32mat2x2 f32mat2x2
Default single-qualifier floating-point 2x2 matrix. 
detail::uint32 highp_uint32
Medium qualifier 32 bit unsigned integer type. 
highp_i16vec2 i16vec2
Default qualifier 16 bit signed integer vector of 2 components type. 
highp_i64vec4 i64vec4
Default qualifier 64 bit signed integer vector of 4 components type. 
highp_f32vec1 fvec1
Default single-qualifier floating-point vector of 1 components. 
highp_i8vec4 i8vec4
Default qualifier 8 bit signed integer vector of 4 components type. 
detail::int8 mediump_int8_t
Medium qualifier 8 bit signed integer type. 
detail::uint16 highp_uint16
Medium qualifier 16 bit unsigned integer type. 
highp_u32vec1 u32vec1
Default qualifier 32 bit unsigned integer scalar type. 
detail::int8 highp_i8
High qualifier 8 bit signed integer type. 
highp_i32vec4 i32vec4
Default qualifier 32 bit signed integer vector of 4 components type. 
f32mat2x2 f32mat2
Default single-qualifier floating-point 2x2 matrix. 
highp_f64mat4x3 f64mat4x3
Default double-qualifier floating-point 4x3 matrix. 
detail::uint64 uint64_t
64 bit unsigned integer type. 
highp_f64mat2x3 f64mat2x3
Default double-qualifier floating-point 2x3 matrix. 
fmat2x2 fmat2
Default single-qualifier floating-point 2x2 matrix. 
highp_u16vec3 u16vec3
Default qualifier 16 bit unsigned integer vector of 3 components type. 
detail::uint64 highp_u64
Medium qualifier 64 bit unsigned integer type. 
detail::int16 int16_t
16 bit signed integer type. 
detail::int64 int64_t
64 bit signed integer type. 
detail::int16 mediump_int16
Medium qualifier 16 bit signed integer type. 
highp_float64_t float64_t
Default 64 bit double-qualifier floating-point scalar. 
highp_f32mat2x3 fmat2x3
Default single-qualifier floating-point 2x3 matrix. 
detail::int8 lowp_int8
Low qualifier 8 bit signed integer type. 
f32mat4x4 f32mat4
Default single-qualifier floating-point 4x4 matrix. 
detail::int64 i64
64 bit signed integer type. 
highp_f32mat2x2 fmat2x2
Default single-qualifier floating-point 2x2 matrix. 
detail::uint16 uint16_t
16 bit unsigned integer type. 
detail::uint8 highp_uint8
Medium qualifier 8 bit unsigned integer type. 
detail::int8 highp_int8_t
High qualifier 8 bit signed integer type. 
detail::uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type. 
detail::int8 lowp_int8_t
Low qualifier 8 bit signed integer type. 
highp_i64vec3 i64vec3
Default qualifier 64 bit signed integer vector of 3 components type. 
detail::uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type. 
detail::uint32 u32
32 bit unsigned integer type. 
highp_u64vec4 u64vec4
Default qualifier 64 bit unsigned integer vector of 4 components type. 
highp_f64vec1 f64vec1
Default double-qualifier floating-point vector of 1 components. 
detail::int8 mediump_int8
Medium qualifier 8 bit signed integer type. 
detail::int8 mediump_i8
Medium qualifier 8 bit signed integer type. 
highp_i16vec3 i16vec3
Default qualifier 16 bit signed integer vector of 3 components type. 
detail::uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type. 
detail::uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type. 
highp_u16vec2 u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type. 
detail::uint64 highp_uint64_t
Medium qualifier 64 bit unsigned integer type. 
detail::uint8 highp_u8
Medium qualifier 8 bit unsigned integer type. 
detail::int64 highp_int64_t
High qualifier 64 bit signed integer type. 
detail::uint32 highp_uint32_t
Medium qualifier 32 bit unsigned integer type. 
detail::int32 mediump_i32
Medium qualifier 32 bit signed integer type. 
detail::uint64 u64
64 bit unsigned integer type. 
highp_f64mat3x3 f64mat3x3
Default double-qualifier floating-point 3x3 matrix. 
detail::int64 mediump_i64
Medium qualifier 64 bit signed integer type. 
highp_i8vec3 i8vec3
Default qualifier 8 bit signed integer vector of 3 components type. 
detail::int32 i32
32 bit signed integer type. 
detail::uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type. 
detail::int16 highp_int16
High qualifier 16 bit signed integer type. 
detail::int32 lowp_i32
Low qualifier 32 bit signed integer type. 
detail::int16 highp_i16
High qualifier 16 bit signed integer type. 
detail::uint8 uint8_t
8 bit unsigned integer type. 
detail::int16 lowp_int16
Low qualifier 16 bit signed integer type. 
highp_f32quat f32quat
Default single-qualifier floating-point quaternion. 
highp_f32mat4x3 fmat4x3
Default single-qualifier floating-point 4x3 matrix. 
highp_f32mat3x2 f32mat3x2
Default single-qualifier floating-point 3x2 matrix. 
detail::int16 i16
16 bit signed integer type. 
detail::int32 highp_i32
High qualifier 32 bit signed integer type. 
detail::int16 highp_int16_t
High qualifier 16 bit signed integer type. 
highp_float32_t float32_t
Default 32 bit single-qualifier floating-point scalar. 
detail::uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type. 
detail::uint32 highp_u32
Medium qualifier 32 bit unsigned integer type. 
detail::uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type. 
highp_u8vec4 u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type. 
highp_u8vec1 u8vec1
Default qualifier 8 bit unsigned integer scalar type. 
highp_f32mat4x4 fmat4x4
Default single-qualifier floating-point 4x4 matrix. 
detail::uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type. 
highp_u8vec3 u8vec3
Default qualifier 8 bit unsigned integer vector of 3 components type. 
highp_f32mat2x3 f32mat2x3
Default single-qualifier floating-point 2x3 matrix. 
highp_f32vec3 f32vec3
Default single-qualifier floating-point vector of 3 components. 
highp_i32vec2 i32vec2
Default qualifier 32 bit signed integer vector of 2 components type. 
detail::int8 int8_t
8 bit signed integer type. 
highp_f32mat4x3 f32mat4x3
Default single-qualifier floating-point 4x3 matrix. 
detail::uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type. 
highp_i64vec1 i64vec1
Default qualifier 64 bit signed integer scalar type. 
detail::int16 mediump_int16_t
Medium qualifier 16 bit signed integer type. 
detail::uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type. 
detail::uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type. 
highp_f32mat3x4 f32mat3x4
Default single-qualifier floating-point 3x4 matrix. 
detail::uint16 u16
16 bit unsigned integer type. 
highp_f32vec2 fvec2
Default single-qualifier floating-point vector of 2 components. 
highp_float64_t f64
Default 64 bit double-qualifier floating-point scalar. 
highp_f32mat3x2 fmat3x2
Default single-qualifier floating-point 3x2 matrix. 
highp_f64vec4 f64vec4
Default double-qualifier floating-point vector of 4 components. 
highp_f32vec4 f32vec4
Default single-qualifier floating-point vector of 4 components. 
highp_f32mat4x2 f32mat4x2
Default single-qualifier floating-point 4x2 matrix. 
detail::uint8 u8
8 bit unsigned integer type. 
detail::int32 mediump_int32
Medium qualifier 32 bit signed integer type. 
detail::uint16 lowp_u16
Low qualifier 16 bit unsigned integer type. 
highp_u64vec3 u64vec3
Default qualifier 64 bit unsigned integer vector of 3 components type. 
detail::int32 lowp_int32_t
Low qualifier 32 bit signed integer type. 
highp_f64mat2x2 f64mat2x2
Default double-qualifier floating-point 2x2 matrix. 
highp_f64vec2 f64vec2
Default double-qualifier floating-point vector of 2 components. 
highp_u8vec2 u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type. 
detail::uint64 highp_uint64
Medium qualifier 64 bit unsigned integer type. 
detail::int64 lowp_i64
Low qualifier 64 bit signed integer type. 
f64mat4x4 f64mat4
Default double-qualifier floating-point 4x4 matrix. 
detail::uint16 highp_u16
Medium qualifier 16 bit unsigned integer type. 
highp_i32vec3 i32vec3
Default qualifier 32 bit signed integer vector of 3 components type. 
highp_f64mat3x4 f64mat3x4
Default double-qualifier floating-point 3x4 matrix. 
detail::int32 highp_int32
High qualifier 32 bit signed integer type. 
highp_i8vec1 i8vec1
Default qualifier 8 bit signed integer scalar type. 
fmat4x4 fmat4
Default single-qualifier floating-point 4x4 matrix. 
highp_f32vec3 fvec3
Default single-qualifier floating-point vector of 3 components. 
highp_f32mat4x4 f32mat4x4
Default single-qualifier floating-point 4x4 matrix. 
highp_i32vec1 i32vec1
Default qualifier 32 bit signed integer scalar type. 
detail::int32 mediump_int32_t
Medium qualifier 32 bit signed integer type. 
detail::uint32 lowp_u32
Low qualifier 32 bit unsigned integer type. 
detail::int8 highp_int8
High qualifier 8 bit signed integer type. 
highp_f64mat4x4 f64mat4x4
Default double-qualifier floating-point 4x4 matrix. 
highp_f32mat3x3 f32mat3x3
Default single-qualifier floating-point 3x3 matrix. 
highp_u32vec3 u32vec3
Default qualifier 32 bit unsigned integer vector of 3 components type. 
highp_f64vec3 f64vec3
Default double-qualifier floating-point vector of 3 components. 
highp_f64mat2x4 f64mat2x4
Default double-qualifier floating-point 2x4 matrix. 
highp_f32vec2 f32vec2
Default single-qualifier floating-point vector of 2 components. 
f32mat3x3 f32mat3
Default single-qualifier floating-point 3x3 matrix. 
detail::uint16 highp_uint16_t
Medium qualifier 16 bit unsigned integer type.