From 8a305b19af40e7d4dceafa1976e341959a8044be Mon Sep 17 00:00:00 2001 From: SiPlus Date: Mon, 7 Jul 2014 10:53:47 +0400 Subject: [PATCH 1/2] Change vec2(float, 0.0).xxxx to vec4(float) in VS --- rpcs3/Emu/GS/GL/GLVertexProgram.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLVertexProgram.cpp b/rpcs3/Emu/GS/GL/GLVertexProgram.cpp index fc9a3289b9..cc6f14312e 100644 --- a/rpcs3/Emu/GS/GL/GLVertexProgram.cpp +++ b/rpcs3/Emu/GS/GL/GLVertexProgram.cpp @@ -522,10 +522,10 @@ void GLVertexDecompilerThread::Task() case 0x02: SetDSTVec("($0 * $1)"); break; //MUL case 0x03: SetDSTVec("($0 + $2)"); break; //ADD case 0x04: SetDSTVec("($0 * $1 + $2)"); break; //MAD - case 0x05: SetDSTVec("vec2(dot($0.xyz, $1.xyz), 0.0).xxxx"); break; //DP3 - case 0x06: SetDSTVec("vec2(dot(vec4($0.xyz, 1.0), $1), 0.0).xxxx"); break; //DPH - case 0x07: SetDSTVec("vec2(dot($0, $1), 0.0).xxxx"); break; //DP4 - case 0x08: SetDSTVec("vec2(distance($0, $1), 0.0).xxxx"); break; //DST + case 0x05: SetDSTVec("vec4(dot($0.xyz, $1.xyz))"); break; //DP3 + case 0x06: SetDSTVec("vec4(dot(vec4($0.xyz, 1.0), $1))"); break; //DPH + case 0x07: SetDSTVec("vec4(dot($0, $1))"); break; //DP4 + case 0x08: SetDSTVec("vec4(distance($0, $1))"); break; //DST case 0x09: SetDSTVec("min($0, $1)"); break; //MIN case 0x0a: SetDSTVec("max($0, $1)"); break; //MAX case 0x0b: SetDSTVec("vec4(lessThan($0, $1))"); break; //SLT From bf8e6dbc8ea524a286d91fb0cccc81e7e49c90bd Mon Sep 17 00:00:00 2001 From: SiPlus Date: Mon, 7 Jul 2014 10:57:03 +0400 Subject: [PATCH 2/2] Change vec2(float, 0.0).xxxx to vec4(float) in FS --- rpcs3/Emu/GS/GL/GLFragmentProgram.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp b/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp index 418ce0375e..2b33a7fdf0 100644 --- a/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp +++ b/rpcs3/Emu/GS/GL/GLFragmentProgram.cpp @@ -326,9 +326,9 @@ void GLFragmentDecompilerThread::Task() case 0x02: SetDst("($0 * $1)"); break; //MUL case 0x03: SetDst("($0 + $1)"); break; //ADD case 0x04: SetDst("($0 * $1 + $2)"); break; //MAD - case 0x05: SetDst("vec2(dot($0.xyz, $1.xyz), 0).xxxx"); break; // DP3 - case 0x06: SetDst("vec2(dot($0, $1), 0).xxxx"); break; // DP4 - case 0x07: SetDst("vec2(distance($0, $1), 0).xxxx"); break; // DST + case 0x05: SetDst("vec4(dot($0.xyz, $1.xyz))"); break; // DP3 + case 0x06: SetDst("vec4(dot($0, $1))"); break; // DP4 + case 0x07: SetDst("vec4(distance($0, $1))"); break; // DST case 0x08: SetDst("min($0, $1)"); break; // MIN case 0x09: SetDst("max($0, $1)"); break; // MAX case 0x0a: SetDst("vec4(lessThan($0, $1))"); break; // SLT @@ -379,7 +379,7 @@ void GLFragmentDecompilerThread::Task() //case 0x35: break; // BEMLUM case 0x36: SetDst("($0 - 2.0 * $1 * dot($0, $1))"); break; // RFL (reflection vector) //case 0x37: break; // TIMESWTEX - case 0x38: SetDst("vec2(dot($0.xy, $1.xy)).xxxx"); break; // DP2 + case 0x38: SetDst("vec4(dot($0.xy, $1.xy))"); break; // DP2 case 0x39: SetDst("normalize($0.xyz)"); break; // NRM case 0x3a: SetDst("($0 / $1)"); break; // DIV case 0x3b: SetDst("($0 / sqrt($1))"); break; // DIVSQ