(57)【要約】【課題】  Ｚソート処理回路を設けることで、他のハードウエア資源への負担を軽減し、高速な描画を可能とする３次元画像描画装置を提供する。【解決手段】  本発明に係るＺソート処理回路２４は、半透明ポリゴンのデプス平均値と最小保持デプス値とを比較する浮動小数点比較器１３０と、浮動小数点比較器１３０の入力段に接続された複数のＡＮＤゲート１１０−１〜１１０−２３、１２０−１〜１２０−２３と、精度制御用小数部マスク値１４０とを含む。ＡＮＤゲートの一方の入力には、半透明ポリゴンのデプス平均値の小数部１０２の２３ビットデータおよび最小保持デプス値の小数部１０６の２３ビットデータが供給され、ＡＮＤゲートの他方の入力には、マスク制御信号１４２を介して２３ビットのマスク値が供給される。【選択図】    図６
2006285371.tif 000002
【特許請求の範囲】
【請求項１】
ポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてソートする機能を備えた３次元画像描画装置であって、
ポリゴンについて画面奥行きの関数であるデプス値を算出するデプス値算出手段と、
算出されたポリゴンのデプス値と基準デプス値とを比較する比較手段と、
比較手段による比較結果に基づきポリゴンの描画順序を決定する描画順序決定手段と、
ポリゴンのデプス値と基準デプス値の一部を比較対象から除外する比較精度制御手段と、
を有する３次元画像描画装置。
【請求項２】
比較精度制御手段は、比較手段に入力されるポリゴンのデプス値および基準デプス値のデータの一部をマスクする、請求項１に記載の３次元画像描画装置。
【請求項３】
ポリゴンのデプス値および基準デプス値は、それぞれ浮動小数点数による所定ビット数のデータビットによって表され、比較精度制御手段は、ポリゴンのデプス値および基準デプス値のそれぞれの小数部を表すデータビットの一部をマスクする、請求項１または２に記載の３次元画像描画装置。
【請求項４】
比較精度制御手段は、複数のマスク設定値を含み、当該複数のマスク設定値から選択されたマスク設定値に応じて、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクする、請求項１ないし３いずれか１つに記載の３次元画像描画装置。
【請求項５】
比較精度制御手段は、複数のＡＮＤゲートを含み、ポリゴンのデプス値の所定のデータビットおよび基準デプス値の所定のデータビットは、各ＡＮＤゲートの一方の入力に接続され、各ＡＮＤゲートの他方の入力には、マスク制御信号が接続される、請求項１ないし４いずれか１つに記載の３次元画像描画装置。
【請求項６】
前記所定のデータビットは、小数部のデータビットである、請求項５に記載の３次元画像描画装置。
【請求項７】
基準デプス値は、比較される複数のポリゴンのデプス値から選択されたものである、請求項１ないし６いずれか１つに記載の３次元画像描画装置。
【請求項８】
ポリゴンのデプス値は、ポリゴンの頂点座標のＺ軸方向の平均値を含む、請求項１ないし７いずれか１つに記載の３次元画像描画装置。
【請求項９】
ポリゴンは、半透明ポリゴンである、請求項１ないし８いずれか１つに記載の３次元画像描画装置。
【請求項１０】
ポリゴンを画面奥側から画面手前または画面手前側から画面奥側に向けてソートするソート処理方法であって、
ポリゴンについて画面奥行きの関数であるデプス値を算出するステップと、
ポリゴンのデプス値と基準デプス値の一部をマスクし、ポリゴンのデプス値と基準デプス値とを比較するステップと、
比較結果に基づきポリゴンの描画順序を決定するステップと、
を有するポリゴンのソート処理方法。
【請求項１１】
ポリゴンのデプス値および基準デプス値は、浮動小数点数による所定ビット数のデータビットによって表され、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクして比較する、請求項１０に記載のポリゴンのソート処理方法。
【請求項１２】
ポリゴンのデプス値および基準デプス値の小数部の選択されたデータビットがマスクされる、請求項１１に記載のポリゴンのソート処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元画像を描画する３次元画像描画装置に関し、特に、半透明描画データ（半透明ポリゴン）をＺ方向にソートするＺソート処理技術に関する。
【０００２】
３Ｄグラフィックスで使用される「モデル」と呼ばれる立体物は、ポリゴンと呼ばれる複数の三角形で構成され、各頂点の３次元座標値(ｘ，ｙ,ｚ)により立体物と表される。一般に、図７に示すように、このモデルデータを構成する頂点の座標空間を「モデル座標」、モデルを配置する座標空間を「ワールド座標」、モニタに表示される絵を写すためのカメラを基準にした座標空間を「カメラ座標」、最終的なモニタ画面での座標空間を「スクリーン座標」と呼ぶ。
【０００３】
３次元空間上に配置されたモデルデータを、モニタ等の２次元画面に表示する際の基本的な３Ｄグラフィックス処理は、次のような順番で行われる。
１）モデルとカメラをワールド座標空間に配置する。
２）モデルデータの各頂点データ（モデル座標）をワールド座標に変換し、更にそれをカメラ座標に変換して、各頂点座標値がカメラから見た際の座標値になるようにする。
３）ワールド座標空間に設定された「ライト（光源）」の方向や色などにしたがって、モデル各頂点のライティング計算（明るさや色味の計算）を行う。
４）カメラ座標での各頂点座標をスクリーン座標に透視変換して、その座標値を描画回路に入力して描画処理を行う。
【０００４】
また、３次元グラフィックスでは、色付きガラスなどの向こう側が透けて見えるような物体を描画することがある。これを一般に、半透明描画と呼んでいる。半透明描画処理は、ガラスを描画する位置に、既にフレームバッファに格納されている背景の各ピクセルカラーデータを読み出し、その背景カラーとガラスカラーとを演算し、演算したカラーデータをフレームバッファに格納すれば良い。半透明の描画処理では、例えば、加算結果を１／２倍にする。ちなみに、半透明と呼ぶのは言葉的に判りやすいからで、実際のカラー演算割合は自由に指定することが可能であり、グラフィックス用語としては、「αブレンディング」（カラー演算割合パラメータをα値と呼ぶことから）と呼ばれる。
【０００５】
１つの画面の中で、背景のような「不透明描画」とガラスのような「半透明描画」を混合して行う場合は、最初に不透明なものだけを全て描画し、その描画終了後に半透明なものを画面奥側にあるものから順番に半透明処理しながら描画することになる。例えば、図８（ａ）に示すように、最初に山や太陽などの全ての不透明な背景を描画し、次に、図８（ｂ）、（ｃ）に示すように、画面の奥側から半透明ガラスをＡ、Ｃ、Ｂの順番で描画する。
【０００６】
上記のように、半透明描画処理では画面奥側にある描画オブジェクトから画面手前側に向かって順番に描画する必要があるため、描画処理する前に半透明描画オブジェクトを画面奥側から順番に並べ替えておく必要がある。上記の例では、半透明ガラスをＡ→Ｃ→Ｂの順に並べる。この処理は、画面に垂直な座標軸に当たるＺ座標値でソートすることから、通常「Ｚソート処理」と呼ばれている。
【０００７】
３Ｄグラフィックスにおける半透明オブジェクトは、上記のガラスのような平面物に限らず、図９のような立体物となる。この立方体を半透明描画する場合は、ポリゴン単位でＺソート処理を行い、画面奥側のポリゴンから順番に半透明描画処理を行うことになる。
【０００８】
Ｚソート処理について、いくつかの技術が報告されている。特許文献１は、ポリゴン識別部で不透明ポリゴンデータと半透明ポリゴンデータとの識別を行い、Ｚソートされた半透明ポリゴンデータの描画に要する描画予想時間を演算し、描画予想時間から不透明ポリゴンと半透明ポリゴンとの描画の切り換え時間を演算し、不透明ポリゴンデータから透明ポリゴンデータへの切り替えを可能にしている。これにより、プログラム開発時間の短縮化を期し、１フレーム期間中で描画すべき半透明ポリゴンデータを欠落なく描画できる半透明描画生成装置を提供している。
【０００９】
特許文献２は、画像を構成するポリゴンを半透明なものと不透明なものとに区別し、不透明なポリゴンすべての描画が終了すると、半透明なポリゴンが奥方向から手前方向に向かう順番でＺバッファを使用して描画される。これにより、不透明なポリゴンと半透明なポリゴンとを含む画像の描画を高速化している。
【００１０】
特許文献３は、物陰に隠れて見えなくなるポリゴンを描画する無駄を省くために、各視点別に複数のポリゴンそれぞれについて見えるか否かを示した情報を用意し、描画処理時に、この情報を利用して、見えるポリゴンについてのみ描画するようにしている。
【００１１】
特許文献４は、オブジェクトデータから、視点位置を基準として定められる視界内に位置するオブジェクトデータを選定し、選定したオブジェクトデータをスクリーン上の投影画像となる画像データに透視変換し、変換された画像データをＺソートし、Ｚソートされた画像データ中、視点位置から所定距離以上離れた画像データを抽出し、数ドットずらした半透明な画像をテクスチャとする半透明ダミーポリゴンを生成し、半透明ダミーポリゴンを含む画像データにしたがって不鮮明なぼやけた状態の画像を描画する。これにより、３次元画像データを現実感のある画像として表示している。
【００１２】
特許文献５は、画像を構成しているオブジェクト毎に割り当てたメモインメモリ上の複数の順序テーブルに画像を複数に分割した各ブロックのＺ方向の情報をアドレスとして各ブロックの処理順序を示す順序データを書き込み、ＤＭＡコントローラにより複数の順序テーブル同士を段階的にＺソートすることによって描画データを作成する。これにより、物理的に分かれたオブジェクトが近い深さにあった場合にも、ポリゴン単位の干渉を排除して、画質の良好な描画データを生成することを可能にしている。
【００１３】
【特許文献１】特開２０００−２６８１９０号
【特許文献２】特開平１０−１１６１０号
【特許文献３】特開平９−４４６９７号
【特許文献４】特開２０００−９３６５４号
【特許文献５】特開平７−１１４６５４号
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従来の３次元画像描画装置では、ソフトウエアまたはハードウエアを用いてＺソート処理を行っている。ソフトウエアによりＺソートを行う場合、描画内容に最も適したＺソート処理方法を提供できる自由度があるが、その反面、処理の最適化を図るアルゴリズムの設計には大きなコストを要する。また、演算結果を格納する比較的大きなメモリ容量を必要とし、かつメモリへのアクセス頻度も増加するため、Ｚソート処理時間の高速化には限界がある。
【００１５】
一方、ハードウエアによるＺソート専用回路を搭載した場合、頂点座標演算から描画処理までの処理を全てハードウエア処理で実行できるため、シンプルな構成を実現することが可能であり、かつＣＰＵ負荷を軽減することができ、システムの処理性能が向上する。しかし、ポリゴン毎のＺ座標値を1つずつ比較してソートする方法のＺソート回路とした場合、どのような描画内容にも対応可能であり、かつソート回路規模を小さくできる利点がある一方で、ソートするポリゴン数が増加すると、その二乗の回数でＺ座標値比較を行うこととなり、ソート処理に多くの時間を要してしまい、Ｚソート処理を高速化することが難しいという課題がある。
【００１６】
本発明は、上記従来の課題を解決するために成されたもので、ポリゴンのソートを高速に行うことができる３次元画像描画装置およびソート処理方法を提供することを目的とする。
さらに本発明は、ハードウエアによるＺソート処理回路を設けることで、頂点座標演算から描画処理までをハードウエアにより処理することができる３次元画像描画装置を提供することを目的とする。
さらに本発明は、Ｚソート処理回路を設けることで、他のハードウエア資源への負担を軽減し、３次元グラフィックスの高速描画を可能とする３次元画像描画装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係る、半透明ポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてＺソートする機能を備えた３次元画像描画装置は、ポリゴンについて画面奥行きの関数であるデプス値を算出するデプス値算出手段と、算出されたポリゴンのデプス値と基準デプス値とを比較する比較手段と、比較手段による比較結果に基づきポリゴンの描画順序を決定する描画順序決定手段と、ポリゴンのデプス値と基準デプス値の一部を比較対象から除外する比較精度制御手段とを有する。
【００１８】
好ましくは、比較精度制御手段は、比較手段に入力されるポリゴンのデプス値および基準デプス値のデータの一部をマスクする。さらに好ましくは、ポリゴンのデプス値および基準デプス値は、それぞれ浮動小数点数による所定ビット数のデータビットによって表され、比較精度制御手段は、ポリゴンのデプス値および基準デプス値のそれぞれの小数部を表すデータビットの一部をマスクする。
【００１９】
また、比較精度制御手段は、複数のマスク設定値を含み、当該複数のマスク設定値から選択されたマスク設定値に応じて、ポリゴンのデプス値および基準デプス値の選択されたデータビットをマスクするようにしてもよい。
【００２０】
好ましくは比較精度制御手段は、複数のＡＮＤゲートを含み、ポリゴンのデプス値の所定のデータビットおよび基準デプス値の所定のデータビットは、各ＡＮＤゲートの一方の入力に接続され、各ＡＮＤゲートの他方の入力には、マスク制御信号が接続される。基準デプス値は、比較される複数のポリゴンの中から選択されたデプス値であり、実施例の最小保持デプス値に相当する。また、ポリゴンのデプス値は、ポリゴンの頂点座標のＺ座標軸方向の平均値を用いることができる。好ましくは、ポリゴンは、半透明ポリゴンである。
【００２１】
本発明に係るポリゴンを画面奥側から画面手前または画面手前から画面奥側に向けてソートするソート処理方法は、ポリゴンについて画面奥行きの関数であるデプス値を算出するステップと、ポリゴンのデプス値と基準デプス値の一部をマスクし、ポリゴンのデプス値と基準デプス値とを比較するステップと、比較結果に基づきポリゴンの描画順序を決定するステップとを有する。
【００２２】
好ましくはポリゴンのデプス値および基準デプス値は、浮動小数点数による所定ビット数のデータビットによって表され、ポリゴンのデプス値および基準デプス値の選択されたビットをマスクして比較する。
【発明の効果】
【００２３】
本発明の３次元画像描画装置によれば、ポリゴンのデプス値と基準デプス値との比較において、ポリゴンのデプス値と基準デプス値の一部を比較対象から除外（マスク）し、比較精度を制御するようにしたので、比較精度を落とすことで、比較処理に要する時間を短縮し、ポリゴンのソートを高速化させることができる。さらに、本発明によれば、頂点演算、Ｚソート処理、および描画処理をハードウエアにより行うことが可能となるため、３次元画像の描画を高速化することができる。
【発明を実施するための最良の形態】
【００２４】
本発明に係る３次元画像描画装置について図面を参照して詳細に説明する。
【実施例】
【００２５】
図１は、本発明の実施例に係る３次元画像描画装置のシステム構成を示すブロック図である。３次元画像描画装置１は、システム全体を制御するＣＰＵ１０、２次元または３次元のグラフィック描画を制御する描画用回路２０、プログラムや画像データ等を格納するメモリ３０、メモリ３０へのアクセスを制御するメモリコントローラ４０、メモリに格納された画像データをモニタに出力する画像表示用回路５０、外部ポートに接続されプログラム等のデータを格納する外部メモリ６０、内部バスや外部ポート（シリアルＩ／Ｆ）の制御を行う周辺制御回路７０、画像表示用回路５０から出力された画像データを表示するモニタ８０を含んで構成される。
【００２６】
描画用回路２０はさらに、モデルの各頂点座標値の３次元演算（回転、拡張、移動など）や光源計算などを行って、スクリーン座標空間での頂点データを求めるジオメトリ回路２２と、描画最小単位である三角形や四角形のポリゴンデータのＺソート処理やクリッピング処理を行うＺソート処理回路２４と、描画リストにしたがってグラフィック描画を行うレンダリング回路２６を含んでいる。本実施例では、描画用回路２０をハードウエアにより構成することで、モデルの座標演算、Ｚソート処理、および描画処理をハードウエアにより実現することができる。
【００２７】
図２は、３次元画像描画装置における描画処理の基本的なフローを示す図である。ＣＰＵ１０は、メモリ３０内のプログラムデータ３１および３次元モデルデータ３２等にしたがって、モデルの回転や移動などの基となる各パラメータを計算する（ステップａ）。ＣＰＵ１０は、計算したモデルデータの各パラメータにしたがって、ジオメトリ回路２２が受け付ける形式のジオメトリ回路用描画リストデータ３３を生成し、これをメモリ内に格納する（ステップｂ）。
【００２８】
ジオメトリ回路２２は、メモリ内のジオメトリ回路用描画リストデータ３３を読み込みながら決められた頂点演算処理を行い、その結果をソート処理回路２４に送る（ステップｃ）。
【００２９】
ソート処理回路２４は、ジオメトリ回路２２から受け取った頂点演算された描画リストデータ３３にしたがって、Ｚソート処理やクリッピング処理を行い、そしてレンダリング回路２６が受け付ける形式のレンダリング回路用描画リストデータ３４を生成し、これをメモリ内に格納する（ステップｄ）。
【００３０】
レンダリング回路２６は、メモリ内のレンダリング回路用描画リストデータ３４を読み込みながら描画処理用ピクセルパラメータを計算する（ステップｅ）。描画処理用ピクセルパラメータとは、描画ピクセルのテクスチャ座標値、描画ピクセルのデプス値（すなわち画面奥行き方向座標値：Ｚ値）、および描画ピクセルのフレームバッファ座標値などのピクセル描画に必要なパラメータである。
【００３１】
レンダリング回路２６は、描画ピクセルのテクスチャ座標値にしたがって各ピクセルに対応したテクスチャデータ３５をメモリから読み込んで処理し、描画ピクセルのカラーデータを求め（ステップｆ）、さらに、描画ピクセルのデプス値とデプスバッファ３６から読み込んだデプス値の比較結果にしたがってピクセル描画を行うかどうか判断する（ステップｇ）。
【００３２】
レンダリング回路２６はさらに、αブレンディング処理指定にしたがって描画ピクセルのカラーデータを計算し、描画ピクセルのフレームバッファ３７の座標位置にデータを格納する（ステップｈ）。
【００３３】
次に、本実施例のソート処理回路２４の詳細について説明する。立体物を構成するポリゴンをＺソートする際に比較するＺ座標値は、ポリゴン各頂点（三角形の場合は３頂点）のＺ座標値の「平均値」を用いることができる。但し、ポリゴンのＺ座標値の最小値または最大値を用いてもよい。
【００３４】
比較に使用する値は、画面に垂直な座標軸に関連する奥行き方向の値であれば良く、「Ｚ座標値」には限らない。そこで、本明細書では、以降の説明において、比較に使用する値を総称として「デプス値」と呼ぶことにする。
【００３５】
ソート処理回路２４におけるＺソート処理の概要は、次の通りである。
１）入力された半透明描画オブジェクトをポリゴン単位に分割し、各ポリゴンのデプス平均値を求める。
２）各ポリゴンのデプス平均値を大小比較して、画面奥側から順番に並べ替える。デプス平均値が等しい場合は、予め決められた法則に則って順番を決める。通常は、処理する順番が早い方を画面奥側となるようにする。
【００３６】
一般に、頂点ｘｙｚ座標値やデプス値は、「１６ｂｉｔ／３２ｂｉｔ固定小数点数」または「３２ｂｉｔ浮動小数点数」を用いて表される。最近の３次元コンピュータグラフィックスでは、数値としての表現可能範囲が大きい３２ビット浮動小数点数が使用されることが多い。以下の表は、ＩＥＥＥによる国際標準規格により定められた３２ビット浮動小数点数のデータ構成を示している。
【００３７】
【表１】
2006285371.tif 000003
【００３８】
図３は、Ｚソート処理のフローを示す図である。ここでは、デプス値を画面手前より画面奥側の方が小さい値とする。始めに、ソート処理回路２４は、最小保持デプス値に予め定められた最大数の値をセットする(ステップＳ１０１)。最小保持デプス値とは、全ての半透明描画ポリゴンの中で最も画面奥側（言い換えれば、デプス値が最小値）となるポリゴンのデプス平均値である。最小保持デプス値は、メモリ３０またはレジスタ等に記憶される。
【００３９】
ソート処理回路２４は、入力された順に、３次元演算後の頂点座標を持つ、スクリーン座標投影処理後の半透明描画オブジェクトを三角形ポリゴン単位に分割し、これをポリゴンデータとしてメモリ３０に格納する（ステップＳ１０２）。
【００４０】
ソート処理回路２４は、入力された順に三角形ポリゴンの３頂点分のデプス平均値を計算し、この平均値は、メモリ３０に格納されたポリゴンデータの先頭アドレスと一緒にソート用データとしてメモリ３０に格納される（ステップＳ１０３）。
【００４１】
図４は、ポリゴンデータとソート用データのメモリ３０への格納状態を示している。同図に示すように、ソート処理回路２４は、入力された順に、ポリゴンデータ０、１、２・・・をメモリ３０に格納する。各ポリゴンデータは、３頂点分のｘｙｚ座標値、テクスチャ座標値およびシェーディングカラー等を含んでいる。またソート処理回路２４は、ポリゴンデータ０、１、２・・・に対応するソート用データ０、１、２・・・をメモリ３０に格納する。各ソート用データは、対応するポリゴンデータの先頭アドレスとデプス平均値とを含んでいる。例えば、ソート用データ０は、ポリゴンデータ０の先頭アドレスとそのデプス平均値を含んでいる。
【００４２】
ソート処理回路２４は、ポリゴンのデプス平均値と最小保持デプス値を比較し、値の小さい方を最小保持デプス値としてレジスタに保持する（ステップＳ１０４）。全ての半透明描画オブジェクトのポリゴンデータとソート用データをメモリ３０に格納し終えるまで、上記ステップＳ１０２からＳ１０４までの処理が繰り返される。
【００４３】
次に、ソート処理が開始される。ソート処理回路２４は、最初のソート用データ（図４のソート用データ“０”）のデプス平均値を一時保持デプス値としてレジスタにセットする（ステップＳ１０６）。ソート処理回路２４は、メモリ３０からソート用データを順番に読出し、デプス平均値と最小保持デプス値を大小比較する（ステップＳ１０７）。
【００４４】
デプス値の比較を行った結果（ステップＳ１０８）、ソート用データのデプス平均値が最小保持デプス値よりも大きい場合には、さらにソート用データのデプス平均値と一時保持デプス値とを比較する。ソート用データのデプス平均値が一時保持デプス値よりも小さいとき（デプス平均値＜一次保持デプス値）、一時保持デプス値をソート用データのデプス平均値に更新する（ステップＳ１０９）。
【００４５】
ソート用データのデプス平均値と最小保持デプス値とが等しい場合には、ソート用データ内のポリゴンデータ先頭アドレス値を「ポリゴン描画順番用データ」としてメモリ３０に格納する（ステップＳ１１０）。
【００４６】
デプス平均値が最小保持デプス値よりも小さい場合には、その比較結果に対する処理は行われない。こうして、全てのソート用データについての比較処理が行われると、画面奥側の最初に描画すべき半透明描画オブジェクトの半透明ポリゴンが検出されたことになる（ステップＳ１１１）。また、一時保持デプス値には、最小保持デプス値の次に大きいデプス値（２番目のデプス値）が格納されることになるので、最小保持デプス値を一時保持デプス値に更新する（ステップＳ１１２）。次のソート処理では、２番目に小さなデプス平均値をもつ半透明ポリゴンが検出される。
【００４７】
以上の処理を、全てのポリゴン分の「ポリゴン描画順番用データ」が完成するまで繰り返すことで(ステップＳ１１３)、Ｚソート処理が終了する（ステップＳ１１４）。ポリゴン描画順番用データは、描画リストデータ３４としてメモリ３０に格納される。
【００４８】
図５は、ポリゴン描画順番用データの格納状態を示す図である。同図に示すように、ソート処理を行った結果、ポリゴン描画順番用データの先頭アドレス（ポリゴン先頭アドレス“０”）には、１番目に描画するポリゴンデータの先頭アドレス値が格納され、次のアドレスには、２番目に描画するポリゴンデータの先頭アドレス値が格納される。ポリゴン描画順番用データの先頭アドレスから順にその内容を参照することで、半透明ポリゴンデータを読み出すことができる。
【００４９】
ポリゴンデータのデプス平均値を比較することによって、ポリゴンの描画順番を決定する場合、全て異なるデプス平均値を持ったＮ個の三角形ポリゴンがあれば、Ｎ個×Ｎ回の比較処理を実行することになる。つまり、最大で半透明描画ポリゴン数の２乗もの回数のデプス値比較処理を行わなければならない。
【００５０】
本実施例では、ソート処理回路に簡単な回路を付加することによってデプス値の比較処理回数を低減し、Ｚソート処理を高速化している。同時に、比較精度の制御も可能にしている。
【００５１】
半透明描画処理において、ポリゴン単位で画面奥側から順番に描画されるようにＺソート処理を行う必要があるのは、ポリゴン同士が画面奥行き方向に対して重なる場合のみである。つまり、半透明描画ポリゴン全てを正しくソート処理しなくても正しい半透明描画は可能である。また、ある程度の大きさを持つ立体物を構成する各ポリゴンにおいて、半透明描画時に正しいソート処理をする必要のあるポリゴン同士のデプス平均値の差は、あまり小さな値にならないことの方が多い。
【００５２】
このことから、デプス値の比較処理時の比較精度を落として、言い換えればデプス値の比較結果が「等しい」となる確率を上げることで、比較処理回数を少なくし、Ｚソート処理を高速化する。
【００５３】
デプス値は、上記表に示したように、「単精度浮動小数点数（３２ｂｉｔ値）」で表現されており、それらのデータは、「符号」、「指数部」、「小数部」の３つの値から構成されている。大小比較処理として、小数部の内容の比較結果が意味を持つのは、符号および指数部が共に等しい場合のみである。つまり、全ての半透明描画ポリゴンのデプス平均値の差が２倍以上ずつある場合、言い換えれば、全ての指数部が等しくない場合、小数部は、デプス平均値の比較結果に影響しない。デプス値は０．０〜１．０の値（単精度浮動小数点数の精度が最も高くなる範囲）となるように調整することが多く、符号は、正（”０”固定）となるので、比較処理に使用されない（もちろん比較処理しても良い）。
【００５４】
これらのことを利用して、デプス平均値と最小保持デプス値を浮動小数点数比較回路に入力する前段で、デプス平均値と最小保持デプス値の小数部の所望のビットをマスクするＡＮＤゲートを付加している。
【００５５】
図６は、本実施例のソート処理回路の構成を示す図である。同図において、半透明ポリゴンのデプス平均値の指数部１００の８ビットデータが浮動小数点比較部１３０に入力される。半透明ポリゴンのデプス平均値の小数部１０２の２３ビットデータは、ＡＮＤゲート１１０−１〜１１０−２３の一方の入力に供給される。また、最小保持デプス値の指数部１０４の８ビットデータが浮動小数点比較部１３０に入力され、その小数部１０６の２３ビットデータがＡＮＤゲート１２０−１〜１２０−２３の一方の入力に供給される。図では、ＡＮＤゲート１１０−１および１１０−２３とＡＮＤゲート１２０−１および１２０−２３しか示していないが、実際には、ＡＮＤゲート１１０およびＡＮＤ１２０は、小数部の小数点第１位から小数点第２３位までに相当する２３個のＡＮＤゲートを有している。
【００５６】
さらに精度制御用小数部１４０は、２３ビットについてのマスク値を有し、２３ビットのマスク制御信号１４２が、ＡＮＤゲート１１０−１〜１１０−２３およびＡＮＤゲート１２０−１〜１２０−２３の他方の入力に供給される。精度制御用小数部１４０のマスク値は、比較精度制御部１５０からの制御信号によって可変することができる。
【００５７】
例えば、マスク制御信号１４２を”０ｘ４０００００”（１６進数）とすれば、ＡＮＤゲート１１０−２〜１１０−２３およびＡＮＤゲート１２０−２〜１２０−２３の他方の入力において、小数点第２位以降がすべて論理“０”となるため、半透明ポリゴンのデプス値および最小保持デプス値の小数部の小数点第２位以下がマスクされ、比較対象から外される。したがって、最小保持デプス値とデプス平均値との大小比較において、小数部の小数点第１位のみが比較対象となり、両者が「等しい」となる確率が上昇するため、比較処理回数が減少し、Ｚソート処理が高速化される。
【００５８】
また、マスク制御信号１４２を”０ｘ７ＦＦＦＦＦ”とすれば、ＡＮＤゲート１１０−１〜１１０−２３およびＡＮＤゲート１２０−１〜１２０−２３の他方の入力のすべてが論理“１”となる。この場合にはすべての小数部がマスクされないので、半透明ポリゴンのデプス平均値および最小保持デプス値の全ての小数部についての比較処理が行われる。その結果、Ｚソート処理は高速化されないが、その反面、比較精度を最高とすることもできる。
【００５９】
比較精度制御部１５０は、例えば、半透明ポリゴンの数量や描画時間などの条件からマスク制御信号１４２のマスク値を設定することも可能である。例えば動画をモニタに表示する場合、１フレームの描画は一定時間（例えば、１／３０秒）以内にしなければならない。１フレームの描画時間内に、不透明ポリゴンと半透明ポリゴンを描画するとき、半透明ポリゴンの描画時間は、１フレームの描画時間から不透明ポリゴンの描画時間を引いた値となる。したがって、描画すべき半透明ポリゴン数が多くなると、ソート処理を高速化しなければならない。このため、半透明ポリゴン数が一定数よりも多きときには、幾分だけ比較精度を落すようにマスクするビット数を多くして高速化し、その反対に、半透明ポリゴン数が一定数よりも少ないときは、比較精度を落すことなく、マスクするビット数を少なくし、あるいはマスクしないようにしてもよい。
【００６０】
さらに比較精度制御部１５０は、予め複数のマスク値を用意しておき、複数のマスク値から所望のマスク値を選択し、これを精度制御用小数部１４０へ供給するようにしてもよい。例えば、指数部の値などにしたがって、複数のマスク値から1つを選択するようにしても良いし、描画する画像の種類によって比較精度を可変するようにしてもよい。さらに、モニタの解像度があまり高くない場合には、比較精度を落とすようにしてもよい。
【００６１】
このように、精度制御用小数部１４０のマスク制御信号１４２とデプス平均値および最小保持デプス値の小数部のデータビットを入力としたＡＮＤゲート１１０、１２０を付加するだけで、デプス値比較精度を簡単に制御することができ、Ｚソート処理を高速化することができる。
【００６２】
またジオメトリエンジン等のハードウエアによってポリゴンデータの頂点座標の演算を行う場合、その演算結果データをＺソート処理することになるが、ソフトウエアによるＺソート処理を行うと、演算結果データを一旦メモリに出力して処理しなければならず、全体の描画処理として、頂点演算（ハードウエア）→Ｚソート（ソフトウエア）→描画処理（ハードウエア）が混在し、各処理の開始と終了のタイミング管理が複雑化してしまう。しかし、本実施例の場合、Ｚソート処理回路を搭載することで、描画用回路２０のハードウエア処理が可能となり、簡単なシステム構成で、高速のＺソートを実現することができる。
【００６３】
なお比較処理時の小数部有効ビット数を少なくして比較精度を落とすと、Ｚソート処理は高速化されるが、各半透明描画ポリゴンの描画順番が正確でない部分がでてくる可能性が増加する。これについては、半透明描画オブジェクト（複数ポリゴンで構成される物体）単位などで画面奥行き方向のソート処理をソフトウエアで行うなどして、ソート処理回路へのオブジェクト入力を画面奥側オブジェクトから順番に行うようにすることで緩和できる。オブジェクトは、通常、数百〜数千ポリゴンで構成され、画面内の個数は多くはないので、ソフトウエア処理しても重い処理にはならないことが多い。
【００６４】
上記実施例では、単精度浮動小数点数のデプス値に対する制御としているが、倍精度浮動小数点数（６４ｂｉｔ値）や、指数部と小数部から構成されるその他のデータ形式およびｂｉｔ数の浮動小数点数にも適用できる。もちろん、指数部にもマスク値を用意しても良い。
【００６５】
上記実施例に係るＺソート処理回路は、半透明ポリゴンについてのＺソートの例を示したが、これに限らず、不透明描画オブジェクトのポリゴンのＺソートを行うことができる。特に、Ｚバッファを用いずに、不透明ポリゴンを画面奥側から画面手前または画面手前から画面奥側にＺソートして描画する場合に、本発明を適用することができる。
【００６６】
本発明の好ましい実施の形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【産業上の利用可能性】
【００６７】
本発明に係る３次元画像描画装置およびＺソート処理方法は、３次元グラフィックスコンピュータ、ビデオゲーム機、遊技機、およびその他の映像装置などにおいて利用される。
【図面の簡単な説明】
【００６８】
【図１】本発明の実施例に係る三次元画像描画装置のシステム構成を示すブロック図である。
【図２】描画用回路の基本的な処理を示す図である。
【図３】Ｚソート処理のフローを示す図である。
【図４】ポリゴンデータとソート用データの格納状態を示す図である。
【図５】ポリゴン描画順番用データの格納状態を示す図である。
【図６】本実施例のソート処理回路を示す図である。
【図７】モデルデータの座標空間を示す図である。
【図８】半透明描画を説明する図である。
【図９】立体物の半透明オブジェクトの例を示す図である。
【符号の説明】
【００６９】
１：３次元画像描画装置
１０：ＣＰＵ
２０：描画用回路
３０：メモリ
４０：メモリコントローラ
５０：画像表示用回路
１００：デプス平均値指数部
１０２：デプス平均値小数部
１０４：最小保持デプス値指数部
１０６：最小保持デプス値小数部
１１０−１〜１１０−２３、１２０−１〜１２０−２３：ＡＮＤゲート
１３０：浮動小数点比較器
１４０：精度制御用小数部
１４２：マスク制御信号
１５０：比較精度制御部
【図１】
2006285371.tif 000004
【図２】
2006285371.tif 000005
【図３】
2006285371.tif 000006
【図４】
2006285371.tif 000007
【図５】
2006285371.tif 000008
【図６】
2006285371.tif 000009
【図７】
2006285371.tif 000010
【図８】
2006285371.tif 000011
【図９】
2006285371.tif 000012