Box3D、衝突検출にSIMD最適化を実装

원제: SIMD for Collision

왜 중요한가

ゲームエンジンや物理シミュレーション基盤において、複雑な凸体衝突の実用的なSIMD最適化手法を公開したことは、3Dリアルタイム物理演算の性能向上に直接貢献する。

物理エンジンBox3Dの開発者が2026年7月18日、3D凸体衝突検出アルゴリズム(SAT)に対してSIMD最適化を適用した成果を公開した。32頂点・89辺を持つ凸体同士の衝突では辺-辺テストが最大7,921回発生するが、Wide SIMDにより1回の処理で4辺を同時テスト可能となり、性能が大幅に向上したことを報告している。

Box3D開発者は公式ブログで、3D物理エンジンにおける凸体衝突検出のSIMD最適化について詳細な技術解説を公開した。

Box3Dは衝突検出にSAT(Separating Axis Test)を採用している。SATはGJK+EPAの組み合わせと異なり、衝突マージンを必要とせず形状が直接接触できるため、視覚的なギャップが生じない利点がある。一方でEPAは数値的に不安定になりやすく、フォールバック処理が必要になる場合がある。

SATの3Dにおける課題は計算量の二乗増加にある。「Box」(8頂点・6面・12辺)同士の衝突では辺-辺テストが144回で済むが、32頂点・59面・89辺を持つ「Boulder(ボルダー)」同士では7,921回に達する。

これに対して開発者は「Wide SIMD」アプローチを適用した。ContactソルバーのSIMD最適化と同じ考え方で、hullAの1辺に対してhullBの4辺を同時に処理する構造配列(SoA)形式を採用。内部ループをEdgeWide単位で処理することで、テスト回数を実質的に1/4に削減できる。

PEELベンチマークからポートした「Convex Pile」(5,120個のBoulderを投下)を用いた計測結果も公開されており、SIMD適用前後での性能差が確認できるとしている。コードはBox3DのGitHubリポジトリで公開中。

출처

box2d.org — 원문 읽기 →