fix for 4x super sampling AA.
make the distance of the samples from the center smaller to minimize errors.
This commit is contained in:
parent
3066d8471e
commit
a1d8d8ce87
|
@ -177,12 +177,14 @@ static LPDIRECT3DPIXELSHADER9 CreateCopyShader(int copyMatrixType, int depthConv
|
||||||
"in float uv1 : TEXCOORD1){\n"
|
"in float uv1 : TEXCOORD1){\n"
|
||||||
"float4 texcol = tex2D(samp0,uv0.xy);\n");
|
"float4 texcol = tex2D(samp0,uv0.xy);\n");
|
||||||
break;
|
break;
|
||||||
case 1: // 1 Samples SSAA
|
case 1: // 4 Samples in 4x SSAA buffer
|
||||||
WRITE(p, "in float2 uv0 : TEXCOORD0,\n"
|
WRITE(p, "in float4 uv0 : TEXCOORD0,\n"
|
||||||
"in float uv1 : TEXCOORD1){\n"
|
"in float uv1 : TEXCOORD1,\n"
|
||||||
"float4 texcol = tex2D(samp0,uv0.xy);\n");
|
"in float4 uv2 : TEXCOORD2,\n"
|
||||||
|
"in float4 uv3 : TEXCOORD3){\n"
|
||||||
|
"float4 texcol = (tex2D(samp0,uv2.xy) + tex2D(samp0,uv2.wz) + tex2D(samp0,uv3.xy) + tex2D(samp0,uv3.wz))*0.25f;\n");
|
||||||
break;
|
break;
|
||||||
case 2: // 4 Samples SSAA
|
case 2: // 4 Samples in 9x SSAA buffer
|
||||||
WRITE(p, "in float4 uv0 : TEXCOORD0,\n"
|
WRITE(p, "in float4 uv0 : TEXCOORD0,\n"
|
||||||
"in float uv1 : TEXCOORD1,\n"
|
"in float uv1 : TEXCOORD1,\n"
|
||||||
"in float4 uv2 : TEXCOORD2,\n"
|
"in float4 uv2 : TEXCOORD2,\n"
|
||||||
|
|
|
@ -92,15 +92,19 @@ void VertexShaderCache::Init()
|
||||||
sprintf(vProg, "struct VSOUTPUT\n"
|
sprintf(vProg, "struct VSOUTPUT\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"float4 vPosition : POSITION;\n"
|
"float4 vPosition : POSITION;\n"
|
||||||
"float2 vTexCoord : TEXCOORD0;\n"
|
"float4 vTexCoord : TEXCOORD0;\n"
|
||||||
"float vTexCoord1 : TEXCOORD1;\n"
|
"float vTexCoord1 : TEXCOORD1;\n"
|
||||||
|
"float4 vTexCoord2 : TEXCOORD2;\n"
|
||||||
|
"float4 vTexCoord3 : TEXCOORD3;\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"VSOUTPUT main(float4 inPosition : POSITION,float2 inTEX0 : TEXCOORD0,float2 inInvTexSize : TEXCOORD1,float inTEX2 : TEXCOORD2)\n"
|
"VSOUTPUT main(float4 inPosition : POSITION,float2 inTEX0 : TEXCOORD0,float2 inTEX1 : TEXCOORD1,float inTEX2 : TEXCOORD2)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"VSOUTPUT OUT;"
|
"VSOUTPUT OUT;"
|
||||||
"OUT.vPosition = inPosition;\n"
|
"OUT.vPosition = inPosition;\n"
|
||||||
"OUT.vTexCoord = inTEX0;\n"
|
"OUT.vTexCoord = inTEX0.xyyx;\n"
|
||||||
"OUT.vTexCoord1 = inTEX2;\n"
|
"OUT.vTexCoord1 = inTEX2.x;\n"
|
||||||
|
"OUT.vTexCoord2 = inTEX0.xyyx + (float4(-0.495f,-0.495f, 0.495f,-0.495f) * inTEX1.xyyx);\n"
|
||||||
|
"OUT.vTexCoord3 = inTEX0.xyyx + (float4( 0.495f, 0.495f,-0.495f, 0.495f) * inTEX1.xyyx);\n"
|
||||||
"return OUT;\n"
|
"return OUT;\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
SimpleVertexShader[1] = D3D::CompileAndCreateVertexShader(vProg, (int)strlen(vProg));
|
SimpleVertexShader[1] = D3D::CompileAndCreateVertexShader(vProg, (int)strlen(vProg));
|
||||||
|
@ -119,8 +123,8 @@ void VertexShaderCache::Init()
|
||||||
"OUT.vPosition = inPosition;\n"
|
"OUT.vPosition = inPosition;\n"
|
||||||
"OUT.vTexCoord = inTEX0.xyyx;\n"
|
"OUT.vTexCoord = inTEX0.xyyx;\n"
|
||||||
"OUT.vTexCoord1 = inTEX2.x;\n"
|
"OUT.vTexCoord1 = inTEX2.x;\n"
|
||||||
"OUT.vTexCoord2 = inTEX0.xyyx + (float4(-1.0f,-0.5f, 1.0f,-0.5f) * inTEX1.xyyx);\n"
|
"OUT.vTexCoord2 = inTEX0.xyyx + (float4(-0.9f,-0.45f, 0.9f,-0.45f) * inTEX1.xyyx);\n"
|
||||||
"OUT.vTexCoord3 = inTEX0.xyyx + (float4( 1.0f, 0.5f,-1.0f, 0.5f) * inTEX1.xyyx);\n"
|
"OUT.vTexCoord3 = inTEX0.xyyx + (float4( 0.9f, 0.45f,-0.9f, 0.45f) * inTEX1.xyyx);\n"
|
||||||
"return OUT;\n"
|
"return OUT;\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
SimpleVertexShader[2] = D3D::CompileAndCreateVertexShader(vProg, (int)strlen(vProg));
|
SimpleVertexShader[2] = D3D::CompileAndCreateVertexShader(vProg, (int)strlen(vProg));
|
||||||
|
|
Loading…
Reference in New Issue