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
					
				@ -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…
	
		Reference in New Issue
	
	Block a user