From 1e657ea0bf8d767b81557ae3c3cbd395a80d96f2 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Fri, 22 Mar 2024 23:15:09 -0300 Subject: [PATCH] metal: fix love_ScreenSize shader variable when rendering to a non-default mipmap level of a Canvas. --- src/modules/graphics/metal/Graphics.mm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/graphics/metal/Graphics.mm b/src/modules/graphics/metal/Graphics.mm index ecad1ea24..5319f7dc4 100644 --- a/src/modules/graphics/metal/Graphics.mm +++ b/src/modules/graphics/metal/Graphics.mm @@ -921,8 +921,8 @@ void Graphics::applyRenderState(id encoder, const Verte const auto &rt = state.renderTargets.getFirstTarget(); if (rt.texture.get()) { - rtw = rt.texture->getPixelWidth(); - rth = rt.texture->getPixelHeight(); + rtw = rt.texture->getPixelWidth(rt.mipmap); + rth = rt.texture->getPixelHeight(rt.mipmap); } else { @@ -1134,11 +1134,11 @@ void Graphics::applyShaderUniforms(id renderEncoder, lo builtins->normalMatrix[1].w = getPointSize(); builtins->screenSizeParams = Vector4(getPixelWidth(), getPixelHeight(), 1.0f, 0.0f); - auto rt = states.back().renderTargets.getFirstTarget().texture.get(); - if (rt != nullptr) + auto rt = states.back().renderTargets.getFirstTarget(); + if (rt.texture.get()) { - builtins->screenSizeParams.x = rt->getPixelWidth(); - builtins->screenSizeParams.y = rt->getPixelHeight(); + builtins->screenSizeParams.x = rt.texture->getPixelWidth(rt.mipmap); + builtins->screenSizeParams.y = rt.texture->getPixelHeight(rt.mipmap); } builtins->constantColor = getColor();