説明

Zソート処理回路およびこれを用いた3次元画像描画装置

【課題】 Zソート処理回路を設けることで、他のハードウエア資源への負担を軽減し、高速な描画を可能とする3次元画像描画装置を提供する。
【解決手段】 本発明に係るZソート処理回路24は、半透明ポリゴンのデプス平均値と最小保持デプス値とを比較する浮動小数点比較器130と、浮動小数点比較器130の入力段に接続された複数のANDゲート110−1〜110−23、120−1〜120−23と、精度制御用小数部マスク値140とを含む。ANDゲートの一方の入力には、半透明ポリゴンのデプス平均値の小数部102の23ビットデータおよび最小保持デプス値の小数部106の23ビットデータが供給され、ANDゲートの他方の入力には、マスク制御信号142を介して23ビットのマスク値が供給される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元画像を描画する3次元画像描画装置に関し、特に、半透明描画データ(半透明ポリゴン)をZ方向にソートするZソート処理技術に関する。
【0002】
3Dグラフィックスで使用される「モデル」と呼ばれる立体物は、ポリゴンと呼ばれる複数の三角形で構成され、各頂点の3次元座標値(x,y,z)により立体物と表される。一般に、図7に示すように、このモデルデータを構成する頂点の座標空間を「モデル座標」、モデルを配置する座標空間を「ワールド座標」、モニタに表示される絵を写すためのカメラを基準にした座標空間を「カメラ座標」、最終的なモニタ画面での座標空間を「スクリーン座標」と呼ぶ。
【0003】
3次元空間上に配置されたモデルデータを、モニタ等の2次元画面に表示する際の基本的な3Dグラフィックス処理は、次のような順番で行われる。
1)モデルとカメラをワールド座標空間に配置する。
2)モデルデータの各頂点データ(モデル座標)をワールド座標に変換し、更にそれをカメラ座標に変換して、各頂点座標値がカメラから見た際の座標値になるようにする。
3)ワールド座標空間に設定された「ライト(光源)」の方向や色などにしたがって、モデル各頂点のライティング計算(明るさや色味の計算)を行う。
4)カメラ座標での各頂点座標をスクリーン座標に透視変換して、その座標値を描画回路に入力して描画処理を行う。
【0004】
また、3次元グラフィックスでは、色付きガラスなどの向こう側が透けて見えるような物体を描画することがある。これを一般に、半透明描画と呼んでいる。半透明描画処理は、ガラスを描画する位置に、既にフレームバッファに格納されている背景の各ピクセルカラーデータを読み出し、その背景カラーとガラスカラーとを演算し、演算したカラーデータをフレームバッファに格納すれば良い。半透明の描画処理では、例えば、加算結果を1/2倍にする。ちなみに、半透明と呼ぶのは言葉的に判りやすいからで、実際のカラー演算割合は自由に指定することが可能であり、グラフィックス用語としては、「αブレンディング」(カラー演算割合パラメータをα値と呼ぶことから)と呼ばれる。
【0005】
1つの画面の中で、背景のような「不透明描画」とガラスのような「半透明描画」を混合して行う場合は、最初に不透明なものだけを全て描画し、その描画終了後に半透明なものを画面奥側にあるものから順番に半透明処理しながら描画することになる。例えば、図8(a)に示すように、最初に山や太陽などの全ての不透明な背景を描画し、次に、図8(b)、(c)に示すように、画面の奥側から半透明ガラスをA、C、Bの順番で描画する。
【0006】
上記のように、半透明描画処理では画面奥側にある描画オブジェクトから画面手前側に向かって順番に描画する必要があるため、描画処理する前に半透明描画オブジェクトを画面奥側から順番に並べ替えておく必要がある。上記の例では、半透明ガラスをA→C→Bの順に並べる。この処理は、画面に垂直な座標軸に当たるZ座標値でソートすることから、通常「Zソート処理」と呼ばれている。
【0007】
3Dグラフィックスにおける半透明オブジェクトは、上記のガラスのような平面物に限らず、図9のような立体物となる。この立方体を半透明描画する場合は、ポリゴン単位でZソート処理を行い、画面奥側のポリゴンから順番に半透明描画処理を行うことになる。
【0008】
Zソート処理について、いくつかの技術が報告されている。特許文献1は、ポリゴン識別部で不透明ポリゴンデータと半透明ポリゴンデータとの識別を行い、Zソートされた半透明ポリゴンデータの描画に要する描画予想時間を演算し、描画予想時間から不透明ポリゴンと半透明ポリゴンとの描画の切り換え時間を演算し、不透明ポリゴンデータから透明ポリゴンデータへの切り替えを可能にしている。これにより、プログラム開発時間の短縮化を期し、1フレーム期間中で描画すべき半透明ポリゴンデータを欠落なく描画できる半透明描画生成装置を提供している。
【0009】
特許文献2は、画像を構成するポリゴンを半透明なものと不透明なものとに区別し、不透明なポリゴンすべての描画が終了すると、半透明なポリゴンが奥方向から手前方向に向かう順番でZバッファを使用して描画される。これにより、不透明なポリゴンと半透明なポリゴンとを含む画像の描画を高速化している。
【0010】
特許文献3は、物陰に隠れて見えなくなるポリゴンを描画する無駄を省くために、各視点別に複数のポリゴンそれぞれについて見えるか否かを示した情報を用意し、描画処理時に、この情報を利用して、見えるポリゴンについてのみ描画するようにしている。
【0011】
特許文献4は、オブジェクトデータから、視点位置を基準として定められる視界内に位置するオブジェクトデータを選定し、選定したオブジェクトデータをスクリーン上の投影画像となる画像データに透視変換し、変換された画像データをZソートし、Zソートされた画像データ中、視点位置から所定距離以上離れた画像データを抽出し、数ドットずらした半透明な画像をテクスチャとする半透明ダミーポリゴンを生成し、半透明ダミーポリゴンを含む画像データにしたがって不鮮明なぼやけた状態の画像を描画する。これにより、3次元画像データを現実感のある画像として表示している。
【0012】
特許文献5は、画像を構成しているオブジェクト毎に割り当てたメモインメモリ上の複数の順序テーブルに画像を複数に分割した各ブロックのZ方向の情報をアドレスとして各ブロックの処理順序を示す順序データを書き込み、DMAコントローラにより複数の順序テーブル同士を段階的にZソートすることによって描画データを作成する。これにより、物理的に分かれたオブジェクトが近い深さにあった場合にも、ポリゴン単位の干渉を排除して、画質の良好な描画データを生成することを可能にしている。
【0013】
【特許文献1】特開2000−268190号
【特許文献2】特開平10−11610号
【特許文献3】特開平9−44697号
【特許文献4】特開2000−93654号
【特許文献5】特開平7−114654号
【発明の開示】
【発明が解決しようとする課題】
【0014】
従来の3次元画像描画装置では、ソフトウエアまたはハードウエアを用いてZソート処理を行っている。ソフトウエアによりZソートを行う場合、描画内容に最も適したZソート処理方法を提供できる自由度があるが、その反面、処理の最適化を図るアルゴリズムの設計には大きなコストを要する。また、演算結果を格納する比較的大きなメモリ容量を必要とし、かつメモリへのアクセス頻度も増加するため、Zソート処理時間の高速化には限界がある。
【0015】
一方、ハードウエアによるZソート専用回路を搭載した場合、頂点座標演算から描画処理までの処理を全てハードウエア処理で実行できるため、シンプルな構成を実現することが可能であり、かつCPU負荷を軽減することができ、システムの処理性能が向上する。しかし、ポリゴン毎のZ座標値を1つずつ比較してソートする方法のZソート回路とした場合、どのような描画内容にも対応可能であり、かつソート回路規模を小さくできる利点がある一方で、ソートするポリゴン数が増加すると、その二乗の回数でZ座標値比較を行うこととなり、ソート処理に多くの時間を要してしまい、Zソート処理を高速化することが難しいという課題がある。
【0016】
本発明は、上記従来の課題を解決するために成されたもので、ポリゴンのソートを高速に行うことができる3次元画像描画装置およびソート処理方法を提供することを目的とする。
さらに本発明は、ハードウエアによるZソート処理回路を設けることで、頂点座標演算から描画処理までをハードウエアにより処理することができる3次元画像描画装置を提供することを目的とする。
さらに本発明は、Zソート処理回路を設けることで、他のハードウエア資源への負担を軽減し、3次元グラフィックスの高速描画を可能とする3次元画像描画装置を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明に係る、半透明ポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてZソートする機能を備えた3次元画像描画装置は、ポリゴンについて画面奥行きの関数であるデプス値を算出するデプス値算出手段と、算出されたポリゴンのデプス値と基準デプス値とを比較する比較手段と、比較手段による比較結果に基づきポリゴンの描画順序を決定する描画順序決定手段と、ポリゴンのデプス値と基準デプス値の一部を比較対象から除外する比較精度制御手段とを有する。
【0018】
好ましくは、比較精度制御手段は、比較手段に入力されるポリゴンのデプス値および基準デプス値のデータの一部をマスクする。さらに好ましくは、ポリゴンのデプス値および基準デプス値は、それぞれ浮動小数点数による所定ビット数のデータビットによって表され、比較精度制御手段は、ポリゴンのデプス値および基準デプス値のそれぞれの小数部を表すデータビットの一部をマスクする。
【0019】
また、比較精度制御手段は、複数のマスク設定値を含み、当該複数のマスク設定値から選択されたマスク設定値に応じて、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクするようにしてもよい。
【0020】
好ましくは比較精度制御手段は、複数のANDゲートを含み、ポリゴンのデプス値の所定のデータビットおよび基準デプス値の所定のデータビットは、各ANDゲートの一方の入力に接続され、各ANDゲートの他方の入力には、マスク制御信号が接続される。基準デプス値は、比較される複数のポリゴンの中から選択されたデプス値であり、実施例の最小保持デプス値に相当する。また、ポリゴンのデプス値は、ポリゴンの頂点座標のZ座標軸方向の平均値を用いることができる。好ましくは、ポリゴンは、半透明ポリゴンである。
【0021】
本発明に係るポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてソートするソート処理方法は、ポリゴンについて画面奥行きの関数であるデプス値を算出するステップと、ポリゴンのデプス値と基準デプス値の一部をマスクし、ポリゴンのデプス値と基準デプス値とを比較するステップと、比較結果に基づきポリゴンの描画順序を決定するステップとを有する。
【0022】
好ましくはポリゴンのデプス値および基準デプス値は、浮動小数点数による所定ビット数のデータビットによって表され、ポリゴンのデプス値および基準デプス値の選択されたビットをマスクして比較する。
【発明の効果】
【0023】
本発明の3次元画像描画装置によれば、ポリゴンのデプス値と基準デプス値との比較において、ポリゴンのデプス値と基準デプス値の一部を比較対象から除外(マスク)し、比較精度を制御するようにしたので、比較精度を落とすことで、比較処理に要する時間を短縮し、ポリゴンのソートを高速化させることができる。さらに、本発明によれば、頂点演算、Zソート処理、および描画処理をハードウエアにより行うことが可能となるため、3次元画像の描画を高速化することができる。
【発明を実施するための最良の形態】
【0024】
本発明に係る3次元画像描画装置について図面を参照して詳細に説明する。
【実施例】
【0025】
図1は、本発明の実施例に係る3次元画像描画装置のシステム構成を示すブロック図である。3次元画像描画装置1は、システム全体を制御するCPU10、2次元または3次元のグラフィック描画を制御する描画用回路20、プログラムや画像データ等を格納するメモリ30、メモリ30へのアクセスを制御するメモリコントローラ40、メモリに格納された画像データをモニタに出力する画像表示用回路50、外部ポートに接続されプログラム等のデータを格納する外部メモリ60、内部バスや外部ポート(シリアルI/F)の制御を行う周辺制御回路70、画像表示用回路50から出力された画像データを表示するモニタ80を含んで構成される。
【0026】
描画用回路20はさらに、モデルの各頂点座標値の3次元演算(回転、拡張、移動など)や光源計算などを行って、スクリーン座標空間での頂点データを求めるジオメトリ回路22と、描画最小単位である三角形や四角形のポリゴンデータのZソート処理やクリッピング処理を行うZソート処理回路24と、描画リストにしたがってグラフィック描画を行うレンダリング回路26を含んでいる。本実施例では、描画用回路20をハードウエアにより構成することで、モデルの座標演算、Zソート処理、および描画処理をハードウエアにより実現することができる。
【0027】
図2は、3次元画像描画装置における描画処理の基本的なフローを示す図である。CPU10は、メモリ30内のプログラムデータ31および3次元モデルデータ32等にしたがって、モデルの回転や移動などの基となる各パラメータを計算する(ステップa)。CPU10は、計算したモデルデータの各パラメータにしたがって、ジオメトリ回路22が受け付ける形式のジオメトリ回路用描画リストデータ33を生成し、これをメモリ内に格納する(ステップb)。
【0028】
ジオメトリ回路22は、メモリ内のジオメトリ回路用描画リストデータ33を読み込みながら決められた頂点演算処理を行い、その結果をソート処理回路24に送る(ステップc)。
【0029】
ソート処理回路24は、ジオメトリ回路22から受け取った頂点演算された描画リストデータ33にしたがって、Zソート処理やクリッピング処理を行い、そしてレンダリング回路26が受け付ける形式のレンダリング回路用描画リストデータ34を生成し、これをメモリ内に格納する(ステップd)。
【0030】
レンダリング回路26は、メモリ内のレンダリング回路用描画リストデータ34を読み込みながら描画処理用ピクセルパラメータを計算する(ステップe)。描画処理用ピクセルパラメータとは、描画ピクセルのテクスチャ座標値、描画ピクセルのデプス値(すなわち画面奥行き方向座標値:Z値)、および描画ピクセルのフレームバッファ座標値などのピクセル描画に必要なパラメータである。
【0031】
レンダリング回路26は、描画ピクセルのテクスチャ座標値にしたがって各ピクセルに対応したテクスチャデータ35をメモリから読み込んで処理し、描画ピクセルのカラーデータを求め(ステップf)、さらに、描画ピクセルのデプス値とデプスバッファ36から読み込んだデプス値の比較結果にしたがってピクセル描画を行うかどうか判断する(ステップg)。
【0032】
レンダリング回路26はさらに、αブレンディング処理指定にしたがって描画ピクセルのカラーデータを計算し、描画ピクセルのフレームバッファ37の座標位置にデータを格納する(ステップh)。
【0033】
次に、本実施例のソート処理回路24の詳細について説明する。立体物を構成するポリゴンをZソートする際に比較するZ座標値は、ポリゴン各頂点(三角形の場合は3頂点)のZ座標値の「平均値」を用いることができる。但し、ポリゴンのZ座標値の最小値または最大値を用いてもよい。
【0034】
比較に使用する値は、画面に垂直な座標軸に関連する奥行き方向の値であれば良く、「Z座標値」には限らない。そこで、本明細書では、以降の説明において、比較に使用する値を総称として「デプス値」と呼ぶことにする。
【0035】
ソート処理回路24におけるZソート処理の概要は、次の通りである。
1)入力された半透明描画オブジェクトをポリゴン単位に分割し、各ポリゴンのデプス平均値を求める。
2)各ポリゴンのデプス平均値を大小比較して、画面奥側から順番に並べ替える。デプス平均値が等しい場合は、予め決められた法則に則って順番を決める。通常は、処理する順番が早い方を画面奥側となるようにする。
【0036】
一般に、頂点xyz座標値やデプス値は、「16bit/32bit固定小数点数」または「32bit浮動小数点数」を用いて表される。最近の3次元コンピュータグラフィックスでは、数値としての表現可能範囲が大きい32ビット浮動小数点数が使用されることが多い。以下の表は、IEEEによる国際標準規格により定められた32ビット浮動小数点数のデータ構成を示している。
【0037】
【表1】

【0038】
図3は、Zソート処理のフローを示す図である。ここでは、デプス値を画面手前より画面奥側の方が小さい値とする。始めに、ソート処理回路24は、最小保持デプス値に予め定められた最大数の値をセットする(ステップS101)。最小保持デプス値とは、全ての半透明描画ポリゴンの中で最も画面奥側(言い換えれば、デプス値が最小値)となるポリゴンのデプス平均値である。最小保持デプス値は、メモリ30またはレジスタ等に記憶される。
【0039】
ソート処理回路24は、入力された順に、3次元演算後の頂点座標を持つ、スクリーン座標投影処理後の半透明描画オブジェクトを三角形ポリゴン単位に分割し、これをポリゴンデータとしてメモリ30に格納する(ステップS102)。
【0040】
ソート処理回路24は、入力された順に三角形ポリゴンの3頂点分のデプス平均値を計算し、この平均値は、メモリ30に格納されたポリゴンデータの先頭アドレスと一緒にソート用データとしてメモリ30に格納される(ステップS103)。
【0041】
図4は、ポリゴンデータとソート用データのメモリ30への格納状態を示している。同図に示すように、ソート処理回路24は、入力された順に、ポリゴンデータ0、1、2・・・をメモリ30に格納する。各ポリゴンデータは、3頂点分のxyz座標値、テクスチャ座標値およびシェーディングカラー等を含んでいる。またソート処理回路24は、ポリゴンデータ0、1、2・・・に対応するソート用データ0、1、2・・・をメモリ30に格納する。各ソート用データは、対応するポリゴンデータの先頭アドレスとデプス平均値とを含んでいる。例えば、ソート用データ0は、ポリゴンデータ0の先頭アドレスとそのデプス平均値を含んでいる。
【0042】
ソート処理回路24は、ポリゴンのデプス平均値と最小保持デプス値を比較し、値の小さい方を最小保持デプス値としてレジスタに保持する(ステップS104)。全ての半透明描画オブジェクトのポリゴンデータとソート用データをメモリ30に格納し終えるまで、上記ステップS102からS104までの処理が繰り返される。
【0043】
次に、ソート処理が開始される。ソート処理回路24は、最初のソート用データ(図4のソート用データ“0”)のデプス平均値を一時保持デプス値としてレジスタにセットする(ステップS106)。ソート処理回路24は、メモリ30からソート用データを順番に読出し、デプス平均値と最小保持デプス値を大小比較する(ステップS107)。
【0044】
デプス値の比較を行った結果(ステップS108)、ソート用データのデプス平均値が最小保持デプス値よりも大きい場合には、さらにソート用データのデプス平均値と一時保持デプス値とを比較する。ソート用データのデプス平均値が一時保持デプス値よりも小さいとき(デプス平均値<一次保持デプス値)、一時保持デプス値をソート用データのデプス平均値に更新する(ステップS109)。
【0045】
ソート用データのデプス平均値と最小保持デプス値とが等しい場合には、ソート用データ内のポリゴンデータ先頭アドレス値を「ポリゴン描画順番用データ」としてメモリ30に格納する(ステップS110)。
【0046】
デプス平均値が最小保持デプス値よりも小さい場合には、その比較結果に対する処理は行われない。こうして、全てのソート用データについての比較処理が行われると、画面奥側の最初に描画すべき半透明描画オブジェクトの半透明ポリゴンが検出されたことになる(ステップS111)。また、一時保持デプス値には、最小保持デプス値の次に大きいデプス値(2番目のデプス値)が格納されることになるので、最小保持デプス値を一時保持デプス値に更新する(ステップS112)。次のソート処理では、2番目に小さなデプス平均値をもつ半透明ポリゴンが検出される。
【0047】
以上の処理を、全てのポリゴン分の「ポリゴン描画順番用データ」が完成するまで繰り返すことで(ステップS113)、Zソート処理が終了する(ステップS114)。ポリゴン描画順番用データは、描画リストデータ34としてメモリ30に格納される。
【0048】
図5は、ポリゴン描画順番用データの格納状態を示す図である。同図に示すように、ソート処理を行った結果、ポリゴン描画順番用データの先頭アドレス(ポリゴン先頭アドレス“0”)には、1番目に描画するポリゴンデータの先頭アドレス値が格納され、次のアドレスには、2番目に描画するポリゴンデータの先頭アドレス値が格納される。ポリゴン描画順番用データの先頭アドレスから順にその内容を参照することで、半透明ポリゴンデータを読み出すことができる。
【0049】
ポリゴンデータのデプス平均値を比較することによって、ポリゴンの描画順番を決定する場合、全て異なるデプス平均値を持ったN個の三角形ポリゴンがあれば、N個×N回の比較処理を実行することになる。つまり、最大で半透明描画ポリゴン数の2乗もの回数のデプス値比較処理を行わなければならない。
【0050】
本実施例では、ソート処理回路に簡単な回路を付加することによってデプス値の比較処理回数を低減し、Zソート処理を高速化している。同時に、比較精度の制御も可能にしている。
【0051】
半透明描画処理において、ポリゴン単位で画面奥側から順番に描画されるようにZソート処理を行う必要があるのは、ポリゴン同士が画面奥行き方向に対して重なる場合のみである。つまり、半透明描画ポリゴン全てを正しくソート処理しなくても正しい半透明描画は可能である。また、ある程度の大きさを持つ立体物を構成する各ポリゴンにおいて、半透明描画時に正しいソート処理をする必要のあるポリゴン同士のデプス平均値の差は、あまり小さな値にならないことの方が多い。
【0052】
このことから、デプス値の比較処理時の比較精度を落として、言い換えればデプス値の比較結果が「等しい」となる確率を上げることで、比較処理回数を少なくし、Zソート処理を高速化する。
【0053】
デプス値は、上記表に示したように、「単精度浮動小数点数(32bit値)」で表現されており、それらのデータは、「符号」、「指数部」、「小数部」の3つの値から構成されている。大小比較処理として、小数部の内容の比較結果が意味を持つのは、符号および指数部が共に等しい場合のみである。つまり、全ての半透明描画ポリゴンのデプス平均値の差が2倍以上ずつある場合、言い換えれば、全ての指数部が等しくない場合、小数部は、デプス平均値の比較結果に影響しない。デプス値は0.0〜1.0の値(単精度浮動小数点数の精度が最も高くなる範囲)となるように調整することが多く、符号は、正(”0”固定)となるので、比較処理に使用されない(もちろん比較処理しても良い)。
【0054】
これらのことを利用して、デプス平均値と最小保持デプス値を浮動小数点数比較回路に入力する前段で、デプス平均値と最小保持デプス値の小数部の所望のビットをマスクするANDゲートを付加している。
【0055】
図6は、本実施例のソート処理回路の構成を示す図である。同図において、半透明ポリゴンのデプス平均値の指数部100の8ビットデータが浮動小数点比較部130に入力される。半透明ポリゴンのデプス平均値の小数部102の23ビットデータは、ANDゲート110−1〜110−23の一方の入力に供給される。また、最小保持デプス値の指数部104の8ビットデータが浮動小数点比較部130に入力され、その小数部106の23ビットデータがANDゲート120−1〜120−23の一方の入力に供給される。図では、ANDゲート110−1および110−23とANDゲート120−1および120−23しか示していないが、実際には、ANDゲート110およびAND120は、小数部の小数点第1位から小数点第23位までに相当する23個のANDゲートを有している。
【0056】
さらに精度制御用小数部140は、23ビットについてのマスク値を有し、23ビットのマスク制御信号142が、ANDゲート110−1〜110−23およびANDゲート120−1〜120−23の他方の入力に供給される。精度制御用小数部140のマスク値は、比較精度制御部150からの制御信号によって可変することができる。
【0057】
例えば、マスク制御信号142を”0x400000”(16進数)とすれば、ANDゲート110−2〜110−23およびANDゲート120−2〜120−23の他方の入力において、小数点第2位以降がすべて論理“0”となるため、半透明ポリゴンのデプス値および最小保持デプス値の小数部の小数点第2位以下がマスクされ、比較対象から外される。したがって、最小保持デプス値とデプス平均値との大小比較において、小数部の小数点第1位のみが比較対象となり、両者が「等しい」となる確率が上昇するため、比較処理回数が減少し、Zソート処理が高速化される。
【0058】
また、マスク制御信号142を”0x7FFFFF”とすれば、ANDゲート110−1〜110−23およびANDゲート120−1〜120−23の他方の入力のすべてが論理“1”となる。この場合にはすべての小数部がマスクされないので、半透明ポリゴンのデプス平均値および最小保持デプス値の全ての小数部についての比較処理が行われる。その結果、Zソート処理は高速化されないが、その反面、比較精度を最高とすることもできる。
【0059】
比較精度制御部150は、例えば、半透明ポリゴンの数量や描画時間などの条件からマスク制御信号142のマスク値を設定することも可能である。例えば動画をモニタに表示する場合、1フレームの描画は一定時間(例えば、1/30秒)以内にしなければならない。1フレームの描画時間内に、不透明ポリゴンと半透明ポリゴンを描画するとき、半透明ポリゴンの描画時間は、1フレームの描画時間から不透明ポリゴンの描画時間を引いた値となる。したがって、描画すべき半透明ポリゴン数が多くなると、ソート処理を高速化しなければならない。このため、半透明ポリゴン数が一定数よりも多きときには、幾分だけ比較精度を落すようにマスクするビット数を多くして高速化し、その反対に、半透明ポリゴン数が一定数よりも少ないときは、比較精度を落すことなく、マスクするビット数を少なくし、あるいはマスクしないようにしてもよい。
【0060】
さらに比較精度制御部150は、予め複数のマスク値を用意しておき、複数のマスク値から所望のマスク値を選択し、これを精度制御用小数部140へ供給するようにしてもよい。例えば、指数部の値などにしたがって、複数のマスク値から1つを選択するようにしても良いし、描画する画像の種類によって比較精度を可変するようにしてもよい。さらに、モニタの解像度があまり高くない場合には、比較精度を落とすようにしてもよい。
【0061】
このように、精度制御用小数部140のマスク制御信号142とデプス平均値および最小保持デプス値の小数部のデータビットを入力としたANDゲート110、120を付加するだけで、デプス値比較精度を簡単に制御することができ、Zソート処理を高速化することができる。
【0062】
またジオメトリエンジン等のハードウエアによってポリゴンデータの頂点座標の演算を行う場合、その演算結果データをZソート処理することになるが、ソフトウエアによるZソート処理を行うと、演算結果データを一旦メモリに出力して処理しなければならず、全体の描画処理として、頂点演算(ハードウエア)→Zソート(ソフトウエア)→描画処理(ハードウエア)が混在し、各処理の開始と終了のタイミング管理が複雑化してしまう。しかし、本実施例の場合、Zソート処理回路を搭載することで、描画用回路20のハードウエア処理が可能となり、簡単なシステム構成で、高速のZソートを実現することができる。
【0063】
なお比較処理時の小数部有効ビット数を少なくして比較精度を落とすと、Zソート処理は高速化されるが、各半透明描画ポリゴンの描画順番が正確でない部分がでてくる可能性が増加する。これについては、半透明描画オブジェクト(複数ポリゴンで構成される物体)単位などで画面奥行き方向のソート処理をソフトウエアで行うなどして、ソート処理回路へのオブジェクト入力を画面奥側オブジェクトから順番に行うようにすることで緩和できる。オブジェクトは、通常、数百〜数千ポリゴンで構成され、画面内の個数は多くはないので、ソフトウエア処理しても重い処理にはならないことが多い。
【0064】
上記実施例では、単精度浮動小数点数のデプス値に対する制御としているが、倍精度浮動小数点数(64bit値)や、指数部と小数部から構成されるその他のデータ形式およびbit数の浮動小数点数にも適用できる。もちろん、指数部にもマスク値を用意しても良い。
【0065】
上記実施例に係るZソート処理回路は、半透明ポリゴンについてのZソートの例を示したが、これに限らず、不透明描画オブジェクトのポリゴンのZソートを行うことができる。特に、Zバッファを用いずに、不透明ポリゴンを画面奥側から画面手前または画面手前から画面奥側にZソートして描画する場合に、本発明を適用することができる。
【0066】
本発明の好ましい実施の形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【産業上の利用可能性】
【0067】
本発明に係る3次元画像描画装置およびZソート処理方法は、3次元グラフィックスコンピュータ、ビデオゲーム機、遊技機、およびその他の映像装置などにおいて利用される。
【図面の簡単な説明】
【0068】
【図1】本発明の実施例に係る三次元画像描画装置のシステム構成を示すブロック図である。
【図2】描画用回路の基本的な処理を示す図である。
【図3】Zソート処理のフローを示す図である。
【図4】ポリゴンデータとソート用データの格納状態を示す図である。
【図5】ポリゴン描画順番用データの格納状態を示す図である。
【図6】本実施例のソート処理回路を示す図である。
【図7】モデルデータの座標空間を示す図である。
【図8】半透明描画を説明する図である。
【図9】立体物の半透明オブジェクトの例を示す図である。
【符号の説明】
【0069】
1:3次元画像描画装置
10:CPU
20:描画用回路
30:メモリ
40:メモリコントローラ
50:画像表示用回路
100:デプス平均値指数部
102:デプス平均値小数部
104:最小保持デプス値指数部
106:最小保持デプス値小数部
110−1〜110−23、120−1〜120−23:ANDゲート
130:浮動小数点比較器
140:精度制御用小数部
142:マスク制御信号
150:比較精度制御部

【特許請求の範囲】
【請求項1】
ポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてソートする機能を備えた3次元画像描画装置であって、
ポリゴンについて画面奥行きの関数であるデプス値を算出するデプス値算出手段と、
算出されたポリゴンのデプス値と基準デプス値とを比較する比較手段と、
比較手段による比較結果に基づきポリゴンの描画順序を決定する描画順序決定手段と、
ポリゴンのデプス値と基準デプス値の一部を比較対象から除外する比較精度制御手段と、
を有する3次元画像描画装置。
【請求項2】
比較精度制御手段は、比較手段に入力されるポリゴンのデプス値および基準デプス値のデータの一部をマスクする、請求項1に記載の3次元画像描画装置。
【請求項3】
ポリゴンのデプス値および基準デプス値は、それぞれ浮動小数点数による所定ビット数のデータビットによって表され、比較精度制御手段は、ポリゴンのデプス値および基準デプス値のそれぞれの小数部を表すデータビットの一部をマスクする、請求項1または2に記載の3次元画像描画装置。
【請求項4】
比較精度制御手段は、複数のマスク設定値を含み、当該複数のマスク設定値から選択されたマスク設定値に応じて、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクする、請求項1ないし3いずれか1つに記載の3次元画像描画装置。
【請求項5】
比較精度制御手段は、複数のANDゲートを含み、ポリゴンのデプス値の所定のデータビットおよび基準デプス値の所定のデータビットは、各ANDゲートの一方の入力に接続され、各ANDゲートの他方の入力には、マスク制御信号が接続される、請求項1ないし4いずれか1つに記載の3次元画像描画装置。
【請求項6】
前記所定のデータビットは、小数部のデータビットである、請求項5に記載の3次元画像描画装置。
【請求項7】
基準デプス値は、比較される複数のポリゴンのデプス値から選択されたものである、請求項1ないし6いずれか1つに記載の3次元画像描画装置。
【請求項8】
ポリゴンのデプス値は、ポリゴンの頂点座標のZ軸方向の平均値を含む、請求項1ないし7いずれか1つに記載の3次元画像描画装置。
【請求項9】
ポリゴンは、半透明ポリゴンである、請求項1ないし8いずれか1つに記載の3次元画像描画装置。
【請求項10】
ポリゴンを画面奥側から画面手前または画面手前側から画面奥側に向けてソートするソート処理方法であって、
ポリゴンについて画面奥行きの関数であるデプス値を算出するステップと、
ポリゴンのデプス値と基準デプス値の一部をマスクし、ポリゴンのデプス値と基準デプス値とを比較するステップと、
比較結果に基づきポリゴンの描画順序を決定するステップと、
を有するポリゴンのソート処理方法。
【請求項11】
ポリゴンのデプス値および基準デプス値は、浮動小数点数による所定ビット数のデータビットによって表され、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクして比較する、請求項10に記載のポリゴンのソート処理方法。
【請求項12】
ポリゴンのデプス値および基準デプス値の小数部の選択されたデータビットがマスクされる、請求項11に記載のポリゴンのソート処理方法。

【図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