mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-24 01:10:09 +00:00
Fix Dot3RGB and Dot3RGBA according to GL spec
This commit is contained in:
parent
2a0f38ddc5
commit
862183906e
@ -440,6 +440,7 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
|
|||||||
return result.Cast<u8>();
|
return result.Cast<u8>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Operation::Dot3RGB:
|
||||||
case Operation::Dot3RGBA:
|
case Operation::Dot3RGBA:
|
||||||
{
|
{
|
||||||
//return std::inner_product(begin(a), end(a), begin(b), 0.0);
|
//return std::inner_product(begin(a), end(a), begin(b), 0.0);
|
||||||
@ -493,9 +494,17 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
|
|||||||
case Operation::Subtract:
|
case Operation::Subtract:
|
||||||
return std::max(0, (int)input[0] - (int)input[1]);
|
return std::max(0, (int)input[0] - (int)input[1]);
|
||||||
|
|
||||||
case Operation::Dot3RGBA:
|
case Operation::Dot3RGB:
|
||||||
return 255;
|
return 255;
|
||||||
|
|
||||||
|
case Operation::Dot3RGBA:
|
||||||
|
//return std::inner_product(begin(a), end(a), begin(b), 0.0);
|
||||||
|
int a[] = { input[0].r(), input[0].g(), input[0].b() }; //int a[] = { 1, 3, -5 };
|
||||||
|
int b[] = { input[1].r(), input[1].g(), input[1].b() };
|
||||||
|
|
||||||
|
auto res = std::inner_product(a, a + sizeof(a) / sizeof(a[0]), b, 0);
|
||||||
|
return res;
|
||||||
|
|
||||||
case Operation::MultiplyThenAdd:
|
case Operation::MultiplyThenAdd:
|
||||||
return std::min(255, (input[0] * input[1] + 255 * input[2]) / 255);
|
return std::min(255, (input[0] * input[1] + 255 * input[2]) / 255);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user