summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-07-11 00:27:43 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-07-11 00:27:43 +0200
commit198e55e4020f90d7d39b6b24acd8b0286a581811 (patch)
treef4643ce868ff9b3fb4e7d148f09300a2c6d2a98c
parentfbac9c54c9fb44654814d1031f7cd561de848eb8 (diff)
parente0f736ec1028f63159f4ff71cf4cb119416e7b45 (diff)
downloadredot-engine-198e55e4020f90d7d39b6b24acd8b0286a581811.tar.gz
Merge pull request #94153 from clayjohn/SSAO-linearize
Properly linearize depth buffer for SSAO when using orthogonal camera
-rw-r--r--servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl4
1 files changed, 2 insertions, 2 deletions
diff --git a/servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl b/servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl
index 4f81e36c58..0332e23993 100644
--- a/servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl
+++ b/servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl
@@ -50,7 +50,7 @@ layout(r16f, set = 2, binding = 3) uniform restrict writeonly image2DArray dest_
vec4 screen_space_to_view_space_depth(vec4 p_depth) {
if (params.orthogonal) {
vec4 depth = p_depth * 2.0 - 1.0;
- return ((depth + (params.z_far + params.z_near) / (params.z_far - params.z_near)) * (params.z_far - params.z_near)) / 2.0;
+ return -(depth * (params.z_far - params.z_near) - (params.z_far + params.z_near)) / 2.0;
}
float depth_linearize_mul = params.z_near;
@@ -68,7 +68,7 @@ vec4 screen_space_to_view_space_depth(vec4 p_depth) {
float screen_space_to_view_space_depth(float p_depth) {
if (params.orthogonal) {
float depth = p_depth * 2.0 - 1.0;
- return ((depth + (params.z_far + params.z_near) / (params.z_far - params.z_near)) * (params.z_far - params.z_near)) / (2.0 * params.z_far);
+ return -(depth * (params.z_far - params.z_near) - (params.z_far + params.z_near)) / 2.0;
}
float depth_linearize_mul = params.z_near;