Acoustics: per-source room estimate (sources in another room get their own reverb and send level) #857

Closed
opened 2026-10-19 01:56:41 +00:00 by sky_line · 1 comment
Owner

Follow-up to #683 (RT room acoustics).

Today: the room estimate comes only from rays around the listener, and every source sends to one shared reverb. A source in the next room, or outside, sounds like it's in your room; the send occlusion added recently only darkens and attenuates it.

Proposal:

  • Per-source probe: for each audible in-world source (nearest / loudest N), cast a small set of rays around the source (e.g. 8-16, rotated per frame, smoothed over ~1 s) and estimate its local enclosure, room size and absorption with the same model as the listener's.
  • Same room (similar estimate and the direct path is clear or only lightly occluded): the source uses the listener's reverb, as today.
  • Different room: the source sends to a second reverb slot configured from its own estimate (OpenAL Soft allows 4-6 aux sends / slots). The "other room" reverb is heard through the occluded path. Coupled spaces: a hall heard through a doorway sounds like a hall.
  • Send levels per source come from its own enclosure, so a source outdoors adds little reverb even when you're indoors.

Constraints:

  • Ray budget a few dozen extra rays per frame at most, sharing the existing dispatch and readback.
  • Slots are limited, so cluster sources by room estimate.
  • Off when acoustics is off; stands down with RT like the rest of the feature.

Done when: a sound in an adjacent hall or outdoors is clearly distinguishable from one in your own room in a blind listen, at under ~0.05 ms extra GPU on an RTX 3060-class card.

Follow-up to #683 (RT room acoustics). **Today:** the room estimate comes only from rays around the listener, and every source sends to one shared reverb. A source in the next room, or outside, sounds like it's in *your* room; the send occlusion added recently only darkens and attenuates it. **Proposal:** - **Per-source probe:** for each audible in-world source (nearest / loudest N), cast a small set of rays around the source (e.g. 8-16, rotated per frame, smoothed over ~1 s) and estimate its local enclosure, room size and absorption with the same model as the listener's. - **Same room** (similar estimate and the direct path is clear or only lightly occluded): the source uses the listener's reverb, as today. - **Different room:** the source sends to a **second reverb slot** configured from its own estimate (OpenAL Soft allows 4-6 aux sends / slots). The "other room" reverb is heard through the occluded path. Coupled spaces: a hall heard through a doorway sounds like a hall. - **Send levels per source** come from its own enclosure, so a source outdoors adds little reverb even when you're indoors. **Constraints:** - Ray budget a few dozen extra rays per frame at most, sharing the existing dispatch and readback. - Slots are limited, so cluster sources by room estimate. - Off when acoustics is off; stands down with RT like the rest of the feature. **Done when:** a sound in an adjacent hall or outdoors is clearly distinguishable from one in your own room in a blind listen, at under ~0.05 ms extra GPU on an RTX 3060-class card.
sky_line added this to the Slipstream project 2026-10-19 01:56:41 +00:00
Author
Owner

Fixed in 1.4.1 (1a0f5c8298). Reopen if you still see it.

Fixed in 1.4.1 (1a0f5c8298). Reopen if you still see it.
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#857
No description provided.