【 ここから本文 】
グラフィックス技術
ソーシャルブックマークに登録 :
印刷用ページの表示
【解説】
「GPUコンピューティング」の可能性――高速汎用計算に挑む
GPUの汎用的な計算処理への応用で、ベクトル型HPC市場を切り開くか
(2008年06月30日)
GPUのグラフィックス・パイプライン
ここからは可視化を行うグラフィックス・アプリケーションとGPUの関係について、ソフトウェアの視点から俯瞰してみる。アプリケーション・ソフトウェアがGPUの機能を使うには、OpenGLの関数を呼び出す必要がある。OpenGLは、APIとしての側面を持つが、実際はハードウェアに直接アクセスするドライバ・ソフトウェアである。その意味で、OpenGLのAPI仕様は、ハードウェア・アーキテクチャ(設計思想)そのものと言ってもよい。
CPUは汎用性の高いスカラ型プロセッサ、GPUは画像処理に特化したベクトル型プロセッサとして大別できる。通常、ベクトル型プロセッサは、数段のステージを持つパイプライン処理を得意としており、GPUは、特にグラフィックス・パイプラインと呼ばれる可視化処理に特化したものである。
グラフィックス処理についてもう少し詳細に解説する。図1では、グラフィックス処理の流れ作業を行うグラフィックス・パイプラインの全体構成を示している。パイプラインは機能別に5つのステージで構成されており、それぞれのステージで実行するタスクの頭文字をとって、「G」「T」「X」「S」「D」とステージが分かれている。
| 図1:グラフィックス・パイプラインの全体構成 |
以下では、各ステージで実行されるタスクの処理内容について簡単に述べる。
■G(Generation:「シーングラフ」の生成)
アプリケーションが定義するデータ構造にしたがって、表示したい3次元モデルのデータをメイン・メモリ上に構築、または更新する。このメイン・メモリ上のデータ構造は、しばしばシーングラフと呼ばれている。Gの処理を行うのはCPU上で動作するアプリケーションやライブラリである。
■T(Traversal:表示データの抽出)
構築されたシーングラフをたどり、OpenGLの関数呼び出しによって、三角形の頂点データ群をGPUに送る。Tの処理は、アプリケーションが行ったり、OpenGLの上位に位置するライブラリが行ったりするが、最終的にはOpenGLドライバがすべてのデータを出力する。
■X(Transformation/Xformation:座標変換)
三角形の頂点(X、Y、Z)データや座標変換行列データのほか、光源情報や三角形の明るさ情報を、まずは前段のTから受け取る。
次に、各頂点座標をスクリーン上の3次元座標(2次元スクリーン座標と奥行きのZ値)に変換し、各頂点の明るさも計算する。Xの処理はGPU上で行われる場合が多い。
■S(Scan conversion:三角形の塗りつぶし)
スクリーン座標の3頂点として与えられた各三角形の内部に存在する全画素について、RGBの明るさを計算する。また、三角形上で各画素に対応する点の奥行き(Z値)も計算し、最終的には1番手前となる三角形についてその画素の明るさを決定する。結果は、フレーム・メモリ上に画像データとして書き込む。Sの処理はGPUで行われる。
■D(Display:画像データから画像信号への変換)
フレーム・メモリの画像データを読み出し、固定レートの同期信号(ビデオの垂直同期)にしたがって、ビデオ信号としてコネクタ(VGA、DVIなど)からディスプレイに出力する。



