| 
									
										
										
										
											2013-04-17 23:09:55 -04:00
										 |  |  | // Copyright 2013 Dolphin Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-21 02:01:38 -04:00
										 |  |  | #include "VideoCommon/NativeVertexFormat.h"
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class VertexLoader_Normal | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 	// Init
 | 
					
						
							| 
									
										
										
										
											2014-08-30 12:41:21 -04:00
										 |  |  | 	static void Init(); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 	// GetSize
 | 
					
						
							| 
									
										
										
										
											2014-09-01 11:00:25 +02:00
										 |  |  | 	static unsigned int GetSize(u64 _type, unsigned int _format, | 
					
						
							| 
									
										
										
										
											2011-03-21 05:46:33 +00:00
										 |  |  | 		unsigned int _elements, unsigned int _index3); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 	// GetFunction
 | 
					
						
							| 
									
										
										
										
											2014-09-01 11:00:25 +02:00
										 |  |  | 	static TPipelineFunction GetFunction(u64 _type, | 
					
						
							| 
									
										
										
										
											2011-03-21 05:46:33 +00:00
										 |  |  | 		unsigned int _format, unsigned int _elements, unsigned int _index3); | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 	enum ENormalType | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-02-16 15:30:18 -05:00
										 |  |  | 		NRM_NOT_PRESENT = 0, | 
					
						
							|  |  |  | 		NRM_DIRECT      = 1, | 
					
						
							|  |  |  | 		NRM_INDEX8      = 2, | 
					
						
							|  |  |  | 		NRM_INDEX16     = 3, | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 		NUM_NRM_TYPE | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum ENormalFormat | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-02-16 15:30:18 -05:00
										 |  |  | 		FORMAT_UBYTE   = 0, | 
					
						
							|  |  |  | 		FORMAT_BYTE    = 1, | 
					
						
							|  |  |  | 		FORMAT_USHORT  = 2, | 
					
						
							|  |  |  | 		FORMAT_SHORT   = 3, | 
					
						
							|  |  |  | 		FORMAT_FLOAT   = 4, | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 		NUM_NRM_FORMAT | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum ENormalElements | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-02-16 15:30:18 -05:00
										 |  |  | 		NRM_NBT          = 0, | 
					
						
							|  |  |  | 		NRM_NBT3         = 1, | 
					
						
							| 
									
										
										
										
											2013-03-19 21:51:12 -04:00
										 |  |  | 		NUM_NRM_ELEMENTS | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	enum ENormalIndices | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2014-02-16 15:30:18 -05:00
										 |  |  | 		NRM_INDICES1    = 0, | 
					
						
							|  |  |  | 		NRM_INDICES3    = 1, | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		NUM_NRM_INDICES | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 13:25:35 -06:00
										 |  |  | 	struct Set | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		template <typename T> | 
					
						
							|  |  |  | 		void operator=(const T&) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			gc_size = T::size; | 
					
						
							|  |  |  | 			function = T::function; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-10-29 01:23:17 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 		int gc_size; | 
					
						
							|  |  |  | 		TPipelineFunction function; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	static Set m_Table[NUM_NRM_TYPE][NUM_NRM_INDICES][NUM_NRM_ELEMENTS][NUM_NRM_FORMAT]; | 
					
						
							|  |  |  | }; |