(57)【要約】  【課題】深度値Ｚバッファ回路へのアクセスを高速化し、画像処理性能を改善する。【解決手段】ポリゴンを構成する頂点データから各画素の色情報と深度値を生成する画素生成装置１２と、各画素の深度値およびステンシル値を格納するＺバッファ回路１８と、Ｚバッファ回路を制御するＺバッファ制御装置１４とを備え、Ｚバッファ制御装置は、描画領域を１つ以上の矩形領域に区分し、矩形領域ごとに各画素ごとの深度値とステンシル値を格納する形式１と、どれか一つの代表画素のステンシル値,及び代表画素の深度値及び代表画素を決定するポリゴンによって決まるｘｙ方向の深度値の傾きからなるフラグメントを１組以上と、画素毎に代表画素との距離とフラグメントが含む深度値と深度値の傾きに基づき深度値およびステンシル値を生成するフラグメントを指定するインデックス値を格納する形式２とを備える画像処理装置１０。【選択図】図１
2006171906.tif 000002
【特許請求の範囲】
【請求項１】
命令形式として、描画領域を１つ以上の矩形領域に区分し、前記矩形領域ごとに前記各画素毎の深度値とステンシル値をそれぞれ格納する形式１による処理と、代表画素のステンシル値、前記代表画素の深度値及び前記代表画素を決定するポリゴンによって決まるｘｙ方向の深度値の傾きからなるフラグメントと、画素毎に前記代表画素との距離と前記フラグメントが含む深度値およびと深度値の傾きに基づき深度値およびステンシル値を生成するためのフラグメントを指定するインデックス値を格納する形式２による処理を含む画像処理装置であって、
ポリゴンを構成する頂点データから各画素の色情報と深度値を生成する画素生成装置と、
前記各画素の深度値およびステンシル値を格納するためのＺバッファ回路と、
前記ポリゴンに付与された属性を基にして各画素の前記ステンシル値を生成するテスト回路と、前記形式１もしくは前記形式２のどちらで前記Ｚバッファ回路にデータを格納するかは前記矩形領域毎に前記Ｚバッファ回路を占有するデータ量がどちらの形式の方が少ないかに基づいて選択するＺキャッシュと、前記形式２で前記Ｚバッファ回路にデータを格納する際、前記Ｚバッファ回路へのアクセス数をフラグメント数によって制御するフラグメント選択装置と、前記形式１もしくは前記形式２のどちらでデータが格納された場合であっても、画素ごとに重なり合うポリゴンの深度値テストとステンシルテストを行って、深度値テストとステンシルテストの結果に基づいて前記Ｚバッファ回路の記憶データを更新する更新データ生成回路とを備え、前記画素生成装置に接続され，前記Ｚバッファ回路を制御するＺバッファ制御装置
とを備えることを特徴とする画像処理装置。
【請求項２】
前記テスト回路は、深度値と深度値の傾きからなる平面方程式を解くことよって画素ごとに深度値をテストすることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記更新データ生成回路は、前記形式２のインデックスデータをランレングス圧縮してＺバッファ回路に格納するランレングス圧縮回路を備えることを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記更新データ生成回路は、一つのポリゴンの画素データによって、前記矩形領域に含まれる画素データが全て更新されるかどうか判定するポリゴン全覆チェック回路を備え、
前記判定によって全て更新されることがわかった場合には前記矩形領域に含まれるポリゴン数が１つになることに基づいて矩形領域データに含まれる形式２のフラグメント数を１つにしてＺバッファ回路に格納することを特徴とする請求項１記載の画像処理装置。
【請求項５】
１画面に含まれる矩形領域と一対一対応して深度値とステンシル値のそれぞれの初期化状況を表す２種類のクリアフラグを格納するクリアフラグメモリと、
前記クリアフラグメモリに接続され、前記クリアフラグメモリを制御する選択器と、
前記Ｚバッファ回路上の深度値もしくはステンシル値をそれぞれの単一クリアデータで初期化する際には前記Ｚバッファ回路にアクセスすることなく前記クリアフラグメモリをクリア状態値にセットし、このクリア操作は深度値とステンシル値の両方もしくは一方ずつ可能とするクリア値レジスタ
とを更に備え、前記矩形領域のデータを読み出す際、前記クリアフラグメモリを参照してクリア状態にあるステンシル値もしくは深度値もしくはその両方のクリアデータを参照し、前記Ｚバッファ回路を参照せずに読み出しデータを得ることを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は高速Ｚバッファアクセス機構を有する画像処理装置に関し、特にコンピュータグラフィックハードウェアの分野に適合するものである。
【背景技術】
【０００２】
３次元画像データは色情報（カラー値）と座標を有する２次元画像データと異なり、画素ごとの深度情報をも有することが特徴であり、重なり合うオブジェクト（ポリゴン）は画素ごとに深度値データを比較することによって視点に近い画素が決定され、そのカラー値が表示される。
【０００３】
３次元画像処理装置は、上記の処理を行うために１画面分の画素データを保持するカラーバッファ、深度値（Ｚ）バッファ、および深度値比較（Ｚテスト）機構を有する。ＺバッファはＺ値の更新（書き込み）に加えて、Ｚテストのための対象画素のＺ値を読み出すためのアクセスが必要で、アクセスが頻繁に行われる。Ｚバッファのデータは通常はアクセスの遅いダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に記憶されることが多いため、Ｚバッファへのアクセス頻度は性能に大きな影響を与える。また、ＺバッファにはＺ値に加えて、型抜きや陰影処理に使用されるステンシル(Ｓ)値も全画素分保持され、使用されることがある。
【０００４】
ジオメトリ処理後のポリゴンのＺ値を求めるＺバッファ法において、ＤＤＡ（補間処理）などの補間演算を利用する画像処理システムについては、既に開示されている（特許文献１）。又、カラー値や深度値を生成し、画像処理装置のアンチエイリアス処理による描画品質を改善する画像処理装置については、既に開示されている（特許文献２）。
【特許文献１】特開２００１−８４３９８号公報
【特許文献２】特開２００３−３２３６３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、深度値バッファへのアクセスを高速化することにより画像処理性能を改善する画像処理装置を提供する。
【課題を解決するための手段】
【０００６】
本発明の実施の形態の第１の特徴は、（イ）命令形式として、描画領域を１つ以上の矩形領域に区分し、矩形領域ごとに各画素毎の深度値とステンシル値をそれぞれ格納する形式１と、代表画素のステンシル値、代表画素の深度値及び代表画素を決定するポリゴンによって決まるｘｙ方向の深度値の傾きからなるフラグメントと、画素毎に代表画素との距離とフラグメントが含む深度値およびと深度値の傾きに基づき深度値およびステンシル値を生成するためのフラグメントを指定するインデックス値を格納する形式２を含む画像処理装置であって、（ロ）ポリゴンを構成する頂点データから各画素の色情報と深度値を生成する画素生成装置と、（ハ）各画素の深度値およびステンシル値を格納するためのＺバッファ回路と、（ニ）ポリゴンに付与された属性を基にして各画素のステンシル値を生成するテスト回路と、形式１もしくは形式２のどちらでＺバッファ回路にデータを格納するかは矩形領域毎にＺバッファ回路を占有するデータ量がどちらの形式の方が少ないかに基づいて選択するＺキャッシュと、形式２でＺバッファ回路にデータを格納する際、Ｚバッファ回路へのアクセス数をフラグメント数によって制御するフラグメント選択装置と、形式１もしくは形式２のどちらでデータが格納された場合であっても、画素ごとに重なり合うポリゴンの深度値テストとステンシルテストを行って、深度値テストとステンシルテストの結果に基づいてＺバッファ回路の記憶データを更新する更新データ生成回路とを備え、画素生成装置に接続され、Ｚバッファ回路を制御するＺバッファ制御装置とを備える画像処理装置であることを要旨とする。
【発明の効果】
【０００７】
本発明の画像処理装置によれば、深度値バッファへのアクセスを高速化することにより画像処理性能を改善することができる。
【発明を実施するための最良の形態】
【０００８】
次に、図面を参照して、本発明の第１乃至第２の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロック構成の厚みと平面寸法との関係、各ブロック構成の厚みの比率等は現実のものとは異なることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【０００９】
以下に示す第１乃至第２の実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１０】
３次元画像処理装置はジオメトリ処理装置で生成されたポリゴンの頂点データを基にポリゴン内の画素データを生成する装置である。３次元画像処理装置は通常、画素の奥行き値およびステンシル値を保持する深度バッファをもち、描画する画素を決定する深度テストおよびステンシルテスト機構を有する。本発明は、深度値バッファへのアクセスを高速化することにより画像処理性能を改善する画像処理装置を提供する。
【００１１】
[第１の実施の形態]
本発明の第１の実施の形態に係る画像処理装置は、図１示すように、命令形式として、描画領域を１つ以上の矩形領域に区分し、矩形領域ごとに各画素毎の深度値とステンシル値をそれぞれ格納する形式１と、代表画素のステンシル値、代表画素の深度値及び代表画素を決定するポリゴンによって決まるｘｙ方向の深度値の傾きからなるフラグメントと、画素毎に代表画素との距離とフラグメントが含む深度値およびと深度値の傾きに基づき深度値およびステンシル値を生成するためのフラグメントを指定するインデックス値を格納する形式２を含む画像処理装置１０であって、ポリゴンを構成する頂点データから各画素の色情報と深度値を生成する画素生成装置(ＤＤＡ：デジタルディファレンシャルアナライザ)１２と、各画素の深度値およびステンシル値を格納するためのＺバッファ回路１８と、画素生成装置１２に接続され,Ｚバッファ回路１８を制御するＺバッファ制御装置１４とを備える。
【００１２】
又、本発明の第１の実施の形態に係る画像処理装置は、図１示すように、各画素の色情報を格納するためのカラーバッファ回路２２と、画素生成装置１２に接続され,カラーバッファ回路２２を制御するカラーバッファ制御装置２０を更に備えていても良い。
【００１３】
更に、Ｚバッファ制御装置１４は、図２に示すように、各画素２の深度値Ｚおよびステンシル値ＳをＺバッファ回路１８に格納するにあたっては、描画領域を１つ以上の矩形領域４に区分し、矩形領域４ごとに各画素２毎の深度値Ｚとステンシル値Ｓをそれぞれ格納する形式１と、図３に示すように、どれか一つの代表画素のステンシル値Ｓ,及び代表画素の深度値Ｚ及び代表画素を決定するポリゴン６によって決まるｘｙ方向の深度値の傾きからなるフラグメント(以上のステンシル値Ｓと深度値Ｚと深度値Ｚの傾きをまとめてフラグメントを呼ぶ)を１組以上と、画素毎に代表画素との距離とフラグメントが含む深度値Ｚと深度値Ｚの傾きに基づき深度値Ｚを生成し、加えてステンシル値Ｓを生成するためのフラグメントを指定するインデックス値を格納する形式２とを有する。
【００１４】
更に、Ｚバッファ制御装置１４は、図１および図５に示すように、ポリゴンに付与された属性を基にして各画素のステンシル値を生成するテスト回路２８と、形式１もしくは形式２のどちらでＺバッファ回路１８にデータを格納するかは矩形領域４ごとにＺバッファ回路１８を占有するデータ量がどちらの形式の方が少ないかに基づいて選択するＺキャッシュ３４と、形式２でＺバッファ回路１８にデータを格納する際には、Ｚバッファ回路１８へのアクセス数をフラグメント数によって制御するフラグメント選択装置３０と、形式１もしくは形式２のどちらでデータが格納された場合であっても、画素ごとに重なり合うポリゴンの深度値Ｚテストとステンシル値Ｓテストを行って、深度値Ｚテストとステンシル値Ｓテストの結果に基づいてＺバッファ回路１８およびカラーバッファ回路２２の記憶データを更新する更新データ生成回路３２とを備える。
【００１５】
或いは又、形式２で格納する際のフラグメントに含まれる深度値Ｚと深度値Ｚのｘ方向傾きｄｚｄｘとｙ方向傾きｄｚｄｙを画素生成装置１２で生成した画像処理装置１０が構成される。
【００１６】
この画像処理装置１０は、Ｚバッファ回路１８にデータを格納する際に、図２（ａ）に示すように、例えば、1画面領域を８×８画素単位の矩形領域４に区分し、形式２の代表画素の深度値（代表Ｚ値）はその中の固定された座標にある１点の深度値Ｚである。
【００１７】
図２（ａ）はその様子を示した模式図である。画素２がポリゴンの領域外に存在する場合には外挿によってＺ値を決定する。座標軸は、図２（ｂ）に示すように、ｘｙ方向の平面方向に対して、深さを表す深度値方向をｚ軸方向に選択している。
【００１８】
図３は、ポリゴン６内に画素２を敷き詰めた場合の隣接する画素間の深度値を表すＺ値ｚ０,ｚ１,ｚ２の関係を説明する図である。数学的には、「一つのポリゴン６の中では、隣接した画素同士のＺ値のｘ方向、ｙ方向の差分は常に等しい。」という関係が成立することから、次の式が成立する。即ち、
ｄｚｄｘ＝ｚ２−ｚ１
ｄｚｄｙ＝ｚ０−ｚ１                                          （１）
ここで、ｚ０は代表画素のＺ値、ｄｚｄｘ，ｄｚｄｙはそれぞれＺ値のｘ,ｙ方向の傾きである。
【００１９】
図４は、矩形領域４のマトリックス上に様々な形状のポリゴンが配置される例を表している。例えば、ポリゴン６Ａは、ポリゴン１個によって画素２が矩形領域４全体に敷き詰められた形状のすべてを含む例である。ポリゴン６Ｂとポリゴン６Ｃは、両者を組み合わせることによって、画素２が矩形領域４全体に敷き詰められた形状のすべてを含む例である。ポリゴンｄ１,ｄ２,…,ｄｎは、これらをすべて組み合わせることによって、画素２が矩形領域４全体に敷き詰められた形状のすべてを含む例である。更に、ポリゴン６Ｄは、ポリゴンｄ１,ｄ２,…,ｄｎの組み合わせた形状全体を包含している。ポリゴン６Ｄは、ポリゴンｄ１,ｄ２,…,ｄｎの組み合わせた形状全体に、重ね合わされたポリゴンの形状に相当している。或いは又、ポリゴン６Ｅは、隣接する矩形領域４に跨って配置される小さなポリゴンの形状を表している。
【００２０】
本発明の実施の形態に係る画像処理装置１０の説明において、１ワードとは、データ量の単位を表し、２５６ビットに相当する。内訳は、深度値Ｚとして２４ビット、ステンシル値Ｓとして８ビットを割り当てており、これらの深度値Ｚとステンシル値Ｓの組み合わせが８個存在し、全体として３２×８＝２５６ビットとなる。
【００２１】
本発明の第１の実施の形態に係る画像処理装置１０は、図１に示すように、画素生成装置１２からカラー値を受け取り、深度値テストの結果によってカラーバッファ回路２２の更新を制御できるカラーバッファ制御装置２０を備える。更に、図１に示すように、カラーバッファ回路２２は、画像処理装置１０内において、表示制御装置２４に接続され、更に、表示制御装置２４は、画像処理装置１０の外部に配置されたディスプレイ装置２６に接続されている。
【００２２】
カラーバッファ制御装置２０には１画面分の各画素のカラー値が格納されている。カラーバッファ制御装置２０に書き込まれたデータは、カラーバッファ回路２２を介して、表示制御装置２４によって読み出され、画像処理装置１０の外部のディスプレイ装置２６に送られて表示される。
【００２３】
本発明の第１の実施の形態に係る画像処理装置１０は、図１に示すように、画素生成装置１２から出力された画素のｘｙ座標に基づき、同画素が含まれる矩形領域４分の深度値Ｚデータ，ステンシル値Ｓデータを読み出す機能をもったＺバッファ制御装置１４を備える。
【００２４】
この読み出しは形式２のフォーマットでデータが格納されている場合には必要なデータ数だけ、Ｚバッファ回路１８から読み出すことで読み出し時間を短縮することができる。
【００２５】
本発明の第１の実施の形態に係る画像処理装置１０に適用するＺバッファ制御装置１４は、図５に示すように、画素生成装置（ＤＤＡ）１２に接続され,ポリゴンに付与された属性を基にして各画素のステンシル値を生成するテスト回路２８と、形式１もしくは形式２のどちらでＺバッファ回路１８にデータを格納するかは矩形領域４ごとにＺバッファ回路１８を占有するデータ量がどちらの形式の方が少ないかに基づいて選択するＺキャッシュ３４と、形式２でＺバッファ回路１８にデータを格納する際には、Ｚバッファ回路１８へのアクセス数をフラグメント数によって制御するフラグメント選択装置３０と、形式１もしくは形式２のどちらでデータが格納された場合であっても、画素ごとに重なり合うポリゴンの深度値テストとステンシルテストを行って、深度値テストとステンシルテストの結果に基づいてＺバッファ回路１８およびカラーバッファ回路２２の記憶データを更新する更新データ生成回路３２と、Ｚキャッシュ３４に接続されるキャッシュコントローラ３６とを備える。
【００２６】
Ｚバッファ制御装置１４は、１エントリーのサイズとして矩形領域４の深度値Ｚとステンシル値Ｓの各データを全て格納できるだけの容量を確保したＺキャッシュ３４を有する。
【００２７】
図５のＺバッファ制御装置１４は、形式２でデータが格納されている場合に画素生成装置１２から送られてきた画素のｘｙ座標に基づき、その画素のインデックス値を選択し、インデックス値に基づいてフラグメント(代表Ｚ値、傾き、代表Ｓ値)を選択するフラグメント選択装置３０を備える。
【００２８】
また、形式２のインデックス値（インデックスデータ）をランレングス圧縮してＺバッファ回路１８に格納することができるランレングス圧縮回路６６（図１３参照）を更に備える画像処理装置１０においては、図５に示すように、インデックス値がランレングス圧縮されている場合にはフラグメントを参照する前にそれを解凍する解凍回路１６をフラグメント選択装置３０内に備えていても良い。
【００２９】
フラグメント選択装置３０は、深度値Ｚデータとステンシル値Ｓデータが形式１で格納されている場合にはｘｙ座標に基づいて対象画素のＺ値とＳ値を読み出す。
【００３０】
（形式２のフォーマット例）
ここで、形式２のフォーマット例を図６から図８に示す。形式２のフォーマットは、図６に示すように、深度値Ｚとステンシル値Ｓを生成するための１組以上のフラグメント０〜フラグメント２、および深度値Ｚとステンシル値Ｓを生成するために必要なフラグメントを示す画素ごとのインデックスデータからなる。
【００３１】
図７はそのフラグメント０〜フラグメント２の構成で、Ｚの代表値ｚ０〜ｚ２、Ｚ値のｘ,ｙ方向のそれぞれの傾きｄｚｄｘ，ｄｚｄｙ、およびＳの代表値ステンシル０〜ステンシル２からなる。
【００３２】
図８はインデックスデータを示し、矩形領域４に含まれる画素２の相当する部分のインデックス値８からなる。
【００３３】
（形式１のフォーマット例）
形式１のデータ格納フォーマット例を図９に示す。ワード０〜ワード７において、各ワード領域は、深度値Ｚとして２４ビット、ステンシル値Ｓとして８ビットを割り当てており、これらの深度値Ｚとステンシル値Ｓの組み合わせが８個存在し、全体として３２×８＝２５６ビットとなる。即ち、１ワードとは、データ量の単位を表し、２５６ビットに相当する。内訳は、深度値Ｚとして２４ビット、ステンシル値Ｓとして８ビットを割り当てており、これらの深度値Ｚとステンシル値Ｓの組み合わせが８個存在し、全体として３２×８＝２５６ビットとなる。
【００３４】
（テスト回路例１）
本発明の第１の実施の形態に係る画像処理装置１０は、図５および図１０に示すように、形式２で格納したフラグメントから対象画素とそのフラグメントが相当する代表画素のｘｙ方向距離に基づきＺ値とＳ値を生成するフラグメント選択装置３０と、Ｚ値もしくはＺ値とＳ値を用いてＺテストとステンシルテストを行うことができるテスト回路２８とを備える。図５のＺバッファ制御装置１４はＺバッファ回路１８から読み出したＺとＳデータを基にＺテストとＳテストを行うことができるテスト回路２８を備える。
【００３５】
図１および図５のテスト回路２８の構成例の一つを図１０に示す。
【００３６】
演算器(Ａ)３８は、あるｘｙ座標の画素について、画素生成装置１２が出力する深度値Ｚの代表値ｚ０、傾きｄｚｄｘ,ｄｚｄｙ、および対象画素と代表画素のｘｙ方向距離（ｘ０−ｘ）,(ｙ０−ｙ)によって入力Ｚを生成する演算器である。更に演算器(Ａ)３９は、形式２で格納されている矩形領域に関してはフラグメントｆとｘｙ方向距離に基づいてその画素に対応するＺバッファ上の深度値Ｚを生成する演算器である。即ち、あるｘｙ座標の画素について、フラグメント選択装置３０が出力する深度値Ｚの代表値ｚｆ、傾きｄｚｆｄｘ,ｄｚｆｄｙ、および対象画素と代表画素のｘｙ方向距離（ｘ０−ｘ）,(ｙ０−ｙ)によって入力Ｚを生成する演算器である。
【００３７】
演算器（Ａ）３８は、次の式のような演算を行う。
【００３８】
Ｚ出力=ｚ０＋ｄｚｄｘ×（ｘ０−ｘ）＋ｄｚｄｙ×(ｙ０−ｙ)      （２）
ここで、ｚ０は代表画素のＺ値、ｄｚｄｘ，ｄｚｄｙはＺ値のｘｙ方向の傾きである。ｘ０，ｙ０は代表画素の座標で矩形領域ごとにあらかじめ決められている。ｘ，ｙはここで処理の対象となっている画素の座標である。
【００３９】
演算器（Ａ）３９は、次の式のような演算を行う。
【００４０】
Ｚ出力=ｚｆ＋ｄｚｆｄｘ×（ｘｆ−ｘ）＋ｄｚｆｄｙ×(ｙｆ−ｙ)  （３）
ここで、ｚｆは代表画素のＺ値、ｄｚｆｄｘ，ｄｚｆｄｙはＺ値のｘｙ方向の傾きである。ｘｆ，ｙｆは代表画素の座標で矩形領域ごとにあらかじめ決められている。ｘ，ｙはここで処理の対象となっている画素の座標である。
【００４１】
演算器（Ａ）３８および演算器（Ａ）３９においてそれぞれ生成されたＺ値を、図１０に示すように、Ｚｓ，Ｚｄとおく。Ｚバッファ回路１８上に形式１でデータが格納されている場合にはＺｄの値をＺキャッシュ３４から直接読み込むことになる。
【００４２】
演算器(Ｂ)４０はＺテストを行うことができる演算器であり、主にＺｓとＺｄとの大小比較を行う比較器である。大小比較結果に基づいて、演算器(Ｂ)４０はテスト結果Ｚｒｅｓｕｌｔと、テストによって選択されたＺデータ（フラグメント）ｚ’,ｄｚｄｘ’,ｄｚｄｙ’を出力する。
【００４３】
テスト回路２８は、図１０に示すように、ステンシルテストを行うステンシルテスト回路４２をも備える。フラグメント選択装置３０は、ステンシルテスト回路４２に対して、フラグメントのステンシル信号ｓｆを出力する。
【００４４】
ステンシルテストは公開された標準ＡＰＩであるＯｐｅｎＧＬに定義されたステンシルファンクションに基づいて行う。ＯｐｅｎＧＬにはステンシルテストの結果とＺバッファ回路１８から読み出したステンシル値とあらかじめレジスタ設定されたステンシルリファレンス値に基づいてどのように新たなステンシル値を決定するか定義されており、ステンシルテスト回路４２は、ステンシルテストの結果とＺバッファ回路１８から読み出したステンシル値とあらかじめレジスタ設定されたステンシルリファレンス値に基づいて、ステンシルテスト結果Ｓｒｅｓｕｌｔとステンシルテストによって決定された新たなステンシル値ｓ’を出力する。
【００４５】
Ｚテスト結果Ｚｒｅｓｕｌｔと、テストによって選択されたＺデータ（フラグメント）ｚ’,ｄｚｄｘ’,ｄｚｄｙ’およびステンシルテスト結果Ｓｒｅｓｕｌｔとステンシルテストによって決定された新たなステンシル値ｓ’は、図１０に示すように、更新データ生成回路３２に入力される。
【００４６】
（テスト回路例２）
本発明の第１の実施の形態に係る画像処理装置１０における深度値テストを行うテスト回路２８は、図１１に示すように、深度値と深度値の傾きからなる平面方程式を解くことよって画素ごとに深度値Ｚテストすることが可能である。
【００４７】
図５のテスト回路２８の他の構成例を図１１に示す。
【００４８】
演算器(Ｃ)４４は、画素生成装置１２から出力された深度値Ｚの代表値ｚ０,フラグメント選択装置３０から出力された深度値Ｚのフラグメント値ｚｆを受信し、差分ｚ０−ｚｆを計算する演算器である。
【００４９】
演算器(Ｃ)４５は、画素生成装置１２から出力された深度値Ｚのｘ方向の傾きｄｚｄｘ,フラグメント選択装置３０から出力された深度値Ｚのフラグメント値のｘ方向の傾きｄｚｆｄｘを受信し、差分ｄｚｄｘ−ｄｚｆｄｘを計算する演算器である。
【００５０】
演算器(Ｃ)４６は、画素生成装置１２から出力された深度値Ｚのｙ方向の傾きｄｚｄｙ,フラグメント選択装置３０から出力された深度値Ｚのフラグメント値のｙ方向の傾きｄｚｆｄｙを受信し、差分ｄｚｄｙ−ｄｚｆｄｙを計算する演算器である。
【００５１】
演算器(Ｄ)４８は、画素生成装置１２からｘ,ｙ座標を受信すると共に、差分ｚ０−ｚｆ、差分ｄｚｄｘ−ｄｚｆｄｘ、差分ｄｚｄｙ−ｄｚｆｄｙを基に以下の式を計算する演算器である。
【００５２】
ｃｏｍｐａｒｅ＝(ｚ０−ｚｆ)＋(ｄｚｄｘ−ｄｚｆｄｘ)×(ｘ０−ｘ)＋(ｄｚｄｙ−ｄｚｆｄｙ)×(ｙ０−ｙ)                          （４）
変数ｃｏｍｐａｒｅの符号によって、図１０に示したようなＺｓとＺｄを生成せずともＺｓとＺｄの大小比較を行うことができる。また、Ｚバッファに対して形式１でデータが格納されていた場合には
ｚｆ＝Ｚバッファに格納されていたＺ値
ｄｚｆｄｘ＝ｄｚｆｄｙ＝０                              （５）
として扱うことによって演算器を共有することができる。
【００５３】
図１１のテスト回路２８は、図１０と同様に、深度値Ｚのテスト結果Ｚｒｅｓｕｌｔとステンシル値Ｓのテスト結果Ｓｒｅｓｕｌｔ、およびテストによって新たに決定されたＺデータ（フラグメント）ｚ’,ｄｚｄｘ’,ｄｚｄｙ’とステンシル値ｓ’を出力する。
【００５４】
テスト回路２８は、図１１に示すように、ステンシルテストを行うステンシルテスト回路５０をも備える。フラグメント選択装置３０は、ステンシルテスト回路５０に対して、フラグメントのステンシル信号ｓｆを出力する。
【００５５】
更新データ生成回路３２は、図５および図１１に示すように、上記テスト結果を基に、新たにＺバッファ回路１８を更新する形式（形式１または形式２）を選択する。
【００５６】
更新データ生成回路３２は、図１３に示すように、形式１もしくは形式２のどちらでＺバッファ回路１８にデータを格納するか選択する形式選択回路６２と、一つのポリゴンの画素データによって、矩形領域に含まれる画素データが全て更新されるかどうか判定するポリゴン全覆チェック回路６４と、形式２でデータを格納する際の必要フラグメント数と各画素のインデックス値を決定する際に、あるポリゴンに含まれる矩形領域内の画素を対象に深度値テストの結果とステンシルテストの結果とＺバッファ回路１８上のインデックス値が同一であった画素同士には同一のフラグメントのインデックス値を割り当てるインデックスマージ回路６８とを備える。
【００５７】
或いは又、更新データ生成回路３２は、形式２のインデックスデータをランレングス圧縮してＺバッファ回路１８に格納するランレングス圧縮回路６６を備えていても良い。
【００５８】
ポリゴン全覆チェック回路６４は、判定によって全て更新されることがわかった場合には矩形領域４に含まれるポリゴン数が１つになることに基づいて矩形領域データに含まれる形式２のフラグメント数を１つにしてＺバッファ回路１８に格納する。
【００５９】
更新データ生成回路３２は、形式２で格納する場合の各画素が対応するフラグメントとインデックス値を決定するインデックスマージ回路６８を有することから、同一のフラグメントを用いて深度値Ｚとステンシル値Ｓを生成することができる画素同士には同一のインデックス値を付与することでデータ中に含まれるフラグメントの数を減らし、データ量を削減することができる。この判定にはあるポリゴンの矩形内処理の過程で処理の対象となった画素に関し、深度値Ｚのテスト結果Ｚｒｅｓｕｌｔ、ステンシル値Ｓのテスト結果Ｓｒｅｓｕｌｔ、およびＺキャッシュ３４から読み出した各画素のインデックス値（ｉｎｄｅｘ＿ｄ）を基に、同一矩形領域内でＺｒｅｓｕｌｔとＳｒｅｓｕｌｔと(ｉｎｄｅｘ＿ｄ)が同じであった画素同士には同一のインデックス値を付与する。
【００６０】
このようにして形式２で格納する場合の必要フラグメント数を決定し、これに基づいて形式２で格納する場合の必要メモリ量を算出し、形式１で格納する場合の矩形サイズであらかじめ決定される必要メモリ量と比較し、どちらがメモリ消費量が少ないかによって形式を選択する。
【００６１】
図５の更新データ生成回路３２は決定された形式に基づき、出力データを生成し、Ｚキャッシュ３４に送出する。また、Ｚバッファ回路１８からデータを読み出した時点からその矩形領域に対する格納形式が変わる場合には、矩形領域内の全ての画素の格納形式を変換して再格納することもできる。形式２で格納する場合には、インデックス値のランレングス圧縮を行い、データ量を減らすことができる。即ち、形式２のインデックスデータをランレングス圧縮してＺバッファ回路１８に格納することができるランレングス圧縮回路６６を備える。
【００６２】
本発明の第１の実施の形態に係る画像処理装置によれば、図５に示すＺバッファ回路を使用し、図１０或いは図１１に示すテスト回路を使用することで、深度値Ｚのバッファ回路１８へのアクセスを高速化することにより画像処理性能を改善することができる。
【００６３】
[第２の実施の形態]
本発明の第２の実施の形態に係る画像処理装置に適用するＺバッファ制御装置１５は、図１２に示すように、画素生成装置１２に接続され,ポリゴンに付与された属性を基にして各画素のステンシル値を生成するテスト回路２８と、形式１もしくは形式２のどちらでＺバッファ回路１８にデータを格納するかは矩形領域４ごとにＺバッファ回路１８を占有するデータ量がどちらの形式の方が少ないかに基づいて選択するＺキャッシュ３４と、形式２でＺバッファ回路１８にデータを格納する際には、Ｚバッファ回路１８へのアクセス数をフラグメント数によって制御するフラグメント選択装置３０と、形式１もしくは形式２のどちらでデータが格納された場合であっても、画素ごとに重なり合うポリゴンの深度値テストとステンシルテストを行って、深度値テストとステンシルテストの結果に基づいてＺバッファ回路１８およびカラーバッファ回路２２の記憶データを更新する更新データ生成回路３２と、Ｚキャッシュ３４に接続されるキャッシュコントローラ３６と、更にクリアフラグ機構とを備える。
【００６４】
クリアフラグ機構は、１画面に含まれる矩形領域４と一対一対応して深度値Ｚとステンシル値Ｓのそれぞれの初期化状況を表す２種類のクリアフラグを格納するフラグメモリ５２と、フラグメモリ５２に接続され、フラグメモリ５２を制御する選択器６０と、Ｚバッファ回路１８上の深度値Ｚもしくはステンシル値Ｓをそれぞれの単一クリアデータで初期化する際にはＺバッファ回路１８にアクセスすることなくフラグメモリ５２をクリア状態値にセットし、このクリア操作は深度値とステンシル値の両方もしくは一方ずつ可能とするクリア値レジスタ５８とを更に備え、ある矩形領域４のデータを読み出す際、フラグメモリ５２を参照してクリア状態にあるステンシル値もしくは深度値もしくはその両方のクリアデータを参照し、Ｚバッファ回路１８を参照せずに読み出しデータを得ることができる。
【００６５】
更新データ生成回路３２の構成は、図１３に示すように、第１の実施の形態における場合と同様の構成を有する。
【００６６】
或いは又、選択器６０は、ある矩形領域４の１つ以上の深度値Ｚもしくはステンシル値Ｓデータが更新された場合には対応するクリアフラグを非クリア状態値にセットすることができる。
【００６７】
フラグメモリ５２は、矩形領域数分のＺクリアフラグを格納するＺクリアフラグメモリ５４およびＳクリアフラグを格納するＳクリアフラグメモリ５６を有する。深度値Ｚの全画面初期化（クリア）が起動された場合には、このＺクリアフラグを格納するＺクリアフラグメモリ５４内の全フラグデータを「クリア済み」であることを示す値「１」にセットする。同様に、ステンシル値Ｓに関して全画面クリアが起動された場合にはＳクリアフラグを格納するＳクリアフラグメモリ５６内の全フラグデータを「クリア済み」であることを示す値「１」にセットする。なお両方のクリア起動前にそれぞれ、クリアデータｚｃ０,ｓｃ０をクリア値レジスタ５８にあらかじめ設定しておく。画素データ処理中においてＺキャッシュ３４内のあるエントリーデータの入れ替え時には、Ｚバッファ回路１８を参照する前にその画素が対応する矩形のＺクリアフラグとＳクリアフラグを参照する。両方が１であった場合にはＺバッファ回路１８からそのエントリーデータを読み出す代わりに、あらかじめクリア値レジスタ５８内に設定されたクリア値を、選択器６０を介してＺキャッシュ３４に格納する。一方だけフラグの値が１であった場合にはそのパラメータ（ＺもしくはＳ）に関してレジスタ設定されたクリア値をＺキャッシュ３４に格納する。図１２はＺバッファ回路１８から読み出したデータとレジスタ設定された値のどちらかを選択する選択器６０を有している。深度値Ｚとステンシル値Ｓの両方がクリア済みであった場合には形式２でフラグメントをひとつだけ消費して格納することが可能である。
【００６８】
この場合、インデックスデータは全てがある単一のフラグメントを指し、フラグメントデータは以下のようになる。
【００６９】
ｚ＝ｚｃ０
ｄｚｄｘ＝ｄｚｄｙ＝０
ｓ＝ｓｃ０                                              （６）
ここで、ｚｃ０とｓｃ０はレジスタ設定されたクリア値である。Ｚキャッシュ３４上のＺデータが更新された場合には対応する矩形領域のＺクリアフラグを０にセットする。同様にＳデータが更新された場合には対応する矩形領域のＳクリアフラグを０にセットする。
【００７０】
本発明の第２の実施の形態に係る画像処理装置によれば、図１２に示すＺバッファ回路を使用し、図１０或いは図１１に示すテスト回路を使用することで、深度値Ｚのバッファ回路１８へのアクセスを高速化することにより画像処理性能を改善することができる。
【００７１】
[その他の実施の形態]
上記のように、本発明は第１乃至第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施の形態及び運用技術が明らかとなろう。
【００７２】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００７３】
【図１】本発明の第１の実施の形態に係る画像処理装置の模式的ブロック構成図。
【図２】（ａ）矩形領域内に画素２を敷き詰めた様子を示す模式図。（ｂ）座標軸ｘ,ｙおよび深度値Ｚを示すｚ方向を説明する模式図。
【図３】ポリゴン内に画素を敷き詰めた様子を示す模式図であって、隣接する画素間の深度値を表すＺ値ｚ０,ｚ１,ｚ２の関係を説明する図。
【図４】矩形領域のマトリックス上に様々な形状のポリゴンが配置される例を示す図。
【図５】本発明の第１の実施の形態に係る画像処理装置に適用するＺバッファ制御装置の模式的ブロック構成図。
【図６】形式２のフォーマット例を示す模式図であって、深度値Ｚとステンシル値Ｓを生成するための１組以上のフラグメント０〜フラグメント２、および深度値Ｚとステンシル値Ｓを生成するために必要なフラグメントを示す画素ごとのインデックスデータからなるフォーマット例。
【図７】形式２のフォーマット例を示す模式図であって、フラグメント０〜フラグメント２の構成で、深度値Ｚの代表値ｚ０〜ｚ２、深度値Ｚのｘ,ｙ方向のそれぞれの傾きｄｚｄｘ，ｄｚｄｙ、およびステンシル値Ｓの代表値ステンシル０〜ステンシル２からなるフォーマット例。
【図８】形式２のフォーマット例を示す模式図であって、インデックスデータの構成例を示し、矩形領域に含まれる画素に相当する部分のインデックス値を示す模式図。
【図９】形式１のデータ格納フォーマット例を示す模式図であって、ワード０〜ワード７において、各ワード領域に、深度値Ｚ、ステンシル値Ｓを割り当て、これらの深度値Ｚとステンシル値Ｓの組み合わせが８個存在する例を示す模式図。
【図１０】本発明の第１の実施の形態に係る画像処理装置に適用するＺバッファ制御装置内のテスト回路の模式的ブロック構成図。
【図１１】本発明の第１の実施の形態に係る画像処理装置に適用するＺバッファ制御装置内のテスト回路の別の模式的ブロック構成図。
【図１２】本発明の第２の実施の形態に係る画像処理装置に適用するＺバッファ制御装置の模式的ブロック構成図。
【図１３】更新データ生成回路の模式的ブロック構成図。
【符号の説明】
【００７４】
２…画素
４…矩形領域
６…ポリゴン
１０…画像処理装置
１２…画素生成装置（ＤＤＡ）
１４,１５…Ｚバッファ制御装置
１８…Ｚバッファ回路
２０…カラーバッファ制御装置
２２…カラーバッファ回路
２８…テスト回路
３０…フラグメント選択装置
３２…更新データ生成回路
３４…Ｚキャッシュ
４２，５０…ステンシルテスト回路
４４，４５，４６…演算器（Ｃ）
４８…演算器（Ｄ）
５２…フラグメモリ
５４…Ｚクリアフラグメモリ
５６…Ｓクリアフラグメモリ
５８…クリア値レジスタ
６０…選択器
６２…形式選択回路
６４…ポリゴン全覆チェック回路
６６…ランレングス圧縮回路
６８…インデックスマージ回路
【図１】
2006171906.tif 000003
【図２】
2006171906.tif 000004
【図３】
2006171906.tif 000005
【図４】
2006171906.tif 000006
【図５】
2006171906.tif 000007
【図６】
2006171906.tif 000008
【図７】
2006171906.tif 000009
【図８】
2006171906.tif 000010
【図９】
2006171906.tif 000011
【図１０】
2006171906.tif 000012
【図１１】
2006171906.tif 000013
【図１２】
2006171906.tif 000014
【図１３】
2006171906.tif 000015