diff options
| -rw-r--r-- | src/video_core/pica.h | 1 | ||||
| -rw-r--r-- | src/video_core/rasterizer.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shaders.h | 24 |
3 files changed, 21 insertions, 11 deletions
diff --git a/src/video_core/pica.h b/src/video_core/pica.h index f8313d20d..8ad47a928 100644 --- a/src/video_core/pica.h +++ b/src/video_core/pica.h | |||
| @@ -240,6 +240,7 @@ struct Regs { | |||
| 240 | enum class Source : u32 { | 240 | enum class Source : u32 { |
| 241 | PrimaryColor = 0x0, | 241 | PrimaryColor = 0x0, |
| 242 | PrimaryFragmentColor = 0x1, | 242 | PrimaryFragmentColor = 0x1, |
| 243 | SecondaryFragmentColor = 0x2, | ||
| 243 | 244 | ||
| 244 | Texture0 = 0x3, | 245 | Texture0 = 0x3, |
| 245 | Texture1 = 0x4, | 246 | Texture1 = 0x4, |
diff --git a/src/video_core/rasterizer.cpp b/src/video_core/rasterizer.cpp index e0f8d9e6f..113b573f8 100644 --- a/src/video_core/rasterizer.cpp +++ b/src/video_core/rasterizer.cpp | |||
| @@ -402,11 +402,16 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0, | |||
| 402 | 402 | ||
| 403 | auto GetSource = [&](Source source) -> Math::Vec4<u8> { | 403 | auto GetSource = [&](Source source) -> Math::Vec4<u8> { |
| 404 | switch (source) { | 404 | switch (source) { |
| 405 | // TODO: What's the difference between these two? | ||
| 406 | case Source::PrimaryColor: | 405 | case Source::PrimaryColor: |
| 406 | |||
| 407 | // HACK: Until we implement fragment lighting, use primary_color | ||
| 407 | case Source::PrimaryFragmentColor: | 408 | case Source::PrimaryFragmentColor: |
| 408 | return primary_color; | 409 | return primary_color; |
| 409 | 410 | ||
| 411 | // HACK: Until we implement fragment lighting, use zero | ||
| 412 | case Source::SecondaryFragmentColor: | ||
| 413 | return {0, 0, 0, 0}; | ||
| 414 | |||
| 410 | case Source::Texture0: | 415 | case Source::Texture0: |
| 411 | return texture_color[0]; | 416 | return texture_color[0]; |
| 412 | 417 | ||
diff --git a/src/video_core/renderer_opengl/gl_shaders.h b/src/video_core/renderer_opengl/gl_shaders.h index 8f0941230..a8cb2f595 100644 --- a/src/video_core/renderer_opengl/gl_shaders.h +++ b/src/video_core/renderer_opengl/gl_shaders.h | |||
| @@ -69,15 +69,16 @@ const char g_fragment_shader_hw[] = R"( | |||
| 69 | #define NUM_VTX_ATTR 7 | 69 | #define NUM_VTX_ATTR 7 |
| 70 | #define NUM_TEV_STAGES 6 | 70 | #define NUM_TEV_STAGES 6 |
| 71 | 71 | ||
| 72 | #define SOURCE_PRIMARYCOLOR 0x0 | 72 | #define SOURCE_PRIMARYCOLOR 0x0 |
| 73 | #define SOURCE_PRIMARYFRAGMENTCOLOR 0x1 | 73 | #define SOURCE_PRIMARYFRAGMENTCOLOR 0x1 |
| 74 | #define SOURCE_TEXTURE0 0x3 | 74 | #define SOURCE_SECONDARYFRAGMENTCOLOR 0x2 |
| 75 | #define SOURCE_TEXTURE1 0x4 | 75 | #define SOURCE_TEXTURE0 0x3 |
| 76 | #define SOURCE_TEXTURE2 0x5 | 76 | #define SOURCE_TEXTURE1 0x4 |
| 77 | #define SOURCE_TEXTURE3 0x6 | 77 | #define SOURCE_TEXTURE2 0x5 |
| 78 | #define SOURCE_PREVIOUSBUFFER 0xd | 78 | #define SOURCE_TEXTURE3 0x6 |
| 79 | #define SOURCE_CONSTANT 0xe | 79 | #define SOURCE_PREVIOUSBUFFER 0xd |
| 80 | #define SOURCE_PREVIOUS 0xf | 80 | #define SOURCE_CONSTANT 0xe |
| 81 | #define SOURCE_PREVIOUS 0xf | ||
| 81 | 82 | ||
| 82 | #define COLORMODIFIER_SOURCECOLOR 0x0 | 83 | #define COLORMODIFIER_SOURCECOLOR 0x0 |
| 83 | #define COLORMODIFIER_ONEMINUSSOURCECOLOR 0x1 | 84 | #define COLORMODIFIER_ONEMINUSSOURCECOLOR 0x1 |
| @@ -151,8 +152,11 @@ vec4 GetSource(int source) { | |||
| 151 | if (source == SOURCE_PRIMARYCOLOR) { | 152 | if (source == SOURCE_PRIMARYCOLOR) { |
| 152 | return o[2]; | 153 | return o[2]; |
| 153 | } else if (source == SOURCE_PRIMARYFRAGMENTCOLOR) { | 154 | } else if (source == SOURCE_PRIMARYFRAGMENTCOLOR) { |
| 154 | // HACK: Uses color value, but should really use fragment lighting output | 155 | // HACK: Until we implement fragment lighting, use primary_color |
| 155 | return o[2]; | 156 | return o[2]; |
| 157 | } else if (source == SOURCE_SECONDARYFRAGMENTCOLOR) { | ||
| 158 | // HACK: Until we implement fragment lighting, use zero | ||
| 159 | return vec4(0.0, 0.0, 0.0, 0.0); | ||
| 156 | } else if (source == SOURCE_TEXTURE0) { | 160 | } else if (source == SOURCE_TEXTURE0) { |
| 157 | return texture(tex[0], o[3].xy); | 161 | return texture(tex[0], o[3].xy); |
| 158 | } else if (source == SOURCE_TEXTURE1) { | 162 | } else if (source == SOURCE_TEXTURE1) { |