Skip to content
Go back

拙訳「Reversed-Z in OpenGL」

· Updated:

[Guillemot 2016Guillemot, N. 2016. Reversed-Z in OpenGL. nlguillemot. https://nlguillemot.wordpress.com/2016/12/07/reversed-z-in-opengl/.]

web

Reversed-Z in OpenGL#

  • 近くが1、遠くが0になるように深度を使う手法
    • 描画距離が長いとき、floatの精度改善に役立つ
  • クリップ空間が[0,1][0, 1]である必要がある
    • OpenGLの場合、デフォルトでは[1,+1][-1, +1]なので、glClipControlで変更する
    • むしろ、精度やテクスチャ座標との一貫性などにより、[0,1][0, 1]のほうが良い
  • フォーマットはfloatである必要がある
    • fixedではダメ1
  • 深度の範囲を反転させるように設定を変更する
    • クリア値を0にする
    • 比較関数をGREATERにする
    • Z値が反転するように射影行列を修正する2

Footnotes#

  1. 訳注:こちらによると、fixedフォーマットもそこまで悪くない様子

  2. 訳注:逆Zのときの射影行列はこちらを参照