Explore: non-RT fallback for room acoustics via a GPU voxel grid around the listener #856

Open
opened 2026-10-19 01:41:37 +00:00 by sky_line · 0 comments
Owner

Exploration; deferred. Room acoustics (#683) stays RT-only for now.

Context

The acoustics prototype casts room and occlusion rays against the scene TLAS with ray queries, so it does nothing on GPUs without hardware ray tracing, or with RT off: GTX 10-series, older AMD, Intel iGPUs, the Steam Deck unless RT is on. The CPU world raycast no longer exists under Vulkan.

Idea

Rasterise nearby static geometry into a coarse 3D occupancy grid centred on the listener, then march the same rays through it in a compute shader:

  • grid: e.g. 48³ cells at 0.5 m, re-voxelised a few times per second, not every frame;
  • rays: the same 64 room rays plus the per-source occlusion rays, marched through the grid;
  • materials: per-cell material / absorption bits from the physical material code, so the absorption model still applies.

It works on any Vulkan GPU. At 0.5 m, doorways and windows stay open, unlike bounding-box approximations, so occlusion stays meaningful.

Questions

  • Voxelisation: method (conservative rasterisation with a geometry or mesh pass, vs a compute pass over the instance list's meshlets) and its cost on a GTX 1080 / iGPU at a low update rate (target ≤ 0.2 ms amortised).
  • Resolution and extent: grid resolution vs extent (a cascaded or clipmap grid for large halls?), and how to handle the listener moving between updates.
  • Foliage and alpha: foliage and alpha-mask handling, as soft partial occupancy.
  • Memory: VRAM footprint, and the VRAM pressure ladder (it must stand down like the RT path).
  • Quality: blind A/B against the RT path on the same scenes (cabin, stone room, hedge arch, open field, club).

Deliverable

A prototype behind a setting on a non-RT GPU, with measured cost, plus a go/no-go.

**Exploration; deferred.** Room acoustics (#683) stays RT-only for now. ## Context The acoustics prototype casts room and occlusion rays against the scene TLAS with ray queries, so it does nothing on GPUs without hardware ray tracing, or with RT off: GTX 10-series, older AMD, Intel iGPUs, the Steam Deck unless RT is on. The CPU world raycast no longer exists under Vulkan. ## Idea Rasterise nearby static geometry into a coarse 3D occupancy grid centred on the listener, then march the same rays through it in a compute shader: - **grid:** e.g. 48³ cells at 0.5 m, re-voxelised a few times per second, not every frame; - **rays:** the same 64 room rays plus the per-source occlusion rays, marched through the grid; - **materials:** per-cell material / absorption bits from the physical material code, so the absorption model still applies. It works on any Vulkan GPU. At 0.5 m, doorways and windows stay open, unlike bounding-box approximations, so occlusion stays meaningful. ## Questions - **Voxelisation:** method (conservative rasterisation with a geometry or mesh pass, vs a compute pass over the instance list's meshlets) and its cost on a GTX 1080 / iGPU at a low update rate (target ≤ 0.2 ms amortised). - **Resolution and extent:** grid resolution vs extent (a cascaded or clipmap grid for large halls?), and how to handle the listener moving between updates. - **Foliage and alpha:** foliage and alpha-mask handling, as soft partial occupancy. - **Memory:** VRAM footprint, and the VRAM pressure ladder (it must stand down like the RT path). - **Quality:** blind A/B against the RT path on the same scenes (cabin, stone room, hedge arch, open field, club). ## Deliverable A prototype behind a setting on a non-RT GPU, with measured cost, plus a go/no-go.
sky_line added this to the Slipstream project 2026-10-19 01:41:37 +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#856
No description provided.