gl_FragCoord

最終更新日04 Jan 2018 04:09

gl_fragcoord.png
原点は画面左下。gl_FragCoord.xyはウィンドウ座標になっている。
gl_FragCoord.xy ウィンドウ座標
gl_FragCoord.z ウィンドウ座標だけど範囲は0.0-1.0のもの
gl_FragCoord.w クリップ座標の1/clip.w

[1]より

zには何が入っているのか?

polygon offsetはすでに追加された状態。
デプス値が入っている。
近いほど小さい値、遠いほど大きい値である。

(1)
\begin{align} win.z = \frac{f-n}{2}ndc.z+\frac{n+f}{2} \end{align}

正規化デバイス座標(範囲-1~1)を範囲near~farにしたもの
がzのウィンドウ座標と呼ばれている。
OpenGLの仕様書[1]ではgl_FragCoord.z=ウィンドウ座標のzとかいてあるけれど、
実際にはgl_FragCoord.zにはそのウィンドウ座標をさらに0~1.0の範囲にしたものが入っているようだ。
テクスチャ座標と名付けるべき??
gl_FragCoord.zをそのまま色として出力すると、真っ白な結果になる。
本当はnear~farまで値が変化しているのだけれど、値がfar寄りに極端に偏って指数関数的に値が変化するために、
真っ白に見える
nearに近いほど精度が高くなって細かく変化する
逆変換

(2)
\begin{align} ndc.z = \frac{2gl\_FragCoord.z-n-f}{f-n} \end{align}

depth-value viewing-pipeline window-coordinate


ファイル

サポートサイト Wikidot.com depth-valueviewing-pipelinewindow-coordinate