グラフィックスパイプラインとシェーダについてまとめる(頂点シェーダ編)

グラフィックスパイプラインとシェーダの役割をリストにしてまとめてみます。(頂点シェーダ編)

 

参考資料は以下のもの。
少し古いですが業界からは評価が高い本です。中古でもとりあえず買ってみるのをおすすめ。

ゲーム制作者になるための3Dグラフィックス技術 増補改訂版
著:西川善司

今回は書く量が多いので複数回に分割します。

 

まずは、グラフィックスパイプラインの流れを確認。

※DirectX 11/SM  5世代のグラフィックスレンダリングパイプラインについて。(Win7世代のGPU)

1 3Dモデルの構築・配置
2 仮想空間にモデルを配置

(ローカル座標→ワールド座標)

頂点シェーダ 頂点パイプライン
3 頂点単位で陰影処理 頂点シェーダ 頂点パイプライン
4 ポリゴンの分割及び形状変形 テッセレーションステージ 頂点パイプライン
5 頂点の増減 ジオメトリシェーダ 頂点パイプライン
6 カメラ空間への展開

(ワールド座標→カメラ座標)

頂点パイプライン
7 クリッピング&陰影処理
8 トライアングルセットアップとラスタライズ
9 ピクセル単位での陰影処理 ピクセルシェーダ ピクセルパイプライン
10 テクスチャの適応 ピクセルシェーダ ピクセルパイプライン
11 レンダーバックエンド

(アルファ・深度・ステンシル・フォグ・ブレンディングなど)

ピクセルパイプライン
12 出力

 

<ポイント>

  • 2, 3. 頂点シェーダ
    • 通常は頂点パイプラインからGPU処理を行う。
    • 頂点シェーダでの陰影処理は、「光源ベクトル」「視線ベクトル」「法線ベクトル」の3つのベクトルを使って、どのくらい光が視線方向に反射するかを(マテリアルごとに)計算する。
    • 頂点シェーダでは、テクスチャ座標(UV座標)の計算も行う。
  • 4. テッセレーションステージ
    • これは、高ポリモデルと低ポリモデルを視点距離によって切り替えるLODの役割をレンダリングパイプラインで実装したもの。
    • このステージは、「ハルシェーダ」「テッセレータ」「ドメインシェーダ」の3つのステージシェーダからなる。
    • ハルシェーダ
      • ハルとは、外殻(hull)を意味する
      • 3Dモデルの表皮をどういう形状にするか、ポリゴン分割計画を行うプログラマブルシェーダ。
      • 重要な役割は、「ポリゴンをどのくらい分割するか」「分割したポリゴンが高次曲面の場合はその制御点も算出」ということ。
      • キャラクタの目は他より高ポリゴンに分割する!とかいうのもハルシェーダに書けば実装可
    • テッセレータ
      • ハルシェーダが作ったポリゴン分割計画を実行する
    • ドメインシェーダ
      • 高次曲面用の制御点はこのシェーダで整形する。
      • ディテールを記載したテクスチャ(ディスプレースメントマップ)を読み込んで、ポリゴンを変形させるディスプレースメントマッピングの処理はココで行う。
  • 5. ジオメトリシェーダ
    • 頂点を増減させ、ポリゴンを自在に生成できるシェーダ。
    • 地面に草のポリゴンを植え付けたり、キャラクタに毛を生やす事もできる。
    • パイプラインの逆の流れ(ジオメトリシェーダ→頂点シェーダ)に戻ることが出来るため再帰的な処理が可能。
  • 6.7 .
    • 6. はワールド座標からカメラ座標へ座標変換する。この座標変換を一般に透視変換という。
    • 7. は、描画する必要がないポリゴンを破棄し、視界にかするポリゴンは司会範囲内のポリゴンに切り取る処理(クリッピング)を行う。
    • 隠面処理は、視点から見えないポリゴンを破棄する処理のこと。

箇条書きですが、今日はココまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です