diff options
| author | clayjohn <claynjohn@gmail.com> | 2024-07-09 15:29:45 -0700 |
|---|---|---|
| committer | clayjohn <claynjohn@gmail.com> | 2024-07-09 15:29:45 -0700 |
| commit | e0f736ec1028f63159f4ff71cf4cb119416e7b45 (patch) | |
| tree | 0afc7353926480178b4b4cbc0835d59dfd997b4c /servers | |
| parent | 374807f427eec5ee7caebfc509a158fe715a6bfe (diff) | |
| download | redot-engine-e0f736ec1028f63159f4ff71cf4cb119416e7b45.tar.gz | |
Properly linearize depth buffer for SSAO when using orthogonal camera
Diffstat (limited to 'servers')
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/effects/ss_effects_downsample.glsl | 4 |
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; |
