From fe30fe1e8e7ab2302bc65853015f3d1c5e674d7e Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Mon, 18 Mar 2019 22:21:21 +0100 Subject: [PATCH] OIT: reset scaling before drawing final quad Fixes Wacky Races and Nomad Soul --- core/rend/gl4/abuffer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/rend/gl4/abuffer.cpp b/core/rend/gl4/abuffer.cpp index 6f8aa5454..b09cc962d 100644 --- a/core/rend/gl4/abuffer.cpp +++ b/core/rend/gl4/abuffer.cpp @@ -565,6 +565,14 @@ void checkOverflowAndReset() void renderABuffer(bool sortFragments) { + // Reset scale params to a standard 640x480 dc screen + float scale_h = screen_height / 480.f; + float offs_x = (screen_width - scale_h * 640.f) / 2.f; + gl4ShaderUniforms.scale_coefs[0] = 2.f / (screen_width / scale_h); + gl4ShaderUniforms.scale_coefs[1]= -2.f / 480.f; + gl4ShaderUniforms.scale_coefs[2]= 1.f - 2.f * offs_x / screen_width; + gl4ShaderUniforms.scale_coefs[3]= -1.f; + // Render to output FBO glcache.UseProgram(sortFragments ? g_abuffer_final_shader.program : g_abuffer_final_nosort_shader.program); gl4ShaderUniforms.Set(&g_abuffer_final_shader);