|  |  | @ -3,8 +3,61 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | #include "../integer.hpp" |  |  |  | #include "../integer.hpp" | 
			
		
	
		
		
			
				
					
					|  |  |  | #include "../ext/vector_integer.hpp" |  |  |  | #include "../ext/vector_integer.hpp" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | namespace glm |  |  |  | namespace glm{ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | namespace detail | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	template<bool is_float, bool is_signed> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct compute_roundMultiple {}; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	template<> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct compute_roundMultiple<true, true> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		template<typename genType> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (Source >= genType(0)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Source - std::fmod(Source, Multiple); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				genType Tmp = Source + genType(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Tmp - std::fmod(Tmp, Multiple) - Multiple; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	}; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	template<> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct compute_roundMultiple<false, false> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		template<typename genType> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (Source >= genType(0)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Source - Source % Multiple; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				genType Tmp = Source + genType(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Tmp - Tmp % Multiple - Multiple; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	}; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	template<> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct compute_roundMultiple<false, true> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		template<typename genType> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		GLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (Source >= genType(0)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Source - Source % Multiple; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				genType Tmp = Source + genType(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return Tmp - Tmp % Multiple - Multiple; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	}; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | }//namespace detail | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	////////////////// |  |  |  | 	////////////////// | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// ceilPowerOfTwo |  |  |  | 	// ceilPowerOfTwo | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |