mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
TEV shader compilation bugfix
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@286 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
8f6d7ad5e9
commit
98b9cfb2de
@ -184,6 +184,22 @@ const char *tevAInputTable[] =
|
|||||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *tevAInputTable1[] =
|
||||||
|
{
|
||||||
|
"prev.r", //APREV,
|
||||||
|
"c0.r", //A0,
|
||||||
|
"c1.r", //A1,
|
||||||
|
"c2.r", //A2,
|
||||||
|
"textemp.r", //TEXA,
|
||||||
|
"rastemp.r", //RASA,
|
||||||
|
"konsttemp.r", //KONST, (hw1 had quarter)
|
||||||
|
"0.0", //ZERO
|
||||||
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
|
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *tevAInputTable2[] =
|
const char *tevAInputTable2[] =
|
||||||
@ -390,17 +406,19 @@ void WriteStage(char *&p, int n)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
int cmp = (ac.shift<<1)|ac.op|8; // comparemode stored here
|
int cmp = (ac.shift<<1)|ac.op|8; // comparemode stored here
|
||||||
|
const char **inputTable = NULL;
|
||||||
|
inputTable = (cmp == TEVCMP_R8_GT || cmp == TEVCMP_R8_EQ) ? tevAInputTable1 : tevAInputTable;
|
||||||
//compare alpha combiner goes here
|
//compare alpha combiner goes here
|
||||||
switch(cmp) {
|
switch(cmp) {
|
||||||
case TEVCMP_R8_GT:
|
case TEVCMP_R8_GT:
|
||||||
case TEVCMP_A8_GT:
|
case TEVCMP_A8_GT:
|
||||||
WRITE(p," %s + ((%s.%s > %s.%s) ? %s : 0)\n",
|
WRITE(p," %s + ((%s > %s) ? %s : 0)\n",
|
||||||
tevAInputTable[ac.d],tevAInputTable2[ac.a], cmp==TEVCMP_R8_GT?"r":"a", tevAInputTable2[ac.b], cmp==TEVCMP_R8_GT?"r":"a", tevAInputTable[ac.c]);
|
tevAInputTable[ac.d], inputTable[ac.a], inputTable[ac.b], tevAInputTable[ac.c]);
|
||||||
break;
|
break;
|
||||||
case TEVCMP_R8_EQ:
|
case TEVCMP_R8_EQ:
|
||||||
case TEVCMP_A8_EQ:
|
case TEVCMP_A8_EQ:
|
||||||
WRITE(p," %s + (abs(%s.r - %s.r)<%f ? %s : 0)\n",
|
WRITE(p," %s + (abs(%s - %s)<%f ? %s : 0)\n",
|
||||||
tevAInputTable[ac.d],tevAInputTable2[ac.a], tevAInputTable2[ac.b],epsilon,tevAInputTable[ac.c]);
|
tevAInputTable[ac.d], inputTable[ac.a], inputTable[ac.b],epsilon,tevAInputTable[ac.c]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEVCMP_GR16_GT: // 16 bit compares: 255*g+r (probably used for ztextures, so make sure in ztextures, g is the most significant byte)
|
case TEVCMP_GR16_GT: // 16 bit compares: 255*g+r (probably used for ztextures, so make sure in ztextures, g is the most significant byte)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user