| 
									
										
										
										
											2015-05-24 06:55:12 +02:00
										 |  |  | // Copyright 2008 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2013-04-17 23:09:55 -04:00
										 |  |  | // 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-17 16:54:31 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | #include "VideoCommon/LightingShaderGen.h"
 | 
					
						
							|  |  |  | #include "VideoCommon/ShaderGenCommon.h"
 | 
					
						
							| 
									
										
										
										
											2016-07-21 19:04:57 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | enum class APIType; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-11 11:59:42 +01:00
										 |  |  | // TODO should be reordered
 | 
					
						
							| 
									
										
										
										
											2018-03-18 15:40:37 -04:00
										 |  |  | enum : int | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   SHADER_POSITION_ATTRIB = 0, | 
					
						
							|  |  |  |   SHADER_POSMTX_ATTRIB = 1, | 
					
						
							|  |  |  |   SHADER_NORM0_ATTRIB = 2, | 
					
						
							|  |  |  |   SHADER_NORM1_ATTRIB = 3, | 
					
						
							|  |  |  |   SHADER_NORM2_ATTRIB = 4, | 
					
						
							|  |  |  |   SHADER_COLOR0_ATTRIB = 5, | 
					
						
							|  |  |  |   SHADER_COLOR1_ATTRIB = 6, | 
					
						
							| 
									
										
										
										
											2013-01-14 22:59:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-18 15:40:37 -04:00
										 |  |  |   SHADER_TEXTURE0_ATTRIB = 8, | 
					
						
							|  |  |  |   SHADER_TEXTURE1_ATTRIB = 9, | 
					
						
							|  |  |  |   SHADER_TEXTURE2_ATTRIB = 10, | 
					
						
							|  |  |  |   SHADER_TEXTURE3_ATTRIB = 11, | 
					
						
							|  |  |  |   SHADER_TEXTURE4_ATTRIB = 12, | 
					
						
							|  |  |  |   SHADER_TEXTURE5_ATTRIB = 13, | 
					
						
							|  |  |  |   SHADER_TEXTURE6_ATTRIB = 14, | 
					
						
							|  |  |  |   SHADER_TEXTURE7_ATTRIB = 15 | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-01-14 22:59:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-23 19:28:36 +02:00
										 |  |  | #pragma pack(1)
 | 
					
						
							| 
									
										
										
										
											2013-03-31 20:55:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-07 01:02:04 +02:00
										 |  |  | struct vertex_shader_uid_data | 
					
						
							| 
									
										
										
										
											2008-12-26 10:43:18 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   u32 NumValues() const { return sizeof(vertex_shader_uid_data); } | 
					
						
							|  |  |  |   u32 components : 23; | 
					
						
							|  |  |  |   u32 numTexGens : 4; | 
					
						
							|  |  |  |   u32 numColorChans : 2; | 
					
						
							|  |  |  |   u32 dualTexTrans_enabled : 1; | 
					
						
							| 
									
										
										
										
											2013-06-23 19:28:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   u32 texMtxInfo_n_projection : 16;  // Stored separately to guarantee that the texMtxInfo struct is
 | 
					
						
							|  |  |  |                                      // 8 bits wide
 | 
					
						
							| 
									
										
										
										
											2017-06-24 18:18:53 +10:00
										 |  |  |   u32 pad : 18; | 
					
						
							| 
									
										
										
										
											2016-01-16 22:56:49 +13:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   struct | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     u32 inputform : 2; | 
					
						
							|  |  |  |     u32 texgentype : 3; | 
					
						
							|  |  |  |     u32 sourcerow : 5; | 
					
						
							|  |  |  |     u32 embosssourceshift : 3; | 
					
						
							|  |  |  |     u32 embosslightshift : 3; | 
					
						
							|  |  |  |   } texMtxInfo[8]; | 
					
						
							| 
									
										
										
										
											2013-06-23 19:28:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   struct | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     u32 index : 6; | 
					
						
							|  |  |  |     u32 normalize : 1; | 
					
						
							|  |  |  |     u32 pad : 1; | 
					
						
							|  |  |  |   } postMtxInfo[8]; | 
					
						
							| 
									
										
										
										
											2013-06-28 17:43:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   LightingUidData lighting; | 
					
						
							| 
									
										
										
										
											2012-08-06 22:41:30 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-03-31 20:55:57 +02:00
										 |  |  | #pragma pack()
 | 
					
						
							| 
									
										
										
										
											2008-12-26 10:43:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-07 01:02:04 +02:00
										 |  |  | typedef ShaderUid<vertex_shader_uid_data> VertexShaderUid; | 
					
						
							| 
									
										
										
										
											2008-12-26 10:43:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-17 00:34:06 +13:00
										 |  |  | VertexShaderUid GetVertexShaderUid(); | 
					
						
							| 
									
										
										
										
											2017-07-20 17:10:02 +10:00
										 |  |  | ShaderCode GenerateVertexShaderCode(APIType api_type, const ShaderHostConfig& host_config, | 
					
						
							|  |  |  |                                     const vertex_shader_uid_data* uid_data); |