Shaderについて
shaderとは3次元のコンピューターグラフィックスにおいて、陰影処理を行うコンピュータプログラムのことです。
今まではグラフィックスカードに固定機能として実装されていた「定型パイプライン」を使用してグラフイック表示を行なっていましたが、現代ではGPUのパイプラインをソフトウェアプログラムにより組み立てる「プログラマブル パイプライン」と呼ばれるアーキテクチャが構築されたことにより、以前は完全にブラックボックスだったグラフィックスパイプラインがユーザープログラマーに対して開放され、新たな陰影処理技法や各種エフェクト(画面効果)を試験的に実装してGPU上で走らせることが容易になりました。(wiki参考)
簡単に言うと今までいじることができなかった陰影処理を行う部分をいじれるようになった感じですかね?
具体的なShaderの種類について
今回紹介するshadrは2種類でフラグメントシェイダーとバーテックスシェイダーです。
shader初心者をターゲットにこの記事を書いているのでざっくりとしたいイメージを描きます。
*バーテックスシェイダー
シェイダーに入ってきた頂点の座標を変換するものです。
入力される座標の例としては3次元空間におけるXYZ位置座標や法線ベクトル、テクスチャマッピング座標(UV座標など)があります。
3次元グラフィックスにおける主な座標変換にはワールド変換、ビュー変換、プロジェクション変換が存在します。
主な変換行列の説明です↓
ワールド変換:モデリング座標系からワールド座標系への変換
ビュー変換:ワールド座標系からカメラ座標系への変換
プロジェクション変換:カメラ座標系から投影座標系への変換
*フラグメントシェイダー
ピクセル単位でライティングなどの処理の計算を行って描画するための色を決定してくれる物って感じです。
また処理の順序としては頂点シェイダーから入力された情報を元に計算しています。
最後に
sandboxやshader toyなどのサイトを見てみると実際にどんなことができるのかがわかって面白いかもしれません。
これから徐々に具体的な内容を書いていこうと思います、
また何か誤りがあればご指摘ください。