mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Pica: Use zero for the SecondaryFragmentColor source.
- This is a workaround until we support fragment lighting.
This commit is contained in:
		
							parent
							
								
									dcbc653b90
								
							
						
					
					
						commit
						33b9abb91e
					
				
					 3 changed files with 21 additions and 11 deletions
				
			
		|  | @ -240,6 +240,7 @@ struct Regs { | |||
|         enum class Source : u32 { | ||||
|             PrimaryColor           = 0x0, | ||||
|             PrimaryFragmentColor   = 0x1, | ||||
|             SecondaryFragmentColor = 0x2, | ||||
| 
 | ||||
|             Texture0               = 0x3, | ||||
|             Texture1               = 0x4, | ||||
|  |  | |||
|  | @ -402,11 +402,16 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0, | |||
| 
 | ||||
|                 auto GetSource = [&](Source source) -> Math::Vec4<u8> { | ||||
|                     switch (source) { | ||||
|                     // TODO: What's the difference between these two?
 | ||||
|                     case Source::PrimaryColor: | ||||
| 
 | ||||
|                     // HACK: Until we implement fragment lighting, use primary_color
 | ||||
|                     case Source::PrimaryFragmentColor: | ||||
|                         return primary_color; | ||||
| 
 | ||||
|                     // HACK: Until we implement fragment lighting, use zero
 | ||||
|                     case Source::SecondaryFragmentColor: | ||||
|                         return {0, 0, 0, 0}; | ||||
| 
 | ||||
|                     case Source::Texture0: | ||||
|                         return texture_color[0]; | ||||
| 
 | ||||
|  |  | |||
|  | @ -69,15 +69,16 @@ const char g_fragment_shader_hw[] = R"( | |||
| #define NUM_VTX_ATTR 7 | ||||
| #define NUM_TEV_STAGES 6 | ||||
| 
 | ||||
| #define SOURCE_PRIMARYCOLOR         0x0 | ||||
| #define SOURCE_PRIMARYFRAGMENTCOLOR 0x1 | ||||
| #define SOURCE_TEXTURE0             0x3 | ||||
| #define SOURCE_TEXTURE1             0x4 | ||||
| #define SOURCE_TEXTURE2             0x5 | ||||
| #define SOURCE_TEXTURE3             0x6 | ||||
| #define SOURCE_PREVIOUSBUFFER       0xd | ||||
| #define SOURCE_CONSTANT             0xe | ||||
| #define SOURCE_PREVIOUS             0xf | ||||
| #define SOURCE_PRIMARYCOLOR           0x0 | ||||
| #define SOURCE_PRIMARYFRAGMENTCOLOR   0x1 | ||||
| #define SOURCE_SECONDARYFRAGMENTCOLOR 0x2 | ||||
| #define SOURCE_TEXTURE0               0x3 | ||||
| #define SOURCE_TEXTURE1               0x4 | ||||
| #define SOURCE_TEXTURE2               0x5 | ||||
| #define SOURCE_TEXTURE3               0x6 | ||||
| #define SOURCE_PREVIOUSBUFFER         0xd | ||||
| #define SOURCE_CONSTANT               0xe | ||||
| #define SOURCE_PREVIOUS               0xf | ||||
| 
 | ||||
| #define COLORMODIFIER_SOURCECOLOR         0x0 | ||||
| #define COLORMODIFIER_ONEMINUSSOURCECOLOR 0x1 | ||||
|  | @ -151,8 +152,11 @@ vec4 GetSource(int source) { | |||
|     if (source == SOURCE_PRIMARYCOLOR) { | ||||
|         return o[2]; | ||||
|     } else if (source == SOURCE_PRIMARYFRAGMENTCOLOR) { | ||||
|         // HACK: Uses color value, but should really use fragment lighting output
 | ||||
|         // HACK: Until we implement fragment lighting, use primary_color
 | ||||
|         return o[2]; | ||||
|     } else if (source == SOURCE_SECONDARYFRAGMENTCOLOR) { | ||||
|         // HACK: Until we implement fragment lighting, use zero
 | ||||
|         return vec4(0.0, 0.0, 0.0, 0.0); | ||||
|     } else if (source == SOURCE_TEXTURE0) { | ||||
|         return texture(tex[0], o[3].xy); | ||||
|     } else if (source == SOURCE_TEXTURE1) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue