カメラ行列からカメラレイを計算する際の数値的不安定性を回避する方法

Computing Camera Rays

レイトレーシングとラスタライゼーションが共存する過渡期において、プライマリ可視性をレイトレーシングで行う場合、カメラレイの計算が重要になります。この記事では、ラスタライゼーションで一般的なワールドからクリップ空間への変換行列に基づいて、透視投影と正射投影の両方で機能するカメラレイの計算方法を導出します。単純な方法(遠平面と近平面の点の差分)は数値的キャンセレーションによる精度低下を引き起こすため、代わりに2つの平面の交線としてレイを定義し、それらの法線の外積を用いる方法を提案します。GLSLコードも公開されています。

行列の最後の2列は、符号が反対であることを除けばほぼ同一です。このため、遠平面上の点を計算する際にこれらの列を加算すると、壊滅的なキャンセレーションが発生します。

この日のほかの記事

2026-07-23