37 #ifndef GLM_GTC_half_float
38 #define GLM_GTC_half_float GLM_VERSION
43 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
44 # pragma message("GLM: GLM_GTC_half_float extension included")
50 #if(GLM_COMPONENT == GLM_COMPONENT_CXX98)
55 typedef half value_type;
56 typedef std::size_t size_type;
58 GLM_FUNC_DECL size_type
length()
const;
59 static GLM_FUNC_DECL size_type value_size();
61 typedef tvec2<half> type;
62 typedef tvec2<bool> bool_type;
72 half & operator[](size_type i);
73 half const & operator[](size_type i)
const;
79 tvec2(tvec2<half>
const & v);
94 tvec2(tref2<half>
const & r);
100 template <
typename U>
101 explicit tvec2(U
const & x);
103 template <
typename U,
typename V>
104 explicit tvec2(U
const & x, V
const & y);
110 template <
typename U>
111 explicit tvec2(tvec2<U>
const & v);
113 template <
typename U>
114 explicit tvec2(tvec3<U>
const & v);
116 template <
typename U>
117 explicit tvec2(tvec4<U>
const & v);
122 tvec2<half>& operator= (tvec2<half>
const & v);
124 tvec2<half>& operator+=(
half const & s);
125 tvec2<half>& operator+=(tvec2<half>
const & v);
126 tvec2<half>& operator-=(
half const & s);
127 tvec2<half>& operator-=(tvec2<half>
const & v);
128 tvec2<half>& operator*=(
half const & s);
129 tvec2<half>& operator*=(tvec2<half>
const & v);
130 tvec2<half>& operator/=(
half const & s);
131 tvec2<half>& operator/=(tvec2<half>
const & v);
132 tvec2<half>& operator++();
133 tvec2<half>& operator--();
138 half swizzle(comp X)
const;
139 tvec2<half> swizzle(comp X, comp Y)
const;
140 tvec3<half> swizzle(comp X, comp Y, comp Z)
const;
141 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W)
const;
142 tref2<half> swizzle(comp X, comp Y);
149 typedef half value_type;
150 typedef std::size_t size_type;
151 GLM_FUNC_DECL size_type
length()
const;
152 static GLM_FUNC_DECL size_type value_size();
154 typedef tvec3<half> type;
155 typedef tvec3<bool> bool_type;
165 half & operator[](size_type i);
166 half const & operator[](size_type i)
const;
172 tvec3(tvec3<half>
const & v);
177 explicit tvec3(ctor);
188 tvec3(tref3<half>
const & r);
194 template <
typename U>
195 explicit tvec3(U
const & x);
197 template <
typename U,
typename V,
typename W>
198 explicit tvec3(U
const & x, V
const & y, W
const & z);
204 template <
typename A,
typename B>
205 explicit tvec3(tvec2<A>
const & v, B
const & s);
207 template <
typename A,
typename B>
208 explicit tvec3(A
const & s, tvec2<B>
const & v);
210 template <
typename U>
211 explicit tvec3(tvec3<U>
const & v);
213 template <
typename U>
214 explicit tvec3(tvec4<U>
const & v);
219 tvec3<half>& operator= (tvec3<half>
const & v);
221 tvec3<half>& operator+=(
half const & s);
222 tvec3<half>& operator+=(tvec3<half>
const & v);
223 tvec3<half>& operator-=(
half const & s);
224 tvec3<half>& operator-=(tvec3<half>
const & v);
225 tvec3<half>& operator*=(
half const & s);
226 tvec3<half>& operator*=(tvec3<half>
const & v);
227 tvec3<half>& operator/=(
half const & s);
228 tvec3<half>& operator/=(tvec3<half>
const & v);
229 tvec3<half>& operator++();
230 tvec3<half>& operator--();
235 half swizzle(comp X)
const;
236 tvec2<half> swizzle(comp X, comp Y)
const;
237 tvec3<half> swizzle(comp X, comp Y, comp Z)
const;
238 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W)
const;
239 tref3<half> swizzle(comp X, comp Y, comp Z);
246 typedef half value_type;
247 typedef std::size_t size_type;
248 GLM_FUNC_DECL size_type
length()
const;
249 static GLM_FUNC_DECL size_type value_size();
251 typedef tvec4<half> type;
252 typedef tvec4<bool> bool_type;
262 half & operator[](size_type i);
263 half const & operator[](size_type i)
const;
269 tvec4(tvec4<half>
const & v);
274 explicit tvec4(ctor);
286 tvec4(tref4<half>
const & r);
292 template <
typename U>
293 explicit tvec4(U
const & x);
295 template <
typename A,
typename B,
typename C,
typename D>
296 explicit tvec4(A
const & x, B
const & y, C
const & z, D
const & w);
302 template <
typename A,
typename B,
typename C>
303 explicit tvec4(tvec2<A>
const & v, B
const & s1, C
const & s2);
305 template <
typename A,
typename B,
typename C>
306 explicit tvec4(A
const & s1, tvec2<B>
const & v, C
const & s2);
308 template <
typename A,
typename B,
typename C>
309 explicit tvec4(A
const & s1, B
const & s2, tvec2<C>
const & v);
311 template <
typename A,
typename B>
312 explicit tvec4(tvec3<A>
const & v, B
const & s);
314 template <
typename A,
typename B>
315 explicit tvec4(A
const & s, tvec3<B>
const & v);
317 template <
typename A,
typename B>
318 explicit tvec4(tvec2<A>
const & v1, tvec2<B>
const & v2);
320 template <
typename U>
321 explicit tvec4(tvec4<U>
const & v);
326 tvec4<half>& operator= (tvec4<half>
const & v);
328 tvec4<half>& operator+=(
half const & s);
329 tvec4<half>& operator+=(tvec4<half>
const & v);
330 tvec4<half>& operator-=(
half const & s);
331 tvec4<half>& operator-=(tvec4<half>
const & v);
332 tvec4<half>& operator*=(
half const & s);
333 tvec4<half>& operator*=(tvec4<half>
const & v);
334 tvec4<half>& operator/=(
half const & s);
335 tvec4<half>& operator/=(tvec4<half>
const & v);
336 tvec4<half>& operator++();
337 tvec4<half>& operator--();
342 half swizzle(comp X)
const;
343 tvec2<half> swizzle(comp X, comp Y)
const;
344 tvec3<half> swizzle(comp X, comp Y, comp Z)
const;
345 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W)
const;
346 tref4<half> swizzle(comp X, comp Y, comp Z, comp W);
348 #endif//(GLM_COMPONENT == GLM_COMPONENT_CXX98)
361 typedef detail::tvec2<detail::half>
hvec2;
365 typedef detail::tvec3<detail::half>
hvec3;
369 typedef detail::tvec4<detail::half>
hvec4;
373 typedef detail::tmat2x2<detail::half>
hmat2;
377 typedef detail::tmat3x3<detail::half>
hmat3;
381 typedef detail::tmat4x4<detail::half>
hmat4;
385 typedef detail::tmat2x2<detail::half>
hmat2x2;
389 typedef detail::tmat2x3<detail::half>
hmat2x3;
393 typedef detail::tmat2x4<detail::half>
hmat2x4;
397 typedef detail::tmat3x2<detail::half>
hmat3x2;
401 typedef detail::tmat3x3<detail::half>
hmat3x3;
405 typedef detail::tmat3x4<detail::half>
hmat3x4;
409 typedef detail::tmat4x2<detail::half>
hmat4x2;
413 typedef detail::tmat4x3<detail::half>
hmat4x3;
417 typedef detail::tmat4x4<detail::half>
hmat4x4;
438 #include "half_float.inl"
440 #endif//GLM_GTC_half_float