シェーダについてまとめるためのメモ

別のトコ(社内wiki)に書くための下書き、かつ、超初心者用なので嘘も多少まじったメモ。ある程度わかってるならt-potのサイトを見てた方が良い。

まずシェーダってなんやねん

ゲームのキャラクターなどの描画で目にする単語「シェーダ」。ひとまず最初は「"ポリゴン"から、"実際に画面に描画されるピクセルの位置と色"を求めるまでの処理をするやつ」と捉えてよいと思います。

処理の流れ

図はここが比較的わかりやすい(ただし、シェードの意味とかは違うと思うので、流れと解説だけ参考に)。


簡単に説明すると、

  1. まず、各ポリゴンの位置が入力として入ってくる
  2. カメラから見たらどの位置に来るかを計算(頂点シェーダ)
  3. (見えない部分を処理から外す)
  4. ポリゴン→ピクセルに分割
  5. ピクセルの色を計算する(ピクセルシェーダ)
  6. (半透明なら合成したり、手前に何かあれば描画しなかったり)

が基本的な流れになります(上のリンク先の図の横の流れ)。


上に「頂点シェーダ」と「ピクセルシェーダ」がありますが、実際にシェーダと呼ばれるのはこの部分です。

シェーダをいじって何をするのか

基本的には見た目をどうこうするだけです。具体的には以下のようなことをするためにシェーダをいじります。

  • 影を落とす
    • ピクセルの色を計算する」の部分で、「影なら暗く、そうでなければそのまま」という処理を入れることで影が描画できます。
  • アニメ・漫画みたいにする
    • 面の向きから輪郭を描いたり、陰影を段階をつけて描いたりすることで、アニメのような表現を実現できます。

要変更箇所

ちょっと初心者への説明に寄り過ぎてる。もう少しシャドウマップまで説明がつながるように。
→途中部分の説明が割と難しい。何が必要?
→初心者用にテクスチャの説明して、Z値の概念を説明して、マトリクスも必要?四元数でもいいはずだからそれはいいか。
→さらに初心者に寄る場合は、ポリゴンの説明とかから必要か。あとピクセルも。最近の人はもう知ってるかな。モデルデータがどう表現されるかは必要かな。頂点座標とか頂点カラーとかテクスチャ座標とか。テクスチャの位置の求め方は昔知りたかったぞ(テクスチャの位置と頂点の位置が対応付けられていて、それを補完してる...はず...)。そもそも「頂点」って何やねんという感じだろうし(ポリゴンの頂点...なはず...)。つうか、なんでまだ俺はこんなに自信ないんだ。モデリングしたことないからか。やってみたくはあるが、優先順位が低いんだよな。


最後の項目は初心者に興味を持たせるためのものだが、実際にはもっと地味と言うかそういうのに使うので、それは別に用意。
→何が良いか
→今のプロジェクトでやってるので良かろう。外には見せない資料だし。


「シェーダ=Shader=陰をつける者」という説明は必要かなぁ?
→「もともとは法線方向を求めて明るさを決定するものだった」という感じか。ビミョー。小ネタって感じだ。最初は要らない。


そういや、ミップマップとかLODとかの説明はどうしよう。次世代技術?分類に困るな。
あと、シャドウマップの種類も解説したいが、微妙にしか知らないやつとかあって困る。それに、「3Dゲームファンのためのグラフィックス講座」で重要なのはたいがい解説されてるし、あっちの方が図説もあるのでそちらに誘導するほうが良い。


説明文の文体ってどんながいいかなぁ。とりあえず今回はmethodみたく、ですます口調にしてみたけど。今回のですます口調に違和感をあんまり感じないのは、methodだと皮肉が混じるからかもなぁと思う。もっとネタ仕込んでみるとか、方言を組み込んでみるとか実験してみたいなぁ。今回はもう時間ないけど。