From d75b33bbd691adef372063172fdc8bfbfab3c35d Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Wed, 20 May 2026 11:42:32 +1000 Subject: [PATCH] fix sub pixel gaps on 2D visuals due to MSAA --- src/pc/gfx/gfx_pc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index 70e011f76..9a48344bf 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -133,7 +133,7 @@ int gShaderFlags[SHADER_FLAG_MAX] = { 0 }; f32 gDefaultShaderFlagValues[SHADER_FLAG_MAX] = { [SHADER_FLAG_HUE] = 0.0f, [SHADER_FLAG_SATURATION] = 1.0f, - [SHADER_FLAG_BRIGHTNESS] = 1.0f, + [SHADER_FLAG_BRIGHTNESS] = 1.0f, [SHADER_FLAG_CONTRAST] = 1.0f, [SHADER_FLAG_EXPOSURE] = 1.0f, [SHADER_FLAG_DITHERING] = 0.0f, @@ -718,7 +718,17 @@ static void gfx_sp_pop_matrix(uint32_t count) { } static float gfx_adjust_x_for_aspect_ratio(float x) { - return x * gfx_current_dimensions.x_adjust_ratio; + float adjusted = x * gfx_current_dimensions.x_adjust_ratio; + + // Force 2D coordinates to be aligned perfectly on the nearest pixel + // This prevents MSAA sub-pixel gaps (e.g. on vanilla dialog boxes) + if (rsp.P_matrix[3][3] > 0.5f) { + float pixelX = rdp.viewport.x + (adjusted + 1.0f) * 0.5f * rdp.viewport.width; + pixelX = floorf(pixelX + 0.5f); + adjusted = ((pixelX - rdp.viewport.x) / rdp.viewport.width) * 2.0f - 1.0f; + } + + return adjusted; } static OPTIMIZE_O3 void gfx_local_to_world_space(VEC_OUT Vec3f pos, VEC_OUT Vec3f normal) {