From 5b213dcd264a989a214f00b016c9e653a29d90b3 Mon Sep 17 00:00:00 2001 From: clayjohn Date: Mon, 8 Jul 2024 12:52:20 -0700 Subject: [PATCH] Use GL_COLOR_ATTACHMENT in depth prepass when using Multiview. I am certain this is a driver bug. But on some devices when no draw buffer is specified, the depth operations fail when there is no color buffer. --- drivers/gles3/rasterizer_scene_gles3.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 8e89889fd12f..a6796a1a6bbb 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -2499,7 +2499,9 @@ void RasterizerSceneGLES3::render_scene(const Ref &p_render_ glColorMask(0, 0, 0, 0); RasterizerGLES3::clear_depth(0.0); glClear(GL_DEPTH_BUFFER_BIT); - glDrawBuffers(0, nullptr); + // Some desktop GL implementations fall apart when using Multiview with GL_NONE. + GLuint db = p_camera_data->view_count > 1 ? GL_COLOR_ATTACHMENT0 : GL_NONE; + glDrawBuffers(1, &db); uint64_t spec_constant = SceneShaderGLES3::DISABLE_FOG | SceneShaderGLES3::DISABLE_LIGHT_DIRECTIONAL | SceneShaderGLES3::DISABLE_LIGHTMAP | SceneShaderGLES3::DISABLE_LIGHT_OMNI |