この記事には複数の問題があります。改善
やノートページでの議論にご協力ください。グラフィックス パイプライン(英: 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次元画像空間に表現する処理である。これによりピクセル値が決定される。 通常、ラスタライズの処理には以下の効果のための処理が含まれる。特に三角形内のピクセルごとの色を決めるピクセルシェーディング処理がパイプラインの主要な処理を占めるため、処理速度の向上のためには可能な範囲での並列・順次処理が図られる。 リアルタイムグラフィックス処理系においては、レンダリングされたポリゴンの法線方向にのみ照明を計算している。頂点間の照明の値はラスタライズの間に補間される。グラフィックスハードウェアが固定機能のシェーダーのみをサポートしていたDirectX 7 (Direct3D 7) 世代までは、面単位で陰影付けを行なうフラットシェーディングや、頂点単位で陰影を補間する頂点単位シェーディング(グーローシェーディング)/ライティングが主流だったが、グラフィックスハードウェアが性能を向上し、さらにプログラマブルシェーダー機能を備えるようになってからは、より高品位のピクセル単位(Per-pixel, Per-fragment)シェーディング(フォンシェーディング)/ライティングをラスタライズ後に実施することも行なわれるようになってきている。 なおリアルタイムグラフィックス処理系において、DirectX 9 (Direct3D 9) 世代が主流だった2005年頃までは、グラフィックスカードに実装される頂点シェーダーユニットおよびピクセルシェーダーユニットをそれぞれ増設し、順番に処理を行なわせることが描画高速化の主流であったが、ハードウェア利用効率の向上を目的として2006年頃から出現したDirectX 10 (Direct3D 10) 世代(統合型シェーダーアーキテクチャ)のグラフィックスカードでは、汎用シェーダーユニットの流動的な活用による高速化が行なわれている[1]。
基本的な処理
(モデリング)
視点変換
カリング
クリッピング
ラスタライゼーション
ライティング処理
3次元シーンにおける物体の陰影は、物体の座標、物体の反射率、表面の特性、および光源(照明)の位置によって定義される。
テクスチャとフラグメントシェーディング
独立したフラグメント、またはピクセルごとに入力頂点の属性(頂点カラー)やメモリ上のテクスチャから補間した値を基にして色を割り当て、よりリアルな陰影や表面の質感を与える。
Size:32 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef