Unityシェーダープログラミングの教科書
◆ 座標空間と座標変換
▼ モデル空間座標系
ポリゴンモデルが配置される空間
ローカル空間、オブジェクト空間とも呼ばれる
デザイナーがプリミティブを作成するときはこの座標空間
プリミティブは複数の頂点から構成されるポリゴンの最小単位
ゲームでは通常3つの頂点から構成される三角形のプリミティブを使用
▼ ワールド空間座標系
複数のモデルを配置する空間
UnityのSceneビューに表示されているもの
モデル空間座標からワールド空間座標への変換を「ワールド空間」、変換に必要な行列を「ワールド変換行列」あるいは「モデル変換行列」という
▼ ビュー空間座標系
ワールド空間をカメラの座標を原点として座標変換
カメラ空間ともいう
ワールド空間からビュー空間の変換をビュー変換、変換行列をビュー変換行列という
▼ プロジェクション空間座標系
ビュー空間の中でスクリーンに描画される空間
クリッピング空間ともいう
変換された空間は[-1,-1,0], [1,1,1]を範囲とした直方体になる
▼ ビューポート空間座標系/スクリーン空間座標系
プロジェクション空間上の各頂点を二次元平面上に投影したものがビューポート空間
ビューポート空間を実際の画面解像度に変換したものがスクリーン空間
Unityのビューポート座標に似ている(むしろまぎらわしい)
▼ シェーダープログラミングの座標変換
通常、クリップ空間からビューポート/スクリーン空間への変換はハードウェアで処理されるため、シェーダーでは操作しない
シェーダープログラミングではモデル空間→ワールド空間→ビュー空間→プロジェクション空間の変換を行う
モデル・ビュー変換行列、モデル・ビュー・プロジェクション変換行列の2つがよく使用される
モデル・ビュー・プロジェクション変換行列参考