Modify r5462 as requested by rodolfoosvaldobogado

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5463 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
pierre 2010-05-22 19:55:07 +00:00
parent e07a91930d
commit 78b7a95d3f
1 changed files with 15 additions and 7 deletions

View File

@ -146,7 +146,7 @@ void GetPixelShaderId(PIXELSHADERUID *uid, u32 texturemask, u32 dstAlphaEnable)
// output is given by .outreg // output is given by .outreg
// tevtemp is set according to swapmodetables and // tevtemp is set according to swapmodetables and
static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL, bool final); static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL);
static void SampleTexture(char *&p, const char *destination, const char *texcoords, const char *texswap, int texmap, u32 texture_mask, u32 HLSL); static void SampleTexture(char *&p, const char *destination, const char *texcoords, const char *texswap, int texmap, u32 texture_mask, u32 HLSL);
// static void WriteAlphaCompare(char *&p, int num, int comp); // static void WriteAlphaCompare(char *&p, int num, int comp);
static bool WriteAlphaTest(char *&p, u32 HLSL); static bool WriteAlphaTest(char *&p, u32 HLSL);
@ -520,7 +520,15 @@ const char *GeneratePixelShaderCode(u32 texture_mask, bool dstAlphaEnable, u32 H
for (int i = 0; i < numStages; i++) for (int i = 0; i < numStages; i++)
WriteStage(p, i, texture_mask,HLSL,i+1 == numStages); //build the equation for this stage WriteStage(p, i, texture_mask,HLSL); //build the equation for this stage
if(numStages)
{
// The results of the last texenv stage are put onto the screen,
// regardless of the used destination register
WRITE(p, "prev.rgb = %s;\n",tevCOutputTable[bpmem.combiners[numStages-1].colorC.dest]);
WRITE(p, "prev.a = %s;\n",tevAOutputTable[bpmem.combiners[numStages-1].alphaC.dest]);
}
// emulation of unisgned 8 overflow when casting // emulation of unisgned 8 overflow when casting
if(HLSL) if(HLSL)
{ {
@ -626,7 +634,7 @@ static const char *TEVCMPAlphaOPTable[16] =
}; };
static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL, bool final) static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL)
{ {
char *rasswap = swapModeTable[bpmem.combiners[n].alphaC.rswap]; char *rasswap = swapModeTable[bpmem.combiners[n].alphaC.rswap];
char *texswap = swapModeTable[bpmem.combiners[n].alphaC.tswap]; char *texswap = swapModeTable[bpmem.combiners[n].alphaC.tswap];
@ -739,9 +747,9 @@ static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL, bool final)
WRITE(p, "konsttemp=float4(%s,%s);\n",tevKSelTableC[kc],tevKSelTableA[ka]); WRITE(p, "konsttemp=float4(%s,%s);\n",tevKSelTableC[kc],tevKSelTableA[ka]);
if (cc.clamp) if (cc.clamp)
WRITE(p, "%s=saturate(", tevCOutputTable[final?0:cc.dest]); WRITE(p, "%s=saturate(", tevCOutputTable[cc.dest]);
else else
WRITE(p, "%s=", tevCOutputTable[final?0:cc.dest]); WRITE(p, "%s=", tevCOutputTable[cc.dest]);
// combine the color channel // combine the color channel
if (cc.bias != 3) // if not compare if (cc.bias != 3) // if not compare
@ -788,9 +796,9 @@ static void WriteStage(char *&p, int n, u32 texture_mask, u32 HLSL, bool final)
// combine the alpha channel // combine the alpha channel
if (ac.clamp) if (ac.clamp)
WRITE(p, "%s=saturate(", tevAOutputTable[final?0:ac.dest]); WRITE(p, "%s=saturate(", tevAOutputTable[ac.dest]);
else else
WRITE(p, "%s=", tevAOutputTable[final?0:ac.dest]); WRITE(p, "%s=", tevAOutputTable[ac.dest]);
if (ac.bias != 3) // if not compare if (ac.bias != 3) // if not compare
{ {