AO (SSAO and GTAO): visible lines on the ground in some areas #648

Closed
opened 2026-10-10 22:04:09 +00:00 by sky_line · 2 comments
Owner

Visible lines show up on the ground in some areas. They are clearest on the grass terrain area that also showed banding earlier. Both AO methods are affected: SSAO (RenderVKAOMethod 0) and GTAO (1). Turning ambient occlusion off (RenderDeferredSSAO 0) should remove them. That needs confirming as part of the fix.

Because both kernels show it, the cause is probably in what they share, not in either kernel. Suspects:

  • Depth precision or reconstruction on large, gently sloped terrain. The lines would then be false self-occlusion along depth-quantization steps.
  • Normals the AO reads: G-buffer encoding, or flat-interpolated terrain normals that create facet lines.
  • The shared blur/upsample: depth-aware weights breaking along terrain triangle edges.
  • Missing bias or thickness in the horizon test at grazing angles.

Deferred; we'll fix it later. Repro: stand on the grass area where banding was seen before, with AO on and either method selected.

Visible lines show up on the ground in some areas. They are clearest on the grass terrain area that also showed banding earlier. **Both AO methods are affected**: SSAO (`RenderVKAOMethod` 0) and GTAO (1). Turning ambient occlusion off (`RenderDeferredSSAO` 0) should remove them. That needs confirming as part of the fix. Because both kernels show it, the cause is probably in what they share, not in either kernel. Suspects: - Depth precision or reconstruction on large, gently sloped terrain. The lines would then be false self-occlusion along depth-quantization steps. - Normals the AO reads: G-buffer encoding, or flat-interpolated terrain normals that create facet lines. - The shared blur/upsample: depth-aware weights breaking along terrain triangle edges. - Missing bias or thickness in the horizon test at grazing angles. Deferred; we'll fix it later. Repro: stand on the grass area where banding was seen before, with AO on and either method selected.
sky_line added this to the Slipstream project 2026-10-10 22:04:09 +00:00
Author
Owner

New finding. AO strength changes with camera distance: a pony face darkens noticeably when zoomed out and loses that darkening up close. The cause is the screen-space radius cap. GTAO uses RenderVKGTAORadius 0.5 m capped at RenderVKGTAOMaxPixels 192 px; SSAO uses RenderSSAOScale / RenderSSAOMaxScale 200 px. Close to the camera the cap shrinks the world radius in proportion to distance, so the large-scale occlusion vanishes. This may also be the cause of the ground lines, since the effective radius varies across a large terrain plane. An agent is working on a distance-invariant radius using depth MIPs instead of the cap. If that fixes the lines too, this ticket closes with it.

New finding. AO strength changes with camera distance: a pony face darkens noticeably when zoomed out and loses that darkening up close. The cause is the screen-space radius cap. GTAO uses `RenderVKGTAORadius` 0.5 m capped at `RenderVKGTAOMaxPixels` 192 px; SSAO uses `RenderSSAOScale` / `RenderSSAOMaxScale` 200 px. Close to the camera the cap shrinks the world radius in proportion to distance, so the large-scale occlusion vanishes. This may also be the cause of the ground lines, since the effective radius varies across a large terrain plane. An agent is working on a distance-invariant radius using depth MIPs instead of the cap. If that fixes the lines too, this ticket closes with it.
Author
Owner

Fixed in 1.3.0 Beta 3: AO keeps the same strength at every camera distance, no triangle-edge lines on smooth meshes (smooth normal), and no distance band on layered grass (GTAO no longer applies the facet test).

Fixed in **1.3.0 Beta 3**: AO keeps the same strength at every camera distance, no triangle-edge lines on smooth meshes (smooth normal), and no distance band on layered grass (GTAO no longer applies the facet test).
sky_line 2026-10-11 08:53:33 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#648
No description provided.