From 982b2f228f3ed6ff172bffb19e3bca4654197536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wr=C3=B3blewski?= Date: Thu, 20 Oct 2022 15:17:51 -0700 Subject: [PATCH] Disable alpha depth in the editor. --- drivers/gles3/rasterizer_scene_gles3.cpp | 7 +++++++ drivers/gles3/shaders/tonemap.glsl | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 7278ecbc595b..3297897aea3e 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -3871,6 +3871,12 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &depth_texture_id); glBindTexture(GL_TEXTURE_2D, depth_texture_id); + if (Engine::get_singleton()->is_editor_hint()) { + state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_ALPHA_DEPTH_CHANNEL, false); + } else { + state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_ALPHA_DEPTH_CHANNEL, true); + } + glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, composite_from); if (env) { @@ -3998,6 +4004,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_BCS, false); state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_COLOR_CORRECTION, false); state.tonemap_shader.set_conditional(TonemapShaderGLES3::V_FLIP, false); + state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_ALPHA_DEPTH_CHANNEL, false); } bool RasterizerSceneGLES3::_element_needs_directional_add(RenderList::Element *e) { diff --git a/drivers/gles3/shaders/tonemap.glsl b/drivers/gles3/shaders/tonemap.glsl index a64c304e78ff..48bb56184008 100644 --- a/drivers/gles3/shaders/tonemap.glsl +++ b/drivers/gles3/shaders/tonemap.glsl @@ -475,11 +475,15 @@ void main() { color = apply_color_correction(color, color_correction); #endif +#ifdef USE_ALPHA_DEPTH_CHANNEL highp float depth = textureLod(sdepth, uv_interp, 0.0f).r; - const float d_min = 0.01; // camera near - const float d_max = 1000; // camera far + const float d_min = 0.01f; // camera near + const float d_max = 1000f; // camera far depth = d_min / ((1.0 - depth) + (d_min / d_max)); depth = clamp(1.0 / (depth + 0.5), 0.0, 1.0); +#else + float depth = 1.0f; +#endif frag_color = vec4(color, depth); }