(Translated by https://www.hiragana.jp/)
シェーダー - Wikipedia

シェーダー

陰影いんえい処理しょりおこなうコンピュータプログラム

シェーダーえい: shader)とは、3次元じげんコンピュータグラフィックスにおいて、シェーディング陰影いんえい処理しょり)をおこなうコンピュータプログラムのこと。「shade」とは「次第しだい変化へんかさせる」「陰影いんえいグラデーションける」という意味いみで、「shader」は頂点ちょうてんしょくやピクセルしょくなどを次々つぎつぎ変化へんかさせるもの(より具体ぐたいてきに、狭義きょうぎ意味いみえば関数かんすう)を意味いみする。

概要がいよう

編集へんしゅう

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プロダクションソフトウェアのプレビューにももちいられる。最終さいしゅう出力しゅつりょく必要ひつようこう資源しげんこう品質ひんしつなレンダリング(レンダリング方程式ほうていしき英語えいごばんもとづくレイトレーシングラジオシティフォトンマッピングなど)のわりにリアルタイム用途ようとのシェーダーをもちいることで素早すばやいプレビューが可能かのうになる。たとえばAutodesk 3ds MaxAutodesk MayaAutodesk Softimage、およびNewTek LightWave 3Dはいずれもプログラマブルシェーダーによるプレビューを実装じっそうしている。また2DCGソフトウェアにもアクセラレータとしてしばしば導入どうにゅうされる(れい: Adobe PhotoshopAdobe Flash)。GUIベースオペレーティングシステム (OS) のデスクトップ合成ごうせいエンジンや標準ひょうじゅん2DグラフィックスAPIでも、Windows Aero/Direct2D (Windows) やQuartz Extreme/Core Image (macOS) などのように、GPUおよびプログラマブルシェーダーが活用かつようされる。

シェーダーステージ

編集へんしゅう

おおくのリアルタイム用途ようとグラフィックスパイプラインは複数ふくすうだんのプログラマブルシェーダーと固定こてい処理しょりからなっている。プログラム可能かのうな1つの段階だんかい(シェーダー)はシェーダーステージばれる[10]以下いか典型てんけいてきなシェーダーステージである。

ひょう: シェーダーステージ
ステージめい 入力にゅうりょく 出力しゅつりょく 注記ちゅうき
頂点ちょうてんシェーダー 頂点ちょうてん 頂点ちょうてん
テッセレーション[11] プリミティブ プリミティブ しばしば "制御せいぎょシェーダー" + "テッセレーション固定こてい機能きのう"
ジオメトリシェーダー[12] プリミティブ プリミティブ
(ラスタライズ) プリミティブ フラグメント 固定こてい機能きのう
フラグメントシェーダー フラグメント フラグメント

OpenGL 3.2以降いこうとDirect3D 10[13]以降いこうでは3種類しゅるいのシェーダーを使用しようできる。

頂点ちょうてんシェーダー(バーテックスシェーダー)

編集へんしゅう

頂点ちょうてんシェーダーえい: Vertex Shader, VS)はおも入力にゅうりょく頂点ちょうてん座標ざひょう変換へんかん(トランスフォーム)するための機能きのうである。頂点ちょうてんシェーダーはオブジェクトを構成こうせいする頂点ちょうてん集合しゅうごう頂点ちょうてん配列はいれつ頂点ちょうてんバッファ)にたいしてのみ作用さようし、たとえば3次元じげん空間くうかんにおけるXYZ位置いち座標ざひょう法線ほうせんベクトル、いろテクスチャマッピング座標ざひょう(UV座標ざひょうなど)といった頂点ちょうてん属性ぞくせいだけを参照さんしょう変換へんかんできる。3次元じげんグラフィックスにおけるおも座標ざひょう変換へんかんにはワールド変換へんかん、ビュー変換へんかん、プロジェクション変換へんかん、およびビューポート変換へんかん存在そんざいするが、頂点ちょうてんシェーダーが担当たんとうするのはワールド・ビュー・プロジェクション変換へんかんである。ワールド・ビュー変換へんかんはモデル・ビュー変換へんかんともばれる。なお頂点ちょうてん単位たんいのライティングであれば、頂点ちょうてんシェーダーで座標ざひょう変換へんかんのほかにライティング計算けいさんおこなうこともできる。頂点ちょうてんシェーダーで計算けいさんされた頂点ちょうてん情報じょうほうはジオメトリシェーダーにわたされるか、そのままピクセルシェーダーにわたされる。

Direct3D 9では頂点ちょうてんシェーダーをソフトウェアエミュレーションすなわちCPUで実行じっこうすることもできるが(D3DCREATE_SOFTWARE_VERTEXPROCESSING)、プログラマブルシェーダー機能きのう対応たいおうしているハードウェア(GPU)であれば多数たすうのプロセッサコアを使用しようして並列へいれつ処理しょりおこなうことができるので、CPUで頂点ちょうてんシェーダーを実行じっこうするよりもGPUを利用りようしたほう高速こうそくになる。

なお、シェーダーモデル3.0(DirectX 9.0c、OpenGL 2.x世代せだい)で導入どうにゅうされたVertex Texture Fetch (VTF) [14]使用しようすると、頂点ちょうてんシェーダーステージでテクスチャデータを参照さんしょうすることも可能かのうとなる。 シェーダーモデル4.0(DirectX 10世代せだい以降いこうでは、VTFはバッファデータの参照さんしょうとともに標準ひょうじゅんされている[15](OpenGLは3.1でVTFを標準ひょうじゅんし、バーテックスシェーダーですくなくとも16のTIUを使つかえるようになっている)。 さらに、OpenGL 4.2ではすべてのシェーダーステージにおいてイメージオブジェクトにたいするロード/ストアを可能かのうにする機能きのう標準ひょうじゅんされた[16]。DirectXにおいても、バージョン11.1にて、ピクセルシェーダーやコンピュートシェーダーだけでなく、すべてのシェーダーステージにおいて各種かくしゅリソースにたいするみが可能かのうになっている[17]

ジオメトリシェーダー

編集へんしゅう

ジオメトリシェーダーえい: Geometry Shader, GS)はピクセルシェーダーにわたされるオブジェクトない頂点ちょうてん集合しゅうごう加工かこうするために使用しようされる。ジオメトリシェーダーにより、実行じっこう頂点ちょうてんすう増減ぞうげんさせたり、プリミティブ種類しゅるい変更へんこうしたりすることが可能かのうとなる。OpenGLではプリミティブシェーダーともばれる。

ジオメトリシェーダーはポイント、ライン、トライアングルといった既存きそんのプリミティブからあたらしいプリミティブを生成せいせいできる。

ジオメトリシェーダーは頂点ちょうてんシェーダーののち実行じっこうされ、プリミティブ全体ぜんたいまたは隣接りんせつしたプリミティブの情報じょうほうつプリミティブを入力にゅうりょくする。たとえばトライアングルを処理しょりするとき、3つの頂点ちょうてんがジオメトリシェーダーの入力にゅうりょくとなる。ジオメトリシェーダーはラスタライズされるプリミティブを出力しゅつりょくでき、そのフラグメントは最終さいしゅうてきにピクセルシェーダーにわたされる。またプリミティブを出力しゅつりょくせずにキャンセルすることもできる。

ジオメトリシェーダーのよくある使つかかたとしては、ポイントスプライトの生成せいせい、ジオメトリテセレーション、シャドウボリュームのし、キューブマップあるいはテクスチャ配列はいれつへのシングルパスレンダリングなどがある。

ピクセルシェーダー

編集へんしゅう

ピクセルシェーダーえい: Pixel Shader, PS)はピクセル単位たんいのライティングやポストプロセス(後処理あとしょり)をおこなうための機能きのうである。ピクセルシェーダーはラスタライズされるプリミティブのかくピクセルに影響えいきょうする。また、ピクセルシェーダーにてテクスチャ参照さんしょうすることでバンプマッピングフォグ、シャドウ、ブルームといったエフェクト最終さいしゅうレンダリング結果けっか適用てきようすることもできる。OpenGLではフラグメントシェーダー(えい: Fragment Shader, FS)とばれる(Fragment: 断片だんぺん)。

ピクセルシェーダーはピクセルを操作そうさする機能きのうであり、頂点ちょうてんシェーダーもしくはジオメトリシェーダーから入力にゅうりょくされた情報じょうほうもとにテクスチャを合成ごうせいしたり表面ひょうめんしょく適用てきようしたりする。ピクセルを操作そうさする処理しょりにかかる時間じかん入力にゅうりょくプリミティブのラスタライズのピクセルすう出力しゅつりょく解像度かいぞうど左右さゆうされるため、通例つうれい頂点ちょうてん単位たんい処理しょり比較ひかくしてこう負荷ふかである。これをピクセルシェーダープログラムとしてプログラミングし、たか並列へいれつ処理しょり性能せいのうつGPUで実行じっこうすることにより、バンプマッピングとうのより高度こうどなエフェクトをCPUですべて実行じっこうするよりもはるかにたかいパフォーマンスで実現じつげんできる。なお、通常つうじょうのレンダーターゲットを使つかったピクセルシェーダーでは、アルファブレンド(アルファ合成ごうせい処理しょり詳細しょうさいをプログラムすることはできない。

GPUパイプラインの概略がいりゃく

編集へんしゅう

Direct3D 9世代せだいまでのGPUでは、頂点ちょうてんシェーダーおよびピクセルシェーダーを担当たんとうするハードウェアユニットのかずはそれぞれ製品せいひんごとに固定こていされていたが、Direct3D 10世代せだい統合とうごうがたシェーダーアーキテクチャ(Unified Shader Architecture)ではかくシェーダーユニットが統合とうごうされ、複数ふくすう汎用はんようシェーダーユニットを使つかって上記じょうき3つのシェーダーステージに動的どうてきけるかたちとなる[18] [19] [20] [21]

これらのシェーダーはGPUのパイプラインない実行じっこうされる。下記かきはパイプラインないにどのようにまれているのかをしめれいである。

  • CPUは命令めいれいとジオメトリデータをGPUがわ送信そうしんする。
  • 頂点ちょうてんシェーダーないでジオメトリを変換へんかんし、頂点ちょうてん単位たんいライティングの計算けいさんなどを実行じっこうする。
  • ジオメトリシェーダーを使用しようする場合ばあいは、頂点ちょうてんシェーダーが出力しゅつりょくしたジオメトリにたいしてプリミティブ増減ぞうげん変更へんこうおこなう。
  • これまでの処理しょり計算けいさんされたジオメトリをトライアングルセットアップに設定せっていする。トライアングルはquad変換へんかんされる(1つのquadは2 × 2ピクセルのプリミティブである)。
  • ピクセルシェーダーを適用てきようし、ピクセル単位たんいライティングなどを実行じっこうする。
  • 視界しかい判定はんてい実行じっこうする。もし視界しかいないにある場合ばあいはフレームバッファにピクセルをむ。

頂点ちょうてんシェーダー/ジオメトリシェーダーの出力しゅつりょくをラスタライザーおよびピクセルシェーダーにわたすのではなく、バッファやテクスチャなどのメモリリソースにしたのち、インプットアセンブラーや頂点ちょうてんシェーダー/ジオメトリシェーダーにさい入力にゅうりょくする、ストリームアウトプットという機能きのう存在そんざいする[22](OpenGLにはトランスフォームフィードバックとばれる類似るいじ機能きのう存在そんざいする)。ストリームアウトプットはこれまでのようにGPUがわでデータを参照さんしょうするだけでなく、GPU自身じしんえたデータを(CPUをかいすることなく)さい利用りようすることができるため、GPUパーティクルなどに応用おうようできる[23]

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

編集へんしゅう

OpenGL 4.0以降いこうとDirect3D 11以降いこうではさらにテッセレーションシェーダーをオプションとして使用しようできる。

RenderMan Shading Language代表だいひょうされるように、プロダクションけの3次元じげんコンピュータグラフィックスのレンダリングではふるくからシェーディング処理しょりをプログラムで記述きじゅつしてカスタマイズし、こう品質ひんしつ映像えいぞうつくすといったことはたりまえのようにおこなわれてきた。一方いっぽうCADきゃどソフトやゲームなどのリアルタイム 2D/3Dグラフィックス アプリケーション開発かいはつしゃは、ソフトウェア(CPU)による定形ていけい簡易かんいシェーディングあるいはグラフィックスハードウェア(グラフィックスカードにおけるGPU)に固定こてい機能きのうとして実装じっそうされていた頂点ちょうてん変換へんかん・シェーディング機能きのう(ハードウェアT&L)すなわち「定形ていけいパイプライン」(固定こてい機能きのうパイプライン)を使用しようしてグラフィック表示ひょうじおこなっていた[24]

しかし、多数たすうのグラフィック表現ひょうげん技術ぎじゅつ次々つぎつぎ開発かいはつされていくなかで、それらの技術ぎじゅつをGPUメーカーが逐一ちくいちハードウェアに機能きのうとして実装じっそうしていく形態けいたい効率こうりつであり、またユーザープログラマーがあたらしい技術ぎじゅつためすにはメーカーの対応たいおうたねばならなかった。この問題もんだい解決かいけつするアイディアとして、GPUのパイプラインをソフトウェアプログラムによりてる「プログラマブル パイプライン」とばれるアーキテクチャが構築こうちくされることになる。以前いぜん完全かんぜんブラックボックスだったグラフィックスパイプラインがユーザープログラマーにたいして開放かいほうされることで、あらたな陰影いんえい処理しょり技法ぎほう各種かくしゅエフェクト画面がめん効果こうか)を試験しけんてき実装じっそうしてGPUじょうはしらせることが容易よういになり、先進せんしんてきなGPUの機能きのう利用りようするすぐれた柔軟じゅうなんせいと、表現ひょうげんりょく爆発ばくはつてき向上こうじょうがもたらされた。

当時とうじのOpenGL・DirectX (Direct3D) のAPIによってブラックボックスとして提供ていきょうされていたシェーダーは固定こてい機能きのうシェーダーばれ、プログラマブルシェーダーと区別くべつされる。OpenGLにおいてはバージョン1.5からプログラマブルシェーダーが拡張かくちょうとして導入どうにゅうされ、バージョン2.0からは標準ひょうじゅんされた。Direct3Dにおいてはバージョン8からプログラマブルシェーダーが導入どうにゅうされた[25]。OpenGL 3.1、OpenGL ES 2.0、およびDirect3D 10以降いこう固定こてい機能きのうシェーダーが廃止はいしされ、グラフィックスパイプラインはプログラマブルシェーダーによって記述きじゅつされる。現在げんざいではリアルタイム処理しょりけいにおいて「シェーダー」といえばプログラマブルシェーダーを[26] [27]。また、Direct3D 9世代せだいまでは、頂点ちょうてんシェーダーとピクセルシェーダーの処理しょり担当たんとうするGPUないのハードウェア演算えんざんユニット(演算えんざん)は完全かんぜんかれており、それぞれの演算えんざんユニットのことを「シェーダー」とんでいた。そのため、かつてはグラフィックスカードのハードウェア性能せいのう指標しひょうとして演算えんざんユニットすうあらわすために「シェーダーすう」という言葉ことば使つかわれていたが、統合とうごうがたシェーダーアーキテクチャ採用さいようしたDirect3D 10世代せだい以降いこうは「ストリームプロセッサすう(SPすう)」あるいは「CUDAコアすう」という言葉ことばもちいられるようになっている[28] [29] [30] [31] [32]

並列へいれつ処理しょり

編集へんしゅう

シェーダーは膨大ぼうだい要素ようそ集合しゅうごうたいして変換へんかん処理しょり同時どうじ適用てきようするように記述きじゅつされる。たとえばモデルないすべての頂点ちょうてん一様いちよう平行へいこう移動いどう回転かいてん拡大かくだい縮小しゅくしょうしたり、スクリーン(2次元じげん画像がぞうバッファ)の特定とくてい範囲はんいないかくピクセルにたいして一様いちようにフィルタリング・輝度きど変換へんかんなどを実行じっこうしたりする、などである。これらの処理しょり対象たいしょうとなるぜん要素ようそひとしく適用てきようされる。これは並列へいれつ処理しょり非常ひじょうてきしており、しばしばGPUをもちいて処理しょりされる。たとえばBlenderのCyclesエンジンやV-Ray RTはCUDAやOpenCLを経由けいゆしてプロダクションレンダリングにGPUを活用かつようする。

コンピュートシェーダー

編集へんしゅう

GPGPUけの汎用はんようAPIとして代表だいひょうてきなものはCUDAOpenCLだが、OpenGL 4.3以降いこうOpenGL ES 3.1以降いこう、およびDirect3D 11以降いこうでは、おもにグラフィックス連携れんけい重視じゅうししたGPGPUのためのコンピュートシェーダー(Compute Shader、演算えんざんシェーダー)が搭載とうさいされた。コンピュートシェーダーは前述ぜんじゅつグラフィックスパイプラインとは独立どくりつして動作どうさすることのできるステージである。なお、コンピュートシェーダーは座標ざひょう変換へんかん陰影いんえい計算けいさんにとどまらない汎用はんよう計算けいさん可能かのうとなっているため、「シェーダー」という命名めいめいはほかのシェーダーステージにわせた便宜べんぎじょうのものである。Direct3Dのコンピュートシェーダーにかんしては、Direct3D APIをふくめた総称そうしょうとしてDirectComputeばれている。

コンピュートシェーダーがCUDAやOpenCLと比較ひかくしてすぐれているてんとして、Direct3D(OpenGL)リアルタイムグラフィックスパイプラインとの連携れんけいがしやすい(シミュレーションの実行じっこう可視かしいている)、Direct3D/HLSL(OpenGL/GLSL)をすでに利用りようしている場合ばあい修得しゅうとく容易よういである、などがげられる。

シェーディング言語げんご

編集へんしゅう

シェーダーを記述きじゅつ(プログラミング)するための種々しゅじゅ言語げんごがプロダクションレンダリング(リアルタイム)けおよびリアルタイムレンダリングけにそれぞれ開発かいはつされている。

おおくの3DCGソフトウェアやオーサリングツール、ゲームエンジンにはノードエディタばれるGUIツールが搭載とうさいされており、ノードエディタを使つかうことでカスタムシェーダー開発かいはつ直感ちょっかんてきおこなうことができるが、シェーディング言語げんご直接ちょくせつ利用りようするとささやかな調整ちょうせいおこなうことができる。

関連かんれん項目こうもく

編集へんしゅう

脚注きゃくちゅう

編集へんしゅう
  1. ^ What is RenderMan?
  2. ^ 衝突しょうとつ判定はんていなど、ユーザーとのインタラクション処理しょりようする時間じかん加味かみすると、実際じっさい描画びょうが処理しょり使つかえる時間じかんはさらにみじかくなる。そのため性能せいのうひくいモバイル機器ききなどでは30FPSが目標もくひょうとされることもある。一方いっぽうVR場合ばあい通例つうれい3Dけるために最低さいていフレームレート要件ようけんげられる。
  3. ^ 3Dグラフィックス・マニアックス (65) 事前じぜん計算けいさん放射ほうしゃ輝度きど伝搬でんぱん(PRT)~PRTとは? | マイナビニュース
  4. ^ 西川にしかわよしの3Dゲームファンのための「ソニック・ワールド・アドベンチャー」グラフィックス講座こうざ -GAME Watch
  5. ^ Hardware-Accelerated Global Illumination by Image Space Photon Mapping
  6. ^ 4Gamer.net ― NVIDIAとEpicが「Unreal Engine 4」で採用さいようされたしん世代せだいグローバルイルミネーション技法ぎほう解説かいせつ。その威力いりょくじきりムービーでチェックする
  7. ^ [SIGGRAPH 2014]NVIDIAがゲームけのリアルタイム大局たいきょく照明しょうめい,IntelはHaswellようDX12ドライバのデモを一般いっぱん展示てんじセクションで披露ひろう - 4Gamer.net
  8. ^ カスケード シャドウ マップ
  9. ^ GPU Gems 3 - Chapter 10. Parallel-Split Shadow Maps on Programmable GPUs
  10. ^ A shader object corresponds to a stage in the rendering pipeline referred to as its shader stage or shader type OpenGL 4.6 specification
  11. ^ Tessellation is a process that reads a patch primitive and generates new primitives used by subsequent pipeline stages. OpenGL 4.6 specification
  12. ^ Geometry shaders operate on a single primitive at a time and emit one or more output primitives OpenGL 4.6 specification
  13. ^ シェーダー ステージ (Direct3D 10)
  14. ^ Vertex Texture Fetch - OpenGL.org
  15. ^ Load (DirectX HLSL Texture Object) (Windows)
  16. ^ GL_ARB_shader_image_load_store
  17. ^ Direct3D 11.1 Features (Windows)
  18. ^ GeForce 8600 FAQ | NVIDIA
  19. ^ 連載れんさい][西川にしかわよしの3Dゲームエクスタシー]「ATI Radeon HD 2000」シリーズのGPUアーキテクチャ徹底てってい解説かいせつ
  20. ^ 共有きょうゆうするシェーダ”でGPUのあたらしい時代じだいを──G80の革新かくしんせいせまる (1/3) - ITmedia PC USER
  21. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース
  22. ^ ストリーム出力しゅつりょくステージ (Direct3D 10)
  23. ^ ParticlesGS サンプル
  24. ^ DirectX 7 の Direct3D におけるライト
  25. ^ Shader Models vs Shader Profiles - MSDN
  26. ^ シェーダーの操作そうさ:「シェーダーとは、頂点ちょうてん変換へんかんやピクセルの色付いろづけなど、グラフィックス計算けいさん実行じっこうするコンピューター プログラムで、通常つうじょう CPU のわりにグラフィックス処理しょり装置そうち (GPU) で実行じっこうされます。」
  27. ^ Working with Shaders: "A shader is a computer program that performs graphics calculations—for example, vertex transformations or pixel coloring—and typically runs on a graphics processing unit (GPU) instead of the CPU."
  28. ^ 4Gamer.net
  29. ^ SAPPHIRE X1950 PRO
  30. ^ SAPPHIRE Ultimate HD 4670 512MB GDDR3 PCI-E
  31. ^ GeForce 8800
  32. ^ GeForce GTX 680 | NVIDIA