説明

グラフィックス処理装置

【課題】電力消費とチップ搭載スペースを抑制しつつ,高速処理が可能なグラフィックス処理装置を実現する。
【解決手段】入力されるプリミティブを構成するピクセルに対して予め決められた処理を行う固定機能パイプライン4と,プログラム可能なプログラマブルパイプライン5とを備え,固定機能パイプライン4においては,ピクセル単位での固定された演算処理を行う固定フラグメントシェーダが設けられ,プログラマブルパイプライン5にはプログラマブルなピクセル単位での演算処理を行うプログラマブルフラグメントシェーダが設けられている。処理の内容によって,これらのプログラマブルフラグメントシェーダと,固定フラグメントシェーダとを使い分ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,シェーダプログラムを有するパイプラインを備えたグラフィックス処理装置に関する。
【背景技術】
【0002】
近年,ゲームやカーナビゲーションなどにおいては,立体的に描画を行う三次元の画像表示が普及している。三次元の画像表示は,例えばプログラマが画像生成アルゴリズムを定義するシェーダプログラムが組み込まれた画像処理に特化したプロセッサを搭載したグラフィックス処理装置などにより実現されている。
【0003】
グラフィックス処理装置で三次元の画像表示を行う方法としては,CPU側で処理を行うほか,グラフィックス処理装置において実装されたレンダリングパイプラインをプログラム可能にした構成が知られており,例えば特許文献1において示されている。プログラマブルシェーダの例としては,頂点シェーダや,ジオメトリシェーダ,フラグメントシェーダ等をそれぞれ個別に構成する他,これらを統合して統合シェーダとして構成するといった構成が可能である。このプログラム可能なシェーダプロセッサのハードウェア上の実装の仕方としては,必要な処理能力を参酌して,複数のプログラマブルシェーダが実装されたプロセッサをチップ上又は基板上に複数セットするという態様を採る。また,下記特許文献2には,グラフィック・オブジェクトを処理するように構成された第1の複数ステージを含むグラフィックス・パイプラインと,ビットマップ・イメージを処理するように構成された第2の複数ステージを含むビットマップ・イメージ・パイプラインと,前記パイプラインの1つに含まれる前記ステージの選択された1つ又は複数の出力を,前記パイプラインの1つに含まれる前記ステージの選択された別の1つ又は複数の入力に提供するためのイメージ・パスを定義する,選択的に構成可能な相互接続マトリックスを備えるイメージ・プロセッサが開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−305408号公報
【特許文献2】特許4116330号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら,プログラマブルシェーダが実装されたプロセッサを搭載していく場合,プログラマブルシェーダが様々な処理を汎用的に演算可能なようになっていることから,そのプロセッサは固定パイプに比べて大型化する傾向にある。また,所定の演算能力を得ようとするとそれだけ多くのプログラマブルシェーダを搭載する必要が生じるが,これは搭載空間の限られた携帯ゲーム機等においては特に顕著な問題である。更には,携帯機器においては電力消費量を抑制する必要もあり,大型化に伴う電力消費量の増加も無視できない。
【0006】
そこで,本発明は,演算能力を向上させつつ,消費電力を抑制することができるパイプラインが搭載されたグラフィックス処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は,予め決められた演算処理を行う固定機能パイプラインと,実行する演算処理をプログラム可能なプログラマブルパイプラインを有するグラフィック処理装置に関する。そして,グラフィック処理装置は,ピクセル単位での演算処理を行うフラグメントシェーダを有する。そして,フラグメントシェーダは,固定機能パイプラインにおいて実装され,固定されたピクセル単位の演算処理を行う固定フラグメントシェーダと,プログラマブルパイプラインにおいて実装されプログラマブルなピクセル単位の演算処理を行うプログラマブルフラグメントシェーダとを有する。このグラフィックス処理装置の好ましい例は,ピクセル単位での演算処理が,固定フラグメントシェーダ,又は前記プログラマブルフラグメントシェーダのいずれにおいて処理されるかを決定する処理判定手段を更に有するものである。プログラマブルシェーダの例は,入力装置からの入力に従って,処理を行う演算の種類を変えることができるものである。たとえば,通常のコンピュータグラフィック処理を行う場合は,固定機能パイプラインを用いてピクセル単位の画像処理を行えばよい。一方,たとえば,コンピュータグラフィックスにおいて見る者の注目を集める部位や,特殊な演算処理を要する部分が存在する部分がある。このような場合,特殊な演算処理をプログラマブルフラグメントシェーダを含むプログラマブルフラグメントシェーダにおいて演算処理させればよい。たとえば,ひとつのコンピュータグラフィックを得る場合に,所定の部分については,その他の部分と異なるパイプラインを用いて演算処理するため,演算能力を向上させつつ無駄な消費電力を防止することができ,さらにグラフィック処理装置の大型化を防ぐことができる。プログラマブルフラグメントシェーダは,たとえば,特開2005−322224号公報などのプログラマブルパイプライン構築方法に従って構築することができる。
【0008】
また,処理判定手段の例は,プログラマブルシェーダに処理プログラムを実装させる際に,プログラマブルシェーダで処理する演算をもプログラムするものである。この場合,画像処理するデータがパイプラインに入力されると,処理判断手段が,処理すべき演算の種類を解析する。そして,処理判断手段は,記憶した演算の種類と処理するパイプラインに関する情報を読み出す。そのうえで,演算処理が,いずれのパイプラインで処理を行うものか判断する。そして,判断したパイプラインへとデータを出力する。このようにすれば,ある演算処理は,固定フラグメントシェーダにてピクセル単位の演算処理を行わせ,ある演算処理は,プログラマブルシェーダでピクセル単位の演算処理を行わせることができる。そして,いずれのパイプラインにおいて処理を行わせるかをプログラムすることで,画像処理する対象に応じて適切な演算処理を行うことができることとなる。なお,処理判断主犯は,ピクセル単位での演算処理に関する命令を読み出し,この読み出した命令の演算処理に必要な演算能力が所定値以上であるか否かを判定して,所定値以上であればプログラマブルフラグメントシェーダにて,所定値以下である場合は固定フラグメントシェーダにて,ピクセルに対して処理を実行することとしてもよい。また,処理に必要な演算能力が所定値以上の場合,ある演算処理を固定フラグメントシェーダが処理し,ある演算処理をプログラマブルフラグメントシェーダが行い,演算結果を共有するようにしてもよい。さらに,特殊な演算処理を行う部分に含まれるピクセルについては,特殊な演算処理を行うためのフラグが付されており,処理判断手段はそのフラグの有無を読み取って,固定パイプライン又はプログラマブルパイプラインのいずれに演算処理のためのデータを出力するか決定してもよい。
【0009】
また,固定フラグメントシェーダは,ピクセルに対して,光源情報,及びオブジェクトの光に関する属性情報に基づいてライティング処理を行うライティング部,前記ピクセルに対してテクスチャを適用する処理を行うテクスチャ部,前記ピクセルに対してブレンディング処理を行うブレンディング部の,少なくとも1つを含んで構成されるようにしてもよい。
【0010】
固定フラグメントシェーダがテクスチャ部を含む場合,プログラマブルフラグメントシェーダは,テクスチャ部とのインタフェースを備え,プログラマブルフラグメントシェーダは,当該インタフェースを通じて前記テクスチャ部に対して処理結果を送信するとともに,前記テクスチャ部によりテクスチャを適用する処理が実施されたデータを受け取ることとしてもよい。
【0011】
また,テクスチャ部と同じくプログラマブルフラグメントシェーダがライティング部とインタフェースを有するようにしてもよい。このときプログラマブルフラグメントシェーダは,インタフェースを通じてライティング部に対して処理結果を送信するとともに,ライティング部によるライティング処理が実施されたデータを受け取る。
【0012】
また,描画シーンをラスターフォーマットに変換して,2次元画像空間に表現するラスタライザを更に備え,ラスタライザから出力されたデータに対してプログラマブルフラグメントシェーダが処理を行うようにしてもよい。
【0013】
そして,プログラマブルフラグメントシェーダは,頂点に対してその属性情報に変更を加える頂点シェーダと,入力される前記頂点からなるプリミティブから新たなプリミティブを生成するジオメトリシェーダとの少なくとも一方と統合されたユニファイドシェーダとして構成されており,前記頂点シェーダ,又は前記ジオメトリシェーダの出力が前記ラスタライザに入力され当該入力を処理した前記ラスタライザの出力がプログラマブルフラグメントシェーダに返信されるようにしてもよい。
【発明の効果】
【0014】
本発明によれば,演算能力を向上させつつ,消費電力を抑制することができるシェーダプログラムが搭載されたグラフィックス処理装置を実現することができる。
【図面の簡単な説明】
【0015】
【図1】図1は,本発明のグラフィックス処理装置の構成を示すブロック図である。
【図2】図2は,テクスチャ部の具体的な構成を示すブロック図である。
【図3】図3は,テクスチャ部の検出回路を示す概略図である。
【図4】図4は,キャシュメモリに記憶された画素を示すブロック図である。
【図5】図5は,テクスチャ部の補間回路を示すブロック図である。
【図6】図6は,テクスチャ部の補間回路の詳細図である。
【図7】図7は,グラフィックス処理装置におけるライティング部の詳細を示すブロック図である。
【図8】図8は,法線・ケガキ方向ベクトル演算手段ブロック図である。
【図9】図9は,COS_PHI・ジオメトリックファクタ演算手段ブロック図である。
【図10】図10は,内積演算手段の基本構造例を示すブロック図である。
【図11】図11は,内積演算手段の基本構造例を示すブロック図である。
【図12】図12は,内積結果演算手段の基本構造例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下,発明を実施するための形態について説明する。本発明は,以下に説明する実施態様に限定されるものではない。本発明は,以下に説明する実施態様から当業者に自明な範囲で適宜修正される範囲を含む。本発明は3次元空間のレンダリングに適した画像表示装置に適用されるものである。3次元空間とは,3次元座標値(x,y,z)を持つ点の集合として定義され,立体形状(オブジェクト)は仮想3次元空間上に定義される多角形(主に3角形や4角形などのポリゴン)の集合として定義される。
【0017】
図1は,本発明のグラフィックス処理装置2が搭載された画像表示装置を示すブロック図である。図1に示されるように,画像表示装置は,CPU1とグラフィックス処理装置2(以下,GPU2とする)を含んでいる。CPU1は,コアプロセッサ3を含んでおり,CPU1内のデータやプログラムを処理し,GPU2に対して転送する。
【0018】
GPU2は,三次元の画像を演算するためのパイプラインを有しており,このパイプラインは固定機能パイプラン4と,プログラマブルパイプライン5とを含む。固定機能パイプライン4は,特定の演算処理を行うための構成された専用の演算回路を含む。固定機能パイプラインは,ラスタライザ部4a,テクスチャ部4b,ライティング部4c,及びブレンディング部4dのいずれか又は2つ以上を有するものが好ましい。これらのラスタライザ部4a,テクスチャ部4b,ライティング部4c,及びブレンディング部4dは,それぞれ本発明の固定フラグメントシェーダに相当する。固定フラグメントシェーダとしては,ラスタライザ部4a,テクスチャ部4b,ライティング部4c,ブレンディング部4dの全てを含まなくてもよい。また,ラスタライザ部4aはプログラマブルパイプライン5上に実装してもよい。
【0019】
ラスタライザ部4aは,描画シーンをラスターフォーマットに変換して,2次元画像空間に表現可能とする処理を実行する部分である。ラスタライザ部4aは,頂点によって構成されるプリミティブ情報からフラグメントを生成するための要素である。各フラグメントには位置情報だけではなく法線やテクスチャ座標などの情報も付随する。これらの情報は頂点の位置情報を元に補間計算により求められる。ライティング部4bは,光源ベクトル,視線ベクトル,ピクセルにおける法線ベクトルなどを利用してピクセルに対してライティング処理を実施するための要素である。ライティング部4bは,反射方程式を解くための手段を有しているものが好ましい。ライティング部は,オブジェクトに対して充てられる光源そのものの情報と,オブジェクトを構成するピクセルの光に関する情報とに基づいて演算処理を実行するものがあげられる。テクスチャ部4cは,画像データに基づきテクスチャを作りだし,ピクセルのどの座標に対してテクスチャの座標を適用させるかを決定するテクスチャマッピングを演算する処理を実行する。ブレンディング部4dは,例えばピクセルを半透明にするなどのブランディング処理を実施する。これらの回路や手段自体は公知であるため,本発明においても公知の回路及び手段を適宜採用できる。
【0020】
また,プログラマブルパイプライン5は,複数種類のシェーダプログラムが実行可能なユニファイドシェーダ6を含む。ある実施態様に係る画像表示装置においては,ユニファイドシェーダ6が2つ搭載される形で実装されている。このユニファイドシェーダ6の搭載数は必要な演算能力に応じて適宜変更することができる。
【0021】
ユニファイドシェーダ6は,例えば,頂点シェーダ7と,ジオメトリシェーダ8と,フラグメントシェーダ9とを含む。頂点シェーダ7は,頂点に対してその属性情報に変更を加えるものである。頂点の属性情報は一般的には位置,法線,アニメーションのための情報やテクスチャマッピングのためのテクスチャ座標などにより構成される。頂点シェーダ7のステージで仮想カメラから見た座標系への変換などの座標系の変換やキャラクターアニメーションのための形状変換処理などが行われる。また,頂点シェーダ7でライティング演算が行われることもある。
【0022】
ジオメトリシェーダ8は,頂点処理後の頂点をポリゴンなどのプリミティブとして扱う。ここで入力プリミティブを分割するテッセレーション処理等が行われる。
【0023】
フラグメントシェーダ9はラスタライザ部4aで生成されたピクセルを順次処理していく。ここでは,ピクセルに対する最終的な色を決定するための処理(陰影付け)が行われる。陰影付けのための処理としてはテクスチャマッピング,ライティングなどの処理などが含まれる。また,その他フラグメント単位の処理として様々な処理が行われる。このフラグメントシェーダ9がプログラマブルフラグメントシェーダ9に相当する。
【0024】
このグラフィックス処理装置では,コアプロセッサ3からGPU2に送信されたデータは一般的には,頂点シェーダ7,ジオメトリシェーダ8において頂点演算やジオメトリ演算処理が行われたのちに,ラスタライザ部4aにおいてフラグメント化され,フラグメントがフラグメントシェーダ9に入力される。このデータ処理は,ジオメトリシェーダ8を経由しなくても良い。また,このグラフィックス処理装置2では,プログラマブルパイプライン5におけるフラグメントシェーダ9が,固定機能パイプライン4のテクスチャ部4b及びライティング部4cとインタフェースを有している。したがって,たとえばフラグメント単位での通常の処理を行う場合は,固定機能パイプラン4を用い,キャラクタの顔など高度な描写が必要な場合のみフラグメントシェーダ9を用いるという構成をとることで,ユニファイドシェーダ6の搭載数が少なくても負荷がフラグメントシェーダ9に集中する時間が短期間で済むため,演算処理が円滑に行われる。つまり,本発明において,フラグメントシェーダはプログラマブルパイプライン5と固定機能パイプライン4との双方に実装されていることとなる。また,フラグメントシェーダ9を使用しなくて良い場合は頂点シェーダ7及びジオメトリシェーダ8に専念できる。なお,このように固定機能パイプライン4において,フラグメントシェーダ9の処理を分担しながら行う場合においては強力かつ高速なテクスチャ部4bとライティング部4cとが提供されていることが望ましい。このような固定機能パイプライン4をプログラムブルパイプライン5と並存させることで,特定の演算に対しては非常に迅速な処理が可能となる。すなわち,少なくともフラグメントシェーダの機能は,固定機能パイプライン4とプログラマブルパイプライン5の双方に実装されている。なお,データを固定フラグメントシェーダとプログラマブルフラグメントシェーダのいずれにおいて処理するかを決定するための構成としては,そのための処理判定部を備えるようにすればよい。処理判定部の判定方法としては,例えば,データに対して行われる命令を予め読み出し,この命令における演算処理に必要な演算能力が所定の値N以上であるかを判定するといった方法を採ることができる。所定値N以上の場合,複雑な処理が可能なプログラマブルフラグメントシェーダにて処理を行い,所定値N未満であれば,固定フラグメントシェーダにおいて処理を実行する。また,別の構成としては,「顔に対する処理」,「動く風景に対する処理」などのように特定の処理を予めプログラマブルフラグメントシェーダにおいてプログラミングし,この処理に該当するか否かを処理判定手段によって判定して,どちらのフラグメントシェーダにおいて処理を実行するかを決定することも可能である。
【0025】
このようなテクスチャ部4bの詳細について図2を用いて説明する。図2においてテクスチャ部4bを構成するテクスチャ生成回路11は複数のテクスチャアドレスプロセッサを有し,線形補間されたテクスチャアドレスU’及びV’と,視点軸Zの関数からなるWを基にU’/W及びV’/Wの除算を経て2次元のテクスチャパターン座標UVを決定する回路である。このUV座標はテクスチャパターンを記憶するキャシュメモリ12のアドレスとなり,本発明ではテクスチャ生成回路11から複数の組のアドレスが出力する。
【0026】
このキャシュメモリ12はm行n列の同時アクセスが可能な2次元配列のブロックから構成される。このm行n列に含まれるmxn個の画素は原始テクスチャパターンを記憶する外部メモリ13からキャシュメモリ12に同時にロードできる数となる。キャシュメモリ12ではこのmxn単位を一つのキャシュブロック容量とする。例えばm=8,n=4とすれば32画素がブロック当たりの画素数となる。テクスチャパターンアドレスがテクスチャ生成回路11で求まると,キャシュメモリ12からこの点を中心として隣接する複数の画素を同時に読みだす。
【0027】
3次スプライン補間を例にとると,4行x4列の合計16画素が読み出される。これら16画素は補間回路14に同時に与えられ,目的の輝度を生成する。一方,キャシュメモリ12はキャシュミスおよび無効キャシュブロックを検出するための検出回路15を持つ。
【0028】
図3はテクスチャ部4bの検出回路15を示す。検出回路15にはUV座標を中心としてそれぞれ所定の領域(例えば4x4)から,これに含まれるブロックアドレスを決定する加減算器16と,これを記憶するレジスタ17とレジスタ17の入出力値を比較する比較器18とで構成される。比較器18はキャシュブロックmxnに対応するUV座標の下位ビット(例えば8x4の場合,Uは下位から3ビット,Vは2ビット)を除く上位ビットのブロックアドレスのみを比較する。レジスタ17はテクスチャドレスプロセッサの数,すなわちUVを一組の出力として,例えば4ラインを同時にマッピングする場合は4組必要であり,テクスチャドレス生成回路11から出力される4組のUVアドレスに対して,それらの点を中心とする所定の領域に含まれるブロックアドレスを記憶する。
【0029】
いま一つのレジスタ17の入出力値が不一致を起こしたとすると,そのUV座標値の上位ビットが下位ビットによって桁上げあるいは下げが生じ,それまでの有効キャシュブロックから読みだし領域の一部がオーバーフローあるいはアンダーフローを起こしたことを意味する。このキャシュミスが比較器18で検出されると,同時に他の組の全てのレジスタとの比較を比較回路18で行う。この新たなキャシュブロックアドレスが,もしいずれかのレジスタにすでに登録されていれば,キャシュメモリロード回路19は起動しない。いずれの比較回路も不一致となればキャシュメモリには該当するブロックが存在しないものとしてキャシュメモリロード回路19に対してロード要求を行う。
【0030】
キャシュメモリロード回路19はこの要求によって外部メモリから該当するブロックを読みだしキャシュにロードする。一方,UVアドレスを中心に隣接する4x4画素をその領域とし,またスケールが1より大きい拡大の場合,4ラインを同時にマッピングしてもそれぞれのアドレスを中心にした4x4の領域全体は,8(U)x4(V)をキャシュブロックサイズとした場合,最小6ブロック(16x12画素)を用意すれば,キャシユ内に包括される。
【0031】
この結果,UVアドレスの移動によっていずれかのラインにキャシュミスが生じれば,新たに外部メモリから該当するデータを読み込むためのキャシュブロックが必要となる反面,6ブロックのうちいずれかのブロックにはすでに使用されないものが出て来る。このことから6ブロックそれぞれにキャシュブロックアドレス(前記下位ビットを除くUV座標値)を記憶するレジスタ20を設け,キャシュミスが生じたときこのレジスタ20と加減算器16からの全てのブロックアドレスとを比較回路21において比較する。
【0032】
もし一致するものがあれば有効キャシュブロックとしてそのままに,全て不一致となるレジスタがあれば,このレジスタに記憶されたキャシュブロックを無効ブロックとして前記キャシュミスによるロードを,このブロックに対して実行する。一方,キャシュメモリから読み出された画素と,UV座標およびそのアドレスは本発明に係わる図4に示す関係となる。読み出された4行4列の16個の画素は図2の補間回路14に行あるいは列毎に与えられる。
【0033】
図4において,Pxy(0≦x,y≦3)はキャシュメモリに記憶された画素であり,UV座標点(i,j)は常に画素P11,P12,P21,P22の4画素間に位置する。キャシュメモリから読み出された画素はそれぞれ本発明の図5の補間回路14に加えられる。この回路は図2の補間回路14となる。図4の各列の画素(P00,P01,P02,P03),(P10,P11,P12,P13),(P20,P21,P22,P23),(P30,P31,P32,P33)がそれぞれの補間回路14a,14b,14c,14d,の入力となる。これらの補間回路14で求められた補間値P0j,P1,jP2j,P3jはさらに後段の補間回路14eに出力され,これら4点間の輝度を補間する。なお,図4中,Pxy(0≦x,y≦3)は参照画素であり,Pijは補間画素である。
【0034】
図6は本発明の補間回路14の回路構成を示す。補間回路14はノット関数テーブル31と,加算器32a,32b,32c,及び乗算器33a,33b,33c,33dで構成する。ここでノット関数テーブル31には3次曲線を刻むノット値tが,0≦t≦1の範囲で与えられる。また乗算器には4点の輝度P0,P1,P2,P3が与えられる。小数点部の値は図4のR>3に示すように画素間内の一点の座標値jに対応する。ここでノット関数値の範囲0≦t≦1は4点間(例えばP00−P03)の距離に対応するが,小数点部の値を区間(P01−P02)で0≦j≦1と定義するためにt=(1/3)(j+1)の関係となる。これはi点も同様である。
【0035】
j点の補間テータP0j,P1j,P2j,P3jは,このテーブルから出力される値と,参照する4行あるいは4列いずれか一方の画素の輝度,例えば4列の場合(P00,P01,P02,P03),(P10,P11,P12,P13),(P20,P21,P22,P23),(P30,P31,P32,P33)とをそれぞれ積和して求められる。これは行であっても,あるいは列であっても良く,いずれを補間参照データ(制御点)とするかは任意である。
【0036】
4組の補間回路から得られる値は図4に示すように補間をまず列に対して行ったとすれば,結果はそれぞれ同一のV座標上の値となる。次にこの4つの補間値P0j,P1j,P2j,P3jを参照点(制御点)としてP1j,P2j間の補間値を求めることによって2次元空間の補間が終了する。これは前記Vの小数点部の値に対して,Uの小数点部の値iを図5の後段の補間回路14eのノット関数テーブルに加えることになる。
【0037】
こうして得られた補間点の輝度Pijがマップされる面に与えられるテクスチャ輝度となる。実施例ではノット関数テーブルは3次相関関数とした。しかし,関数テーブルはその回路をRAM(Random Access Memeory)とすることでその補間関数に対して入力アドレスをパラメータとする線形,ベージェ,Bスプライン,3次相関関数等を記憶することができる。一方,スケールが1以下の縮小の場合には,4つのテクスチャドレスプロセッサからのUVアドレスは離散的な値となる。すなわち複数のUVアドレスはそれぞれ1以上の距離を持つことになる。例えば8ブロック(16x16画素)でキャシュメモリを構成した場合で,距離が4となる場合(スケール1/4),それぞれの点を中心に隣接する4画素を参照点として読みだし1点が補間される点では拡大と処理は変わらない。しかし,もし画素間の距離がキャシュサイズを越える場合,そのほとんどはキャシュミスを生じ一つのUVアドレスに一つのキャシュブロックが使用される。よって縮小には外部メモリとのアクセスが増加し,演算処理速度が低下する。
【0038】
この速度低下を避けるにはサイズの異なる複数の原始テクスチャパターンを画像メモリに予め記憶しておくことが必要である。このサイズの異なる原始パターンを選択する方法としてテクスチャドレスプロセッサから得られた隣接するUV座標値を差分してその距離を求める。距離が1あるいは以下の場合は拡大,2あるいは以上の場合は縮小となる。よってこの差分値によって変換されるUVアドレスを外部メモリアドレスとして,所定の原始テクスチャパターンにアクセスすることで最適なパターンの選択が可能となる。
【0039】
このテクスチャ部4bの方式により拡大縮小を伴うマッピング面に対するテクスチャマッピングの高速の表示が可能となり,リアルタイムシステム,例えばバーチャルリアリティシステムに有効となる。
【0040】
次に,本発明のライティング部4cの詳細なハードウェアにおける実装例について示す。ライティング部4cは,入力された補間データとテクスチャ部4bから入力されたバンプマッピング用データ,又はタンジェントベクトルデータから法線・ケガキ方向ベクトル演算手段35において光源単位に画素ごとの輝度演算を行い,その結果をブレンディング部4dに出力する。このライティング部4cの各部に関して説明する。
【0041】
図7は,ライティング部4cの各部の基本構成を含む。入力されたベクトルデータや,クオータニオンデータに基づいて変換されたベクトルデータなどは,法線・ケガキ方向ベクトル演算手段35,C O S _ P H I・ジオメトリックファクタ演算手段36,内積演算手段37の各モジュールにおける演算を経て,内積結果演算手段38から演算結果が出力される。一方,テクスチャ部4bからは,Bx,By,及びBzが入力され,この入力されたベクトル情報は,法線ベクトル又はケガキ方向ベクトルに対して座標変換を行うことで,表面のでこぼこを表現するバンプマッピングやさまざまなケガキ方向表現を行うために用いられる。
【0042】
[法線・ケガキ方向ベクトル演算手段]
図8は,法線・ケガキ方向ベクトル演算手段35の基本構成を示す概念図である。図8に示されるように,法線・ケガキ方向ベクトル演算手段35は,各クオータニオンなどの情報が入力され,入力された情報を乗算するための複数個の乗算器群41と,乗算器群41から出力される乗算値から所定のものを選択して出力するためのセレクタ42と,セレクタ42から出力された出力値が入力され,入力された値を加算するための加算器群43とを有している。
【0043】
また,法線・ケガキ方向ベクトル演算手段35には,セレクタ46から出力された出力値を一時的に記憶するためのレジスタ47,51と,レジスタ47に記憶された値のうちいずれかが入力され,入力値の逆数を求めるための逆数テーブル48とを有している。なお,特に図示しないが,所望の値を得るため,適宜逆数演算手段や,加算(減算)手段,乗算(除算)手段,などを組合わせて用いればよい。
【0044】
法線・ケガキ方向ベクトル演算手段35では,下記式に示される演算を行うことで,法線ベクトル・ケガキ方向ベクトルを演算し,出力する。なお,図8には示されないが,下記の演算を行うに当り,q02(図では,q00とされている。以下同様。),q12,q22及びq32を加算する手段(1〜3個の加算器など)と,求められた(q02+q12+q22+q32)の逆数を得るための逆数演算手段(逆数テーブルなど)を具備し,セレクタ42に入力されてもよい。演算の例は,NP=(q02+q12+q22+q32),Tx=(q02+q12-q22-q32)/NP,Ty=(2q1q2+2q0q3)/NP,Tz=(2q1q3-2q0q2)/NP,BNx=(2q1q2-2q0q3)/NP,BNy=(q02-q12+q22-q32)/NP,BNz=(2q2q3+2q0q1)/NP,Nx=(2q1q3+2q0q2)/NP,Ny=(2q2q3-2q0q1)/NP,及びNz=(q02-q12-q22+q32)/NPである。
【0045】
また,法線・ケガキ方向ベクトル演算手段35では,法線ベクトル・ケガキ方向ベクトルなどを演算した後,レジスタ47に結果を格納する。そして,テクスチャ部4bから取得したバンプベクトルを用い,下記式(I)の演算式を実装した演算部49にて,演算を行うことで,バンプベクトルにて変換が行われた法線ベクトル・ケガキ方向ベクトルを演算する。下記式(I)の演算式を実装した演算部49は,たとえば,乗算器などの乗算手段と,各種情報を記憶するテーブルなどの記憶手段と,情報の入出力を行う入出力部などの入出力手段を具備するものにより構成できる。
【0046】
【数1】

【0047】
また,法線・ケガキ方向ベクトル演算手段35では,法線ベクトル・ケガキ方向ベクトルを演算するに当たって,クオータニオン演算のための乗算器41にて乗算演算した後,セレクタ42に中間結果を保存する。その後,クオータニオン演算部44及び45にて,乗算器及び加減算器43を用いて,各ベクトルの成分の演算を行う。そして,セレクタ46を通して,レジスタ47に結果を格納する。その後,乗算器,加減算器及び,逆数テーブルを用いて,上記バンプベクトルによる法線ベクトルまたは,ケガキ方向ベクトルの変換処理を演算部49にて行う。そして,演算結果をセレクタ50を通して,レジスタ51に格納する。
【0048】
前項の例は,基本的には,バンプベクトルによる変換は法線ベクトルまたは,ケガキ方向ベクトルのどちらかに適用するための構造を採用している。しかしながら,複数クロックサイクルを用いて,どちらにも適用できる構造にしてもよいし,このときに入力バンプベクトルを1組だけではなく2組入力してもよいし,同じ演算部49を2つ以上具備することで,複数ベクトルに対してバンプ変換処理を行う実装にしてもよい。
【0049】
また,法線・ケガキ方向ベクトル演算手段35では,複数クロックサイクルによる演算処理を行うことで,回路の共通化を図ることができる。これにより,ハードウェアサイズを小さくすることができる。以下では,この複数クロックサイクルによる演算処理に関して説明する。
【0050】
[COS_PHI・ジオメトリックファクタ演算手段]
図9は,COS_PHI・ジオメトリックファクタ演算手段36の基本構成例を示すブロック図である。図9に示されるように,COS_PHI・ジオメトリックファクタ演算手段36は,たとえば,入力されるデータ(例えば,L,N,T,V)を選択するセレクタ61,入力された値の内積を求める第1の内積演算器な62と,入力された値の内積を求める第2の内積演算器62と,第1,及び第2の内積演算手段62からの出力DP0,DP1が入力され,入力値を加算する第1の加算器64を備えている。
【0051】
また,COS_PHI・ジオメトリックファクタ演算手段36はDP0,DP1,及び加算器64からの出力などを一時的に格納するための中間パラメータ一時格納レジスタ65〜69とレジスタ67の値を掛け合わせ2乗値などを得るための乗算器70,乗算器70の出力とレジスタ65〜69に記憶されるある値とを受取り,乗算器70の出力値から出力とレジスタ65〜69に記憶されるある値を減算するための加減算器71,加減算器71の出力を受取り,この逆数平方根を得るための逆数平方根テーブル72と,逆数平方根テーブル72からの出力とレジスタ65〜69に記憶されるある値とを受取り,それらの値を乗算するための乗算器73と,レジスタ65〜69の記録値の逆数を求めるための逆数テーブル74と,逆数テーブル74からの出力とレジスタ65〜69に記憶されたある値とを受取り,それらを乗算するための乗算器75とを具備する。
【0052】
そして,各要素は,バスなどで連結され,適宜情報の授受ができるようにされている。さらに,乗算器73の出力は,COS_PHI(図ではCos_Phiとされている。)などとしてバス76から出力される。また,乗算器75の出力は,ジオメトリックファクタ(LN_LV)などとしてバス77から出力される。さらに,レジスタ65〜69に格納されたある値(LN値など)は,バス78から出力されるようにされていてもよい。
【0053】
このCOS_PHI・ジオメトリックファクタ演算手段36では下記式(II)を適用してCOS_PHI(76)を求める。また,N_LV = (L・N)/|L+V|2にしたがってジオメトリックファクタLN_LV(77)を求める。さらに,及び,LN = L・Nに従って,LN(78)の演算を行う。
【0054】
【数2】

【0055】
ただし,本発明の好ましい態様では,COS_PHIを求める回路など実装するに当たり,COS_PHIを式(3)のように近似して求めることで,ハードウェア量を減らす工夫を行うことができる。もちろん,本発明は,式(2)を求めるように実装してもよい。
【0056】
【数3】

【0057】
図10は,内積演算手段37の基本構造例を示すブロック図である。図10に示される内積演算手段は,たとえば,COS_PHI・ジオメトリックファクタ演算手段36が具備するものであってもよいし,他の内積演算手段37として機能するものであってもよい。この内積演算手段の例は,各種情報が入手される乗算器81〜83と,加算器84,85とを具備する。図10に示される例では,3つの乗算器及び,2つの加算器を具備し,2組の3次元ベクトルの内積演算を行うことができるものである。すなわち,この内積演算手段37では,入力された値(ベクトル値など)を適宜乗算する他,乗算した値を適宜加算することで,内積値を求めるのみならず,内積値の加算値をも求めることができる。どの値の内積値を求め,どの値を加算するかは,あらかじめ固定されていてもよいし,ユーザからの入力を受取って適宜変更できるようにされていてもよい。また,入力値は,セレクタ等で選択され適宜乗算器81〜83に入力されるようにしてもよい。
【0058】
[内積演算手段]
図11は, 内積演算手段の基本構造例を示すブロック図である。図11に示されるとおり,内積演算手段37は,たとえば,入力されたデータを選択するセレクタ81,前記セレクタ81で選択された値が入力され,入力された値の内積値を求める内積演算器62,内積演算器62で求められた値と一時的に記憶するためのRAM82a〜82c,RAM82a〜82cに格納された出力結果を選択するためのセレクタ83,セレクタ83で選択された内積演算結果を格納するレジスタ84〜90により実装されている。
【0059】
図11に示される内積演算手段37のデータの流れの例を以下に示す。法線・ケガキ方向ベクトル演算手段35及び,COS_PHI・ジオメトリックファクタ演算手段36からベクトルデータを受け取り,これらデータを内部セレクタ81にて選択し,内積演算器62へ選択して入力する。セレクタは,例えば,ポインティングデバイスなどの入力に従うか,又は予め定められたベクトルの組み合せを選択する。内積演算器62は,セレクタにて選択されたベクトルの組み合わせに対する内積演算を行い,内積演算結果をRAM82a〜82cに入力し,この出力をセレクタ83によってRAM82a〜82cのうち,出力の格納先を選択しレジスタ84〜90のそれぞれに格納する。
【0060】
[内積結果演算手段]
図12は,内積結果演算手段38の基本構造例を示すブロック図である。図12に示されるように,内積結果演算手段38は,内積演算手段37から入力された内積演算結果,及び,システムバスなどのバスから各係数が入力される入力部分,乗算器92a〜92g,加算器93を具備する。そして,スペキュラ成分カラー及びディフューズ成分カラーが出力される。
【0061】
スペキュラ成分カラーを演算するために,内積演算手段37から入力されたDP084,DP185に対して,それぞれジオメトリックファクタの乗算について,システムバスなどのバス経由で設定された設定によって乗算を行うか,1.0の固定値を乗算するかをセレクタ94にて選択でき,乗算されたDP0に対しては,システムバスなどのバス経由にて設定された設定によってDP0係数95の乗算を行うことができ,また,乗算されたDP1に対しては,システムバスなどのバス経由にて設定された設定によってDP1係数96及び,内積演算手段37から入力されたRr86,Rg87,Rb88との乗算を行う。なお,DP0係数95は,スペキュラ輝度D0に対する係数を意味し,ユーザにより設定することができる。また,DP1係数96は,スペキュラ輝度D1に対する係数を意味し,同様にユーザにより設定がすることができるようにしてもいいし,あらかじめハードウェアとして演算器とともに実装してもいい。これら演算されたDP0及び,DP1について,加算器93にて加算が行われ,最後に内積演算手段37から入力されたSpot89が乗算器92fで乗算され,スペキュラ成分カラーが出力される。
【0062】
ディフューズ成分カラーを演算するために,
内積演算手段37から入力されたS p o t 89及び,COS_PHI・ジオメトリックファクタ演算手段36から入力されるL Nが乗算器92gにて乗算され, ディフューズ成分カラーが出力される。
【0063】
本実装例では,ジオメトリックファクタの選択をセレクタ94にて行う事ができる。一方,この部分をジオメトリックファクタ以外,例えば,内部演算手段37からの出力結果や,補間されたベクトル・値を選択可能なようにしてもよいし,なくてもよい。
【0064】
また,本実装例では,スペキュラ成分カラーを演算するために,3つの内積演算手段37からの内積が入力できる実装となっている。しかしながら,それ以上または,それ以下の数の内積が入力可能とされてもよいし,この数及び構成は,入力により適宜調整可能とされていてもよい。このような調整は,例えば,プログラマブルロジック回路を適宜用いることで調整できる。
【0065】
以上に示した,本実施形態によれば,固定機能パイプラインを構成するテクスチャ部4b,及びライティング部4cが非常に高速な演算回路として設計されている。したがって,フラグメントシェーダ9は,これらの機能を転用することで,それ自体のプロセッサ数を少なくしても,高い処理能力を実現することができる。プロセッサ数が少なくなる結果チップ全体の小型化,及び省電力化が達成され,小型化,及び省電力化と高い演算能力の両立を行うことができるようになる。
【0066】
また,フラグメントシェーダ9は,プログラマブルシェーダでもあることから,複雑なレンダリングが必要な場合などにおいても,これに対応するような処理を実行することができる。この時も,その他の通常の処理においては,固定機能パイプラインを活用することで,リソースを集中して複雑な処理に割り当てることができ,効率的なプロセッサの管理が可能となる。
【0067】
また,本実施形態においては,フラグメントシェーダ9からテクスチャ部4b,及びライティング部4cを利用することができるインタフェースを設けることとしたが,このインタフェースを設けない構成を採ることもできる。その場合,処理の内容によって,予め固定機能パイプライン4側を用いるか,プログラマブルパイプライン5側を用いるかを決めておけば同様の効果を得ることができる。この場合,プログラマブルパイプラインと固定機能パイプライン双方がテクスチャユニットを持つ必要がある。
【0068】
上述の実施形態においては,各シェーダが統合されたユニファイドシェーダとして提示されたものを示したが,シェーダ毎に別のプロセッサとして提供されたものとして実施しても良い。
【産業上の利用可能性】
【0069】
本発明は,携帯用ゲーム機や携帯電話等に使用されるグラフィックス処理装置として有効に使用可能である。
【符号の説明】
【0070】
1 CPU
2 GPU
3 コアプロセッサ
4 固定機能パイプライン
4a ラスタライザ
4b テクスチャ部
4c ライティング部
4d ブレンディング部
5 プログラマブルパイプライン
6 ユニファイドシェーダ
7 頂点シェーダ
8 ジオメトリシェーダ
9 フラグメントシェーダ
10 カラーアップデータ
11 テクスチャ生成回路
12 キャッシュメモリ
13 外部メモリ
14 補間回路
15 検出回路
31 ノット関数テーブル
35 法線・ケガキ方向ベクトル演算手段
36 Cos_phiジオメトリックファクタ演算手段
37 内積演算手段
38 内積結果演算手段
41 乗算器群
42 セレクタ
43 加算器群
46 セレクタ
47 レジスタ
48 逆算テーブル
49 演算部
50 セレクタ
51 レジスタ
61 セレクタ
62 内積演算器
64 加算器
65〜69 レジスタ
70 乗算器
71 加減算器
72 逆平方根テーブル
73 乗算器
74 逆数テーブル
75 乗算器
76〜78 バス


【特許請求の範囲】
【請求項1】
予め決められた演算処理を行う固定機能パイプライン(4)と,実行する演算処理をプログラム可能なプログラマブルパイプライン(5)とを含むグラフィックス処理装置であって,
前記固定機能パイプライン(4)は,予め決められたピクセル単位の演算処理を行う固定フラグメントシェーダを有し,
前記プログラマブルパイプライン(5)は,ピクセル単位の演算処理を行う,プログラム可能なプログラマブルフラグメントシェーダを有する,
グラフィック処理装置。
【請求項2】
請求項1に記載のグラフィックス処理装置において,
ピクセル単位の演算処理を行うに際して,前記ピクセル単位の演算処理を,前記固定フラグメントシェーダ及び前記プログラマブルフラグメントシェーダのいずれで処理するか決定するための処理判定手段をさらに含む請求項1に記載のグラフィックス処理装置。
【請求項3】
請求項1又は2に記載のグラフィックス処理装置において,
前記固定フラグメントシェーダは,光源情報,及びオブジェクトの光に関する属性情報に基づいてピクセル単位のライティング処理を行うライティング部;ピクセル単位のテクスチャ処理を行うテクスチャ部;及びピクセル単位でのブレンディング処理を行うブレンディング部の少なくとも1つを含むグラフィックス処理装置。
【請求項4】
請求項1又は2に記載のグラフィックス処理装置において,
前記固定フラグメントシェーダは,ピクセル単位のテクスチャ処理を行うテクスチャ部を含み,
前記プログラマブルフラグメントシェーダは,前記テクスチャ部との第1のインタフェースを備え,
前記プログラマブルフラグメントシェーダは,前記第1のインタフェースを通じて前記テクスチャ部に対して前記プログラマブルフラグメントシェーダにおける演算処理結果を送信するとともに,前記テクスチャ部から前記第1のインタフェースを通じてテクスチャ処理が行われたデータを受け取る,グラフィックス処理装置。
【請求項5】
請求項1又は2に記載のグラフィックス処理装置において,
前記固定フラグメントシェーダは,オブジェクトの光に関する属性情報に基づいてピクセル単位のライティング処理を行うライティング部を含み,
前記プログラマブルフラグメントシェーダは,前記ライティング部との第2のインタフェースを備え,
前記プログラマブルフラグメントシェーダは,前記第2のインタフェースを通じて前記ライティング部に対して前記プログラマブルフラグメントシェーダにおける演算処理結果を送信するとともに,前記ライティング部によるライティング処理が実施されたデータを前記第2のインタフェースを通じて受け取るグラフィックス処理装置。
【請求項6】
請求項1〜5のいずれか一項に記載のグラフィックス処理装置において,
描画シーンをラスターフォーマットに変換して,2次元画像空間に表現するラスタライザを更に備え,前記プログラマブルフラグメントシェーダは前記ラスタライザから出力されたデータに対してピクセル単位での演算処理を行うグラフィックス処理装置。
【請求項7】
請求項6のグラフィックス処理装置において,
前記プログラマブルフラグメントシェーダは,頂点に対してその属性情報に変更を加える頂点シェーダと,入力される前記頂点からなるプリミティブから新たなプリミティブを生成するジオメトリシェーダとの少なくとも一方と統合されたユニファイドシェーダとして構成されており,前記頂点シェーダ,又は前記ジオメトリシェーダの出力が前記ラスタライザに入力され当該入力を処理した前記ラスタライザの出力が前記プログラマブルフラグメントシェーダに入力されるグラフィックス処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−164238(P2012−164238A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−25516(P2011−25516)
【出願日】平成23年2月9日(2011.2.9)
【特許番号】特許第4756107号(P4756107)
【特許公報発行日】平成23年8月24日(2011.8.24)
【出願人】(502401703)株式会社ディジタルメディアプロフェッショナル (26)
【Fターム(参考)】