From 3dfc832272f8969c72073aecc14293dc0d1dbc1f Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 11 Dec 2024 15:44:06 +0100 Subject: [PATCH] Replace `textureSize()` with a uniform in BaseMaterial3D for MSDF rendering This uniform was already defined for other uses previously. `textureSize()` is known to be slow on mobile platforms due to how the drivers implement it there, so it's best avoided. --- scene/resources/material.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 77ac0569ff3..5cdb7602d47 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -1515,7 +1515,7 @@ void fragment() {)"; vec3(1.0 + 0.055) * pow(albedo_tex.rgb, vec3(1.0 / 2.4)) - vec3(0.055), vec3(12.92) * albedo_tex.rgb, lessThan(albedo_tex.rgb, vec3(0.0031308))); - vec2 msdf_size = vec2(msdf_pixel_range) / vec2(textureSize(texture_albedo, 0)); + vec2 msdf_size = vec2(msdf_pixel_range) / vec2(albedo_texture_size)); )"; if (flags[FLAG_USE_POINT_SIZE]) { code += " vec2 dest_size = vec2(1.0) / fwidth(POINT_COORD);\n";