ピクセルシェーダー

提供: MonoBook
移動先: 案内検索

ピクセルシェーダー英語:Pixel Shader)とは、シェーダーのうち、グローバル変数(実質的に定数)とポリゴン内部のピクセルが入力され、それを加工して出力するものをいう。

OpenGL界隈では宗教上の理由で「フラグメントシェーダー」と呼ばれる。

概要[編集 | ソースを編集]

ピクセルシェーダーはジオメトリシェーダーにより頂点(ポリゴン)からピクセル群に変換されたデータを入力として受け取り、それを加工したピクセル群を出力する。

シェーダーモデル3.0(DirectX9)まではジオメトリシェーダーGPUの固定機能でありプログラマは特段意識することはなかった。バーテックスシェーダーで加工されたポリゴンが勝手にピクセル配列に変換されてピクセルシェーダーが呼ばれる感じであった。iOSAndroidなんかのOpenGL ES系は下位互換性の関係から今でもそんな感じである。

主な用途[編集 | ソースを編集]

主にポリゴンに色を塗ったり、テクスチャを貼ったり、陰影をつけたりするのに使う。

たとえばテクスチャマッピングであれば、グローバル変数にテクスチャを入れておき、ピクセルシェーダーでピクセル単位で貼っていく感じである。

陰影(ライティング)であれば、ライトの座標や強さや色をグローバル変数に入れておき、ピクセルシェーダーでピクセルの色や法線などの情報をもとに「色の強弱」を計算する感じである。この際に「極端に明るい」「極端に暗い」という2値に振り分ける処理を入れるとトゥーンレンダリングになる。

また、各種シェーダーを経て得られた最終的な出力画面を1枚の大きな四角いポリゴンテクスチャに見立てて、再度ピクセルシェーダーにぶち込みアンチエイリアスを掛けるというテクニックもある。有名な手法としてはNVIDIAが考案したFast Approximate Anti Aliasing (FXAA) がある。

関連項目[編集 | ソースを編集]