diff options
author | Khasehemwy <BuluyuAzir@foxmail.com> | 2024-02-14 21:39:39 +0800 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-04 13:54:15 +0200 |
commit | d950f5f83819240771aebb602bfdd4875363edce (patch) | |
tree | fa56b4e343184fd0bed91fa86242d624b2fbab66 /servers/rendering/renderer_rd/effects/ss_effects.cpp | |
parent | f47f4a02c87bb701452a621d254ad30c7be84faa (diff) | |
download | redot-engine-d950f5f83819240771aebb602bfdd4875363edce.tar.gz |
Use Reverse Z for the depth buffer
Diffstat (limited to 'servers/rendering/renderer_rd/effects/ss_effects.cpp')
-rw-r--r-- | servers/rendering/renderer_rd/effects/ss_effects.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/servers/rendering/renderer_rd/effects/ss_effects.cpp b/servers/rendering/renderer_rd/effects/ss_effects.cpp index bdd687d9f4..3db82c8fbd 100644 --- a/servers/rendering/renderer_rd/effects/ss_effects.cpp +++ b/servers/rendering/renderer_rd/effects/ss_effects.cpp @@ -483,8 +483,12 @@ void SSEffects::downsample_depth(Ref<RenderSceneBuffersRD> p_render_buffers, uin downsample_uniform_set = uniform_set_cache->get_cache_vec(shader, 2, u_depths); } - float depth_linearize_mul = -p_projection.columns[3][2] * 0.5; - float depth_linearize_add = p_projection.columns[2][2]; + Projection correction; + correction.set_depth_correction(false); + Projection temp = correction * p_projection; + + float depth_linearize_mul = -temp.columns[3][2]; + float depth_linearize_add = temp.columns[2][2]; if (depth_linearize_mul * depth_linearize_add < 0) { depth_linearize_add = -depth_linearize_add; } |