グラフィックスパイプライン
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事には複数の問題があります。改善ノートページでの議論にご協力ください。

出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2015年2月)


独自研究が含まれているおそれがあります。(2016年6月)


言葉を濁した曖昧な記述になっています。(2015年2月)
出典検索?: "グラフィックスパイプライン" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL

グラフィックス パイプライン(: graphics pipeline)またはレンダリング パイプライン(: rendering pipeline)は、3次元コンピュータグラフィックスの計算処理方法の1つであり、3次元モデルのデータから2次元画像のイメージを作り出す多段階の過程全体を指し、それらの計算をパイプライン処理によって高速化する手法を示す。グラフィックスパイプラインは、時間のかかるレンダリング処理の高速化に注力している。この用語は、専用ハードウェア(グラフィックスカードGPU)または汎用機のソフトウェア(CPU)を使用した、3D-2D変換の内部処理の各過程の総体を示し、処理途中に人の関与が無いブラックボックスであることを暗に示す。

コンピュータグラフィックスには大きく分けて映画やCMなどのプロダクション用途と、CADやシミュレーション可視化、ゲームなどのリアルタイム用途の2つがある。それぞれのグラフィックスパイプラインの各段に割かれるリソースの比重や、用いられるハードウェア、およびレンダリング方程式や照明アルゴリズムの厳密度は異なるが、基本的な流れ・考え方は同じである。

以下にグラフィックスパイプライン処理の各段階を示すが、3DCG処理の全体像については3次元コンピュータグラフィックスを参照のこと。
基本的な処理

グラフィックスパイプラインの基本的な処理段階の各々は、一般に「ステージ」と表現される。(カッコつきのステージはパイプラインの前後段階である。)
(モデリング)

3次元座標を入力して3次元ワールド空間として知られている座標のデータを得る。これには拡大縮小と回転のようなローカルなオブジェクト空間上での基本的な座標変換も含む。
視点変換

物体は3次元のワールド空間座標から3次元の仮想カメラの位置と方向を元にした3次元座標系に変換される。この結果、元の3次元シーンはカメラの視点から見たものになる。この座標系は視空間ないしカメラ空間と定義される。
カリング

3次元モデルのポリゴンメッシュを形成する1つ1つの三角形は、それぞれが3つの頂点から成るが、表面または裏面の向きを持っている。座標変換後にカメラに対して裏面を向けている三角形を描画する必要がない場合、パイプラインから除外される。この工程を裏面カリング(背面カリング)と呼ぶ。どちらが表面でどちらが裏面になるかは、入力頂点の順序および右手座標系/左手座標系のどちらを採用するかによって変化する。
クリッピング

カメラの視界である視錐台 (frustum) の外にはみ出した座標は、この段階で不可視にされ捨てられる。クリッピングは正しい画像イメージを出力するのには必要なものではないが、見えない物体のデータを削れば、この後に続くレンダリング処理が高速化できる。視錐台を横切る「見切れ」状態の座標データは断端となる交点が求められ、両端が視錐台外であっても一部が視錐台内を横切るような線分にも注意が払われる。
ラスタライゼーション

ラスタライゼーションは描画シーンをラスターフォーマットに変換して、2次元画像空間に表現する処理である。これによりピクセル値が決定される。

通常、ラスタライズの処理には以下の効果のための処理が含まれる。特に三角形内のピクセルごとの色を決めるピクセルシェーディング処理がパイプラインの主要な処理を占めるため、処理速度の向上のためには可能な範囲での並列・順次処理が図られる。
ライティング処理
3次元シーンにおける物体の陰影は、物体の座標、物体の反射率、表面の特性、および光源(照明)の位置によって定義される。
テクスチャとフラグメントシェーディング
独立したフラグメント、またはピクセルごとに入力頂点の属性(頂点カラー)やメモリ上のテクスチャから補間した値を基にして色を割り当て、よりリアルな陰影や表面の質感を与える。

リアルタイムグラフィックス処理系においては、レンダリングされたポリゴンの法線方向にのみ照明を計算している。頂点間の照明の値はラスタライズの間に補間される。グラフィックスハードウェアが固定機能のシェーダーのみをサポートしていたDirectX 7 (Direct3D 7) 世代までは、面単位で陰影付けを行なうフラットシェーディングや、頂点単位で陰影を補間する頂点単位シェーディング(グーローシェーディング)/ライティングが主流だったが、グラフィックスハードウェアが性能を向上し、さらにプログラマブルシェーダー機能を備えるようになってからは、より高品位のピクセル単位(Per-pixel, Per-fragment)シェーディング(フォンシェーディング)/ライティングをラスタライズ後に実施することも行なわれるようになってきている。

なおリアルタイムグラフィックス処理系において、DirectX 9 (Direct3D 9) 世代が主流だった2005年頃までは、グラフィックスカードに実装される頂点シェーダーユニットおよびピクセルシェーダーユニットをそれぞれ増設し、順番に処理を行なわせることが描画高速化の主流であったが、ハードウェア利用効率の向上を目的として2006年頃から出現したDirectX 10 (Direct3D 10) 世代(統合型シェーダーアーキテクチャ)のグラフィックスカードでは、汎用シェーダーユニットの流動的な活用による高速化が行なわれている[1]
(出力)

完成した動画像データが出力として得られる。
実時間処理グラフィックスパイプラインの処理例
1.3Dモデルの構築と取得
2.モデルの配置
3.陰影付加
4.頂点追加
5.画角とクリッピング、陰面処理など
6.ピクセル割り当て
7.テクスチャ貼り付け
8.特殊効果の追加
9.ビデオ映像の読み出し

産業・工業の設計・製造工程で用いられるCADや、ドライブシミュレータフライトシミュレータ、およびゲームなどで利用されるリアルタイムグラフィックスパイプラインは、インタラクティブ性を実現する必要があるために動画像を毎秒30?60フレーム程度の実時間で生成する処理を行なっており、映画産業のように必ずしも実時間で処理する必要がないCG動画とは求められる精度や方向性が異なっている。例えば、よりリアルな画像が得られる大域照明 (global illumination) モデルを実現するにはレイトレーシングラジオシティ法のような光学的・物理学的に厳密な手法が適しているが、これは大きな演算量と記憶領域を必要とするために実時間処理するのは難しい。一般的には、実時間処理を必要としないCG動画像の生成では、現実に起きているのと同じように光源からの光線の反射・屈折・透過・散乱といった物理シミュレーションをほぼ忠実に行なうことでリアル感を得ることが可能なのに対して、実時間処理を必要とするCG動画像の生成では、演算量を減らすための多様な工夫を凝らして物体表面の質感などを擬似的・近似的に作り出すことが多い。以下に実時間処理での各段階を示すが、こういった用途での専用ハードウェアについてはGPUを参照のこと。

リアルタイムコンピュータグラフィックスを生成する専用ハードウェアに対して、グラフィックスパイプラインの処理を指示するための標準的なリアルタイム3DCG用APIには、OpenGLDirect3Dがある。

2015年現在のCG動画像生成を行なう実時間処理の専用ハードウェアは、多くの場合、グラフィックスカード上の演算装置であるGPUを指す(ディスクリート型、内蔵型を問わない)。GPUでも上記で示した基本的なグラフィックスパイプライン処理の流れに沿ってレンダリングが実行されているが、単にパイプライン処理するだけでなく、画像の処理単位を幾つも分解して、半ばハードワイヤード化された多数の専用回路や、(ソフトウェアプログラムによるカスタマイズが可能な)多数の汎用的な演算回路を同時並列的に用いることで、実時間処理に必要な演算性能を得ている。演算回路の並列度の増加がそのまま処理性能の向上に比例する傾向が強いため、半導体の集積度向上に応じて年ごとに演算回路の数が増加している。2015年現在では、プログラム処理が可能な汎用回路の数が最大では数千基を越える規模になっている[2][3][4]


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

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