メインコンテンツまでスキップ

Web SDK Performance Guide

soundtrace.js では、ray count、depth、source count、geometry/BVH の設定を上げるほど 音響経路の安定性と空間感が向上する可能性があります。同じ設定は、伝播計算の時間、 メモリ使用量、メインスレッドの frame time、AudioWorklet の負荷も同時に上げます。

このドキュメントは、SDK 統合者がオプションを選ぶときの基準となる性能/品質ガイド です。以下のプリセットは出発点であり、実際の推奨 source 数とプラットフォーム別の 限界は、測定完了後に数値表として更新します。

固定ランタイム契約

項目現在の契約
Listenerscene ごとに 1 個
Realtime outputstereo/binaural 2ch
オーディオレンダーパスST/MT ともに WASM AudioWorkletProcessor
Multi-source オーディオsource ごとに source.play(input, 2)(facade)/ ST・direct-native は createWorkletNode()
Native source cap16 sources(EXA_MAX_SOUNDSOURCE
Ray depth 上限16(EXA_MAX_DEPTH
既定の品質プリセットquality: 'balanced' = listener ray 24 x 24、depth 8

16 は native cap であり、1 つの scene に同時に存在できる source 数の上限です。 顧客アプリで推奨するリアルタイム source 数は、この上限の範囲内で、プラット フォーム、geometry のサイズ、ray budget、BVH、ST/MT モードごとに個別に測定する 必要があります。

品質プリセットが設定する listener ray grid と depth は次のとおりです。

PresetListener rayDepth
fast16 x 164
balanced(既定)24 x 248
quality32 x 3212

主なオプションとトレードオフ

オプション品質への影響性能への影響
Listener ray width/heightリスナー基準の経路発見と方向の安定性が向上ray grid の面積に比例して伝播計算が増加
Listener depthより深い reflection/diffraction/reverb 経路を許可path search と cache pressure が増加
Source reverb ray width/heightsource 側 late reverb のカバレッジとマテリアル応答の安定性が向上source 数と ray grid 面積に比例してコストが増加
Source reverb depthsource 側 late reverb の追跡深度が増加depth が大きいほど path search と cache pressure が増加
Source count同時に空間化される emitter が増加propagation と AudioWorklet mixer のコストが増加
BVH typetraversal/build 特性が変化geometry と更新方式により build/refit/traversal コストが変化
BVH max depthtree の深さを制御浅すぎると traversal が非効率、深すぎると build/memory コストが増加
Prims per leafleaf あたりの三角形数を制御scene 構造により traversal/build のバランス点が変化
Animated/refit geometry動く collider を反映refit/rebuild コストが増加。stress 項目として分離測定
Thread modeMT は propagation job を worker thread に分散可能cross-origin isolation が必要で、thread/memory のオーバーヘッドが増加

Reverb ray budget

Reverb ray は listener ray を複製した値ではありません。source 側 late reverb は source count × width × height × depth でコストが増えるため、production の既定値は listener ray とは分けてシーンごとに上げます。QA 基準の sweep は source [4, 8, 12, 16]、general ray と reverb ray それぞれ 4 x 4 x 38 x 8 x 716 x 16 x 1132 x 32 x 16 の段階、path cache [256, 512, 1024] です。

開始プリセット

実測テーブルが埋まるまでは以下の値を出発点として使い、アプリの目標 FPS と聴感品質に 合わせて調整します。

PresetThreadListener raysReverb raysDepthBVH用途測定状況
Mobile conservativeST16 x 164 x 4 または 8 x 84LBVH または platform defaultモバイル最小基準Measurement pending
Desktop balancedST または MT24 x 248 x 88LBVH_SIMD8デスクトップ基本基準Measurement pending
Desktop qualityMT32 x 3216 x 1612LBVH_SIMD8品質優先デスクトップMeasurement pending
Stress onlyMT32 x 3232 x 327..16BVH matrix限界測定専用Realtime default ではない

MT の利得は未測定であり、無条件に速いわけではありません。 上記 MT プリセットの 速度利得はまだ Measurement pending です。MT は propagation job を worker に分散 するため、ray 予算と source 数が大きいとき(高い ray grid・depth、多数の source) に利得が現れ、小さなシーンでは worker の往復とメモリオーバーヘッドにより ST の方が シンプルで速い場合があります。さらに MT は cross-origin isolation(COOP/COEP)の 配信コストがかかります。小さなシーンや単純なページは ST で始め、予算の大きい シーンで ST↔MT を実測比較したうえで MT を選択してください。

空間感が弱い場合は、まず source 数を増やすのではなく、listener ray と source reverb ray の count/depth を分けて段階的に上げて確認します。source 数の増加は最後に測定 します。

測定すべき指標

顧客ドキュメントに数値を載せるときは、同じ scenario を同じ duration/warmup 条件で 繰り返し測定し、raw log ではなく要約値のみを公開します。

グループ指標
Browser frame平均 FPS、frame time p50/p95/p99、worst frame、dropped frame count
Main-thread stallPerformanceObserver の longtask count/total/worst(対応ブラウザーのみ)
Engine propagationscene.tick() + scene.updatePropagation() の時間 p50/p95/p99/worst
Native job timingpropagation job timing frame、worker の分散/待機時間
Path qualityvalid path count の平均/最大、material/path 変化の聴感メモ
AudioAudioContext.sampleRatebaseLatencyoutputLatency、state、setup time
Memorynative memory trace snapshot、JS heap snapshot
Manual observationdrop-out、定位の弱さ、thermal、ファンノイズ、体感バッテリー消費

ブラウザーの JavaScript だけでは、プラットフォーム共通の電力/thermal の数値を信頼性 高く得ることは困難です。電力と thermal は自動計測値として確定させず、manual observation または別途の計測機器の値として分離してください。

測定マトリクス

Matrix
BaselineST/MT それぞれ 1 source、listener 16 x 16 x 3、source 16 x 8 x 3、static small geometry
Quality scalelistener 16 x 1632 x 32; source reverb 4 x 48 x 816 x 1632 x 32; depth 371116
Source scale12481216 sources(native cap 16
Reverb ray scalesource [4, 8, 12, 16]、general ray step 4 x 4 x 38 x 8 x 716 x 16 x 1132 x 32 x 16、reverb ray も同じ step、path cache [256, 512, 1024]
Geometry/BVHsmall/medium/large geometry、HKDtree、LBVH、LBVH_SIMD4/8/16、LBVH_NWAY4/8/16
Stress onlyanimated/refit、rebuild-heavy、native source cap、high ray budget

公開基準

項目基準
実測済みの値platform、browser、SDK commit、STCoreV2 commit、scenario を併記
未測定の値数値を推定せず Measurement pending と表記
Source capnative cap 16 と実際の推奨 source 数を分離
Stress 結果realtime の推奨値ではなく、限界/回帰検出の目的として分離
Raw log顧客ドキュメントにそのまま載せず、要約テーブルと解釈のみを公開