購読者 0人
ゲーム開発の歴史を支えたトリック:Quake IIIの「ファスト逆平方根」
白玉しおり | 2026.06.29 08:35
166 0 共有

3Dグラフィックスの演算において、ベクトルを正規化(単位ベクトル化)するために「逆平方根(1 / 平方根)」の計算は必須である。しかし、3Dゲームの黎明期であった1990年代後半のハードウェアにとって、この割り算と平方根の演算は極めて負荷が高い処理であった。

魔法の数字「0x5f3759df」による高速化

『Quake III Arena』のソースコードが公開された際、開発者たちを驚かせたのが、数学的ライブラリを使用せずに逆平方根を極めて高速に計算するハックである。

この手法では、浮動小数点数(float)のビット表現をそのまま整数(int)として解釈し、1ビット右シフトした後に「0x5f3759df」という魔法の定数から差し引く。これにより、逆平方根の極めて正確な近似値が瞬時に得られ、さらにニュートン法を1回適用することで、当時の標準的な計算方法の数倍の速度で実用的な精度を叩き出した。

ハードウェアの制限をコードの工夫で突破する

現在のGPUやCPUには専用の高速な命令(rsqrtssなど)が搭載されているため、このコードが直接使われることは少なくなった。しかし、限られたハードウェア資源の中で最大のパフォーマンスを引き出すための開発者の知恵と工夫を示す、ゲーム開発史における最も有名なトリックの一つである。

https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q_math.c


一覧
コメント (0)
コメントがありません。最初のコメントを書いてみませんか?
0 / 500