corrected viewport and scissor test behavior in both plugins.

some code cleanup in d3d.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4605 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Rodolfo Osvaldo Bogado
2009-11-23 14:08:08 +00:00
parent 37f1e1ca73
commit 55dc7efaa4
7 changed files with 163 additions and 96 deletions

View File

@ -90,8 +90,23 @@ void SetPSConstant4fv(int const_number, const float *f)
void PixelShaderCache::Init()
{
char pmatrixprog[1024];
sprintf(pmatrixprog,"uniform sampler samp0 : register(s0);\n"
char pprog[1024];
sprintf(pprog,"void main(\n"
"out float4 ocol0 : COLOR0,\n"
" in float4 incol0 : COLOR0){\n"
"ocol0 = incol0;\n"
"}\n");
s_ClearProgram = D3D::CompilePixelShader(pprog, (int)strlen(pprog));
sprintf(pprog,"uniform sampler samp0 : register(s0);\n"
"void main(\n"
"out float4 ocol0 : COLOR0,\n"
" in float3 uv0 : TEXCOORD0){\n"
"ocol0 = tex2D(samp0,uv0.xy);\n"
"}\n");
s_ColorCopyProgram = D3D::CompilePixelShader(pprog, (int)strlen(pprog));
sprintf(pprog,"uniform sampler samp0 : register(s0);\n"
"uniform float4 cColMatrix[5] : register(c%d);\n"
"void main(\n"
"out float4 ocol0 : COLOR0,\n"
@ -99,23 +114,9 @@ void PixelShaderCache::Init()
"float4 texcol = tex2D(samp0,uv0.xy);\n"
"ocol0 = float4(dot(texcol,cColMatrix[0]),dot(texcol,cColMatrix[1]),dot(texcol,cColMatrix[2]),dot(texcol,cColMatrix[3])) + cColMatrix[4];\n"
"}\n",C_COLORMATRIX);
char pcopyprog[1024];
sprintf(pcopyprog,"uniform sampler samp0 : register(s0);\n"
"void main(\n"
"out float4 ocol0 : COLOR0,\n"
" in float3 uv0 : TEXCOORD0){\n"
"ocol0 = tex2D(samp0,uv0.xy);\n"
"}\n");
char pclearprog[1024];
sprintf(pclearprog,"void main(\n"
"out float4 ocol0 : COLOR0,\n"
" in float4 incol0 : COLOR0){\n"
"ocol0 = incol0;\n"
"}\n");
s_ColorMatrixProgram = D3D::CompilePixelShader(pprog, (int)strlen(pprog));
char pdmatrixprog[1024];
sprintf(pdmatrixprog,"uniform sampler samp0 : register(s0);\n"
sprintf(pprog,"uniform sampler samp0 : register(s0);\n"
"uniform float4 cColMatrix[5] : register(c%d);\n"
"void main(\n"
"out float4 ocol0 : COLOR0,\n"
@ -125,11 +126,7 @@ void PixelShaderCache::Init()
"texcol = float4((EncodedDepth.rgb * (16777216.0f/16777215.0f)),1.0f);\n"
"ocol0 = float4(dot(texcol,cColMatrix[0]),dot(texcol,cColMatrix[1]),dot(texcol,cColMatrix[2]),dot(texcol,cColMatrix[3])) + cColMatrix[4];\n"
"}\n",C_COLORMATRIX);
s_ColorMatrixProgram = D3D::CompilePixelShader(pmatrixprog, (int)strlen(pmatrixprog));
s_ColorCopyProgram = D3D::CompilePixelShader(pcopyprog, (int)strlen(pcopyprog));
s_DepthMatrixProgram = D3D::CompilePixelShader(pdmatrixprog, (int)strlen(pdmatrixprog));
s_ClearProgram = D3D::CompilePixelShader(pclearprog, (int)strlen(pclearprog));
s_DepthMatrixProgram = D3D::CompilePixelShader(pprog, (int)strlen(pprog));
Clear();
}