From 92f3173794433fbd08480c70ec214ff9de51c48f Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 26 Feb 2025 02:01:42 +0100 Subject: [PATCH] Disable texture array reflections on Intel GPUs on macOS due to driver bugs The check is only present in x86 builds, since Apple Silicon never uses an Intel GPU by definition. --- doc/classes/ProjectSettings.xml | 1 + servers/rendering/renderer_rd/environment/sky.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 1a29e2003e9..175237fcb5c 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -2957,6 +2957,7 @@ If [code]true[/code], uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise and upscaling artifacts on reflections, but is significantly slower to compute and uses [member rendering/reflections/sky_reflections/roughness_layers] times more memory. + [b]Note:[/b] Texture array reflections are always disabled on macOS on Intel GPUs due to driver bugs. Lower-end override for [member rendering/reflections/sky_reflections/texture_array_reflections] on mobile devices, due to performance concerns or driver support. diff --git a/servers/rendering/renderer_rd/environment/sky.cpp b/servers/rendering/renderer_rd/environment/sky.cpp index 1ffac1d687b..18930440e13 100644 --- a/servers/rendering/renderer_rd/environment/sky.cpp +++ b/servers/rendering/renderer_rd/environment/sky.cpp @@ -722,6 +722,12 @@ SkyRD::SkyRD() { roughness_layers = GLOBAL_GET("rendering/reflections/sky_reflections/roughness_layers"); sky_ggx_samples_quality = GLOBAL_GET("rendering/reflections/sky_reflections/ggx_samples"); sky_use_cubemap_array = GLOBAL_GET("rendering/reflections/sky_reflections/texture_array_reflections"); +#if defined(MACOS_ENABLED) && defined(__x86_64__) + if (OS::get_singleton()->get_current_rendering_driver_name() == "vulkan" && RenderingServer::get_singleton()->get_video_adapter_name().contains("Intel")) { + // Disable texture array reflections on macOS on Intel GPUs due to driver bugs. + sky_use_cubemap_array = false; + } +#endif } void SkyRD::init() {