メインメニューを開く

差分

ピクセルシェーダー

1,278 バイト追加, 2023年10月26日 (木) 07:05
編集の要約なし
'''ピクセルシェーダー'''([[英語]]:Pixel Shader)とは、[[シェーダー]]のうち、[[グローバル変数]](実質的に[[定数]])と[[ポリゴン]]内部の[[ピクセル]]が入力され、それを加工して、出力するものをいう。が入力され、それを加工して出力するものをいう。
[[OpenGL]]界隈では宗教上の理由で「[[フラグメントシェーダー]]」と呼ばれる。
 
==概要==
ピクセルシェーダーは[[ジオメトリシェーダー]]により頂点([[ポリゴン]])から[[ピクセル]]群に変換された[[データ]]を入力として受け取り、それを加工した[[ピクセル]]群を出力する。
 
<gallery>
ファイル:バーテックスシェーダー.png|バーテックスシェーダーで頂点を処理
ファイル:ピクセルシェーダー.png|ジオメトリシェーダーでポリゴンをピクセル群に変換
</gallery>
 
[[シェーダーモデル]]3.0(DirectX9)までは[[ジオメトリシェーダー]]は[[GPU]]の固定機能であり[[プログラマ]]は特段意識することはなかった。[[バーテックスシェーダー]]で加工された[[ポリゴン]]が勝手に[[ピクセル]][[配列]]に変換されてピクセルシェーダーが呼ばれる感じであった。[[iOS]]や[[Android]]なんかの[[OpenGL ES]]系は下位互換性の関係から今でもそんな感じである。
 
==主な用途==
主に[[ポリゴン]]に色を塗ったり、[[テクスチャ]]を貼ったり、[[陰影]]をつけたりするのに使う。
たとえば[[テクスチャマッピング]]であれば、グローバル変数にテクスチャを入れておき、ピクセルシェーダーでピクセル単位で貼っていく感じである。
陰影であれば、ライトの座標や強さや色をグローバル変数に入れておき、ピクセルシェーダーでピクセル単位で色を計算して決める感じである。この際に「極端に明るい」「極端に暗い」という2値に振り分ける処理を入れると陰影(ライティング)であれば、ライトの座標や強さや色をグローバル変数に入れておき、ピクセルシェーダーでピクセルの色や[[法線]]などの情報をもとに「色の強弱」を計算する感じである。この際に「極端に明るい」「極端に暗い」という2値に振り分ける処理を入れると[[トゥーンレンダリング]]になる。 また、各種[[シェーダー]]を経て得られた最終的な出力画面を1枚の大きな四角い[[ポリゴン]]と[[テクスチャ]]に見立てて、再度ピクセルシェーダーにぶち込み[[アンチエイリアス]]を掛けるというテクニックもある。有名な手法としては[[NVIDIA]]が考案した[[Fast Approximate Anti Aliasing]] ([[FXAA]]) がある。 ==関連項目==
各種シェーダーを経て得られた最終的な出力画面を1枚の大きな四角い*[[ポリゴンシェーダー]]**[[テクスチャバーテックスシェーダー]]に見立てて、再度ピクセルシェーダーにぶち込み**[[アンチエイリアスピクセルシェーダー]]を掛けるテクニックもある。有名な手法としては**[[NVIDIAジオメトリシェーダー]]が考案した**[[Fast Approximate Anti Aliasingハルシェーダー]] (**[[FXAAドメインシェーダー]]**[[コンピュートシェーダー]]*[[HLSL]]*[[OpenGL ES]]) がある。
== 関連項目 ==* [[シェーダー]]** [[バーテックスシェーダー]]** [[ピクセルシェーダー]]** [[ジオメトリシェーダー]]** [[ハルシェーダー]]** [[ドメインシェーダー]]** [[コンピュートシェーダー]]* [[HLSLcategory: コンピューター・グラフィックス]]* [[OpenGL EScategory: GPU]]