Selaa lähdekoodia

Move check for sky cubemap array back into the SkyRD initializer so it is set before being used.

Previously it was moved out of this function becuase we relied on RenderingServer::get_video_adapter_name which wasn't available yet.

However, that was unnecessary since it is just a wrapper around RenderingDevice::get_device_name() which is available.
clayjohn 1 kuukausi sitten
vanhempi
commit
fc951855ed

+ 6 - 9
servers/rendering/renderer_rd/environment/sky.cpp

@@ -727,6 +727,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" && RenderingDevice::get_singleton()->get_device_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() {
@@ -952,15 +958,6 @@ void SkyRD::set_texture_format(RD::DataFormat p_texture_format) {
 	texture_format = p_texture_format;
 }
 
-#if defined(MACOS_ENABLED) && defined(__x86_64__)
-void SkyRD::check_cubemap_array() {
-	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
-
 SkyRD::~SkyRD() {
 	// cleanup anything created in init...
 	RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();

+ 1 - 3
servers/rendering/renderer_rd/environment/sky.h

@@ -281,9 +281,7 @@ public:
 
 	uint32_t sky_ggx_samples_quality;
 	bool sky_use_cubemap_array;
-#if defined(MACOS_ENABLED) && defined(__x86_64__)
-	void check_cubemap_array();
-#endif
+
 	Sky *dirty_sky_list = nullptr;
 	mutable RID_Owner<Sky, true> sky_owner;
 	int roughness_layers;

+ 0 - 5
servers/rendering/renderer_rd/renderer_compositor_rd.cpp

@@ -159,11 +159,6 @@ void RendererCompositorRD::initialize() {
 
 		blit.sampler = RD::get_singleton()->sampler_create(RD::SamplerState());
 	}
-#if defined(MACOS_ENABLED) && defined(__x86_64__)
-	if (scene) {
-		scene->get_sky()->check_cubemap_array();
-	}
-#endif
 }
 
 uint64_t RendererCompositorRD::frame = 1;