[第一の実施態様] 図1は、本発明の幾何演算装置の基本構成を示す全体図である。図1に示されるとおり、本発明の幾何演算装置(1)は、頂点データ出力装置(2)と頂点演算装置(3)とポリゴン演算装置(4)とラスタライズ前処理装置(6)と1又は複数の汎用演算装置(5)とを具備する。より具体的には、頂点データを出力する頂点データ出力装置(2)と、前記頂点データ出力装置と接続され、頂点に関する固定された演算を行う頂点演算装置(3)と、前記頂点演算装置と接続され、ポリゴンに関する固定された演算を行うポリゴン演算装置(4)と、入力元に前記頂点データ出力装置(2)、前記頂点演算装置(3)及び前記ポリゴン演算装置(4)のうち1つ又は2つ以上と接続でき、出力先に前記頂点演算装置(3)及び前記ポリゴン演算装置(4)のうち1つ又は2つと接続できる1又は複数の汎用演算装置(5)とを具備する。
前記汎用演算装置(5)は、複数であることが好ましく、その場合各汎用演算装置は他の汎用演算装置のいずれか1つ以上、好ましくは全ての汎用演算装置と伝送路により接続される。
なお、本発明の幾何演算装置は、前記ポリゴン演算装置(4)の出力に接続されるラスタライズ前処理装置(6)を具備してもよい。そして、この態様に係る幾何演算装置は、伝送路を介して前記頂点データ出力装置、頂点演算装置、ポリゴン演算装置、及びラスタライズ前処理装置と相互に接続可能であり、入力元に前記頂点データ出力装置(2)、前記頂点演算装置(3)及び前記ポリゴン演算装置(4)のうち1つ又は2つ以上が選択可能であり、出力先に前記頂点演算装置(3)、前記ポリゴン演算装置(4)及び前記ラスタライズ前処理装置(6)のうち1つ又は2つ以上が選択可能な1又は複数の汎用演算装置(5)とを具備する。
[基本動作例]この本発明の第一の実施形態に係る幾何演算装置の基本動作は、以下のとおりである。なお,Sはステップ(工程)を意味する。頂点データ出力装置(2)は、図示しないシステム内の記憶装置に保存された頂点データを読み込むかまたはシステム内のプロセッサによって頂点データを送り込まれて、各演算装置へ頂点データを出力する(S1)。各演算装置は、頂点データに含まれる属性情報に従って自らが演算を行うべきか判断する(S2)。前記頂点演算装置(3)、前記ポリゴン演算装置(4)、及び前記汎用演算装置(5)は、入力されたデータに対して、所定の演算処理や頂点データを変更する処理を行う(S3)。所定の演算処理が繰り返され、演算処理結果は、前記ポリゴン演算装置(4)へ出力される(S4)。前記ポリゴン演算装置(4)から前記ラスタライズ前処理装置(6)へポリゴン演算処理されたデータが出力される(S5)。この基本動作の後、たとえば、演算処理されたデータがラスタライズ処理後フレームメモリに記録され、表示装置によってはデジアナ変換などが施され、画像情報として出力される。
[基本要素の説明]以下では、本発明の幾何演算装置の基本要素について説明する。頂点データ出力装置(2)は、頂点データを出力するための装置である。頂点データ出力装置として、システムメモリからデータを転送するダイレクト・メモリ・アクセス(DMA)コントローラや、本発明の幾何演算装置を制御するマイクロコントローラがあげられる。DMAコントローラは、たとえば、マザーボード上にある各種の装置やメモリがCPUを介すことなくデータ転送を行うDMA転送において、通信の制御を行なう専用回路である。このDMAコントローラは、通常複数の通信経路(DMAチャネル)を持ち、同時に複数の通信制御が可能である。本例においては、例えば本発明の幾何演算装置に接続されたフレームメモリから頂点データを頂点データ出力装置に転送するのと同時に、システムメモリからテクスチャデータを前記フレームメモリに転送するといったことが可能である。
頂点データ出力装置が出力する頂点データは、たとえば、頂点座標、位置ベクトル、画像を形成するための画像情報と属性情報とを含むものがあげられる。属性情報には、たとえば、シェーディングなどのための法線ベクトル、テクスチャ座標、頂点カラーなどが含まれてもよい。そして、属性情報により、そのデータが前記頂点演算装置(3)及び前記ポリゴン演算装置(4)及び複数の前記汎用演算装置(5)のうちどの装置をどの順番で通過し、前記ラスタライズ前処理装置(6)に達するかが決定される。この属性情報として、演算処理を行う演算の種類を示す処理内容コードなどの処理内容情報;データの長さに関するデータ列長情報などのデータ長情報;処理に用いられる演算装置の順番に関する情報や次に頂点データが送られる演算装置に関する情報である送信先装置番号情報などの処理順情報;及び演算する内容を示す処理種別番号情報などを含むものがあげられる。
頂点演算装置は、頂点に関する固定された演算を行うための装置である。ここで、頂点に関する固定された演算は、その描画処理によって異なるが、例えば回転・拡大縮小などにより変換される頂点座標を求める演算、垂直ベクトルを求める演算、光源までの距離や方向を求める演算などがある。固定された演算の具体的な例として、マトリックス演算、正規化処理などがあげられる。このため、頂点演算装置は、たとえば、頂点に関するマトリックス演算、正規化処理等の固定演算機能が実装される。演算内容が固定されているので、実装コストの高い浮動小数点演算器を効率よく使用して高速な処理を行うように設計できる。すなわち、同じ性能を出す場合にプログラマブルな装置を使う場合と比較して浮動小数点演算器の個数を削減できる場合が多いため、低コストで実装できる。また、消費電力などを抑えように設計できるので、たとえば携帯電話など消費電力を小さくしたい画像表示装置に組み込む場合に特に有効に利用できる。
頂点演算装置は、例えば、入力部、演算部、及び出力部を具備する。頂点演算装置は、内部にキャッシュなどのメモリを含んでもよい。頂点演算装置の入力部は、通常複数の入力ポートを持つが、たとえば、5つのポートを持つものがあげられる。そして、例えば、入力部から入力されたデータをキャッシュなどに一時的に記憶し、演算部がそのデータに演算処理を施して、出力部から出力する。また、メモリ装置とバスなどの伝送路で連結されている場合は、適宜メモリ装置に記憶されたプログラムや各種データを読み出して、演算処理に用いてもよい。頂点演算装置により求められた頂点情報は、適宜メモリ装置や、頂点演算装置内のキャッシュメモリなどに記憶され、様々な演算に用いられてもよい。
頂点演算装置の入力部として、好ましくは、複数頂点分のデータを格納できるFIFO(先入れ先出し)メモリを具備するものがあげられる。FIFOメモリによりデータ受け渡し時のオーバーヘッドを隠蔽できる。
頂点演算装置の演算部として、好ましくは複数の浮動小数点加減算器、複数の浮動小数点乗算器、複数の浮動小数点逆数器、複数の浮動小数点レシプロカルスクエアルート(1/√)器、およびマイクロコード制御によるコントローラのうち少なくともひとつ以上を具備するものがあげられる。そして、これらのうち多くの加減算器及び乗算器は、ノーマライズ計算及びa*b+c*d+e*f+g*hなどの計算を行う、いわゆるdp4(4入力内積)演算器として使われることが好ましい。これらの演算器を用いれば、回路コストが削減できる。これらの演算器によって、入力される頂点データ(たとえば、位置ベクトル、ノーマル(法線)ベクトル、テクスチャUV座標などの情報を含むデータ)に対して、たとえば、マトリックス演算、ノーマライズ処理などを行う。マトリックスなどのパラメータ情報は、たとえば、システムプロセッサや幾何演算装置を制御するマイクロコントローラによって設定される。この設定のための経路、別の独立したバス(たとえば、汎用演算装置を介さないもの)であってもよい。
ポリゴン演算装置は、ポリゴンに関する固定された演算を行うための装置である。ポリゴンに関する固定された演算とは、例えば、頂点データに含まれる頂点座標や、頂点演算装置により求められた頂点座標などの頂点情報に基づいてポリゴンを生成するポリゴン生成演算処理;求められたポリゴンを用いて面法線ベクトルを算出する面法線ベクトル算出処理;面法線の単位ベクトルを算出する面法線単位ベクトル算出処理;ポリゴンに関するクリッピング(クリップ処理);ベクトルの極座標変換処理;又はカリング処理などがあげられる。このため、ポリゴン演算装置は、たとえば、ポリゴン生成機能、三角形等のポリゴンに関するクリッピング・カリングなどの固定演算機能が実装される。
ポリゴン演算装置は、たとえば、入力部、演算部、出力部を具備し、通常、内部にキャッシュなどのメモリを具備する。ポリゴン演算装置の入力部は、複数の入力ポートを持つが、ここでは5つのポートを持つものがあげられる。そして、たとえば、入力部から入力されたデータをキャッシュなどに一時的に記憶し、演算部がそのデータに演算処理を施して、出力部から出力する。また、メモリ装置とバスなどの伝送路で連結されている場合は、適宜メモリ装置に記憶されたプログラムや各種データを読み出して、演算処理に用いてもよい。
ポリゴン演算装置の入力部は、好ましくは複数頂点分のデータが格納可能なFIFOメモリがあり、これによりデータ受け渡し時のオーバーヘッドを隠蔽できる。演算部と出力部の間にはFIFOメモリを挟むことが好ましい。FIFOメモリを、たとえば、演算部と出力部とをつなぐ回路上に設けることで、回路の簡略化及び処理性能の向上につながる。出力部は、たとえば、接続先であるラスタライズ前処理装置又は汎用演算装置との通信を行う通信装置を具備するものがあげられる。
また、ポリゴン演算装置は、ポリゴンを生成するための頂点キャッシュ又はバッファとポリゴン生成演算部、面法線ベクトルなどを算出するための面法線ベクトル算出部、クリッピング処理を行うクリッピング処理部、又はカリング処理を行うカリング処理部のいずれか1つ又は2つ以上を具備するものであってもよい。また、ポリゴン演算装置が演算処理した情報は、メモリ装置やポリゴン演算装置内のキャッシュメモリなどに適宜記憶され、様々な演算に用いられてもよい。
クリッピングとは、表示枠からポリゴンなどの描画対象がはみ出している場合に、表示枠内部の部分だけを表示するように、画像データを切り抜き(クリップ)する処理を意味する。具体的なクリッピング処理装置として、たとえば、特開2004−102841号公報に記載された、「同次座標で表されるオブジェクト情報を視点座標系での頂点情報に変換する座標変換装置と、前記頂点情報を記憶する頂点バッファ部、クリップ面において前記頂点情報を基にクリップ テストを行うクリップ テスト処理部、前記クリップ テストにて分割が必要と判断されたプリミティブを分割処理行う分割部、前記頂点情報に対し透視変換処理を行い、スクリーン座標系頂点情報を作成する除算部を有するクリップ テスト処理装置と、前記スクリーン座標系頂点情報を基に新しくプリミティブを組み上げるラスタライザ装置とを備えることを特徴とするクリッピング処理装置」;及び、特開2004−118499号公報に記載された「入力画像を3次元 多面体を構成する多角形(ポリゴン)の頂点列データとしてポリゴンデータ記憶手段に取り込み、取り込んだ前記ポリゴンの頂点列データを処理して2次元スクリーン上に描画する3次元 画像表示装置において、前記ポリゴンの各頂点データが所定の画像表示領域に対して何処にあるかを決定するコード決定手段と、前記コード決定手段で決定されたポリゴンの頂点列データ出力が供給され、前記所定の画像表示領域の外にはみ出る前記ポリゴンの頂点をクリップ するクリッピング処理が必要なポリゴンかどうかを判定するクリッピング判定手段と、前記クリッピング判定手段の出力のうちクリッピング処理が必要なポリゴンが供給され、前記クリッピング判定手段と独立して前記クリッピング処理を行う1つ以上のクリッピング処理手段と、前記クリッピング判定手段の出力のうちクリッピング処理が必要でないポリゴンが供給されると共に前記1つ以上のクリッピング処理手段から出力されるクリッピング処理終了信号を検知して、終了している前記クリッピング処理手段によりクリッピング処理がなされたポリゴン頂点データを取り込むクリッピング処理検知手段と、前記クリッピング処理検知手段の出力が供給される描画手段とを備えたことを特徴とする3次元 画像表示装置」におけるクリッピング処理手段があげられる。
カリング処理にはフェースカリングとバックフェースカリングがあり、前者は例えば影などを描画する際にオブジェクトの背面側のポリゴンしか必要ないために前面側を削除してデータ量を減らすために使用され、後者は例えば通常のオブジェクトの描画において背面側は描画されないためにデータ量削減及び高速化のために背面側のポリゴンを削除するために使用される。
カリングを行うカリング部又はカリング装置として、公知のカリング部又はカリング装置などを適宜用いることができる。
メモリ装置などに記憶されたZバッファ情報を適宜利用して陰面消去を行うZバッファ法や、階層型Zバッファ処理による早期カリング法などがあげられる。具体的なカリング部またはカリング装置として、特開2004−280596号公報に記載の「Zバッファと、仮想空間に設置された光源を視点として、少なくとも前記影を落とすオブジェクトを含む所定領域内の各ピクセルのZ値を前記Zバッファ に書き込むZ値書込手段と、前記シャドウボリュームの元となる複数のポリゴンからなる平面状オブジェクトの各頂点の厚み方向に関する位置を、前記Z値書込手段によって前記Zバッファ に書き込まれた各ピクセルのZ値に応じて決定することによって、該平面状オブジェクトから前記シャドウボリュームを生成するシャドウボリューム生成手段とを備える」カリング装置;特開2001−184518号公報に記載の(処理装置から与えられる描画すべきポリゴンの全情報を保持するディスプレイリストバッファと、前記ディスプレイリストバッファに保持されている情報に基づき、透視変換と、前記ポリゴンに対する仮想視点とを求めるジオメトリエンジンと、描画すべきポリゴン面の奥行き情報を有するポリゴン面−Zバッファ と、仮想視点から描画すべきポリゴンを見たときの前記ディスプレイリストバッファの全てのポリゴンを透視変換するポリゴン−ジオメトリエンジンと、前記ポリゴン面のZ値を保持するポリゴン−Zバッファ と、前記ポリゴンの描画を保持するポリゴン−バッファと、表示装置に表示される画像を保持する画像バッファと、前記ポリゴン−ジオメトリエンジンで求められた各ポリゴンのZ値を保持するZバッファ と、前記ポリゴン−ジオメトリエンジンで求められた各ポリゴンのZ値が所定の条件を満たすとき、前記ポリゴン−Zバッファの値を描画したポリゴンのZ値に更新するポリゴン−レンダリングエンジンと、前記ジオメトリエンジンで求められた描画ポリゴンの座標と、前記Zバッファ のZ値とを参照して前記画像バッファのポリゴンを表示する領域に、前記ポリゴン−バッファの像を鏡像としテクスチャマッピングの要領で貼付けるレンダリングエンジンとを備えることを特徴とする3次元 画像描画装置)においても散られるZバッファ処理装置があげられる。
ポリゴン演算装置は、入力部、ポリゴンアッセンブル部、頂点バッファ、フェーステスト部、クリップテスト部、クリッピング処理部、演算部、出力部より構成されるものであってもよい。
ポリゴン演算装置のポリゴンアッセンブル部は、たとえば、頂点バッファと連携して、入力された頂点データより三角形ポリゴンを生成する。ポリゴンアッセンブル部の好ましい例は、3つのモードがあるものである。そして、たとえば、第一のモードでは頂点が3つ入力されるごとにそれを三角形ポリゴンとして生成する。第二のモードでは直前に入力された2つの頂点と新たに入力された1つの頂点により三角形ポリゴンを生成する。このモードにおいては、頂点が1つ入力されるごとにポリゴンが1つ生成されるため転送効率がよい。第三のモードは、ある時点において入力された頂点を円の中心とし、その後送られた頂点を円周上の点として、中心と円周上の隣り合った点を結んでできる三角形(などの多角形)をポリゴンとして生成する。このようなモードは、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって設定されてもよい。
ポリゴン演算装置のフェーステスト部は、たとえば、3つのモードがあるものがあげられる。たとえば、第一のモードは、バックフェースカリングを行う。すなわち、第一のモードは、視線ベクトルと各ポリゴンの面法線ベクトルを比較して、視点からみて裏を向いたポリゴンを検出し、廃棄する処理を行う。第二のモードは、フロントフェースカリングを行う。すなわち、第二のモードは、視線ベクトルと各ポリゴンの面法線ベクトルを比較して、視点からみて表を向いたポリゴンを検出し、廃棄する処理を行う。第三のモードは、全てのポリゴンを通過させる。このようなモードは、たとえば、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって行われるように設定すればよい。
ポリゴン演算装置のクリップテスト部は、たとえば、入力されたポリゴンが視体積の内側にあるか外側にあるか境界にかかっているかを判定する。入力されたポリゴンが視体積の内側にある場合は、入力されたポリゴンを演算部に出力する。入力されたポリゴンが視体積の外側にある場合は、入力されたポリゴンを廃棄する。入力されたポリゴンが視体積の境界にかかっている場合は、入力されたポリゴンをクリッピング部にクリップテスト結果とともに出力する。たとえば、クリップテスト部がもたらすクリップテスト機能は、モード設定によってオフにできるものが好ましい。このようなモードの設定は、たとえば、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって行われる。
ポリゴン演算装置のクリッピング部は、たとえば、頂点補間部、クリップテスト部、出力部を具備するものがあげられる。頂点補間部は、たとえば、視体積を構成する6面のうち特定の1面、又は向かい合った2面に関して、特定の1面の視体積内側の頂点とその面の視体積外側の頂点より境界上の点を算出し、それを新たな頂点として、新たなポリゴンを生成する。この新たなポリゴンに対し、前記のクリップテスト部は、再度クリップテストを行い、視体積を構成する6面のうち別の面に関して再度クリッピング処理が必要かどうか判断し、必要な場合は、そのポリゴンを前記の頂点補間部に差し戻す。クリッピング部の出力部は、新たに生成されたポリゴンを演算部に出力する。
演算部は、複数の浮動小数点加減算器、複数の浮動小数点乗算器、複数の浮動小数点除算器、複数の浮動小数点逆数器、複数の浮動小数点レシプロカルスクエアルート器、複数の浮動小数点アークタンジェント器、複数の浮動小数点アークサイン器、及びマイクロコード制御によるコントローラ等を具備するものがあげられる。多くの加減算器及び乗算器は、ノーマライズ計算に使われるため、これらの演算器は専用のものとして統合すると回路コストが削減できる。これらの演算器によって、たとえば、入力されるポリゴンデータを構成する位置ベクトルのビューマッピング処理やテクスチャUV座標等に対してのノーマライズ処理、ノーマルベクトルの極座標変換処理等を行う。
ビューマッピング処理に使われるスクリーンサイズ等のパラメータ情報は、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって設定される。この設定のための経路は別の独立したバスであってもよい。
ラスタライズ前処理装置は、出力する頂点データのソート、データ形式変換などのラスタライズ前処理を行うための装置である。このため、ラスタライズ前処理装置は、出力する頂点データのソート、データ形式変換等の機能が実装される。ラスタライズ前処理装置は入力部、演算部、出力部を具備する。ラスタライズ前処理装置は、さらに、データ形式を変換するデータ形式変換部、頂点座標をソートする頂点ソート部を具備してもよい。ラスタライズ前処理装置の入力部は複数の入力ポートを持つが、たとえば2つのポートを持つものがあげられる。ラスタライズ前処理装置は、ラスタライズ装置に対して頂点データやポリゴンデータを出力する。
ラスタライズ前処理装置の入力部は、好ましくは、複数ポリゴン分のデータが格納可能なFIFOメモリがあり、これによりデータ受け渡し時のオーバーヘッドを隠蔽できる。ラスタライズ前処理装置の出力部として、接続先であるラスタライズ装置との通信装置を含むものがあげられる。
ラスタライズ前処理装置のデータ形式変換部は、各頂点データを構成する位置ベクトルや色情報に関して、ラスタライズ装置の仕様に基づいて浮動小数点形式から整数へのマッピングや固定小数点形式への変換、異なる仕様の浮動小数点形式への変換等を行うものがあげられる。このような機能は、公知の方法によりもたらす設計できる。
ラスタライズ前処理装置の頂点ソート部は、入力された三角形ポリゴンの順番を並べ替え、ラスタライズ装置に対して必ず位置ベクトルのZの値が最大の頂点を最初に送り、その後反時計回りの順番で残りの2頂点を送るようにするものがあげられる。このような処理により、後段のラスタライズ装置が簡略化できる可能性がある。
汎用演算装置(5)は、入力データに対し、四則演算、関数演算などを含む汎用的な演算処理を行うための装置である。汎用演算装置(5)は、ひとつの幾何演算装置内に1つ又は2つ以上含まれることが好ましく、例えば6つの汎用演算装置を用いるものがあげられる。汎用演算装置(5)は、各種の演算を行うため、たとえば、演算プログラムを逐次実行するためのプロセッサ部と、入力部及び出力部とを具備するものがあげられる。
汎用演算装置の入力部は、たとえば、複数の汎用演算装置、及び頂点演算装置、ポリゴン演算装置からの入力情報を制御し、入力されたデータをプロセッサ部に引き渡すための部である。入力部は、通常複数の入力ポートを持つが、たとえば5つのポートを持つものがあげられる。
汎用演算装置のプロセッサ部は、たとえば、整数演算のための1つのALU(Arithmetic and Logic Unit: 演算装置)の他、4つの浮動小数点加減算器、4つの浮動小数点乗算器、1つの浮動小数点逆数器を含み、これらをマイクロコード制御のコントローラによって制御するものがあげられる。浮動小数点加減算器、浮動小数点乗算器、浮動小数点逆数器の数は、適宜変更してもよい。これらの浮動小数点演算器は、任意の組み合わせや順番で接続してもよい。例えば、前記のdp4演算器として設定してもよい。この特性により、高い浮動小数点演算性能を得ることができる。汎用演算装置のマイクロコードは、たとえば、システムプロセッサ、本発明の幾何演算装置を制御するマイクロコントローラ、頂点データ出力装置内のDMAコントローラなどによってロードされるものがあげられる。マイクロコードは、たとえば、オンザフライで書き換えることができ、特定のオブジェクトの処理後、マイクロコードを書き換えて別のオブジェクト処理時には別の処理を適用することもできる。
汎用演算装置の出力部は、たとえば、接続先である汎用演算装置、頂点演算装置、ポリゴン演算装置、またはラスタライズ装置との通信装置を含むものがあげられる。
汎用演算装置の数は、特に限定されないが、1個から100個があげられ、好ましくは2個〜20個であり、さらに好ましくは3個〜10個であり、特に好ましくは4個〜8個である。これらの数は、用途や計算量などに応じて適宜調整すればよい。また、たとえば、特定の汎用演算装置に大きな負荷がかかる場合などでは、その汎用演算装置の浮動小数点演算器の数を増やしてもよい。また、特定の汎用演算装置で非常に複雑な処理が行われる場合は、その汎用演算装置のプログラムメモリの量を増やすなどして、それぞれの汎用演算装置の仕様(演算装置の種類や数、メモリの種類や容量など)を異なるものとしてもよい。また、1つ、2つ以上、又は全ての汎用演算装置には頂点を生成機能が実装されることが好ましい。
汎用演算装置の例として、ガス状物体生成の処理及びポリゴン分割処理を行うものがあげられる。このような汎用演算装置は、たとえば、ガス状物体生成の処理のアルゴリズムの一部及びポリゴン分割処理のアルゴリズムを実装したマイクロコードをロードする。ポリゴン分割処理とは、システムと画像形成装置との通信帯域節約等のため、あらかじめオブジェクトを形成するポリゴンを間引いて大きなポリゴンで形成するように変更することで頂点データを減らし、幾何演算装置内で再分割することによって元の小さなポリゴンに戻すような処理を意味する。
汎用演算装置の別の例として、ガス状物体生成の処理及び影生成の処理を行うものがあげられる。このような汎用演算装置は、たとえば、ガス状物体生成の処理のアルゴリズムの一部及び影生成のアルゴリズムを実装したマイクロコードをロードする。
汎用演算装置の別の例として、ガス状物体生成の処理及び毛状物体生成の処理を行うものがあげられる。このような汎用演算装置は、たとえば、ガス状物体生成の処理のアルゴリズムの一部及び毛状物体生成のアルゴリズムを実装したマイクロコードをロードする。毛状物体として、たとえば、人間の髪の毛などがあげられる。
汎用演算装置の別の例として、ガス状物体生成の処理を行うものがあげられる。このような汎用演算装置は、たとえば、ガス状物体生成のアルゴリズムの一部を実装したマイクロコードをロードする。
汎用演算装置の別の例として、ガス状物体生成の処理を行う。このため、汎用演算装置には、ガス状物体生成のアルゴリズムの一部を実装したマイクロコードをロードする。
汎用演算装置の別の例として、乗算回路、加算回路、除算回路、減算回路、二乗回路、比較回路、サイン関数計算回路、コサイン関数計算回路、タンジェント関数計算回路、ベクトル演算回路などがあげられる。また、汎用計算装置の別の例として、曲面状の法線ベクトルおよび光源入射角をそれぞれ視点座標軸に対する水平および垂直角で定義し、そのうち面の法線ベクトルを入力変数として、拡散および鏡面反射光を求めるフォンシェーディング回路において、水平および垂直角のそれぞれの入力変数毎に独立した記憶素子を用いて面の傾きと入射角、および視点軸と反射角の方向余弦をそれぞれ求め、これから拡散光成分と鏡面反射光成分を得る手段としてそれぞれ鏡面反射成分は記憶素子からなる鏡面反射率変換回路を経たのち鏡面反射係数と、また拡散光は拡散係数とそれぞれ乗算し、これら2つの成分を加算して反射光を得るフォンシェーディング回路があげられる。具体的には、特開平8−263695号公報の実施例1における回路があげられる。
メモリ装置は、所定のデータや演算プログラムなどが記憶される任意の装置である。メモリ装置に記憶されるデータとして、頂点データ、頂点データを生成するために必要なテーブル情報、毛状物体を生成するアルゴリズムに必要なテーブル情報、ポリゴン分割処理の際の中間データ、二乗計算値、三乗値計算値、指数計算値、サイン関数計算値、コサイン関数計算値、タンジェント関数計算値、アークサイン関数計算値、アークコサイン計算値、アークタンジェント計算値、平方根計算値、立方根計算値、鏡面反射指数値、拡散反射指数値、色データ、無理つぶし画像データ、Zバッファデータなどがあげられる。他のメモリとしてはフレームメモリがあり、メモリ装置と同等に扱われる。なお、メモリ装置を構成するメモリとして、容量が比較的大きく処理が比較的低速なメモリと、容量が比較的小さいが処理が高速なメモリを用意することが好ましい。そして、低速なメモリは装置外部に設置し、高速なメモリは装置内部に設置することが好ましい。さらに、たとえば、頂点データのような容量の大きいデータは外部メモリに記憶させ、中間データなど容量が小さくアクセス頻度が高いデータは内部メモリに記憶させることが好ましい。
メモリ装置に記憶される演算プログラムとして、内挿補間を行うための演算プログラム;曲面状の法線ベクトルおよび光源入射角をそれぞれ視点座標軸に対する水平および垂直角で定義し、そのうち面の法線ベクトルを入力変数として、拡散および鏡面反射光を求めるフォンシェーディング回路において、水平および垂直角のそれぞれの入力変数毎に独立した記憶素子を用いて面の傾きと入射角、および視点軸と反射角の方向余弦をそれぞれ求め、これから拡散光成分と鏡面反射光成分を得る手段としてそれぞれ鏡面反射成分は記憶素子からなる鏡面反射率変換回路を経たのち鏡面反射係数と、また拡散光は拡散係数とそれぞれ乗算し、これら2つの成分を加算して反射光を得るフォンシェーディング演算プログラムなどがあげられる。
[動作例] 以下この本発明の第一の実施形態に係る幾何演算装置の動作について説明する。まず、頂点データ出力装置(2)は、システムプロセッサから指定される頂点データが保管されているシステムメモリ上のアドレス値等に基づいて、各演算装置へ頂点データを出力する(S1)。この頂点データ出力装置が出力する頂点データは、たとえば、画像を形成するための画像情報と属性情報とを含む。そして、属性情報により、そのデータが前記頂点演算装置(3)及び前記ポリゴン演算装置(4)及び複数の前記汎用演算装置(5)のうちどの装置をどの順番で通過し、前記ラスタライズ前処理装置(6)に達するかが決定される。この属性情報として、演算処理を行う演算の種類を示す処理内容コードなどの処理内容情報;データの長さに関するデータ列長情報などのデータ長情報;処理に用いられる演算装置の順番に関する情報や次に頂点データが送られる演算装置に関する情報である送信先装置番号情報などの処理順情報;及び演算する内容を示す処理種別番号情報などを含む。
頂点データ出力装置(2)からは、頂点演算装置(3)と、1又は複数の汎用演算装置(5)に対してバスなどの伝送路が引かれる。これにより、たとえば、頂点データ出力装置から出力される頂点データは、頂点演算装置と複数の汎用演算装置に到達するが、各演算装置はそのデータ内の属性情報を参照し、当該データが自装置宛かどうかを判断し、自装置宛であればデータを装置内に取り込む。
同様に、頂点演算装置からは、ポリゴン演算装置と複数の汎用演算装置に対しても伝送路が引かれる。ポリゴン演算装置も、送信されたデータ内の属性情報を参照し、必要に応じてデータを取り込む。ただし、多くの場合において頂点演算装置の出力は直接ポリゴン演算装置に宛てて送信されることが多いため、このための伝送路は汎用演算装置への伝送路とは別に設置してもよい。
同様に、好ましくは、汎用演算装置間も相互に接続される。これにより、前記頂点データ出力装置又は頂点演算装置又はポリゴン演算装置から出力されたデータは、複数の汎用演算装置がそれぞれ異なる演算を受け持ちその間をシーケンシャルに受け渡されて前記頂点演算装置又は前記ポリゴン演算装置又は前記ラスタライズ前処理装置に出力されることも可能であるし、複数の汎用演算装置が同じ演算を受け持ち出力されたデータを順番に受け取って演算処理後前記頂点演算装置又は前記ポリゴン演算装置又は前記ラスタライズ前処理装置に出力することも可能である。前者の場合はある演算処理を細分化することによって一つあたりの汎用演算装置が受け持つ演算が簡潔になり、性能向上につながる可能性がある。後者の場合は同じ処理を複数の汎用演算装置で行うため、性能は汎用演算装置一つを使う場合の個数倍となる。
また、前記汎用演算装置はメモリ装置に接続されているため、メモリを経由してデータのやりとりをすることも可能であるし、メモリ上の任意のデータを参照して演算することもできる。
各演算装置は、頂点データに含まれる属性情報に従って自らが演算を行うべきか判断する(S2)。すなわち、上記の頂点データには、処理順情報が含まれているので、各演算装置は、その処理順情報から自らが演算処理するかどうか判断する。
前記頂点演算装置(3)、前記ポリゴン演算装置(4)、及び前記汎用演算装置(5)は、入力されたデータに対して、所定の演算処理や頂点データを変更する処理を行う(S3)。すなわち、各演算装置は、自らが演算処理を行うと判断した場合、所定の演算処理を行う他、次の演算装置へ頂点データ(演算処理された頂点データであってもよい)を送ることができるように、たとえば処理順情報を変化させる。そして、変化された属性情報を含む頂点データが各演算装置へ送られる。そして、各演算装置は、この送られた頂点データに含まれる変更された属性情報に基づいて自らが演算処理するかどうか判断する。そして、自らが演算処理すると判断した場合は、所定の演算処理を行う。ただし、汎用演算装置を経ない演算処理を行う場合は、特に演算処理装置を指定する必要がなくなるので、属性情報を削除し、頂点データを軽減した上で演算処理を行ってもよい。このようにすれば、わずかであるが、情報処理を高速に行うことができ、消費電力を軽減することもできる。
このような所定の演算処理が繰り返され、演算処理結果は、前記ポリゴン演算装置(4)へ出力される(S4)。ポリゴン演算装置では、所定の演算処理が行われる。この際、頂点データに含まれる属性情報に従って、適宜汎用演算装置により演算が行われてもよく、先に説明したと同様にして属性情報が変更される。
次に、前記ポリゴン演算装置(4)から前記ラスタライズ前処理装置(6)へポリゴン演算処理されたデータが出力される(S5)。ラスタライズ前処理装置では、頂点座標のソートやデータ変換などのラスタライズに必要な処理が施される。
これらの基本動作の後、たとえば、演算処理されたデータがラスタライズ装置でラスタライズされ、フレームメモリに記録され、表示装置によってはデジアナ変換などが施され、画像情報として出力される。
[第2の実施態様] 本発明の幾何演算装置は、前記伝送路を介して前記頂点データ出力装置(2)、頂点演算装置(3)、ポリゴン演算装置(4)、及び汎用演算装置(5)と連結され、前記頂点データ出力装置(2)から出力されるデータを、頂点演算装置(3)、ポリゴン演算装置(4)、及び汎用演算装置(5)のうちどの装置をどの順番で用いて演算を行うか判断する判断装置(7)とを具備してもよい。
[基本動作例]この実施形態に係る幾何演算装置の基本動作は、以下のとおりである。頂点データ出力装置(2)は、前記頂点データを前記判断装置(7)へ出力する(S1)。前記判断装置(7)は、頂点データに含まれる処理情報に基づいて前記頂点演算装置(3)、前記ポリゴン演算装置(4)、及び前記汎用演算装置(5)のうちどの装置をどの順番で用いて演算を行うか判断する(S2)。前記頂点演算装置(3)、前記ポリゴン演算装置(4)、及び前記汎用演算装置(5)は、入力されたデータに対して、演算処理を行う(S3)。演算処理結果は、前記ポリゴン演算装置(4)へ出力される(S4)。前記ポリゴン演算装置(4)から前記ラスタライズ前処理装置(6)へ演算処理されたデータが出力される(S5)。この基本動作の後、たとえば、演算処理されたデータがラスタライズ装置でラスタライズされ、フレームメモリに記録され、表示装置によってはデジアナ変換などが施され、画像情報として出力される。
[画像形成装置] 次に、上記した幾何演算装置をコンピューター・グラフィックス処理回路として用いた画像形成装置について説明する。この画像形成装置として、たとえば、携帯電話、携帯用ゲーム機、家庭用ゲーム機、業務用ゲーム機、又はコンピュータなどがあげられる。画像形成装置は、たとえば、上記した幾何演算装置、ラスタライズ装置、フレームメモリ、及び表示装置を具備するものがあげられる。そして、表示装置として、CRT、液晶ディスプレイ、プラズマディスプレイパネル、有機ELディスプレイ、及びカラーフィルタを用いたディスプレイなどがあげられる。
なお、ラスタライズとは、コンピュータなどの画像処理装置が扱う文字や画像を、ディスプレイに表示できるように、小さな点の集まりで表現することを意味する。ラスタライズ装置が次の処理を始めてよい状態かどうか確認する機能を具備するものが好ましい。コンピュータなどの画像処理装置内部では、画像などを点の座標、それを結ぶ線や面の方程式のパラメータ、及び塗りつぶしなどの描画情報によって記憶している。こうした表現方法をベクタ形式という。一方、ディスプレイなどの出力装置は、通常画像を色のついた点(ピクセル)を縦横に並べた集合として扱うため、ベクタ形式の情報をそのまま印刷し、又は表示することはできない。このため、ベクタ形式の情報を展開して、点の集まりに変換する必要がある。これをラスタライズ(ラスタライゼーション)といい、このラスタライズ機能を有するハードウェアやソフトウェアを記録した媒体などをラスタライザ(ラスタライズ装置)という。
上記した幾何演算装置によりラスタライズ前処理が施されたデータは、ラスタライズ装置によりラスタライズ後フレームメモリに記憶され、任意でD/A変換装置によりデジタル・アナログ変換を施された後、表示装置へ伝えられ、描画される。このようにして、本発明の幾何演算装置を用いた画像を表示装置に描画できる。すなわち、本発明の幾何演算装置は、公知の画像生成装置に組み込んで用いることができる。
図2は、本発明の画像生成装置を示すブロック図である。
中央演算装置(CPU)101は,画像を生成するためのプログラムなどを制御する。ワークメモリ102は,CPU101で使用するプログラムやデータ及びディスプレイリストなどを記憶する。そして,CPU101は,ワークメモリ102に記憶されたプログラムなどを読み出して,所定の処理を行う。CPU101は,ワークメモリ102から,ワールド座標の3次元オブジェクトデータとしてのポリゴンデータを読出し,ポリゴンデータをジオメトリ演算回路103へ出力する。
ジオメトリ演算回路103は,入力されたポリゴンデータに対して,視点を原点とする視点座標系のデータに座標変換などを行う。ジオメトリ演算回路103は,処理したポリゴンデータを,レンダラー104へ出力する。上記した本発明の幾何演算装置は,ジオメトリ演算回路103として機能しうる。
レンダラー104は,ポリゴン単位のデータをピクセル単位のデータに変換する。レンダラー104は,ピクセル単位のデータをテクスチャ生成回路105へ出力する。
テクスチャ生成回路105は,テクスチャメモリ106に記憶されるテクスチャデータに基づき,ピクセル単位のテクスチャーカラーを生成する。テクスチャ生成回路105は,テクスチャーカラー情報を有するピクセル単位のデータを,照光処理回路107へ出力する。上記した本発明の幾何演算装置は,テクスチャ生成回路105として機能しうる。
照光処理回路107は,テクスチャーカラー情報を有するポリゴンに対し,ピクセル単位で法線ベクトル,重心座標などを利用して陰影付けを行う。照光処理回路107は,陰影付けした画像データを,表示回路108へ出力する。上記した本発明の幾何演算装置は,照光処理回路107として機能しうる。
表示回路108は,照光処理回路107から入力された画像データをフレームバッファ109に書き込み、またフレームバッファ109に書き込まれた画像データを読み出し、制御して表示画像情報を得る。表示回路108は,表示画像情報をモニター110へ出力する。
モニター110は,入力された表示画像情報にしたがって,コンピュータグラフィックス画像を表示する。
[概要の説明] 以下、本実施例1における処理の例を説明する。人間が一人いて雲がかかっているシーンの描画を想定する。また、人間を表現するオブジェクトは、意図的に荒いポリゴンで構成されているとする。
まず、システムプロセッサは、各汎用演算装置にそれぞれのマイクロコードをロードし、スタート信号を発行して汎用演算装置を作動させる。また、システムプロセッサは、オブジェクトに貼るテクスチャや頂点データ等をシステムメモリから前記メモリ装置に転送する。前記メモリ装置は、本発明の幾何演算装置だけでなく、その後段に接続されるべきラスタライズ装置にも接続されている。その後、人間を構成しているオブジェクトを描画するため、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置のモード設定及びパラメータ設定を行う。
全ての設定が終了したら、頂点データ出力装置に対してスタート信号を発行する。頂点データ出力装置は、オブジェクトの頂点データを頂点演算装置に出力する。そして、頂点演算装置は、頂点演算を行う。その後、頂点データ出力装置は、前記第1の汎用演算装置又は第2の汎用演算装置に頂点データを出力する。その際、処理内容コードは、ポリゴン分割処理を意味する番号を指定する。頂点データを受け取った第1の汎用演算装置及び第2の汎用演算装置は、そのデータの処理内容コードにしたがって、ポリゴン分割処理のプログラムを呼び出し、実行する。ポリゴン分割処理においては、当該頂点だけでなくその周辺の頂点情報も必要なため、メモリ装置にアクセスして必要な頂点情報を参照する。汎用演算装置を2つ使うように設定した理由は、本処理が複雑で時間がかかるためである。ここで、このような処理が可能になるように、汎用演算装置には頂点生成能力が実装されている。ポリゴン分割処理により細かく分割されたポリゴンの頂点データは、全てポリゴン演算装置に送られる。ポリゴン演算装置は、ポリゴン演算処理を行った後、ラスタライズ前処理装置にポリゴンを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。
ここまでの処理で、人間を構成する荒いポリゴンが、ポリゴン分割処理によってポリゴンが増やされることによりスムーズになり、ラスタライズ装置によって描画処理に伝えられる。
次に前記オブジェクトの影の描画のために、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置のモード設定及びパラメータ設定を行う。この際、ラスタライズ処理装置が、次の処理を始めてよい状態かどうか確認する。この場合、頂点データ出力装置が出力する頂点データは同一であるが、第1の汎用演算装置及び第2の汎用演算装置は、ポリゴン演算処理装置ではなく第3の汎用演算装置にポリゴンデータを出力する。第3の汎用演算装置は、影描画のための演算を行い、ポリゴンデータをポリゴン演算装置に出力する。ポリゴン演算装置は、ポリゴン演算処理を行った後、ラスタライズ前処理装置にポリゴンを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。このようにして表示装置における描画に用いられることとなる。
影描画のための頂点演算はそのほとんどが頂点演算装置による演算で事足りるが、若干別の演算が必要である。影の処理は必須ではないため、頂点演算装置に実装するには適さない。本装置においては、汎用演算装置は頂点演算装置の補助として使用することも可能である。
オブジェクトの処理が一通り終了すると、次は髪の毛の処理に移行する。この際、ラスタライズ装置が次の処理を始めてよい状態かどうか確認する。その後、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置に髪の毛描画のためのモード設定及びパラメータ設定を行う。全ての設定が終了したら、頂点データ出力装置に対してスタート信号を発行する。頂点データ出力装置は髪の毛を構成するライン情報を第4の汎用演算装置に出力する。第4の汎用演算装置は、少ない髪の毛のライン情報から髪の毛を増やす増毛処理を特定のアルゴリズムにて行い、頂点演算装置に出力する。本実施例においては、ラインは特殊なポリゴンとして扱っている。その後、頂点演算装置は、ポリゴン演算装置にデータを出力する。ポリゴン演算装置は、ラスタライズ前処理装置にデータを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。これにより、人間のオブジェクトに髪の毛が描画される。
[汎用演算装置のみによる幾何演算処理]
最後に雲すなわちガス状物体生成処理を行う。この処理は、汎用演算装置のみを用いるため、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置に特定のモード設定及びパラメータ設定を行う必要はない。頂点データ出力装置は、ラスタライズ装置が次の処理を始めてよい状態かどうか確認した後、ガス状物体のパーティクルデータを第1の汎用演算装置に出力する。この際、各汎用演算装置のプログラム用メモリが十分大きくて、例えば第1の汎用演算装置に関して、ポリゴン分割処理のプログラムとガス状物体生成のプログラムが両方格納できれば問題ない。しかし、どちらか片方しか入らない場合は、ガス状物体生成処理に入る前に、新たなプログラムをロードする必要がある。第1の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第2の汎用演算装置に出力する。第2の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理を終了した後、処理したデータを第3の汎用演算装置に出力する。第3の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第4の汎用演算装置に出力する。第4の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第5の汎用演算装置に出力する。第5の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第6の汎用演算装置に出力する。第6の汎用演算装置は、ガス状物体生成アルゴリズムの最後の処理が終了した後、処理したデータをラスタライズ装置に出力する。以上で、前述のシーン描画に関する幾何演算処理は終了し、次のフレームの処理に移行する。
−コンピューター・グラフィックス処理回路として用いられる幾何演算装置の例−
図3は各演算装置の入力ポートに何が接続されているかを示す一例である。接続の仕方は、事前に本装置に実装されうるアプリケーションを十分に吟味し、どの汎用演算装置にどのような演算をさせるかを決めた上で決定されるのが望ましい。ここで、本形態のように接続先を固定せず、例えば、入力ポートを増設してもよく、クロスバスイッチを使うなどして、あらゆる接続が可能になるように設計することも可能であるが、典型的な幾何演算装置においては実装されるアプリケーションがある程度限られるため、あらゆる接続が可能な設計は無駄が多い可能性がある。
本実施例において、頂点演算装置は、入力部、演算部および出力部より構成される。頂点演算装置の入力部内には複数頂点分のデータが格納可能なFIFOメモリがあり、これによりデータ受け渡し時のオーバーヘッドを隠蔽する。
頂点演算装置の演算部は複数の浮動小数点加減算器、複数の浮動小数点乗算器、複数の浮動小数点逆数器、複数の浮動小数点レシプロカルスクエアルート(1/√)器、及びマイクロコード制御によるコントローラ等によって構成される。多くの加減算器及び乗算器は、ノーマライズ計算及びa*b+c*d+e*f+g*hの計算を行ういわゆるdp4演算器として使われるため、これらの演算器を用いれば、回路コストを削減できる。これらの演算器によって、入力される頂点データを構成する位置ベクトルやノーマルベクトル、テクスチャUV座標等に対してマトリックス演算、ノーマライズ処理等を行う。マトリックス等のパラメータ情報は、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって設定される。この設定のための経路は別の独立したバスであってもよい。
頂点演算装置の出力部は、接続先であるポリゴン演算装置又は汎用演算装置との通信装置を含む。演算部の演算性能によっては、演算部と出力部の間にFIFOメモリを挟むと回路の簡略化及び処理性能の向上につながる場合が多い。
ポリゴン演算装置は、入力部、ポリゴンアッセンブル部、頂点バッファ、フェーステスト部、クリップテスト部、クリッピング処理部、演算部、出力部より構成される。
ポリゴン演算装置の入力部内には複数頂点分のデータが格納可能なFIFOメモリがあり、これによりデータ受け渡し時のオーバーヘッドを隠蔽する。
ポリゴン演算装置のポリゴンアッセンブル部は頂点バッファと連携して、入力された頂点データより三角形ポリゴンを生成する。ポリゴンアッセンブル部には3つのモードがあり、第一のモードでは頂点が3つ入力されるごとにそれを三角形ポリゴンとして生成する。第二のモードでは直前に入力された2つの頂点と新たに入力された1つの頂点により三角形ポリゴンを生成する。このモードにおいては、頂点が1つ入力されるごとにポリゴンが1つ生成されるため転送効率がよい。第三のモードにおいては、ある時点において入力された頂点を円の中心とし、その後送られた頂点を円周上の点として、中心と円周上の隣り合った点を結んで出来る三角形をポリゴンとして生成する。モードの設定はシステムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって行われる。
ポリゴン演算装置のフェーステスト部には3つのモードがあり、第一のモードではバックフェースカリングが行われる。すなわち、視線ベクトルと各ポリゴンの面法線ベクトルを比較して、視点からみて裏を向いたポリゴンを検出し廃棄する。第二のモードではフロントフェースカリングが行われる。すなわち、視線ベクトルと各ポリゴンの面法線ベクトルを比較して、視点からみて表を向いたポリゴンを検出し廃棄する。第三のモードでは全てのポリゴンを通過させる。モードの設定はシステムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって行われる。
ポリゴン演算装置のクリップテスト部においては、入力されたポリゴンが視体積の内側にあるか外側にあるか境界にかかっているかを判定する。内側にある場合は入力されたポリゴンを演算部に出力する。外側にある場合は入力されたポリゴンを廃棄する。境界にかかっている場合は入力されたポリゴンをクリッピング部にクリップテスト結果とともに出力する。本機能はモード設定によってオフにすることが可能である。モードの設定はシステムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって行われる。
ポリゴン演算装置のクリッピング部は、頂点補間部、クリップテスト部、出力部より構成される。頂点補間部においては、視体積を構成する6面のうちの特定の1面又は向かい合った2面に関して、特定の1面の視体積内側の頂点とその面の視体積外側の頂点より境界上の点を算出し、それを新たな頂点として、新たなポリゴンを生成する。クリップテスト部においては、新たに生成されたポリゴンに対して再度クリップテストを行い、視体積を構成する6面のうちの別の面に関して再度クリッピング処理が必要な場合はそのポリゴンを前記頂点補間部に差し戻す。出力部においては、新たに生成されたポリゴンを演算部に出力する。
演算部は複数の浮動小数点加減算器、複数の浮動小数点乗算器、複数の浮動小数点除算器、複数の浮動小数点逆数器、複数の浮動小数点レシプロカルスクエアルート器、複数の浮動小数点アークタンジェント器、複数の浮動小数点アークサイン器、及びマイクロコード制御によるコントローラ等によって構成される。多くの加減算器及び乗算器は、ノーマライズ計算に使われるため、これらの演算器は専用のものとして統合すると回路コストが削減できる可能性がある。これらの演算器によって、入力されるポリゴンデータを構成する位置ベクトルのビューマッピング処理やテクスチャUV座標等に対してのノーマライズ処理、ノーマルベクトルの極座標変換処理等を行う。
ビューマッピング処理に使われるスクリーンサイズ等のパラメータ情報は、システムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラによって設定される。この設定のための経路は別の独立したバスであってもよい。出力部は、接続先であるラスタライズ前処理装置又は汎用演算装置との通信装置を含む。演算部の演算性能によっては、演算部と出力部の間にFIFOメモリを挟むと回路の簡略化及び処理性能の向上につながる場合が多い。
ラスタライズ前処理装置は、入力部、データ形式変換部、頂点ソート部、出力部により構成される。入力部内には複数ポリゴン分のデータが格納可能なFIFOメモリがあり、これによりデータ受け渡し時のオーバーヘッドを隠蔽する。
ラスタライズ前処理装置のデータ形式変換部においては、各頂点データを構成する位置ベクトルや色情報に関して、ラスタライズ装置の仕様に基づいて浮動小数点形式から整数へのマッピングや固定小数点形式への変換、異なる仕様の浮動小数点形式への変換等を行う。
ラスタライズ前処理装置の頂点ソート部においては、入力された三角形ポリゴンの順番を並べ替え、ラスタライズ装置に対して必ず位置ベクトルのZの値が最大の頂点を最初に送り、その後反時計回りの順番で残りの2頂点を送るようにする。
ラスタライズ前処理装置の出力部は、接続先であるラスタライズ装置との通信装置を含む。
汎用演算装置は、入力部、プロセッサ部、出力部より構成される。入力部は、複数の汎用演算装置及び頂点演算装置、ポリゴン演算装置からの入力を制御し、入力されたデータをプロセッサ部に引き渡す。
汎用演算装置のプロセッサ部は、整数演算のための1つのALUの他、3つの浮動小数点加減算器、4つの浮動小数点乗算器、1つの浮動小数点逆数兼レシプロカルスクエアルート器を含み、これらをマイクロコード制御のコントローラによって制御する。8つの浮動小数点演算器は任意の組み合わせや順番で接続することが出来、例えば前記dp4演算器として設定することも可能である。この特性により、高い浮動小数点演算性能を得ることが出来る。汎用演算装置のマイクロコードはシステムプロセッサや本発明の幾何演算装置を制御するマイクロコントローラや頂点データ出力装置内のDMAコントローラによってロードされる。マイクロコードはオンザフライで書き換え可能であり、例えば特定のオブジェクトの処理後、マイクロコードを書き換えて別のオブジェクト処理時には別の処理を適用することも可能である。
汎用演算装置の出力部は、接続先である汎用演算装置や頂点演算装置、ポリゴン演算装置、ラスタライズ装置との通信装置を含む。
本実施例ではこの汎用演算装置を6つ含む。もちろん特定の汎用演算装置に大きな負荷がかかることがあらかじめわかっている場合はその汎用演算装置の浮動小数点演算器の数を増やしてもよい。また、特定の汎用演算装置で非常に複雑な処理が行われることがあらかじめわかっている場合はその汎用演算装置のプログラムメモリの量を増やすなどして、それぞれの汎用演算装置の仕様を異なるものにすることも可能である。
本実施例において、第1の汎用演算装置は、ガス状物体生成の処理及びポリゴン分割処理を行う。このため、第1の汎用演算装置には、ガス状物体生成の処理のアルゴリズムの一部及びポリゴン分割処理のアルゴリズムを実装したマイクロコードをロードする。ポリゴン分割処理とは、システムと画像形成装置との通信帯域節約等のため、あらかじめオブジェクトを形成するポリゴンを間引いて大きなポリゴンで形成するように変更することで頂点データを減らし、幾何演算装置内で再分割することによって元の小さなポリゴンに戻すような処理を指す。
第2の汎用演算装置は、ガス状物体生成の処理及びポリゴン分割処理を行う。このため、第2の汎用演算装置には、ガス状物体生成の処理のアルゴリズムの一部及びポリゴン分割処理のアルゴリズムを実装したマイクロコードをロードする。
第3の汎用演算装置は、ガス状物体生成の処理及び影生成の処理を行う。このため、第3の汎用演算装置には、ガス状物体生成の処理のアルゴリズムの一部及び影生成のアルゴリズムを実装したマイクロコードをロードする。
第4の汎用演算装置は、ガス状物体生成の処理及び毛状物体生成の処理を行う。このため、第4の汎用演算装置には、ガス状物体生成の処理のアルゴリズムの一部及び毛状物体生成のアルゴリズムを実装したマイクロコードをロードする。毛状物体とは、具体的には人間の髪の毛等である。
第5の汎用演算装置は、ガス状物体生成の処理を行う。このため、第5の汎用演算装置には、ガス状物体生成のアルゴリズムの一部を実装したマイクロコードをロードする。
第6の汎用演算装置は、ガス状物体生成の処理を行う。このため、第6の汎用演算装置には、ガス状物体生成のアルゴリズムの一部を実装したマイクロコードをロードする。
ここで、ガス状物体生成の処理は通常のポリゴンの処理とは全く異なり、そのため頂点演算装置やポリゴン演算装置、ラスタライズ前処理装置の高速な固定機能を使うことは出来ない。しかし、処理としては非常に複雑なため、6つの汎用演算装置全てを用いてアルゴリズムを6つに分割して実装し、頂点データ出力装置からデータを受け取り後、汎用演算装置のみを通過させてラスタライズ装置に演算結果を出力させる。このように、処理によっては汎用演算器のみを用いて処理をすることも可能である。
メモリ装置は、頂点データや毛状物体生成のアルゴリズムに必要なテーブル情報、ポリゴン分割処理の際の中間データ等を記憶させた。また、装置外部に設置した低コストで大容量であるが低速なメモリと、装置内部に設置した高コストで容量は少ないが高速なメモリの2系統を用意し、頂点データのような容量の大きいデータは外部メモリへ、中間データ等のサイズが小さくアクセス頻度が高いデータは内部メモリへ置くなど、用途によって使い分けた。
頂点データ出力装置及び頂点演算装置及びポリゴン演算装置及びラスタライズ前処理装置及び汎用演算装置は、図3の通り相互にバス状接続される。また、それとは別に前記全ての装置が接続されたバスを設け、このバスを使ってパラメータや動作モードの設定等を行う。このバスは低速でよく、したがって頂点データ等は扱わない。
図4は伝送路を流れるデータフォーマットの一例である。データ列の先頭の1ワードには、処理内容を示す処理内容コードと、データ列長、送信先装置番号、処理種別番号が含まれる。このデータ列を受け取った演算装置は、基本的には送信先装置番号は付け替えて出力しなければならない。ただし、本データフォーマットは汎用演算装置が経路内に含まれる場合にのみ有効であり、頂点データ出力装置と頂点演算装置間又は頂点演算装置とポリゴン演算装置間又はポリゴン演算装置とラスタライズ前処理装置間の伝送路においてはデータ長や処理内容、送信先等が固定されているため、送信するのはデータのみでよい。
処理内容コードは、頂点演算装置やポリゴン演算装置は基本的に単一の処理内容しかもたないため汎用演算装置でのみ有効なデータであり、汎用演算装置は入力されたデータ列の処理内容コードを参照し、そのコードに応じたプログラムを実行する。具体的には、コード番号をキーにテーブルを参照し、テーブルの出力をプログラムアドレスとして、プログラムの制御をする。プログラム内には新たに次の装置へ送信するデータの処理内容コードや送信先装置番号を設定する処理も含まれる。
データ列長は、画像を形成するための画像情報や頂点データの長さを示すデータである。
送信先装置番号は、データの受け取り先の指定に使われる。頂点演算装置やポリゴン演算装置、ラスタライズ前処理装置、汎用演算装置はそれぞれに独自の番号が与えられているため、例えばそれぞれの入力部において入力されたデータ内の送信先装置番号と自装置の番号を比較し、一致しなければデータを廃棄する仕組みを設けてもよい。また、汎用演算装置においてはデータを廃棄するかどうかの仕組みをプログラムで実装してもよい。また、各装置に与えられた番号以外の番号を送信先装置番号に指定し、その番号のデータが来たら無条件にデータを取り込むようなプログラムを実装することも可能である。これにより、ブロードキャスト機能やマルチキャスト機能が実現できる。
処理種別番号は、処理内容コードに順ずる情報であり、処理内容コードに応じて実行されたプログラム内でさらに条件によって処理を分岐する際などに使用される。したがって、不必要であれば指定する必要はない。ただし、前述の通り処理内容コードはテーブルを参照するように実装される場合があるため、処理内容コードを増やすとテーブルのサイズも大きくしなければならない。処理種別番号を使うことで、テーブルサイズを節約できる可能性がある。
以下、本実施例1における処理の例を説明する。人間が一人いて雲がかかっているシーンの描画を想定する。また、人間を表現するオブジェクトは、意図的に荒いポリゴンで構成されているとする。
まず、システムプロセッサは、各汎用演算装置にそれぞれのマイクロコードをロードし、スタート信号を発行して汎用演算装置を作動させる。また、システムプロセッサは、オブジェクトに貼るテクスチャや頂点データ等をシステムメモリから前記メモリ装置に転送する。前記メモリ装置は、本発明の幾何演算装置だけでなく、その後段に接続されるべきラスタライズ装置にも接続されている。その後、人間を構成しているオブジェクトを描画するため、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置のモード設定及びパラメータ設定を行う。
全ての設定が終了したら、頂点データ出力装置に対してスタート信号を発行する。頂点データ出力装置は、オブジェクトの頂点データを頂点演算装置に出力する。そして、頂点演算装置は、頂点演算を行う。その後、頂点データ出力装置は、前記第1の汎用演算装置又は第2の汎用演算装置に頂点データを出力する。その際、処理内容コードは、ポリゴン分割処理を意味する番号を指定する。頂点データを受け取った第1の汎用演算装置及び第2の汎用演算装置は、そのデータの処理内容コードにしたがって、ポリゴン分割処理のプログラムを呼び出し、実行する。ポリゴン分割処理においては、当該頂点だけでなくその周辺の頂点情報も必要なため、メモリ装置にアクセスして必要な頂点情報を参照する。汎用演算装置を2つ使うように設定した理由は、本処理が複雑で時間がかかるためである。ここで、このような処理が可能になるように、汎用演算装置には頂点生成能力が実装されている。ポリゴン分割処理により細かく分割されたポリゴンの頂点データは、全てポリゴン演算装置に送られる。ポリゴン演算装置は、ポリゴン演算処理を行った後、ラスタライズ前処理装置にポリゴンを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。
ここまでの処理で、人間を構成する荒いポリゴンが、ポリゴン分割処理によってポリゴンが増やされることによりスムーズになり、ラスタライズ装置によって描画処理に伝えられる。
次に前記オブジェクトの影の描画のために、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置のモード設定及びパラメータ設定を行う。この際、ラスタライズ処理装置が、次の処理を始めてよい状態かどうか確認する。この場合、頂点データ出力装置が出力する頂点データは同一であるが、第1の汎用演算装置及び第2の汎用演算装置は、ポリゴン演算処理装置ではなく第3の汎用演算装置にポリゴンデータを出力する。第3の汎用演算装置は、影描画のための演算を行い、ポリゴンデータをポリゴン演算装置に出力する。ポリゴン演算装置は、ポリゴン演算処理を行った後、ラスタライズ前処理装置にポリゴンを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。このようにして表示装置における描画に用いられることとなる。
影描画のための頂点演算はそのほとんどが頂点演算装置による演算で事足りるが、若干別の演算が必要である。影の処理は必須ではないため、頂点演算装置に実装するには適さない。本装置においては、汎用演算装置は頂点演算装置の補助として使用することも可能である。
オブジェクトの処理が一通り終了すると、次は髪の毛の処理に移行する。この際、ラスタライズ装置が次の処理を始めてよい状態かどうか確認する。その後、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置に髪の毛描画のためのモード設定及びパラメータ設定を行う。全ての設定が終了したら、頂点データ出力装置に対してスタート信号を発行する。頂点データ出力装置は髪の毛を構成するライン情報を第4の汎用演算装置に出力する。第4の汎用演算装置は、少ない髪の毛のライン情報から髪の毛を増やす増毛処理を特定のアルゴリズムにて行い、頂点演算装置に出力する。本実施例においては、ラインは特殊なポリゴンとして扱っている。その後、頂点演算装置は、ポリゴン演算装置にデータを出力する。ポリゴン演算装置は、ラスタライズ前処理装置にデータを出力する。ラスタライズ前処理装置は、ラスタライズ装置にデータを出力する。これにより、人間のオブジェクトに髪の毛が描画される。
最後に雲すなわちガス状物体生成処理を行う。この処理は、汎用演算装置のみを用いるため、頂点演算装置及びポリゴン演算装置、ラスタライズ前処理装置に特定のモード設定及びパラメータ設定を行う必要はない。頂点データ出力装置は、ラスタライズ装置が次の処理を始めてよい状態かどうか確認した後、ガス状物体のパーティクルデータを第1の汎用演算装置に出力する。この際、各汎用演算装置のプログラム用メモリが十分大きくて、例えば第1の汎用演算装置に関して、ポリゴン分割処理のプログラムとガス状物体生成のプログラムが両方格納できれば問題ない。しかし、どちらか片方しか入らない場合は、ガス状物体生成処理に入る前に、新たなプログラムをロードする必要がある。第1の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第2の汎用演算装置に出力する。第2の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理を終了した後、処理したデータを第3の汎用演算装置に出力する。第3の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第4の汎用演算装置に出力する。第4の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第5の汎用演算装置に出力する。第5の汎用演算装置は、ガス状物体生成アルゴリズムの一部の処理が終了した後、処理したデータを第6の汎用演算装置に出力する。第6の汎用演算装置は、ガス状物体生成アルゴリズムの最後の処理が終了した後、処理したデータをラスタライズ装置に出力する。以上で、前述のシーン描画に関する幾何演算処理は終了し、次のフレームの処理に移行する。