chaos with coffee

A blog loved chaos.

GLSL 勉強1 正規化

参照サイト:

wgld.org | GLSL: GLSL だけでレンダリングする |

vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y);

gl_FragCoord には、処理する対象となるピクセルの位置がそのままピクセル単位で入っています。(原点は画面左下。gl_FragCoord.xyはウィンドウ座標になっている。)

これを二倍してスクリーンサイズを引き、それに対してさらにスクリーンサイズによる除算を行います。これを計算すると、対象のピクセルがスクリーン上でどの位置にあるのかを、-1 ~ 1 の範囲に正規化することができるのですね。

この処理によって、スクリーンの中心を (0.0, 0.0) とした二次元の座標系が出来上がる。

vec2 color = (vec2(1.0) + p.xy) * 0.5;

ここでは、先ほど求めた p に 1 を足して、それを半分にしています。先ほども書いたように p は X と Y のいずれも -1 ~ 1 に正規化されているので、このような処理を行うことで 0 ~ 1 範囲に正規化されます。