(57)【特許請求の範囲】
【請求項１】
ＣＰＵ（１）によって処理された情報が入力されるグラフィック処理装置であって，
前記グラフィック処理装置は，
予め決められた演算処理を行う固定機能パイプライン（４）と，
実行する演算処理をプログラム可能なプログラマブルパイプライン（５）を含み，
前記固定機能パイプライン（４）は，予め決められたピクセル単位の演算処理を行う固定フラグメントシェーダを有し，
前記プログラマブルパイプライン（５）は，ピクセル単位の演算処理を行う，プログラム可能なプログラマブルフラグメントシェーダを有し，
前記ＣＰＵによって処理された情報は，前記固定フラグメントシェーダを含む固定機能パイプライン（４），又は前記プログラマブルフラグメントシェーダを含む前記プログラマブルパイプライン（５）のいずれかに入力され，演算処理される
グラフィック処理装置。
【請求項２】
請求項１に記載のグラフィックス処理装置において，
ピクセル単位の演算処理を行うに際して，前記ピクセル単位の演算処理を，前記固定フラグメントシェーダ及び前記プログラマブルフラグメントシェーダのいずれで処理するか決定するための処理判定手段をさらに含む請求項１に記載のグラフィックス処理装置。
【請求項３】
請求項１又は２に記載のグラフィックス処理装置において，
前記固定フラグメントシェーダは，光源情報，及びオブジェクトの光に関する属性情報に基づいてピクセル単位のライティング処理を行うライティング部；ピクセル単位のテクスチャ処理を行うテクスチャ部；及びピクセル単位でのブレンディング処理を行うブレンディング部の少なくとも１つを含むグラフィックス処理装置。
【請求項４】
請求項１又は２に記載のグラフィックス処理装置において，
前記固定フラグメントシェーダは，ピクセル単位のテクスチャ処理を行うテクスチャ部を含み，
前記プログラマブルフラグメントシェーダは，前記テクスチャ部との第１のインタフェースを備え，
前記プログラマブルフラグメントシェーダは，前記第１のインタフェースを通じて前記テクスチャ部に対して前記プログラマブルフラグメントシェーダにおける演算処理結果を送信するとともに，前記テクスチャ部から前記第１のインタフェースを通じてテクスチャ処理が行われたデータを受け取る，グラフィックス処理装置。
【請求項５】
請求項１又は２に記載のグラフィックス処理装置において，
前記固定フラグメントシェーダは，オブジェクトの光に関する属性情報に基づいてピクセル単位のライティング処理を行うライティング部を含み，
前記プログラマブルフラグメントシェーダは，前記ライティング部との第２のインタフェースを備え，
前記プログラマブルフラグメントシェーダは，前記第２のインタフェースを通じて前記ライティング部に対して前記プログラマブルフラグメントシェーダにおける演算処理結果を送信するとともに，前記ライティング部によるライティング処理が実施されたデータを前記第２のインタフェースを通じて受け取るグラフィックス処理装置。
【請求項６】
請求項１〜５のいずれか一項に記載のグラフィックス処理装置において，
描画シーンをラスターフォーマットに変換して，２次元画像空間に表現するラスタライザを更に備え，前記プログラマブルフラグメントシェーダは前記ラスタライザから出力されたデータに対してピクセル単位での演算処理を行うグラフィックス処理装置。
【請求項７】
請求項６のグラフィックス処理装置において，
前記プログラマブルフラグメントシェーダは，頂点に対してその属性情報に変更を加える頂点シェーダと，入力される前記頂点からなるプリミティブから新たなプリミティブを生成するジオメトリシェーダとの少なくとも一方と統合されたユニファイドシェーダとして構成されており，前記頂点シェーダ，又は前記ジオメトリシェーダの出力が前記ラスタライザに入力され当該入力を処理した前記ラスタライザの出力が前記プログラマブルフラグメントシェーダに入力されるグラフィックス処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，シェーダプログラムを有するパイプラインを備えたグラフィックス処理装置に関する。
【背景技術】
【０００２】
近年，ゲームやカーナビゲーションなどにおいては，立体的に描画を行う三次元の画像表示が普及している。三次元の画像表示は，例えばプログラマが画像生成アルゴリズムを定義するシェーダプログラムが組み込まれた画像処理に特化したプロセッサを搭載したグラフィックス処理装置などにより実現されている。
【０００３】
グラフィックス処理装置で三次元の画像表示を行う方法としては，ＣＰＵ側で処理を行うほか，グラフィックス処理装置において実装されたレンダリングパイプラインをプログラム可能にした構成が知られており，例えば特許文献１において示されている。プログラマブルシェーダの例としては，頂点シェーダや，ジオメトリシェーダ，フラグメントシェーダ等をそれぞれ個別に構成する他，これらを統合して統合シェーダとして構成するといった構成が可能である。このプログラム可能なシェーダプロセッサのハードウェア上の実装の仕方としては，必要な処理能力を参酌して，複数のプログラマブルシェーダが実装されたプロセッサをチップ上又は基板上に複数セットするという態様を採る。また，下記特許文献２には，グラフィック・オブジェクトを処理するように構成された第１の複数ステージを含むグラフィックス・パイプラインと，ビットマップ・イメージを処理するように構成された第２の複数ステージを含むビットマップ・イメージ・パイプラインと，前記パイプラインの１つに含まれる前記ステージの選択された１つ又は複数の出力を，前記パイプラインの１つに含まれる前記ステージの選択された別の１つ又は複数の入力に提供するためのイメージ・パスを定義する，選択的に構成可能な相互接続マトリックスを備えるイメージ・プロセッサが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０５４０８号公報
【特許文献２】特許４１１６３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら，プログラマブルシェーダが実装されたプロセッサを搭載していく場合，プログラマブルシェーダが様々な処理を汎用的に演算可能なようになっていることから，そのプロセッサは固定パイプに比べて大型化する傾向にある。また，所定の演算能力を得ようとするとそれだけ多くのプログラマブルシェーダを搭載する必要が生じるが，これは搭載空間の限られた携帯ゲーム機等においては特に顕著な問題である。更には，携帯機器においては電力消費量を抑制する必要もあり，大型化に伴う電力消費量の増加も無視できない。
【０００６】
そこで，本発明は，演算能力を向上させつつ，消費電力を抑制することができるパイプラインが搭載されたグラフィックス処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は，予め決められた演算処理を行う固定機能パイプラインと，実行する演算処理をプログラム可能なプログラマブルパイプラインを有するグラフィック処理装置に関する。そして，グラフィック処理装置は，ピクセル単位での演算処理を行うフラグメントシェーダを有する。そして，フラグメントシェーダは，固定機能パイプラインにおいて実装され，固定されたピクセル単位の演算処理を行う固定フラグメントシェーダと，プログラマブルパイプラインにおいて実装されプログラマブルなピクセル単位の演算処理を行うプログラマブルフラグメントシェーダとを有する。このグラフィックス処理装置の好ましい例は，ピクセル単位での演算処理が，固定フラグメントシェーダ，又は前記プログラマブルフラグメントシェーダのいずれにおいて処理されるかを決定する処理判定手段を更に有するものである。プログラマブルシェーダの例は，入力装置からの入力に従って，処理を行う演算の種類を変えることができるものである。たとえば，通常のコンピュータグラフィック処理を行う場合は，固定機能パイプラインを用いてピクセル単位の画像処理を行えばよい。一方，たとえば，コンピュータグラフィックスにおいて見る者の注目を集める部位や，特殊な演算処理を要する部分が存在する部分がある。このような場合，特殊な演算処理をプログラマブルフラグメントシェーダを含むプログラマブルパイプラインにおいて演算処理させればよい。たとえば，ひとつのコンピュータグラフィックを得る場合に，所定の部分については，その他の部分と異なるパイプラインを用いて演算処理するため，演算能力を向上させつつ無駄な消費電力を防止することができ，さらにグラフィック処理装置の大型化を防ぐことができる。プログラマブルフラグメントシェーダは，たとえば，特開２００５−３２２２２４号公報などのプログラマブルパイプライン構築方法に従って構築することができる。
【０００８】
また，処理判定手段の例は，プログラマブルシェーダに処理プログラムを実装させる際に，プログラマブルシェーダで処理する演算をもプログラムするものである。この場合，画像処理するデータがパイプラインに入力されると，処理判断手段が，処理すべき演算の種類を解析する。そして，処理判断手段は，記憶した演算の種類と処理するパイプラインに関する情報を読み出す。そのうえで，演算処理が，いずれのパイプラインで処理を行うものか判断する。そして，判断したパイプラインへとデータを出力する。このようにすれば，ある演算処理は，固定フラグメントシェーダにてピクセル単位の演算処理を行わせ，ある演算処理は，プログラマブルシェーダでピクセル単位の演算処理を行わせることができる。そして，いずれのパイプラインにおいて処理を行わせるかをプログラムすることで，画像処理する対象に応じて適切な演算処理を行うことができることとなる。なお，処理判断手段は，ピクセル単位での演算処理に関する命令を読み出し，この読み出した命令の演算処理に必要な演算能力が所定値以上であるか否かを判定して，所定値以上であればプログラマブルフラグメントシェーダにて，所定値以下である場合は固定フラグメントシェーダにて，ピクセルに対して処理を実行することとしてもよい。また，処理に必要な演算能力が所定値以上の場合，ある演算処理を固定フラグメントシェーダが処理し，ある演算処理をプログラマブルフラグメントシェーダが行い，演算結果を共有するようにしてもよい。さらに，特殊な演算処理を行う部分に含まれるピクセルについては，特殊な演算処理を行うためのフラグが付されており，処理判断手段はそのフラグの有無を読み取って，固定パイプライン又はプログラマブルパイプラインのいずれに演算処理のためのデータを出力するか決定してもよい。
【０００９】
また，固定フラグメントシェーダは，ピクセルに対して，光源情報，及びオブジェクトの光に関する属性情報に基づいてライティング処理を行うライティング部，前記ピクセルに対してテクスチャを適用する処理を行うテクスチャ部，前記ピクセルに対してブレンディング処理を行うブレンディング部の，少なくとも１つを含んで構成されるようにしてもよい。
【００１０】
固定フラグメントシェーダがテクスチャ部を含む場合，プログラマブルフラグメントシェーダは，テクスチャ部とのインタフェースを備え，プログラマブルフラグメントシェーダは，当該インタフェースを通じて前記テクスチャ部に対して処理結果を送信するとともに，前記テクスチャ部によりテクスチャを適用する処理が実施されたデータを受け取ることとしてもよい。
【００１１】
また，テクスチャ部と同じくプログラマブルフラグメントシェーダがライティング部とインタフェースを有するようにしてもよい。このときプログラマブルフラグメントシェーダは，インタフェースを通じてライティング部に対して処理結果を送信するとともに，ライティング部によるライティング処理が実施されたデータを受け取る。
【００１２】
また，描画シーンをラスターフォーマットに変換して，２次元画像空間に表現するラスタライザを更に備え，ラスタライザから出力されたデータに対してプログラマブルフラグメントシェーダが処理を行うようにしてもよい。
【００１３】
そして，プログラマブルフラグメントシェーダは，頂点に対してその属性情報に変更を加える頂点シェーダと，入力される前記頂点からなるプリミティブから新たなプリミティブを生成するジオメトリシェーダとの少なくとも一方と統合されたユニファイドシェーダとして構成されており，前記頂点シェーダ，又は前記ジオメトリシェーダの出力が前記ラスタライザに入力され当該入力を処理した前記ラスタライザの出力がプログラマブルフラグメントシェーダに返信されるようにしてもよい。
【発明の効果】
【００１４】
本発明によれば，演算能力を向上させつつ，消費電力を抑制することができるシェーダプログラムが搭載されたグラフィックス処理装置を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は，本発明のグラフィックス処理装置の構成を示すブロック図である。
【図２】図２は，テクスチャ部の具体的な構成を示すブロック図である。
【図３】図３は，テクスチャ部の検出回路を示す概略図である。
【図４】図４は，キャシュメモリに記憶された画素を示すブロック図である。
【図５】図５は，テクスチャ部の補間回路を示すブロック図である。
【図６】図６は，テクスチャ部の補間回路の詳細図である。
【図７】図７は，グラフィックス処理装置におけるライティング部の詳細を示すブロック図である。
【図８】図８は，法線・ケガキ方向ベクトル演算手段ブロック図である。
【図９】図９は，COS_PHI・ジオメトリックファクタ演算手段ブロック図である。
【図１０】図１０は，内積演算手段の基本構造例を示すブロック図である。
【図１１】図１１は，内積演算手段の基本構造例を示すブロック図である。
【図１２】図１２は，内積結果演算手段の基本構造例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下，発明を実施するための形態について説明する。本発明は，以下に説明する実施態様に限定されるものではない。本発明は，以下に説明する実施態様から当業者に自明な範囲で適宜修正される範囲を含む。本発明は3次元空間のレンダリングに適した画像表示装置に適用されるものである。３次元空間とは，3次元座標値（x,y,z）を持つ点の集合として定義され，立体形状（オブジェクト）は仮想3次元空間上に定義される多角形（主に3角形や4角形などのポリゴン）の集合として定義される。
【００１７】
図１は，本発明のグラフィックス処理装置２が搭載された画像表示装置を示すブロック図である。図1に示されるように，画像表示装置は，ＣＰＵ１とグラフィックス処理装置２（以下，ＧＰＵ２とする）を含んでいる。ＣＰＵ１は，コアプロセッサ３を含んでおり，ＣＰＵ１内のデータやプログラムを処理し，ＧＰＵ２に対して転送する。
【００１８】
ＧＰＵ２は，三次元の画像を演算するためのパイプラインを有しており，このパイプラインは固定機能パイプラン４と，プログラマブルパイプライン５とを含む。固定機能パイプライン４は，特定の演算処理を行うための構成された専用の演算回路を含む。固定機能パイプラインは，ラスタライザ部４ａ，テクスチャ部４ｂ，ライティング部４ｃ，及びブレンディング部４ｄのいずれか又は２つ以上を有するものが好ましい。これらのラスタライザ部４ａ，テクスチャ部４ｂ，ライティング部４ｃ，及びブレンディング部４ｄは，それぞれ本発明の固定フラグメントシェーダに相当する。固定フラグメントシェーダとしては，ラスタライザ部４ａ，テクスチャ部４ｂ，ライティング部４ｃ，ブレンディング部４ｄの全てを含まなくてもよい。また，ラスタライザ部４ａはプログラマブルパイプライン５上に実装してもよい。
【００１９】
ラスタライザ部４ａは，描画シーンをラスターフォーマットに変換して，２次元画像空間に表現可能とする処理を実行する部分である。ラスタライザ部４ａは，頂点によって構成されるプリミティブ情報からフラグメントを生成するための要素である。各フラグメントには位置情報だけではなく法線やテクスチャ座標などの情報も付随する。これらの情報は頂点の位置情報を元に補間計算により求められる。ライティング部４ｂは，光源ベクトル，視線ベクトル，ピクセルにおける法線ベクトルなどを利用してピクセルに対してライティング処理を実施するための要素である。ライティング部４ｂは，反射方程式を解くための手段を有しているものが好ましい。ライティング部は，オブジェクトに対して充てられる光源そのものの情報と，オブジェクトを構成するピクセルの光に関する情報とに基づいて演算処理を実行するものがあげられる。テクスチャ部４ｃは，画像データに基づきテクスチャを作りだし，ピクセルのどの座標に対してテクスチャの座標を適用させるかを決定するテクスチャマッピングを演算する処理を実行する。ブレンディング部４ｄは，例えばピクセルを半透明にするなどのブランディング処理を実施する。これらの回路や手段自体は公知であるため，本発明においても公知の回路及び手段を適宜採用できる。
【００２０】
また，プログラマブルパイプライン５は，複数種類のシェーダプログラムが実行可能なユニファイドシェーダ６を含む。ある実施態様に係る画像表示装置においては，ユニファイドシェーダ６が２つ搭載される形で実装されている。このユニファイドシェーダ６の搭載数は必要な演算能力に応じて適宜変更することができる。
【００２１】
ユニファイドシェーダ６は，例えば，頂点シェーダ７と，ジオメトリシェーダ８と，フラグメントシェーダ９とを含む。頂点シェーダ７は，頂点に対してその属性情報に変更を加えるものである。頂点の属性情報は一般的には位置，法線，アニメーションのための情報やテクスチャマッピングのためのテクスチャ座標などにより構成される。頂点シェーダ７のステージで仮想カメラから見た座標系への変換などの座標系の変換やキャラクターアニメーションのための形状変換処理などが行われる。また，頂点シェーダ７でライティング演算が行われることもある。
【００２２】
ジオメトリシェーダ８は，頂点処理後の頂点をポリゴンなどのプリミティブとして扱う。ここで入力プリミティブを分割するテッセレーション処理等が行われる。
【００２３】
フラグメントシェーダ９はラスタライザ部４ａで生成されたピクセルを順次処理していく。ここでは，ピクセルに対する最終的な色を決定するための処理（陰影付け）が行われる。陰影付けのための処理としてはテクスチャマッピング，ライティングなどの処理などが含まれる。また，その他フラグメント単位の処理として様々な処理が行われる。このフラグメントシェーダ９がプログラマブルフラグメントシェーダ９に相当する。
【００２４】
このグラフィックス処理装置では，コアプロセッサ３からＧＰＵ２に送信されたデータは一般的には，頂点シェーダ７，ジオメトリシェーダ８において頂点演算やジオメトリ演算処理が行われたのちに，ラスタライザ部４ａにおいてフラグメント化され，フラグメントがフラグメントシェーダ９に入力される。このデータ処理は，ジオメトリシェーダ８を経由しなくても良い。また，このグラフィックス処理装置２では，プログラマブルパイプライン５におけるフラグメントシェーダ９が，固定機能パイプライン４のテクスチャ部４ｂ及びライティング部４ｃとインタフェースを有している。したがって，たとえばフラグメント単位での通常の処理を行う場合は，固定機能パイプラン４を用い，キャラクタの顔など高度な描写が必要な場合のみフラグメントシェーダ９を用いるという構成をとることで，ユニファイドシェーダ６の搭載数が少なくても負荷がフラグメントシェーダ９に集中する時間が短期間で済むため，演算処理が円滑に行われる。つまり，本発明において，フラグメントシェーダはプログラマブルパイプライン５と固定機能パイプライン４との双方に実装されていることとなる。また，フラグメントシェーダ９を使用しなくて良い場合は頂点シェーダ７及びジオメトリシェーダ８に専念できる。なお，このように固定機能パイプライン４において，フラグメントシェーダ９の処理を分担しながら行う場合においては強力かつ高速なテクスチャ部４ｂとライティング部４ｃとが提供されていることが望ましい。このような固定機能パイプライン４をプログラムブルパイプライン５と並存させることで，特定の演算に対しては非常に迅速な処理が可能となる。すなわち，少なくともフラグメントシェーダの機能は，固定機能パイプライン４とプログラマブルパイプライン５の双方に実装されている。なお，データを固定フラグメントシェーダとプログラマブルフラグメントシェーダのいずれにおいて処理するかを決定するための構成としては，そのための処理判定部を備えるようにすればよい。処理判定部の判定方法としては，例えば，データに対して行われる命令を予め読み出し，この命令における演算処理に必要な演算能力が所定の値Ｎ以上であるかを判定するといった方法を採ることができる。所定値Ｎ以上の場合，複雑な処理が可能なプログラマブルフラグメントシェーダにて処理を行い，所定値Ｎ未満であれば，固定フラグメントシェーダにおいて処理を実行する。また，別の構成としては，「顔に対する処理」，「動く風景に対する処理」などのように特定の処理を予めプログラマブルフラグメントシェーダにおいてプログラミングし，この処理に該当するか否かを処理判定手段によって判定して，どちらのフラグメントシェーダにおいて処理を実行するかを決定することも可能である。
【００２５】
このようなテクスチャ部４ｂの詳細について図２を用いて説明する。図２においてテクスチャ部４ｂを構成するテクスチャ生成回路１１は複数のテクスチャアドレスプロセッサを有し，線形補間されたテクスチャアドレスＵ’及びＶ’と，視点軸Ｚの関数からなるＷを基にＵ’／Ｗ及びＶ’／Ｗの除算を経て２次元のテクスチャパターン座標ＵＶを決定する回路である。このＵＶ座標はテクスチャパターンを記憶するキャシュメモリ１２のアドレスとなり，本発明ではテクスチャ生成回路１１から複数の組のアドレスが出力する。
【００２６】
このキャシュメモリ１２はｍ行ｎ列の同時アクセスが可能な２次元配列のブロックから構成される。このｍ行ｎ列に含まれるｍｘｎ個の画素は原始テクスチャパターンを記憶する外部メモリ１３からキャシュメモリ１２に同時にロードできる数となる。キャシュメモリ１２ではこのｍｘｎ単位を一つのキャシュブロック容量とする。例えばｍ＝８，ｎ＝４とすれば３２画素がブロック当たりの画素数となる。テクスチャパターンアドレスがテクスチャ生成回路１１で求まると，キャシュメモリ１２からこの点を中心として隣接する複数の画素を同時に読みだす。
【００２７】
３次スプライン補間を例にとると，４行ｘ４列の合計１６画素が読み出される。これら１６画素は補間回路１４に同時に与えられ，目的の輝度を生成する。一方，キャシュメモリ１２はキャシュミスおよび無効キャシュブロックを検出するための検出回路１５を持つ。
【００２８】
図３はテクスチャ部４ｂの検出回路１５を示す。検出回路１５にはＵＶ座標を中心としてそれぞれ所定の領域（例えば４ｘ４）から，これに含まれるブロックアドレスを決定する加減算器１６と，これを記憶するレジスタ１７とレジスタ１７の入出力値を比較する比較器１８とで構成される。比較器１８はキャシュブロックｍｘｎに対応するＵＶ座標の下位ビット（例えば８ｘ４の場合，Ｕは下位から３ビット，Ｖは２ビット）を除く上位ビットのブロックアドレスのみを比較する。レジスタ１７はテクスチャドレスプロセッサの数，すなわちＵＶを一組の出力として，例えば４ラインを同時にマッピングする場合は４組必要であり，テクスチャドレス生成回路１１から出力される４組のＵＶアドレスに対して，それらの点を中心とする所定の領域に含まれるブロックアドレスを記憶する。
【００２９】
いま一つのレジスタ１７の入出力値が不一致を起こしたとすると，そのＵＶ座標値の上位ビットが下位ビットによって桁上げあるいは下げが生じ，それまでの有効キャシュブロックから読みだし領域の一部がオーバーフローあるいはアンダーフローを起こしたことを意味する。このキャシュミスが比較器１８で検出されると，同時に他の組の全てのレジスタとの比較を比較回路１８で行う。この新たなキャシュブロックアドレスが，もしいずれかのレジスタにすでに登録されていれば，キャシュメモリロード回路１９は起動しない。いずれの比較回路も不一致となればキャシュメモリには該当するブロックが存在しないものとしてキャシュメモリロード回路１９に対してロード要求を行う。
【００３０】
キャシュメモリロード回路１９はこの要求によって外部メモリから該当するブロックを読みだしキャシュにロードする。一方，ＵＶアドレスを中心に隣接する４ｘ４画素をその領域とし，またスケールが１より大きい拡大の場合，４ラインを同時にマッピングしてもそれぞれのアドレスを中心にした４ｘ４の領域全体は，８（Ｕ）ｘ４（Ｖ）をキャシュブロックサイズとした場合，最小６ブロック（１６ｘ１２画素）を用意すれば，キャシユ内に包括される。
【００３１】
この結果，ＵＶアドレスの移動によっていずれかのラインにキャシュミスが生じれば，新たに外部メモリから該当するデータを読み込むためのキャシュブロックが必要となる反面，６ブロックのうちいずれかのブロックにはすでに使用されないものが出て来る。このことから６ブロックそれぞれにキャシュブロックアドレス（前記下位ビットを除くＵＶ座標値）を記憶するレジスタ２０を設け，キャシュミスが生じたときこのレジスタ２０と加減算器１６からの全てのブロックアドレスとを比較回路２１において比較する。
【００３２】
もし一致するものがあれば有効キャシュブロックとしてそのままに，全て不一致となるレジスタがあれば，このレジスタに記憶されたキャシュブロックを無効ブロックとして前記キャシュミスによるロードを，このブロックに対して実行する。一方，キャシュメモリから読み出された画素と，ＵＶ座標およびそのアドレスは本発明に係わる図４に示す関係となる。読み出された４行４列の１６個の画素は図２の補間回路１４に行あるいは列毎に与えられる。
【００３３】
図４において，Ｐｘｙ（０≦ｘ，ｙ≦３）はキャシュメモリに記憶された画素であり，ＵＶ座標点（ｉ，ｊ）は常に画素Ｐ１１，Ｐ１２，Ｐ２１，Ｐ２２の４画素間に位置する。キャシュメモリから読み出された画素はそれぞれ本発明の図５の補間回路１４に加えられる。この回路は図２の補間回路１４となる。図４の各列の画素（Ｐ００，Ｐ０１，Ｐ０２，Ｐ０３），（Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３），（Ｐ２０，Ｐ２１，Ｐ２２，Ｐ２３），（Ｐ３０，Ｐ３１，Ｐ３２，Ｐ３３）がそれぞれの補間回路１４ａ，１４ｂ，１４ｃ，１４ｄ，の入力となる。これらの補間回路１４で求められた補間値Ｐ０ｊ，Ｐ１，ｊＰ２ｊ，Ｐ３ｊはさらに後段の補間回路１４ｅに出力され，これら４点間の輝度を補間する。なお，図４中，Ｐｘｙ（０≦ｘ，ｙ≦３）は参照画素であり，Ｐｉｊは補間画素である。
【００３４】
図６は本発明の補間回路１４の回路構成を示す。補間回路１４はノット関数テーブル３１と，加算器３２ａ，３２ｂ，３２ｃ，及び乗算器３３ａ，３３ｂ，３３ｃ，３３ｄで構成する。ここでノット関数テーブル３１には３次曲線を刻むノット値ｔが，０≦ｔ≦１の範囲で与えられる。また乗算器には４点の輝度Ｐ０，Ｐ１，Ｐ２，Ｐ３が与えられる。小数点部の値は図４のＲ＞３に示すように画素間内の一点の座標値ｊに対応する。ここでノット関数値の範囲０≦ｔ≦１は４点間（例えばＰ００−Ｐ０３）の距離に対応するが，小数点部の値を区間（Ｐ０１−Ｐ０２）で０≦ｊ≦１と定義するためにｔ＝（１／３）（ｊ＋１）の関係となる。これはｉ点も同様である。
【００３５】
ｊ点の補間テータＰ０ｊ，Ｐ１ｊ，Ｐ２ｊ，Ｐ３ｊは，このテーブルから出力される値と，参照する４行あるいは４列いずれか一方の画素の輝度，例えば４列の場合（Ｐ００，Ｐ０１，Ｐ０２，Ｐ０３），（Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３），（Ｐ２０，Ｐ２１，Ｐ２２，Ｐ２３），（Ｐ３０，Ｐ３１，Ｐ３２，Ｐ３３）とをそれぞれ積和して求められる。これは行であっても，あるいは列であっても良く，いずれを補間参照データ（制御点）とするかは任意である。
【００３６】
４組の補間回路から得られる値は図４に示すように補間をまず列に対して行ったとすれば，結果はそれぞれ同一のＶ座標上の値となる。次にこの４つの補間値Ｐ０ｊ，Ｐ１ｊ，Ｐ２ｊ，Ｐ３ｊを参照点（制御点）としてＰ１ｊ，Ｐ２ｊ間の補間値を求めることによって２次元空間の補間が終了する。これは前記Ｖの小数点部の値に対して，Ｕの小数点部の値ｉを図５の後段の補間回路１４ｅのノット関数テーブルに加えることになる。
【００３７】
こうして得られた補間点の輝度Ｐｉｊがマップされる面に与えられるテクスチャ輝度となる。実施例ではノット関数テーブルは３次相関関数とした。しかし，関数テーブルはその回路をＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｅｏｒｙ）とすることでその補間関数に対して入力アドレスをパラメータとする線形，ベージェ，Ｂスプライン，３次相関関数等を記憶することができる。一方，スケールが１以下の縮小の場合には，４つのテクスチャドレスプロセッサからのＵＶアドレスは離散的な値となる。すなわち複数のＵＶアドレスはそれぞれ１以上の距離を持つことになる。例えば８ブロック（１６ｘ１６画素）でキャシュメモリを構成した場合で，距離が４となる場合（スケール１／４），それぞれの点を中心に隣接する４画素を参照点として読みだし１点が補間される点では拡大と処理は変わらない。しかし，もし画素間の距離がキャシュサイズを越える場合，そのほとんどはキャシュミスを生じ一つのＵＶアドレスに一つのキャシュブロックが使用される。よって縮小には外部メモリとのアクセスが増加し，演算処理速度が低下する。
【００３８】
この速度低下を避けるにはサイズの異なる複数の原始テクスチャパターンを画像メモリに予め記憶しておくことが必要である。このサイズの異なる原始パターンを選択する方法としてテクスチャドレスプロセッサから得られた隣接するＵＶ座標値を差分してその距離を求める。距離が１あるいは以下の場合は拡大，２あるいは以上の場合は縮小となる。よってこの差分値によって変換されるＵＶアドレスを外部メモリアドレスとして，所定の原始テクスチャパターンにアクセスすることで最適なパターンの選択が可能となる。
【００３９】
このテクスチャ部４ｂの方式により拡大縮小を伴うマッピング面に対するテクスチャマッピングの高速の表示が可能となり，リアルタイムシステム，例えばバーチャルリアリティシステムに有効となる。
【００４０】
次に，本発明のライティング部４ｃの詳細なハードウェアにおける実装例について示す。ライティング部４ｃは，入力された補間データとテクスチャ部４ｂから入力されたバンプマッピング用データ，又はタンジェントベクトルデータから法線・ケガキ方向ベクトル演算手段３５において光源単位に画素ごとの輝度演算を行い，その結果をブレンディング部４ｄに出力する。このライティング部４ｃの各部に関して説明する。
【００４１】
図７は，ライティング部４ｃの各部の基本構成を含む。入力されたベクトルデータや，クオータニオンデータに基づいて変換されたベクトルデータなどは，法線・ケガキ方向ベクトル演算手段３５，C O S _ P H I・ジオメトリックファクタ演算手段３６，内積演算手段３７の各モジュールにおける演算を経て，内積結果演算手段３８から演算結果が出力される。一方，テクスチャ部４ｂからは，Bx,By,及びBzが入力され，この入力されたベクトル情報は，法線ベクトル又はケガキ方向ベクトルに対して座標変換を行うことで，表面のでこぼこを表現するバンプマッピングやさまざまなケガキ方向表現を行うために用いられる。
【００４２】
[法線・ケガキ方向ベクトル演算手段]
図８は，法線・ケガキ方向ベクトル演算手段３５の基本構成を示す概念図である。図８に示されるように，法線・ケガキ方向ベクトル演算手段３５は，各クオータニオンなどの情報が入力され，入力された情報を乗算するための複数個の乗算器群４１と，乗算器群４１から出力される乗算値から所定のものを選択して出力するためのセレクタ４２と，セレクタ４２から出力された出力値が入力され，入力された値を加算するための加算器群４３とを有している。
【００４３】
また，法線・ケガキ方向ベクトル演算手段３５には，セレクタ４６から出力された出力値を一時的に記憶するためのレジスタ４７，５１と，レジスタ４７に記憶された値のうちいずれかが入力され，入力値の逆数を求めるための逆数テーブル４８とを有している。なお，特に図示しないが，所望の値を得るため，適宜逆数演算手段や，加算（減算）手段，乗算（除算）手段，などを組合わせて用いればよい。
【００４４】
法線・ケガキ方向ベクトル演算手段３５では，下記式に示される演算を行うことで，法線ベクトル・ケガキ方向ベクトルを演算し，出力する。なお，図８には示されないが，下記の演算を行うに当り，q02（図では，q00とされている。以下同様。），q12，q22及びq32を加算する手段（１〜３個の加算器など）と，求められた(q02+q12+q22+q32)の逆数を得るための逆数演算手段（逆数テーブルなど）を具備し，セレクタ４２に入力されてもよい。演算の例は，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である。
【００４５】
また，法線・ケガキ方向ベクトル演算手段３５では，法線ベクトル・ケガキ方向ベクトルなどを演算した後，レジスタ４７に結果を格納する。そして，テクスチャ部４ｂから取得したバンプベクトルを用い，下記式（I）の演算式を実装した演算部４９にて，演算を行うことで，バンプベクトルにて変換が行われた法線ベクトル・ケガキ方向ベクトルを演算する。下記式（I）の演算式を実装した演算部４９は，たとえば，乗算器などの乗算手段と，各種情報を記憶するテーブルなどの記憶手段と，情報の入出力を行う入出力部などの入出力手段を具備するものにより構成できる。
【００４６】
【数１】
0004756107.tif 000002
【００４７】
また，法線・ケガキ方向ベクトル演算手段３５では，法線ベクトル・ケガキ方向ベクトルを演算するに当たって，クオータニオン演算のための乗算器４１にて乗算演算した後，セレクタ４２に中間結果を保存する。その後，クオータニオン演算部４４及び４５にて，乗算器及び加減算器４３を用いて，各ベクトルの成分の演算を行う。そして，セレクタ４６を通して，レジスタ４７に結果を格納する。その後，乗算器，加減算器及び，逆数テーブルを用いて，上記バンプベクトルによる法線ベクトルまたは，ケガキ方向ベクトルの変換処理を演算部４９にて行う。そして，演算結果をセレクタ５０を通して，レジスタ５１に格納する。
【００４８】
前項の例は，基本的には，バンプベクトルによる変換は法線ベクトルまたは，ケガキ方向ベクトルのどちらかに適用するための構造を採用している。しかしながら，複数クロックサイクルを用いて，どちらにも適用できる構造にしてもよいし，このときに入力バンプベクトルを1組だけではなく2組入力してもよいし，同じ演算部４９を２つ以上具備することで，複数ベクトルに対してバンプ変換処理を行う実装にしてもよい。
【００４９】
また，法線・ケガキ方向ベクトル演算手段３５では，複数クロックサイクルによる演算処理を行うことで，回路の共通化を図ることができる。これにより，ハードウェアサイズを小さくすることができる。以下では，この複数クロックサイクルによる演算処理に関して説明する。
【００５０】
[COS_PHI・ジオメトリックファクタ演算手段]
図９は，COS_PHI・ジオメトリックファクタ演算手段３６の基本構成例を示すブロック図である。図９に示されるように，COS_PHI・ジオメトリックファクタ演算手段３６は，たとえば，入力されるデータ（例えば，Ｌ，Ｎ，Ｔ，Ｖ）を選択するセレクタ６１，入力された値の内積を求める第１の内積演算器な６２と，入力された値の内積を求める第２の内積演算器６２と，第１，及び第２の内積演算手段６２からの出力ＤＰ０，ＤＰ１が入力され，入力値を加算する第1の加算器６４を備えている。
【００５１】
また，COS_PHI・ジオメトリックファクタ演算手段３６はＤＰ０，ＤＰ１，及び加算器６４からの出力などを一時的に格納するための中間パラメータ一時格納レジスタ６５〜６９とレジスタ６７の値を掛け合わせ２乗値などを得るための乗算器７０，乗算器７０の出力とレジスタ６５〜６９に記憶されるある値とを受取り，乗算器７０の出力値から出力とレジスタ６５〜６９に記憶されるある値を減算するための加減算器７１，加減算器７１の出力を受取り，この逆数平方根を得るための逆数平方根テーブル７２と，逆数平方根テーブル７２からの出力とレジスタ６５〜６９に記憶されるある値とを受取り，それらの値を乗算するための乗算器７３と，レジスタ６５〜６９の記録値の逆数を求めるための逆数テーブル７４と，逆数テーブル７４からの出力とレジスタ６５〜６９に記憶されたある値とを受取り，それらを乗算するための乗算器７５とを具備する。
【００５２】
そして，各要素は，バスなどで連結され，適宜情報の授受ができるようにされている。さらに，乗算器７３の出力は，COS_PHI（図ではCos_Phiとされている。）などとしてバス７６から出力される。また，乗算器７５の出力は，ジオメトリックファクタ（ＬＮ＿ＬＶ）などとしてバス７７から出力される。さらに，レジスタ６５〜６９に格納されたある値（ＬＮ値など）は，バス７８から出力されるようにされていてもよい。
【００５３】
このCOS_PHI・ジオメトリックファクタ演算手段３６では下記式(II)を適用してCOS_PHI(76)を求める。また，N_LV = (L・N)/|L+V|2にしたがってジオメトリックファクタLN_LV(77)を求める。さらに，及び，LN = L・Nに従って，LN(78)の演算を行う。
【００５４】
【数２】
0004756107.tif 000003
【００５５】
ただし，本発明の好ましい態様では，COS_PHIを求める回路など実装するに当たり，COS_PHIを式(３)のように近似して求めることで，ハードウェア量を減らす工夫を行うことができる。もちろん，本発明は，式(２)を求めるように実装してもよい。
【００５６】
【数３】
0004756107.tif 000004
【００５７】
図１０は，内積演算手段３７の基本構造例を示すブロック図である。図１０に示される内積演算手段は，たとえば，COS_PHI・ジオメトリックファクタ演算手段３６が具備するものであってもよいし，他の内積演算手段３７として機能するものであってもよい。この内積演算手段の例は，各種情報が入手される乗算器８１〜８３と，加算器８４，８５とを具備する。図１０に示される例では，３つの乗算器及び，２つの加算器を具備し，２組の３次元ベクトルの内積演算を行うことができるものである。すなわち，この内積演算手段３７では，入力された値（ベクトル値など）を適宜乗算する他，乗算した値を適宜加算することで，内積値を求めるのみならず，内積値の加算値をも求めることができる。どの値の内積値を求め，どの値を加算するかは，あらかじめ固定されていてもよいし，ユーザからの入力を受取って適宜変更できるようにされていてもよい。また，入力値は，セレクタ等で選択され適宜乗算器８１〜８３に入力されるようにしてもよい。
【００５８】
[内積演算手段]
図１１は， 内積演算手段の基本構造例を示すブロック図である。図１１に示されるとおり，内積演算手段３７は，たとえば，入力されたデータを選択するセレクタ８１，前記セレクタ８１で選択された値が入力され，入力された値の内積値を求める内積演算器６２，内積演算器６２で求められた値と一時的に記憶するためのＲＡＭ８２ａ〜８２ｃ，ＲＡＭ８２ａ〜８２ｃに格納された出力結果を選択するためのセレクタ８３，セレクタ８３で選択された内積演算結果を格納するレジスタ８４〜９０により実装されている。
【００５９】
図１１に示される内積演算手段３７のデータの流れの例を以下に示す。法線・ケガキ方向ベクトル演算手段３５及び，COS_PHI・ジオメトリックファクタ演算手段３６からベクトルデータを受け取り，これらデータを内部セレクタ８１にて選択し，内積演算器６２へ選択して入力する。セレクタは，例えば，ポインティングデバイスなどの入力に従うか，又は予め定められたベクトルの組み合せを選択する。内積演算器６２は，セレクタにて選択されたベクトルの組み合わせに対する内積演算を行い，内積演算結果をＲＡＭ８２ａ〜８２ｃに入力し，この出力をセレクタ８３によってＲＡＭ８２ａ〜８２ｃのうち，出力の格納先を選択しレジスタ８４〜９０のそれぞれに格納する。
【００６０】
[内積結果演算手段]
図１２は，内積結果演算手段３８の基本構造例を示すブロック図である。図１２に示されるように，内積結果演算手段３８は，内積演算手段３７から入力された内積演算結果，及び，システムバスなどのバスから各係数が入力される入力部分，乗算器９２ａ〜９２ｇ，加算器９３を具備する。そして，スペキュラ成分カラー及びディフューズ成分カラーが出力される。
【００６１】
スペキュラ成分カラーを演算するために，内積演算手段３７から入力されたＤＰ０８４，ＤＰ１８５に対して，それぞれジオメトリックファクタの乗算について，システムバスなどのバス経由で設定された設定によって乗算を行うか，1.0の固定値を乗算するかをセレクタ９４にて選択でき，乗算されたＤＰ０に対しては，システムバスなどのバス経由にて設定された設定によってＤＰ０係数９５の乗算を行うことができ，また，乗算されたＤＰ１に対しては，システムバスなどのバス経由にて設定された設定によってＤＰ１係数９６及び，内積演算手段３７から入力されたＲｒ８６，Rg８７，Rb８８との乗算を行う。なお，ＤＰ０係数９５は，スペキュラ輝度Ｄ０に対する係数を意味し，ユーザにより設定することができる。また，ＤＰ１係数９６は，スペキュラ輝度D1に対する係数を意味し，同様にユーザにより設定がすることができるようにしてもいいし,あらかじめハードウェアとして演算器とともに実装してもいい。これら演算されたDP0及び，DP1について，加算器９３にて加算が行われ，最後に内積演算手段３７から入力されたSpot８９が乗算器９２ｆで乗算され，スペキュラ成分カラーが出力される。
【００６２】
ディフューズ成分カラーを演算するために，
内積演算手段３７から入力されたS p o t ８９及び，COS_PHI・ジオメトリックファクタ演算手段３６から入力されるL Nが乗算器９２ｇにて乗算され， ディフューズ成分カラーが出力される。
【００６３】
本実装例では，ジオメトリックファクタの選択をセレクタ９４にて行う事ができる。一方，この部分をジオメトリックファクタ以外，例えば，内部演算手段３７からの出力結果や，補間されたベクトル・値を選択可能なようにしてもよいし，なくてもよい。
【００６４】
また，本実装例では，スペキュラ成分カラーを演算するために，3つの内積演算手段３７からの内積が入力できる実装となっている。しかしながら，それ以上または，それ以下の数の内積が入力可能とされてもよいし，この数及び構成は，入力により適宜調整可能とされていてもよい。このような調整は，例えば，プログラマブルロジック回路を適宜用いることで調整できる。
【００６５】
以上に示した，本実施形態によれば，固定機能パイプラインを構成するテクスチャ部４ｂ，及びライティング部４ｃが非常に高速な演算回路として設計されている。したがって，フラグメントシェーダ９は，これらの機能を転用することで，それ自体のプロセッサ数を少なくしても，高い処理能力を実現することができる。プロセッサ数が少なくなる結果チップ全体の小型化，及び省電力化が達成され，小型化，及び省電力化と高い演算能力の両立を行うことができるようになる。
【００６６】
また，フラグメントシェーダ９は，プログラマブルシェーダでもあることから，複雑なレンダリングが必要な場合などにおいても，これに対応するような処理を実行することができる。この時も，その他の通常の処理においては，固定機能パイプラインを活用することで，リソースを集中して複雑な処理に割り当てることができ，効率的なプロセッサの管理が可能となる。
【００６７】
また，本実施形態においては，フラグメントシェーダ９からテクスチャ部４ｂ，及びライティング部４ｃを利用することができるインタフェースを設けることとしたが，このインタフェースを設けない構成を採ることもできる。その場合，処理の内容によって，予め固定機能パイプライン４側を用いるか，プログラマブルパイプライン５側を用いるかを決めておけば同様の効果を得ることができる。この場合，プログラマブルパイプラインと固定機能パイプライン双方がテクスチャユニットを持つ必要がある。
【００６８】
上述の実施形態においては，各シェーダが統合されたユニファイドシェーダとして提示されたものを示したが，シェーダ毎に別のプロセッサとして提供されたものとして実施しても良い。
【産業上の利用可能性】
【００６９】
本発明は，携帯用ゲーム機や携帯電話等に使用されるグラフィックス処理装置として有効に使用可能である。
【符号の説明】
【００７０】
１  ＣＰＵ
２  ＧＰＵ
３  コアプロセッサ
４  固定機能パイプライン
４ａ  ラスタライザ
４ｂ  テクスチャ部
４ｃ  ライティング部
４ｄ  ブレンディング部
５  プログラマブルパイプライン
６  ユニファイドシェーダ
７  頂点シェーダ
８  ジオメトリシェーダ
９  フラグメントシェーダ
１０  カラーアップデータ
１１  テクスチャ生成回路
１２  キャッシュメモリ
１３  外部メモリ
１４  補間回路
１５  検出回路
３１  ノット関数テーブル
３５  法線・ケガキ方向ベクトル演算手段
３６  Ｃｏｓ＿ｐｈｉジオメトリックファクタ演算手段
３７  内積演算手段
３８  内積結果演算手段
４１  乗算器群
４２  セレクタ
４３  加算器群
４６  セレクタ
４７  レジスタ
４８  逆算テーブル
４９  演算部
５０  セレクタ
５１  レジスタ
６１  セレクタ
６２  内積演算器
６４  加算器
６５〜６９  レジスタ
７０  乗算器
７１  加減算器
７２  逆平方根テーブル
７３  乗算器
７４  逆数テーブル
７５  乗算器
７６〜７８  バス
【要約】      （修正有）【課題】電力消費とチップ搭載スペースを抑制しつつ，高速処理が可能なグラフィックス処理装置を実現する。【解決手段】入力されるプリミティブを構成するピクセルに対して予め決められた処理を行う固定機能パイプライン４と，プログラム可能なプログラマブルパイプライン５とを備え，固定機能パイプライン４においては，ピクセル単位での固定された演算処理を行う固定フラグメントシェーダが設けられ，プログラマブルパイプライン５にはプログラマブルなピクセル単位での演算処理を行うプログラマブルフラグメントシェーダが設けられている。処理の内容によって，これらのプログラマブルフラグメントシェーダと，固定フラグメントシェーダとを使い分ける。【選択図】図１【図１】
0004756107.tif 000005
【図２】
0004756107.tif 000006
【図３】
0004756107.tif 000007
【図４】
0004756107.tif 000008
【図５】
0004756107.tif 000009
【図６】
0004756107.tif 000010
【図７】
0004756107.tif 000011
【図８】
0004756107.tif 000012
【図９】
0004756107.tif 000013
【図１０】
0004756107.tif 000014
【図１１】
0004756107.tif 000015
【図１２】
0004756107.tif 000016