別のトコ(社内wiki)に書くための下書き、かつ、超初心者用なので嘘も多少まじったメモ。ある程度わかってるならt-potのサイトを見てた方が良い。
まずシェーダってなんやねん
ゲームのキャラクターなどの描画で目にする単語「シェーダ」。ひとまず最初は「"ポリゴン"から、"実際に画面に描画されるピクセルの位置と色"を求めるまでの処理をするやつ」と捉えてよいと思います。
処理の流れ
図はここが比較的わかりやすい(ただし、シェードの意味とかは違うと思うので、流れと解説だけ参考に)。
簡単に説明すると、
- まず、各ポリゴンの位置が入力として入ってくる
- カメラから見たらどの位置に来るかを計算(頂点シェーダ)
- (見えない部分を処理から外す)
- ポリゴン→ピクセルに分割
- ピクセルの色を計算する(ピクセルシェーダ)
- (半透明なら合成したり、手前に何かあれば描画しなかったり)
が基本的な流れになります(上のリンク先の図の横の流れ)。
上に「頂点シェーダ」と「ピクセルシェーダ」がありますが、実際にシェーダと呼ばれるのはこの部分です。
シェーダをいじって何をするのか
基本的には見た目をどうこうするだけです。具体的には以下のようなことをするためにシェーダをいじります。
- 影を落とす
- 「ピクセルの色を計算する」の部分で、「影なら暗く、そうでなければそのまま」という処理を入れることで影が描画できます。
- アニメ・漫画みたいにする
- 面の向きから輪郭を描いたり、陰影を段階をつけて描いたりすることで、アニメのような表現を実現できます。
要変更箇所
ちょっと初心者への説明に寄り過ぎてる。もう少しシャドウマップまで説明がつながるように。
→途中部分の説明が割と難しい。何が必要?
→初心者用にテクスチャの説明して、Z値の概念を説明して、マトリクスも必要?四元数でもいいはずだからそれはいいか。
→さらに初心者に寄る場合は、ポリゴンの説明とかから必要か。あとピクセルも。最近の人はもう知ってるかな。モデルデータがどう表現されるかは必要かな。頂点座標とか頂点カラーとかテクスチャ座標とか。テクスチャの位置の求め方は昔知りたかったぞ(テクスチャの位置と頂点の位置が対応付けられていて、それを補完してる...はず...)。そもそも「頂点」って何やねんという感じだろうし(ポリゴンの頂点...なはず...)。つうか、なんでまだ俺はこんなに自信ないんだ。モデリングしたことないからか。やってみたくはあるが、優先順位が低いんだよな。
最後の項目は初心者に興味を持たせるためのものだが、実際にはもっと地味と言うかそういうのに使うので、それは別に用意。
→何が良いか
→今のプロジェクトでやってるので良かろう。外には見せない資料だし。
「シェーダ=Shader=陰をつける者」という説明は必要かなぁ?
→「もともとは法線方向を求めて明るさを決定するものだった」という感じか。ビミョー。小ネタって感じだ。最初は要らない。
そういや、ミップマップとかLODとかの説明はどうしよう。次世代技術?分類に困るな。
あと、シャドウマップの種類も解説したいが、微妙にしか知らないやつとかあって困る。それに、「3Dゲームファンのためのグラフィックス講座」で重要なのはたいがい解説されてるし、あっちの方が図説もあるのでそちらに誘導するほうが良い。
説明文の文体ってどんながいいかなぁ。とりあえず今回はmethodみたく、ですます口調にしてみたけど。今回のですます口調に違和感をあんまり感じないのは、methodだと皮肉が混じるからかもなぁと思う。もっとネタ仕込んでみるとか、方言を組み込んでみるとか実験してみたいなぁ。今回はもう時間ないけど。