Sonoral is Intel's implementation of AcoustX — the silicon, firmware and driver stack behind hardware acoustic ray tracing on Eventide. The relationship is exactly the one you already know: AcoustX is the open specification, Sonoral is the vendor implementation. DXR is the spec; RTX is the machine. Same architecture of trust, applied to sound.
Each SoRT cluster is a short, deep pipeline of fixed-function blocks built around a single scheduling truth: an impulse-response update is due every 2.67 ms, and it is never allowed to be late. No shader cores, no occupancy games — every block exists because a closed-form acoustic quantity wanted silicon.
| Block | Function | Key metric |
|---|---|---|
| Traversal Engine TE | BVH walk, ray-box / ray-tri intersect, 8-octave-band payload per ray, high-precision path length (the delay tap is the geometry) | 96M ray-steps/s @ 210 mW peak |
| Diffraction Unit DU | UTD edge-diffraction coefficients per band; edges flagged at bake, evaluated only where flagged | 2.4M edge evaluations/s |
| Binaural Divergence Unit BDU | Woodworth ITD, frequency-dependent ILD head shadow, creeping-wave LF shelf; forks direct + first-order early reflections only; head radius is a runtime parameter | 512 paths/frame forked · 1.08× ray overhead |
| IR Assembler IRA | Delay-tap + per-band gain collection; temporal accumulation with exponential decay; dirty-flag flush on TLAS refit | 8-frame history · 2,048-tap staging buffer |
| Material LUT LUT | Local SRAM — the only non-centralized data in the design | 64 × 8 bands × 16-bit = 8 KB · 1-cycle |
| Tier | Clusters | Ray budget / audio block | Max concurrent sources |
|---|---|---|---|
| Core 500 | ×1 | 6,144 ray-paths | 64 |
| Laptop-class | ×2 | 12,288 ray-paths | 128 |
| Xeon 500 | ×4 | 24,576 ray-paths | 256 |
Scaling is feature-uniform and quantity-scaled: a handheld gets the same UTD diffraction and the same binaural math as a Xeon workstation — just fewer rays. A title tuned against one tier behaves identically on every other. That determinism is the point.
Graphics needed programmable shading because surface appearance is open-ended. Acoustic propagation is not: every quantity below is closed-form or low-dimensional, which is precisely the argument for casting it as fixed-function silicon. Per core, per ray, per block — these run in lockstep with traversal.
Spherical spreading (1/r) plus ISO 9613 per-band atmospheric absorption, held in ROM. Two table lookups and a multiply — there is nothing to program, so nothing programmable was built.
The TE already computes high-precision path length per frame; Doppler is its time derivative mapped to a resample ratio. One subtraction, one divide — the resolver is nearly free because the traversal payload was designed for it.
6-bit material index into the local 8 KB LUT: 8 absorption bands × 16-bit, single-cycle. Sits inside the innermost intersection loop, which is why it is the one deliberately local memory in the design.
The Uniform Theory of Diffraction reduces an edge to a closed-form coefficient per band, given geometry the bake already flagged. Low-dimensional inputs, deterministic output — a textbook fixed-function candidate, and the feature software ray tracers habitually fake.
Interaural time from the Woodworth model, level from a frequency-dependent head-shadow fit, plus a creeping-wave LF shelf. Head radius is a runtime parameter, not a bake constant. Feeds the BDU's per-ear fork.
Spherical-harmonic cardioid-family polar patterns evaluated per band. A handful of SH coefficients per source covers loudspeakers, voices and engines — low-dimensional by construction.
Direction to spherical-harmonic weights: a fixed matrix multiply. Emits scene-agnostic soundfield components for downstream mixers and the codec bridge without a render-to-channels detour.
SoRT owns almost no memory. The acoustic BLAS lives in shared bLLC (Kache Kore) beside the graphics BVH it was decimated from; HRTF sets, transducer profiles and IR history ride the central memory controller and ZAM bandwidth. The design duplicates nothing — except one 8 KB table, on purpose.
| Item | Footprint / behavior |
|---|---|
| Acoustic BLAS | 14–60 MB/scene — versus 400 MB–1.2 GB for the graphics BLAS of the same scene (typical decimation 2.1M tris → 8,400-tri proxy, 250:1) |
| bLLC (Kache Kore) | Shared with CPU/GPU; up to 4 GB on top-spec Core x9 · round-trip from SoRT 9 ns |
| Material LUT | Local SRAM · 0.4 ns (1-cycle) · 64 entries × 8 bands × 16-bit = 8 KB |
| HRTF set | 720 directions × 2 ears × 256-tap FIR @ 24-bit ≈ 1.1 MB/profile · ZAM load <0.2 ms |
| Transducer profiles | 64–256 KB, signed, loaded on device handshake |
Reference scene: 64 sources × 32 rays × 3 bounces, 48 kHz / 128-sample blocks, identical acoustic content on all four paths. The Klangkerne page carries the headline charts; this is the complete accounting.
| CPU software | GPU compute | GPU RTU-shared | SoRT | |
|---|---|---|---|---|
| Power (audio workload) | 1,840 mW | 1,120 mW | 640 mW | 118 mW |
| Motion-to-ear latency | 62 ms | 41 ms | 18 ms | 6.4 ms |
| Frame-render impact | −4.1% fps | −7.8% fps | −11.2% fps | 0.0% |
| Diffraction fidelity | none / faked | none | none | full UTD |
| Max sources @ deadline | 24 | 48 | 96 | 64 / 128 / 256 by tier |
All four paths consume the same .ablx acoustic BLAS and the same source set. CPU software is a SIMD-optimized geometric tracer on 4 P-cores; GPU compute runs the same kernel via compute queues; RTU-shared time-slices the Druid GPU's RTU4 ray units between frame rendering and audio batches; SoRT is a single Core 500 cluster. Power figures are the marginal draw attributable to the audio workload, measured at the package rails over a 10-minute traversal-heavy loop. Latency is motion event to transducer drive signal, including output-stage cost on the identical Hallraum path.
Audio deadlines and render deadlines are different clocks. A frame is due every 8–16 ms and may slip a frame under load; an audio block is due every 2.67 ms and a miss is an audible glitch, not a dropped frame. Any shared-hardware scheme must arbitrate between these domains — and under combined load, one of them loses. SoRT never arbitrates: its scheduling domain is the audio block, alone, always. That is why its frame impact is exactly 0.0% and why its latency has no long tail.
On dual-GPU systems — an Elementalist dGPU rendering while the Druid iGPU idles — the idle GPU's RTU4 units could absorb the acoustic workload at zero frame cost, and the 640 mW figure would drop meaningfully. We ran it; it works. It ships nowhere. Two reasons: deterministic cross-tier behavior — a feature that exists only when a second GPU is present is a feature titles cannot depend on, and the handhelds that need acoustic offload most are exactly the single-GPU machines it abandons; and clock-domain mismatch — the iGPU's power-management ramps are tuned for burst rendering, not a hard 2.67 ms heartbeat, and holding it awake at audio cadence erases most of the power win. The dedicated block is smaller, always present, and always the same.
Every architecture carries debts. These are Sonoral's, stated plainly — with what we did about each.
In small rooms, sub-200 Hz wavelengths reach room scale and standing-wave modes dominate — no ray count fixes a wrong physical model. The answer is architectural, not incremental: Tiefton, Klangkerne's FEM-baked modal-correction subsystem, owns everything below the 180 Hz crossover. SoRT does not pretend to trace where rays are not physics.
Decimation, material assignment and edge flagging run offline in the NewGen bake tool — roughly 4 s per reverb zone for the Tiefton FEM solve on a Core 500 development machine, plus the proxy build itself. Fully dynamic geometry (destruction beyond TLAS refit granularity) inherits stale acoustic proxies until the next bake. Runtime refit covers transforms and visibility; it does not re-decimate.
With a generic 720-direction HRTF set, front/back confusion remains the realism ceiling — a property of human hearing, not of the silicon. The hardware renders its transfer function faithfully; the function worth rendering is per-human. Photogrammetry personalization (a delta layer over the base set, first-party tier) is the mitigation, not a cure.