You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							1039 lines
						
					
					
						
							18 KiB
						
					
					
				
			
		
		
	
	
							1039 lines
						
					
					
						
							18 KiB
						
					
					
				| /////////////////////////////////////////////////////////////////////////////////// | |
| /// OpenGL Mathematics (glm.g-truc.net) | |
| /// | |
| /// Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) | |
| /// Permission is hereby granted, free of charge, to any person obtaining a copy | |
| /// of this software and associated documentation files (the "Software"), to deal | |
| /// in the Software without restriction, including without limitation the rights | |
| /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| /// copies of the Software, and to permit persons to whom the Software is | |
| /// furnished to do so, subject to the following conditions: | |
| ///  | |
| /// The above copyright notice and this permission notice shall be included in | |
| /// all copies or substantial portions of the Software. | |
| ///  | |
| /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| /// THE SOFTWARE. | |
| /// | |
| /// @ref gtc_half_float | |
| /// @file glm/gtc/half_float.inl | |
| /// @date 2009-04-29 / 2012-11-06 | |
| /// @author Christophe Riccio | |
| /////////////////////////////////////////////////////////////////////////////////// | |
|  | |
| namespace glm{ | |
| namespace detail | |
| { | |
| #if(GLM_COMPONENT == GLM_COMPONENT_CXX98) | |
|  | |
| 	////////////////////////////////////// | |
| 	// hvec2 | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::size_type tvec2<half>::length() const | |
| 	{ | |
| 		return 2; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::size_type tvec2<half>::value_size() | |
| 	{ | |
| 		return 2; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Accesses | |
|  | |
| 	GLM_FUNC_QUALIFIER half & tvec2<half>::operator[](tvec2<half>::size_type i) | |
| 	{ | |
| 		assert(/*i >= tvec2<half>::size_type(0) && */i < tvec2<half>::value_size()); | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER half const & tvec2<half>::operator[](tvec2<half>::size_type i) const | |
| 	{ | |
| 		assert(/*i >= tvec2<half>::size_type(0) && */i < tvec2<half>::value_size()); | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Implicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2() : | |
| 		x(half(0.f)), | |
| 		y(half(0.f)) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) : | |
| 		x(v.x), | |
| 		y(v.y) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Explicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		half const & s | |
| 	) : | |
| 		x(s), | |
| 		y(s) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		half const & s1,  | |
| 		half const & s2 | |
| 	) : | |
| 		x(s1), | |
| 		y(s2) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		tref2<half> const & r | |
| 	) : | |
| 		x(r.x), | |
| 		y(r.y) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion scalar constructors | |
|  | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		U const & x | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(x)) | |
| 	{} | |
| 
 | |
| 	template <typename U, typename V>  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		U const & x,  | |
| 		V const & y | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(y)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion vector constructors | |
|  | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		tvec2<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)) | |
| 	{} | |
| 
 | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	(	 | |
| 		tvec3<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)) | |
| 	{} | |
| 
 | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec2<half>::tvec2 | |
| 	( | |
| 		tvec4<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Unary arithmetic operators | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator=  | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x = v.x; | |
| 		this->y = v.y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator+= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x += s; | |
| 		this->y += s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator+= | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x += v.x; | |
| 		this->y += v.y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator-= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x -= s; | |
| 		this->y -= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator-= | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x -= v.x; | |
| 		this->y -= v.y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half>& tvec2<half>::operator*= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x *= s; | |
| 		this->y *= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator*= | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x *= v.x; | |
| 		this->y *= v.y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator/= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x /= s; | |
| 		this->y /= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator/= | |
| 	( | |
| 		tvec2<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x /= v.x; | |
| 		this->y /= v.y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> & tvec2<half>::operator++() | |
| 	{ | |
| 		++this->x; | |
| 		++this->y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half>& tvec2<half>::operator--() | |
| 	{ | |
| 		--this->x; | |
| 		--this->y; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle operators | |
|  | |
| 	GLM_FUNC_QUALIFIER half tvec2<half>::swizzle(comp x) const | |
| 	{ | |
| 		return (*this)[x]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> tvec2<half>::swizzle(comp x, comp y) const | |
| 	{ | |
| 		return tvec2<half>( | |
| 			(*this)[x], | |
| 			(*this)[y]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> tvec2<half>::swizzle(comp x, comp y, comp z) const | |
| 	{ | |
| 		return tvec3<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half> tvec2<half>::swizzle(comp x, comp y, comp z, comp w) const | |
| 	{ | |
| 		return tvec4<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z], | |
| 			(*this)[w]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tref2<half> tvec2<half>::swizzle(comp x, comp y) | |
| 	{ | |
| 		return tref2<half>( | |
| 			(*this)[x], | |
| 			(*this)[y]); | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// hvec3 | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::size_type tvec3<half>::length() const | |
| 	{ | |
| 		return 3; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::size_type tvec3<half>::value_size() | |
| 	{ | |
| 		return 3; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Accesses | |
|  | |
| 	GLM_FUNC_QUALIFIER half & tvec3<half>::operator[] | |
| 	( | |
| 		tvec3<half>::size_type i | |
| 	) | |
| 	{ | |
| 		assert(/*i >= tvec3<half>::size_type(0) &&*/ i < tvec3<half>::value_size()); | |
| 
 | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER half const & tvec3<half>::operator[] | |
| 	( | |
| 		tvec3<half>::size_type i | |
| 	) const | |
| 	{ | |
| 		assert(/*i >= tvec3<half>::size_type(0) &&*/ i < tvec3<half>::value_size()); | |
| 
 | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Implicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3() : | |
| 		x(half(0)), | |
| 		y(half(0)), | |
| 		z(half(0)) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) : | |
| 		x(v.x), | |
| 		y(v.y), | |
| 		z(v.z) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Explicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		half const & s | |
| 	) : | |
| 		x(s), | |
| 		y(s), | |
| 		z(s) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		half const & s0,  | |
| 		half const & s1,  | |
| 		half const & s2 | |
| 	) : | |
| 		x(s0), | |
| 		y(s1), | |
| 		z(s2) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		tref3<half> const & r | |
| 	) : | |
| 		x(r.x), | |
| 		y(r.y), | |
| 		z(r.z) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion scalar constructors | |
|  | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		U const & x | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(x)), | |
| 		z(half(x)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B, typename C>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		A const & x,  | |
| 		B const & y,  | |
| 		C const & z | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(y)), | |
| 		z(half(z)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion vector constructors | |
|  | |
| 	template <typename A, typename B>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		tvec2<A> const & v,  | |
| 		B const & s | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(s)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		A const & s,  | |
| 		tvec2<B> const & v | |
| 	) : | |
| 		x(half(s)), | |
| 		y(half(v.x)), | |
| 		z(half(v.y)) | |
| 	{} | |
| 
 | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		tvec3<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(v.z)) | |
| 	{} | |
| 
 | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec3<half>::tvec3 | |
| 	( | |
| 		tvec4<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(v.z)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Unary arithmetic operators | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator=  | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x = v.x; | |
| 		this->y = v.y; | |
| 		this->z = v.z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator+= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x += s; | |
| 		this->y += s; | |
| 		this->z += s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator+= | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x += v.x; | |
| 		this->y += v.y; | |
| 		this->z += v.z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator-= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x -= s; | |
| 		this->y -= s; | |
| 		this->z -= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator-= | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x -= v.x; | |
| 		this->y -= v.y; | |
| 		this->z -= v.z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator*= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x *= s; | |
| 		this->y *= s; | |
| 		this->z *= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator*= | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x *= v.x; | |
| 		this->y *= v.y; | |
| 		this->z *= v.z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator/= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x /= s; | |
| 		this->y /= s; | |
| 		this->z /= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator/= | |
| 	( | |
| 		tvec3<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x /= v.x; | |
| 		this->y /= v.y; | |
| 		this->z /= v.z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator++() | |
| 	{ | |
| 		++this->x; | |
| 		++this->y; | |
| 		++this->z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> & tvec3<half>::operator--() | |
| 	{ | |
| 		--this->x; | |
| 		--this->y; | |
| 		--this->z; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle operators | |
|  | |
| 	GLM_FUNC_QUALIFIER half tvec3<half>::swizzle(comp x) const | |
| 	{ | |
| 		return (*this)[x]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> tvec3<half>::swizzle(comp x, comp y) const | |
| 	{ | |
| 		return tvec2<half>( | |
| 			(*this)[x], | |
| 			(*this)[y]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> tvec3<half>::swizzle(comp x, comp y, comp z) const | |
| 	{ | |
| 		return tvec3<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half> tvec3<half>::swizzle(comp x, comp y, comp z, comp w) const | |
| 	{ | |
| 		return tvec4<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z], | |
| 			(*this)[w]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tref3<half> tvec3<half>::swizzle(comp x, comp y, comp z) | |
| 	{ | |
| 		return tref3<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z]); | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// hvec4 | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::size_type tvec4<half>::length() const | |
| 	{ | |
| 		return 4; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::size_type tvec4<half>::value_size() | |
| 	{ | |
| 		return 4; | |
| 	} | |
| 	 | |
| 	////////////////////////////////////// | |
| 	// Accesses | |
|  | |
| 	GLM_FUNC_QUALIFIER half & tvec4<half>::operator[] | |
| 	( | |
| 		tvec4<half>::size_type i | |
| 	) | |
| 	{ | |
| 		assert(/*i >= tvec4<half>::size_type(0) && */i < tvec4<half>::value_size()); | |
| 
 | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER half const & tvec4<half>::operator[] | |
| 	( | |
| 		tvec4<half>::size_type i | |
| 	) const | |
| 	{ | |
| 		assert(/*i >= tvec4<half>::size_type(0) && */i < tvec4<half>::value_size()); | |
| 
 | |
| 		return (&x)[i]; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Implicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4() : | |
| 		x(half(0)), | |
| 		y(half(0)), | |
| 		z(half(0)), | |
| 		w(half(0)) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) : | |
| 		x(v.x), | |
| 		y(v.y), | |
| 		z(v.z), | |
| 		w(v.w) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Explicit basic constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		half const & s | |
| 	) : | |
| 		x(s), | |
| 		y(s), | |
| 		z(s), | |
| 		w(s) | |
| 	{} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		half const & s1,  | |
| 		half const & s2,  | |
| 		half const & s3,  | |
| 		half const & s4 | |
| 	) : | |
| 		x(s1), | |
| 		y(s2), | |
| 		z(s3), | |
| 		w(s4) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle constructors | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tref4<half> const & r | |
| 	) : | |
| 		x(r.x), | |
| 		y(r.y), | |
| 		z(r.z), | |
| 		w(r.w) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion scalar constructors | |
|  | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		U const & x | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(x)), | |
| 		z(half(x)), | |
| 		w(half(x)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B, typename C, typename D>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		A const & x,  | |
| 		B const & y,  | |
| 		C const & z,  | |
| 		D const & w | |
| 	) : | |
| 		x(half(x)), | |
| 		y(half(y)), | |
| 		z(half(z)), | |
| 		w(half(w)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Convertion vector constructors | |
|  | |
| 	template <typename A, typename B, typename C>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tvec2<A> const & v,  | |
| 		B const & s1,  | |
| 		C const & s2 | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(s1)), | |
| 		w(half(s2)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B, typename C>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		A const & s1,  | |
| 		tvec2<B> const & v,  | |
| 		C const & s2 | |
| 	) : | |
| 		x(half(s1)), | |
| 		y(half(v.x)), | |
| 		z(half(v.y)), | |
| 		w(half(s2)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B, typename C>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		A const & s1,  | |
| 		B const & s2,  | |
| 		tvec2<C> const & v | |
| 	) : | |
| 		x(half(s1)), | |
| 		y(half(s2)), | |
| 		z(half(v.x)), | |
| 		w(half(v.y)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tvec3<A> const & v,  | |
| 		B const & s | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(v.z)), | |
| 		w(half(s)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		A const & s,  | |
| 		tvec3<B> const & v | |
| 	) : | |
| 		x(half(s)), | |
| 		y(half(v.x)), | |
| 		z(half(v.y)), | |
| 		w(half(v.z)) | |
| 	{} | |
| 
 | |
| 	template <typename A, typename B>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tvec2<A> const & v1,  | |
| 		tvec2<B> const & v2 | |
| 	) : | |
| 		x(half(v1.x)), | |
| 		y(half(v1.y)), | |
| 		z(half(v2.x)), | |
| 		w(half(v2.y)) | |
| 	{} | |
| 
 | |
| 	template <typename U>  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>::tvec4 | |
| 	( | |
| 		tvec4<U> const & v | |
| 	) : | |
| 		x(half(v.x)), | |
| 		y(half(v.y)), | |
| 		z(half(v.z)), | |
| 		w(half(v.w)) | |
| 	{} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Unary arithmetic operators | |
|  | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator=  | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x = v.x; | |
| 		this->y = v.y; | |
| 		this->z = v.z; | |
| 		this->w = v.w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator+= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x += s; | |
| 		this->y += s; | |
| 		this->z += s; | |
| 		this->w += s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator+= | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x += v.x; | |
| 		this->y += v.y; | |
| 		this->z += v.z; | |
| 		this->w += v.w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator-= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x -= s; | |
| 		this->y -= s; | |
| 		this->z -= s; | |
| 		this->w -= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator-= | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x -= v.x; | |
| 		this->y -= v.y; | |
| 		this->z -= v.z; | |
| 		this->w -= v.w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator*= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x *= s; | |
| 		this->y *= s; | |
| 		this->z *= s; | |
| 		this->w *= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator*= | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x *= v.x; | |
| 		this->y *= v.y; | |
| 		this->z *= v.z; | |
| 		this->w *= v.w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator/= | |
| 	( | |
| 		half const & s | |
| 	) | |
| 	{ | |
| 		this->x /= s; | |
| 		this->y /= s; | |
| 		this->z /= s; | |
| 		this->w /= s; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator/= | |
| 	( | |
| 		tvec4<half> const & v | |
| 	) | |
| 	{ | |
| 		this->x /= v.x; | |
| 		this->y /= v.y; | |
| 		this->z /= v.z; | |
| 		this->w /= v.w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator++() | |
| 	{ | |
| 		++this->x; | |
| 		++this->y; | |
| 		++this->z; | |
| 		++this->w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half>& tvec4<half>::operator--() | |
| 	{ | |
| 		--this->x; | |
| 		--this->y; | |
| 		--this->z; | |
| 		--this->w; | |
| 		return *this; | |
| 	} | |
| 
 | |
| 	////////////////////////////////////// | |
| 	// Swizzle operators | |
|  | |
| 	GLM_FUNC_QUALIFIER half tvec4<half>::swizzle(comp x) const | |
| 	{ | |
| 		return (*this)[x]; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec2<half> tvec4<half>::swizzle(comp x, comp y) const | |
| 	{ | |
| 		return tvec2<half>( | |
| 			(*this)[x], | |
| 			(*this)[y]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec3<half> tvec4<half>::swizzle(comp x, comp y, comp z) const | |
| 	{ | |
| 		return tvec3<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tvec4<half> tvec4<half>::swizzle(comp x, comp y, comp z, comp w) const | |
| 	{ | |
| 		return tvec4<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z], | |
| 			(*this)[w]); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER tref4<half> tvec4<half>::swizzle(comp x, comp y, comp z, comp w) | |
| 	{ | |
| 		return tref4<half>( | |
| 			(*this)[x], | |
| 			(*this)[y], | |
| 			(*this)[z], | |
| 			(*this)[w]); | |
| 	} | |
| 
 | |
| #endif//(GLM_COMPONENT == GLM_COMPONENT_CXX98) | |
|  | |
| }//namespace detail | |
|  | |
| 	GLM_FUNC_QUALIFIER half abs(half const & x) | |
| 	{ | |
| 		return float(x) >= float(0) ? x : -x; | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER hvec2 abs(hvec2 const & v) | |
| 	{ | |
| 		return hvec2( | |
| 			float(v.x) >= float(0) ? v.x : -v.x,  | |
| 			float(v.y) >= float(0) ? v.y : -v.y); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER hvec3 abs(hvec3 const & v) | |
| 	{ | |
| 		return hvec3( | |
| 			float(v.x) >= float(0) ? v.x : -v.x,  | |
| 			float(v.y) >= float(0) ? v.y : -v.y,  | |
| 			float(v.z) >= float(0) ? v.z : -v.z); | |
| 	} | |
| 
 | |
| 	GLM_FUNC_QUALIFIER hvec4 abs(hvec4 const & v) | |
| 	{ | |
| 		return hvec4( | |
| 			float(v.x) >= float(0) ? v.x : -v.x,  | |
| 			float(v.y) >= float(0) ? v.y : -v.y,  | |
| 			float(v.z) >= float(0) ? v.z : -v.z,  | |
| 			float(v.w) >= float(0) ? v.w : -v.w); | |
| 	} | |
| 
 | |
| }//namespace glm
 | |
| 
 |