シェーダー
[Wikipedia|▼Menu]

シェーダー(: shader)とは、3次元コンピュータグラフィックスにおいて、シェーディング(陰影処理)を行うコンピュータプログラムのこと。「shade」とは「次第に変化させる」「陰影・グラデーションを付ける」という意味で、「shader」は頂点色やピクセル色などを次々に変化させるもの(より具体的に、狭義の意味で言えば関数)を意味する。目次

1 概要

2 プロダクション用途のシェーダー

3 リアルタイム用途のシェーダー

3.1 シェーダーステージ

3.1.1 頂点シェーダー(バーテックスシェーダー)

3.1.2 ジオメトリシェーダー

3.1.3 ピクセルシェーダー

3.1.4 GPUパイプラインの概略

3.1.5 テッセレーションシェーダー


3.2 歴史


4 並列処理

4.1 コンピュートシェーダー


5 シェーディング言語

6 関連項目

7 脚注

概要

3DCGは様々な要素技術の集まりである。「物体」を三角形の集合で表現するモデリング、「動き」を計算するアニメーション・物理演算、「見た目」を生成するレンダリングなどである。その中でシェーダーはレンダリングの一部を担う。レンダリングは複数の段階からなるパイプライン(レンダリングパイプライン)で成っており、シェーダーはこのうちの「プログラム可能な部分」を意味する。例えば頂点シェーダーは頂点を入出力としてなんらかの処理を記述したものであり、例えばカメラを起点とする座標変換の記述に用いられる。

シェーダーはシェーディング言語を用いて記述される。頂点やピクセルが入出力に与えられ、座標変換/テクスチャマッピング/ライティングなどを含む任意の処理をプログラミングする。実行時には多くの場合シェーダープログラムはGPUへ引き渡され、頂点群やフラグメント群に対して並行的に呼び出されることで3DCGの「見た目」を生成する。

シェーダーはプログラムであるため、シェーディング言語と実行環境が許す任意の処理を記述できる。例えばピクセルシェーダーにおいて入力に含まれている色情報をすべて捨て去って真っ黒なピクセルを出力することも可能であるし、最新の研究に基づいた新しいライティングアルゴリズムを記述することもできる。シェーダーの用途(例: リアルタイムかプロダクションか、写実的かアニメ的か)によってシェーダーに記述される内容は異なり、これが3DCGの見た目の違いとなって現れる。
プロダクション用途のシェーダー

プロダクションレンダリングは、静止画あるいは動画の生成が最終目的であるが、動画の場合は複数枚の静止画をつなぎ合わせて最終的にコンポジットを行ない、動画を作り出す。

リアルタイム用途と比較すると、プロダクションレンダリングでは時間や資源の制約が少ない。例えば、映画作品の1シーンをレンダリングするために数時間から数日をかけ、高品質な映像を作り出してもかまわない。レンダリングのための膨大な一時情報(中間計算結果などのキャッシュデータ)がコンピュータの物理メモリに収まりきらない場合でも、ハードディスクなどの二次記憶領域に退避してレンダリングを続行することもできる。

プロダクション用途のシェーダーでは、時間はかかるが高品質でリアリティの高い結果を生成できる、レイトレーシングなどのより厳密な大域照明(グローバルイルミネーション)ベース・物理ベースの陰影計算モデルが用いられる。例えば、PIXARRenderManはグローバルイルミネーションをサポートしている[1]

また、物体同士の相互反射光の計算や、ある物体から別の物体へ投影されるシャドウ(影)の計算は、シーン内のライト(光源)の数に比例して時間がかかるようになるが、プロダクションレンダリングではデザイナーの望む数だけ自由に光源を配置することができる。
リアルタイム用途のシェーダー

ゲームなどのリアルタイムレンダリングでは、例えば60FPSの場合1フレームの描画にかけられる時間は最大でもわずか16ミリ秒程度であり、また頂点情報やテクスチャデータの格納・参照に使用できるビデオメモリ(グラフィックスカードに直結実装されたVRAM)の容量といった制約条件が多い[2]。そのため、リアルタイム用途のシェーダーでは、相互反射などを考慮しない、低品質だが簡潔で高速な局所照明(ローカルイルミネーション)ベースの陰影計算モデルやZバッファ技法が用いられることが大多数である。GPUの進化とリアルタイム用プログラマブルシェーダーの発展を受けて、アルゴリズムやデータ構造を工夫してグローバルイルミネーションをリアルタイム実装している例(PRT[3]、ライトフィールド[4]、ISPM[5]、SVO-GI法[6]NVIDIA GI WorksのCLIPMAP法[7]など)も出てきているが、高性能なハードウェアを要求するなど、2018年時点でも未だ発展途上の技術である。シャドウや多光源環境のライティングに関しても、CSM[8]/PSSM[9]といった種々のシャドウマップ派生技術、および遅延シェーディング・遅延ライティングなどが考案されているが、時間および資源の制約が足かせとなり、品質や柔軟性はプロダクションレンダリングに及ばない。

リアルタイム用途のシェーダーはしばしばCGプロダクションソフトウェアのプレビューにも用いられる。最終出力に必要な高資源・高品質なレンダリング(レンダリング方程式(英語版)に基づくレイトレーシングラジオシティフォトンマッピングなど)の代わりにリアルタイム用途のシェーダーを用いることで素早いプレビューが可能になる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:43 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef