diff --git a/Common/GPU/Shader.cpp b/Common/GPU/Shader.cpp index b199f0a227..9eea402f67 100644 --- a/Common/GPU/Shader.cpp +++ b/Common/GPU/Shader.cpp @@ -74,6 +74,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) { forceMatrix4x4 = false; coefsFromBuffers = true; vsOutPrefix = "Out."; + viewportYSign = "-"; break; } } diff --git a/Common/GPU/Shader.h b/Common/GPU/Shader.h index 69fa5c9d65..07f678e0a5 100644 --- a/Common/GPU/Shader.h +++ b/Common/GPU/Shader.h @@ -45,6 +45,7 @@ struct ShaderLanguageDesc { const char *lastFragData = nullptr; const char *framebufferFetchExtension = nullptr; const char *vsOutPrefix = ""; + const char *viewportYSign = ""; bool glslES30 = false; bool bitwiseOps = false; bool forceMatrix4x4 = false; diff --git a/GPU/Common/ReinterpretFramebuffer.cpp b/GPU/Common/ReinterpretFramebuffer.cpp index f915d99c79..2fff2bb5f7 100644 --- a/GPU/Common/ReinterpretFramebuffer.cpp +++ b/GPU/Common/ReinterpretFramebuffer.cpp @@ -75,6 +75,7 @@ bool GenerateReinterpretVertexShader(char *buffer, const ShaderLanguageDesc &lan writer.C(" float x = -1.0 + float((gl_VertexIndex & 1) << 2);\n"); writer.C(" float y = -1.0 + float((gl_VertexIndex & 2) << 1);\n"); writer.C(" v_texcoord = (vec2(x, y) + vec2(1.0, 1.0)) * 0.5;\n"); + writer.F(" y *= %s1.0;\n", lang.viewportYSign); writer.C(" gl_Position = vec4(x, y, 0.0, 1.0);\n"); writer.EndVSMain(varyings);