Browse Source

vulkan: fix love_ScreenSize shader variable when a canvas is active.

Sasha Szpakowski 1 year ago
parent
commit
9aaeabd6a5
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/modules/graphics/vulkan/Graphics.cpp

+ 11 - 2
src/modules/graphics/vulkan/Graphics.cpp

@@ -1430,8 +1430,17 @@ graphics::Shader::BuiltinUniformData Graphics::getCurrentBuiltinUniformData()
 	// Same with point size.
 	// Same with point size.
 	data.normalMatrix[1].w = getPointSize();
 	data.normalMatrix[1].w = getPointSize();
 
 
-	data.screenSizeParams.x = static_cast<float>(swapChainExtent.width);
-	data.screenSizeParams.y = static_cast<float>(swapChainExtent.height);
+	const auto &rt = states.back().renderTargets.getFirstTarget();
+	if (rt.texture != nullptr)
+	{
+		data.screenSizeParams.x = rt.texture->getPixelWidth(rt.mipmap);
+		data.screenSizeParams.y = rt.texture->getPixelHeight(rt.mipmap);
+	}
+	else
+	{
+		data.screenSizeParams.x = getPixelWidth();
+		data.screenSizeParams.y = getPixelHeight();
+	}
 
 
 	data.screenSizeParams.z = 1.0f;
 	data.screenSizeParams.z = 1.0f;
 	data.screenSizeParams.w = 0.0f;
 	data.screenSizeParams.w = 0.0f;