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