mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 13:49:53 -06:00
PixelShaderGen: Change indirect texture matrix uniforms to use integers.
This commit is contained in:
@ -544,19 +544,21 @@ void Tev::Indirect(unsigned int stageNum, s32 s, s32 t)
|
||||
switch (indirect.mid & 12)
|
||||
{
|
||||
case 0:
|
||||
shift = 3 + (17 - scale);
|
||||
indtevtrans[0] = indmtx.col0.ma * indcoord[0] + indmtx.col1.mc * indcoord[1] + indmtx.col2.me * indcoord[2];
|
||||
indtevtrans[1] = indmtx.col0.mb * indcoord[0] + indmtx.col1.md * indcoord[1] + indmtx.col2.mf * indcoord[2];
|
||||
// matrix values are S0.10, output format is S17.7, so divide by 8
|
||||
shift = (17 - scale);
|
||||
indtevtrans[0] = (indmtx.col0.ma * indcoord[0] + indmtx.col1.mc * indcoord[1] + indmtx.col2.me * indcoord[2]) >> 3;
|
||||
indtevtrans[1] = (indmtx.col0.mb * indcoord[0] + indmtx.col1.md * indcoord[1] + indmtx.col2.mf * indcoord[2]) >> 3;
|
||||
break;
|
||||
case 4: // s matrix
|
||||
shift = 8 + (17 - scale);
|
||||
indtevtrans[0] = s * indcoord[0];
|
||||
indtevtrans[1] = t * indcoord[0];
|
||||
// s is S17.7, matrix elements are divided by 256, output is S17.7, so divide by 256. - TODO: Maybe, since s is actually stored as S24, we should divide by 256*64?
|
||||
shift = (17 - scale);
|
||||
indtevtrans[0] = s * indcoord[0] / 256;
|
||||
indtevtrans[1] = t * indcoord[0] / 256;
|
||||
break;
|
||||
case 8: // t matrix
|
||||
shift = 8 + (17 - scale);
|
||||
indtevtrans[0] = s * indcoord[1];
|
||||
indtevtrans[1] = t * indcoord[1];
|
||||
shift = (17 - scale);
|
||||
indtevtrans[0] = s * indcoord[1] / 256;
|
||||
indtevtrans[1] = t * indcoord[1] / 256;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
|
Reference in New Issue
Block a user