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 {
|
enum class Source : u32 {
|
||||||
PrimaryColor = 0x0,
|
PrimaryColor = 0x0,
|
||||||
PrimaryFragmentColor = 0x1,
|
PrimaryFragmentColor = 0x1,
|
||||||
|
SecondaryFragmentColor = 0x2,
|
||||||
|
|
||||||
Texture0 = 0x3,
|
Texture0 = 0x3,
|
||||||
Texture1 = 0x4,
|
Texture1 = 0x4,
|
||||||
|
|
|
@ -402,11 +402,16 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
|
||||||
|
|
||||||
auto GetSource = [&](Source source) -> Math::Vec4<u8> {
|
auto GetSource = [&](Source source) -> Math::Vec4<u8> {
|
||||||
switch (source) {
|
switch (source) {
|
||||||
// TODO: What's the difference between these two?
|
|
||||||
case Source::PrimaryColor:
|
case Source::PrimaryColor:
|
||||||
|
|
||||||
|
// HACK: Until we implement fragment lighting, use primary_color
|
||||||
case Source::PrimaryFragmentColor:
|
case Source::PrimaryFragmentColor:
|
||||||
return primary_color;
|
return primary_color;
|
||||||
|
|
||||||
|
// HACK: Until we implement fragment lighting, use zero
|
||||||
|
case Source::SecondaryFragmentColor:
|
||||||
|
return {0, 0, 0, 0};
|
||||||
|
|
||||||
case Source::Texture0:
|
case Source::Texture0:
|
||||||
return texture_color[0];
|
return texture_color[0];
|
||||||
|
|
||||||
|
|
|
@ -69,15 +69,16 @@ const char g_fragment_shader_hw[] = R"(
|
||||||
#define NUM_VTX_ATTR 7
|
#define NUM_VTX_ATTR 7
|
||||||
#define NUM_TEV_STAGES 6
|
#define NUM_TEV_STAGES 6
|
||||||
|
|
||||||
#define SOURCE_PRIMARYCOLOR 0x0
|
#define SOURCE_PRIMARYCOLOR 0x0
|
||||||
#define SOURCE_PRIMARYFRAGMENTCOLOR 0x1
|
#define SOURCE_PRIMARYFRAGMENTCOLOR 0x1
|
||||||
#define SOURCE_TEXTURE0 0x3
|
#define SOURCE_SECONDARYFRAGMENTCOLOR 0x2
|
||||||
#define SOURCE_TEXTURE1 0x4
|
#define SOURCE_TEXTURE0 0x3
|
||||||
#define SOURCE_TEXTURE2 0x5
|
#define SOURCE_TEXTURE1 0x4
|
||||||
#define SOURCE_TEXTURE3 0x6
|
#define SOURCE_TEXTURE2 0x5
|
||||||
#define SOURCE_PREVIOUSBUFFER 0xd
|
#define SOURCE_TEXTURE3 0x6
|
||||||
#define SOURCE_CONSTANT 0xe
|
#define SOURCE_PREVIOUSBUFFER 0xd
|
||||||
#define SOURCE_PREVIOUS 0xf
|
#define SOURCE_CONSTANT 0xe
|
||||||
|
#define SOURCE_PREVIOUS 0xf
|
||||||
|
|
||||||
#define COLORMODIFIER_SOURCECOLOR 0x0
|
#define COLORMODIFIER_SOURCECOLOR 0x0
|
||||||
#define COLORMODIFIER_ONEMINUSSOURCECOLOR 0x1
|
#define COLORMODIFIER_ONEMINUSSOURCECOLOR 0x1
|
||||||
|
@ -151,8 +152,11 @@ vec4 GetSource(int source) {
|
||||||
if (source == SOURCE_PRIMARYCOLOR) {
|
if (source == SOURCE_PRIMARYCOLOR) {
|
||||||
return o[2];
|
return o[2];
|
||||||
} else if (source == SOURCE_PRIMARYFRAGMENTCOLOR) {
|
} 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];
|
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) {
|
} else if (source == SOURCE_TEXTURE0) {
|
||||||
return texture(tex[0], o[3].xy);
|
return texture(tex[0], o[3].xy);
|
||||||
} else if (source == SOURCE_TEXTURE1) {
|
} else if (source == SOURCE_TEXTURE1) {
|
||||||
|
|
Reference in New Issue