WebGLノート2

サインは、円周軌道上の縦の移動量、すなわち Y を求めるのに使える。
コサインは、円周軌道上の横の移動量、すなわち X を求めるのに使える。

GLSL の世界では(他の一般的なプログラミング言語と同様に)、角度はラジアンという単位で扱う。
円の一周を 360 度のような度数で考えるのではなく、円の一周を 2 パイで考えるのがラジアンの考え方。

頂点シェーダは頂点の座標変換が主な役割
座標変換といってもカメラやスクリーンが影響する様々なステップがあり複雑で冗長。
それを効率よく行うために都合のよい概念が行列。
別の言い方をすると「行列の持つ性質」が 3D と相性が良い、とも言える
頂点シェーダで座標変換した結果を gl_Position に出力するのがルール

行列の実態は長さ 16 の配列
その中にたくさんの情報が(合成することで)詰め込める
GLSL では頂点の変換にひとつの行列を用いるだけでよい
時と場合により、行列を複数シェーダに送る場合もある
ここでは -1.0 ~ 1.0 の XY 平面に散りばめられた頂点が描かれている
行列の効果により立体的に見えるような描画結果が得られる
立体的な空間を扱う場合は「深度テスト」についても注意

GLSL のビルトイン関数 length を使うと、与えられたベクトルの長さを測ることができます。
length(position) のように記述すると、もともとは position は座標を表すデータですが、これをベクトルと見立てて長さを測る
頂点の座標をベクトルに見立ててその長さを測ると、それはすなわち 原点から頂点がどのくらい離れているかを表す数値

数学的には、座標とベクトルは別の概念
座標とは、単に位置のこと
ベクトルとは、向きや、大きさを表現できるもの
表記の仕方(コード上の記述方法)は同じであり……
いずれも複数の数値の組み合わせで表現される
length を使うとベクトルの長さを測ることができる

サインの計算結果は常に -1.0 ~ 1.0 なので 0.0 ~ 1.0 に変換する
GLSL では線形補間を行うことができる関数 mix が使える
mix では、状態 A と状態 B を 0.0 ~ 1.0 の係数で補間できる

フラグメントシェーダは 全てのピクセル上で個別に実行されるので、gl_FragCoordの中身は異なる

この記事が気に入ったらサポートをしてみませんか?