From 2dbac656130fbcfb2c53c553c2dd4cd759b9de97 Mon Sep 17 00:00:00 2001 From: vlj Date: Sun, 24 May 2015 17:05:54 +0200 Subject: [PATCH] GL: Fix output swizzling for fog and clip distance --- rpcs3/Emu/RSX/GL/GLVertexProgram.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp b/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp index bba7fc2677..0379592402 100644 --- a/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp +++ b/rpcs3/Emu/RSX/GL/GLVertexProgram.cpp @@ -85,7 +85,12 @@ void GLVertexDecompilerThread::insertOutputs(std::stringstream & OS, const std:: for (auto &i : reg_table) { if (m_parr.HasParam(PF_PARAM_NONE, "vec4", i.src_reg) && i.need_declare) - OS << "out vec4 " << i.name << ";" << std::endl; + { + if (i.name == "fogc") + OS << "out float " << i.name << ";" << std::endl; + else + OS << "out vec4 " << i.name << ";" << std::endl; + } } } @@ -113,7 +118,7 @@ void GLVertexDecompilerThread::insertMainEnd(std::stringstream & OS) for (auto &i : reg_table) { if (m_parr.HasParam(PF_PARAM_NONE, "vec4", i.src_reg)) - OS << " " << i.name << " = " << i.src_reg << ";" << std::endl; + OS << " " << i.name << " = " << i.src_reg << i.src_reg_mask << ";" << std::endl; } OS << " gl_Position = gl_Position * scaleOffsetMat;" << std::endl; OS << "}" << std::endl;