説明

早期深さ検知を有するグラフィックスパイプライン及び方法

【課題】早期深さ検知を有するグラフィックスパイプライン及び方法。
【解決手段】グラフィックスパイプラインは、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージを含む。処理ステージは、少なくとも1つのテクスチャリングステージと深さテストステージとを含み、深さテストステージは、グラフィックスパイプラインにおいてテクスチャリングステージより早くに位置することが出来る。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
2004年3月3日に出願された米国特許仮出願シリアル番号第60/550,018号、及び、2004年3月3日に出願された米国特許仮出願シリアル番号第60/550,024号に対し優先権が主張され、これらの全体のコンテンツは参照によりここに組み込まれる。
【0002】
(分野)
本発明は、一般にグラフィックスプロセッサ(graphics processors)に関連し、より詳細には、本発明は、帯域幅及び/又は電力消費を最小化するために、パイプラインの早い段階で(early in the pipeline)深さテスト(a depth test)が置かれる3Dグラフィックスパイプラインに関係する。
【背景技術】
【0003】
グラフィックスエンジンは、コンピューター及びテレビジョンのスクリーンのような、固定ディスプレイ装置上に三次元(3D)画像を表示するために利用されている。これらのエンジンは、典型的には、従来のAC電源コンセントによって動力が供給されたデスクトップシステムに含まれており、従って、電力消費制限によって著しく制約されることはない。最近の傾向は、然しながら、バッテリ供給型手持ち式機器(battery powered hand- held devices)の中に3Dグラフィックスエンジンを内蔵することである。そのような機器の例は、携帯電話及び携帯情報端末(personal data assistants)(PDA)を含む。然しながら、残念なことに、従来のグラフィックスエンジンは、大量のパワーを消費し、従って、これらのローパワー操作環境には適していない。
【0004】
図1は、従来の3Dグラフィックスエンジンに含まれるベーシックオープンGLラスタ化パイプライン(a basic Open GL rasterization pipeline)の概略ブロック図である。示されるように、この例のパイプラインは、トライアングルセットアップステージ(a triangle setup stage)101、ピクセルシェーディングステージ(a pixel shading stage)102、テクスチャマッピングステージ(a texture mapping stage)103、テクスチャブレンディングステージ(a texture blending stage)104、シザーテストステージ(a scissor test stage)105、アルファテストステージ(an alpha test stage)106、ステンシルテストステージ(a stencil test stage)107、深さテストステージ(a depth test stage)108、アルファブレンディングステージ(an alpha blending stage)109、そして論理演算ステージ(a logical operations stage)110を含んでいる。
【0005】
3Dグラフィックシステムでは、表示される各オブジェクトは、他のプリミティブな形状(primitive shapes)が利用されることができるが、典型的には、頂点情報(vertex information)によって定義される表面三角形(surface triangles)に分割される。又、典型的には、グラフィックスパイプラインは、オブジェクト又はイメージの三角形の連続バッチ(sequential batches of triangles of an object or image)を処理するように設計されている。あるバッチの三角形は、所定のシーン内で互いに視覚的にオーバーラップするかもしれない。
【0006】
図1を参照すると、トライアングルセットアップステージ101は、後のパイプラインステージによって実行される計算において使用される係数(coefficients)を計算することにより、三角形の各バッチを「セットアップする(set up)」。
【0007】
ピクセルシェーディングステージ102は、処理される三角形のバッチの中でどのピクセルが各3角形によって包含されるのかを計算するために頂点情報を使用する。三角形が互いにオーバーラップするかもしれないので、異なる深さの複数のピクセル(multiple pixels)は、スクリーンディスプレイ上の同じポイントに位置するかもしれない。特に、ピクセルシェーディングステージ101は、頂点情報を使用して、各ピクセルのためのシェーディング(明暗値(lighting value))、色及び深さの値に手を加える(interpolates)。
【0008】
この目的のために、様々なシェーディング技術のうちのどれかが採用されることが出来、そして、シェーディング操作は、三角形毎に、頂点毎に、或いはピクセルベース毎に起こり得る。
【0009】
テクスチャマッピングステージ103及びテクスチャブレンディングステージ104は、三角形のプロセスバッチの各ピクセルにテクスチャ(texture)を加え、ブレンドする(blend)ように機能する。極めて一般的には、これは、頂点情報に従ってピクセル上に予め定義された(pre-defined)テクスチャをマッピングする(mapping)ことにより行われる。シェーディングと同様に、様々な技術がテクスチャリング(texturing)を達成するために採用されることができる。又、霧処理として知られている技術が同様にインプリメントされることができる。
【0010】
シザーテストステージ105は、表示されたシーンの視野のフィールドに入らない三角形の部分(破片(fragments))の中に含まれるピクセルを廃棄する(discard)ように機能する。一般に、これは、ピクセルが所謂はさみ長方形(a so-called scissor rectangle)内にあるかどうかを判断することにより行われる。
【0011】
アルファテストユニット106は、破片に関連したアルファ値(透明度値)と基準アルファ値との間の比較に基づき、三角形の破片(より正確には、破片の中に含まれるピクセル)を条件付きで廃棄する。同様に、ステンシルテストは、各破片と保存されたステンシル値との間の比較に基づき、破片を条件付で廃棄する。
【0012】
深さテストステージ108(陰面消去(Hidden Surface Removal)(HRS)とも呼ばれる)は、ピクセルの深さ値と同じディスプレイ位置を有する他のピクセルの深さ値とに基づき三角形破片の中に含まれるピクセルを廃棄する。一般に、これは、深さテストを受けるピクセルのZ軸値(深さ値)と所謂z−バッファ或いは深さバッファの対応する位置に保存されたZ軸値とを使用して比較することにより行われる。テストされるピクセルは、もしそのZ軸値が、ピクセルはz−バッファに保存されたz軸値を有する別のピクセルによって視界からブロックされるだろう、ということを示す場合は、廃棄される。他方では、テストされるピクセルが視界からブロックされないであろう場合は、z−バッファ値は、テストされたピクセルのZ軸値で上書きされる。このように、視界からブロックされる下に横たわるピクセル(underlying pixels)は廃棄され、上に横たわるピクセル(overlying pixels)が採用される。
【0013】
アルファブレンディングステージ109は、描画されたピクセル(rendered pixels)と、オブジェクトの透明度を達成するためにアルファ値に基づきカラーバッファに以前より保存されているピクセルとを、合成する(combine)。
【0014】
論理演算ユニット110は、最終的にピクセルディスプレイデータデータを得るためにパイプラインの、いろいろな残りのプロセスを総称的に(generically)表示する。
【0015】
何れのグラフィックスシステムにおいても、満足な性能を維持する一方で可能な範囲内で、プロセッサ及びメモリ帯域幅を浪費しないこと(to conserve)が望まれる。これは、帯域幅が制限されているかもしれないポータブル又は携帯型機器(portable or hand-held devices)の場合には特にあてはまる。又、前に示唆されたように、ポータブル又は携帯型機器上のディスプレイ用の3Dグラフィックスを処理する時は電力消費を最小化する特別な要求が産業界にある。
【発明の開示】
【0016】
[要約]
本発明の一面によれば、グラフィックスパイプライン(a graphics pipeline)が、ピクセルデータを処理するために提供され、入力プリミティブオブジェクトデータ(input primitive object data)からディスプレイピクセルデータを描画する(render)複数の連続して配列された処理ステージ(processing stages)を備える、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージ(a texturing stage)と深さテストステージ(a depth test stage)とを含み、そして、前記深さテストステージは、前記グラフィックスパイプラインにおいて前記テクスチャリングステージより早くに位置する(located earlier)。
【0017】
本発明の別の面によれば、グラフィックスパイプラインが、ピクセルデータを処理するために提供され、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージ(processing stages)を備える。前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージ(an alpha test stage)と深さテストステージとを含む。更に、前記パイプラインは、処理されたピクセルデータのアルファテスト状態に従って、少なくとも第1及び第2ステージシーケンスの間に動的に再配列される(dynamically reordered)。前記第1ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置する。前記第2ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する(located after)。
【0018】
本発明の更に別の面によれば、グラフィックスパイプライン(a graphics pipeline)が、ピクセルデータを処理するために提供され、深さ値(depth values)を保存する深さバッファ(a depth buffer)と、処理されたピクセルの現在の深さ値(a current depth value)と前記深さバッファの中に保存された前の深さ値(a previous depth value)とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように(to overwrite)書き込みコマンド(a write command)を出す、深さテストステージ(a depth test stage)と、を含む。グラフィックスプロセッサ(the graphics processor)は、更に、深さテストステージによって出された前記書き込みコマンドを一時的に延期する(defers)書き込み延期回路(write defer circuitry)と、前記深さテストステージによる処理の後に前記処理されたピクセルを受け取るテクスチャリングステージ(a texturing stage)と、そして、前記テクスチャリングステージによる処理の後に前記処理されたピクセルを受け取るアルファテストステージ(an alpha test stage)と、を含む。前記書き込み延期回路は、前記深さテストステージによって出された前記延期された書き込みコマンドを無視するか又は実行するために、前記アルファテストステージに応答する。
【0019】
[詳細な説明]
本発明の上記及び他の面は、添付図面を参照して、以下の詳細な説明から、容易に明らかとなるであろう。
【0020】
本発明は、後のパイプラインステージのパワー及び帯域幅消費を最小化するために、グラフィックスパイプラインの早い段階に(early in the graphics pipeline)深さテストステージを置くことによって、少なくとも部分的に特徴づけられる。ピクセルの上に重なることによってそれらは視界から隠されるので、目に見えない(not be visible)であろうピクセルを廃棄するように、深さテストは機能する。このように、パイプライン中の初期のポジションに深さテストを移動させることによって、隠れたピクセルは、後での高帯域及びハイパワー消費のパイプラインステージによって処理する前に、廃棄される。そのようなものとして、パイプラインリソースは、廃棄されたピクセルには消費されない。
【0021】
本発明は又、3Dグラフィックスパイプラインの早い段階に深さテストを位置付ける間(while positioning)にオプションとしてアルファテスト(alpha testing)に対応すること(accommodating)によって、少なくとも部分的に特徴づけられる。このことは、アルファテストがイネーブルにされているかどうかに応じてパイプラインを動的に再配列することによって、或いは、アルファテストの結果が確立されるまで深さテスト結果の書き込みを延期することによって、なされることができる。
【0022】
さて、本発明が、いくつかの好ましい、しかし制限しない実施例によって、説明される。以下に説明される3Dグラフィックスパイプラインは、入力プリミティブオブジェクトデータ(input primitive object data)からのディスプレイピクセルデータを描画する(rendering)ためのものであり、適切にコンフィギュレーションされた(configured)3Dグラフィックスエンジンに組み入れられることが出来る。
【0023】
図2は、本発明の第一実施例の一例による3Dグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ(a triangle setup stage)201、ピクセルシェーディングステージ(a pixel shading stage)202、シザーテストステージ203(a scissor test stage)、深さテストステージ(a depth test stage)204、テクスチャマッピングステージ(a texture mapping stage)205、テクスチャブレンディングステージ(a texture blending stage)206、アルファブレンディングステージ(an alpha blending stage)207、そして、論理演算ステージ(a logical operations stage)208を含む。
【0024】
図2の中で示される夫々のパイプラインステージの動作は、図1オープンGLのコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は、冗長を避けるためにここでは省略される。然しながら、図2の中で示されるように、深さテストステージ204は、パイプラインの早い段階に、特に、テクスチャマッピングステージ205の前に、位置される。
【0025】
図2のコンフィグレーションによれば、深さテストは、最終的には目に見えないピクセルに関連したメモリ帯域幅及びパワーを節約するために、パイプラインの中で出来るだけ早くに行われる。言いかえれば、帯域幅とパワーは、表示されたイメージの中で最終的に描画されないピクセルに関しては浪費されない。これは特に、ポータブル又は携帯機器上で表示するために3Dグラフィックスを処理する時に、好都合である。
【0026】
図2の例の実施例は、アルファテストを含んでいない。これは、アルファテストが、テクスチャブレンディングが生じた後まで計算されることができないピクセル用のアルファ値を必要とし、又、ピクセルの深さテストが、ピクセルが透明度閾値を越えることをアルファテストが確認するまで生じない、からである。従って、図2の例においては、深さテストは、帯域幅とパワー消費を最小化するためにテクスチャマッピングステージに先立って、しかし、パイプラインの中にアルファテストステージを持っていないことを犠牲にして位置する。本発明の残りの実施例は、パイプラインの中において深さテストステージの早い段階の位置にもかかわらずアルファテストが接続されている(accommodated)コンフィギュレーションを対象としている。
【0027】
図3は、本発明の第二実施例の一例によるグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ301、ピクセルシェーディングステージ302、シザーテストステージ303、第1深さテストステージ304、テクスチャマッピングステージ305、テクスチャブレンディングステージ306、アルファテストステージ307、第2深さテストステージ308、アルファブレンディングステージ309、そして論理演算ステージ310を含む。
【0028】
図3の中で示される夫々のパイプラインステージのピクセル動作は、一般に、図1のオープンGLコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は、冗長を避けるため、ここでは省略される。然しながら、図3の中で示されるように、第1深さテストステージ304は、パイプラインの早い段階に、特に、テクスチャマッピングステージ305の前に、置かれ、そして、第2深さテストステージ308は、アルファテストステージ307とアルファブレンディングステージ309との間に位置する。
【0029】
図3のパイプラインのステージの操作順序(the operational sequence)は、アルファテストが処理されているピクセルのためにイネーブルにされているかどうかに依存して、動的に再配列(reorder)される。すなわち、アルファテストがイネーブルにされない場合は、図3の参照「a」によって示されるように、パイプラインは次のとおり進行する:トライアングルセットアップステージ301→ピクセルシェーディングステージ302→シザーテストステージ303→深さテストステージ304→テクスチャマッピングステージ305→テクスチャブレンディングステージ306→アルファブレンディングステージ309→論理演算ステージ310。
【0030】
ピクセルに対し、アルファテストがイネーブルにされる場合は、図3の参照「b」によって示されるように、ステージは次のとおり進行する:トライアングルセットアップステージ301→ピクセルシェーディングステージ302→シザーテストステージ303→テクスチャマッピングステージ305→テクスチャブレンディングステージ306→→アルファテストステージ307→深さテストステージ308→アルファブレンディングステージ309→論理演算ステージ310。
【0031】
一般に、グラフィックスパイプラインは、ピクセルデータと共にパイプラインをシフトダウンされる(shifted down)コントロールビットを含む。それらのコントロールビットのうちの1つはアルファテストビットである。又一般に、三角形のバッチ(a batch of triangle)がパイプラインに適用される時、バッチの各三角形は、同じアルファテストセッティングを持つであろう。
【0032】
アルファテストは最初にディスエーブルにされていると仮定する、従って、図3のパイプラインは、第1深さテスト304が実行されるように、そして、アルファテスト307及び第2深さテスト308がバイパスされるように、参照「a」に従って配列されている。パイプラインの中でアルファテストがイネーブルにされるのを示すアルファテストビットが次に検知される、と更に仮定する。その時、データのローカルフラッシュ(local flush)が深さテスト304からテクスチャブレンディングステージ306まで実行され、第1深さテストがバイパスされ、そしてアルファテスト307及び第2深さ308が活性化される(バイパスされない)。このように、図3の参照「b」の配列が達成される。最終的に、アルファテストがディスエーブルされることをアルファテストビットが示す時、パイプラインは、参照「a」の配列に再整理し戻される。
【0033】
図4は、本発明の第三実施例の一例によるグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ401、ピクセルシェーディングステージ402、シザーテストステージ403、第1マルチプレクサ404、深さテストステージ404、第2マルチプレクサ406、テクスチャマッピングステージ407、テクスチャブレンディングステージ408、アルファテストステージ409、第3マルチプレクサ410、アルファブレンディングステージ411、そして論理演算ステージ412を含んでいる。
【0034】
図4の中で示される夫々のパイプラインステージのピクセル動作は、一般に、図1のオープンGLコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は冗長を避けるためにここでは省略される。然しながら、図4の中で示されるように、深さテストステージ405が、パイプライン早期の段階に、特に、テクスチャマッピングステージ407の前に、置かれ、そして、マルチプレクサ404、406及び410が、必要な時にアルファテストに対応するためにパイプラインの動的再整理を可能にするように採用される。
【0035】
図4の条件「AT=0」は、処理されているピクセルに対しアルファテストがディスエーブルされる状態を示す。その場合、マルチプレクサ404は、シザーテストステージ403からのアウトプットを選択し、同じものを深さテストステージ405に適用する;マルチプレクサ406は、深さテストステージ405からアウトプットを選択し、同じものをテクスチャマッピングステージ407に適用する;そして、マルチプレクサ410は、テクスチャブレンディングステージ408からアウトプットを選択し、同じものをアルファブレンディングステージ411に適用する。従って、AT=0の時、パイプラインシーケンスは次のとおりである:トライアングルセットアップステージ401→ピクセルシェーディングステージ402→シザーテストステージ403→深さテストステージ405→テクスチャマッピングステージ407→テクスチャブレンディングステージ408→アルファブレンディングステージ411→論理演算ステージ412。
【0036】
AT≠0のとき、処理されているピクセルに対しアルファテストがイネーブルにされる。その場合、マルチプレクサ404は、アルファテストステージ409からのアウトプットを選択し、同じものを深さテストステージ405に適用する;マルチプレクサ406は、シザーテストステージ403からのアウトプットを選択し、同じものをテクスチャマッピングステージ407に適用する;そして、マルチプレクサ410は、深さテストステージ405からのアウトプットを選択し、同じものをアルファブレンディングステージ411に適用する。従って、AT≠0の時、パイプラインシーケンスは次のとおりである:トライアングルセットアップステージ401→ピクセルシェーディングステージ402→シザーテストステージ403→テクスチャマッピングステージ407→テクスチャブレンディングステージ408→アルファテストステージ409→深さテストステージ→アルファブレンディングステージ411→論理演算ステージ412。
【0037】
図3及び4の実施例の各々においては、3Dグラフィックスパイプラインは、アルファテストがイネーブルされているかどうかに依存して再配列される。もしアルファテストがイネーブルである場合、アルファテスト結果は深さテストより前に必要とされるので、そのとき深さテストステージは機能的にアルファテストステージの後に位置する。
【0038】
もしアルファテストがディスエーブルされる場合、パイプラインの早い段階で不可視ピクセル(non-visible)を除去するため、そのときは深さテストステージは機能的にテクスタマッピングステージの前に位置し、それによって、パワーと帯域幅とは浪費されない。
【0039】
図5は、本発明の別の実施例の一例の概略ブロック図である。図3及び4の実施例のように、図5のコンフィギュレーションは、同時にパイプラインの早い段階に深さテストステージを位置づける間にアルファテストに対応することが可能である。
【0040】
図5において図示されているのは、深さテスト(HSR)ステージ501、テクスチャマッピングステージ502、テクスチャリングステージ503、アルファステージ504、FIFO回路505、深さバッファインタフェース506、そして深さバッファ507である。深さテストステージ501、テクスチャマッピングステージ502、テクスチャリングステージ503及びアルファステージ504は、3Dグラフィックスエンジンのグラフィックスパイプラインの部分を形成する。
【0041】
作動中、処理されたピクセルは、パイプライン経由で深さテストステージ501に到着し、そして、ピクセルのZ軸値(深さ値)が、深さバッファ507の対応する位置に保存されているZ軸値と比較される。これは、読み出しアドレス[addr_r(14:0)]を深さバッファ507にバッファインタフェース506経由で伝送(transmit)することによって、そして、深さバッファ507に保存された深さバッファz軸値[depth_r(15:0)]を受け取ることによって、なされる。ピクセルのZ軸値と深さバッファのZ軸値とが比較され、もし比較結果がピクセルは目に見えないであろうことを示す場合、ピクセルは有効に廃棄される。他方、もし比較結果がピクセルは目に見えるであろうことを示す場合、延期されたバッファ書き込みプロセス(a deferred buffer write process)が、以下に説明されるように実行される。
【0042】
FIFO回路505が信号[fifo_full]によって示されるようにフルでない(not full)と仮定すれば、延期されたバッファ書き込みプロセスは、FIFO書き込みコマンド[fifo_write]を出すことによって、そしてその後、バッファ書き込みアドレス信号[addr_w(14:0)、新しいピクセルZ軸値[depth_w(15:0)、そしてアルファテスト信号[alpha_test]をFIFO回路505に書き込むことによって、実行される。バッファ書き込みアドレス信号[addr_w(14:0)は、処理されたピクセルの深さバッファ507の対応する位置を示す。新しいピクセルz軸値[depth_w(15:0)は、処理されたピクセルのZ軸値である(それは深さテストに合格した)。アルファテスト信号[alpha_test]は、アルファテストが処理されたピクセルに対しイネーブルにされているかどうかを示す。
【0043】
バッファ書き込みアドレス信号[addr_w(14:0)]、新しいピクセルZ軸値[depth_w(15:0)]、そしてアルファテスト信号[alpha_test]が、FIFO回路505を通してシフトされるので、処理されたピクセルは、同時に、テクステクスチャリングマッピングステージ502及びテクスチャリングステージ503夫々によるテクスチャマッピング(texture mapping)及びテクスチャリング(texturing)の支配下にある。FIFO回路505の深さ「n」は、好ましくは、深さテストステージ501とアルファテストステージ504との間に置かれたパイプラインステージのピクセル容量の合計に等しい。この実施例においては、FIFO回路505の深さは、テクスチャマッピングステージ502とテクスチャリングステージ503とのピクセル容量の合計と等しい。結果として、ピクセルは、テクスチャマッピングステージ502及びテクスチャリングステージ503によるピクセルの処理と同時に起こるタイミングでFIFO回路505の終わりの中に入り込む(have worked its way to the end)であろう。
【0044】
テクスチャマッピング及びテクスチャリングの後、処理されたピクセルは、そのあとアルファテストステージ504に適用される。この時、ピクセルは、アルファテストイネーブルにされている(alpha test enabled)か、又はアルファテストイネーブルにされていないかのいずれかである。
【0045】
もしピクセルがアルファテストイネーブルにされていない場合は、ピクセルは、更なる処理のためにパイプライン下流に伝送される(transmitted down the pipeline)、そして、[valid_pixel]信号は、深さバッファインタフェース506に伝送される。FIFO回路505が信号[fifo_empty]によって示されるように空きでない(not empty)と仮定すれば、深さバッファインタフェースは、リードコマンド[fifo_read]をFIFO回路505に出すために、又、バッファ書き込みアドレス信号[addr_w(14:0)]、新しいピクセルZ軸値[depth_w(15:0)]及びアルファテスト信号[alpha_test]を読むために、[valid_pixel]信号に応答する。深さバッファインタフェース506は、そのあと、アドレス[addr_w(14:0)]で深さバッファ507をアドレス指定することによって、又、新しいピクセルZ軸値[depth_w(15:0)]を深さバッファ507に上書きすること(overwriting the new pixel z-axis value into the depth buffer)によって、深さバッファ507を更新する。
【0046】
もしピクセルがアルファテストイネーブルにされている場合は、アルファテストステージ504は、処理されたピクセルのアルファ値と基準値とを比較する。もしピクセルがアルファテストに合格する場合、[alpha_pass]信号は深さバッファインタフェース506に伝送され、そしてピクセルは、更なる処理のためにパイプライン下流に伝送される。ピクセルがアルファテストに失敗する場合、[alpha_fail]信号が深さバッファインタフェース506に伝送され、そして、ピクセルは有効に廃棄される。
【0047】
再び、FIFO回路505が信号[fifo_empty]によって示されるように空きでないと仮定すれば、深さバッファインタフェースは、リードコマンド[fifo_read]をFIFO回路505に出すために、又、バッファ書き込みアドレス信号[addr_w(14:0)]、新しいピクセルZ軸値[depth_w(15:0)]及びアルファイネーブル信号[alpha_test]を読むために、[alpha_pass]及び[alpha_fail]信号に応答する。もし[alpha_fail]信号がアクティブである(active)場合は、深さバッファインタフェース506は、新しいピクセルZ軸値[depth_w(15:0)]で深さバッファ507を更新しない。他方、もし[alpha_pass]信号がアクティブである場合は、深さバッファインタフェース506は深さバッファ507を更新する。すなわち、深さバッファインタフェースはアドレス[addr_w(14:0)]で深さバッファ507をアドレスし、そして、新しいピクセルZ軸値を深さバッファ507に上書きする。
【0048】
図5に関係して上記に説明されたインプリメンテーションは、深さテストの結果を一時的に保存する回路(例、FIFO回路)を含む。新しいピクセルに関連したアルファテストの結果が利用出来るまで、新しいZ軸値の深さバッファの中への実際の書込みは延期される。もしアルファテストが合格する場合は、新しいピクセルの新しいZ軸値は、深さバッファの中に保存される。もしアルファテストが失敗する場合は、それはそうではない。もしアルファテストがない場合は、新しいZ軸値は、直ちに、但し待ち状態の(pending)アルファテストを有する何れのZ軸値も書かれた後にのみに、書かれることが出来る。[alpha_test]信号は、この目的のために使用されることができる。すなわち、もし全ての待ち状態のz軸値結果がアルファテストを示さない場合は、深さバッファインタフェースは、FIFO回路505を直ちに読み、そしてそれに応じ深さバッファ507を更新するように、コンフィギュレーションされることができる。
【0049】
図5の実施例においてのように、アルファテストの出力が出るまで、深さバッファを更新することを延期することによって、深さテストステージは、不可視ピクセルの後での処理を回避するためにパイプライン早めの段階に位置されることが出来る。
【0050】
図面及び明細書においては、本発明の典型的な好ましい実施例が開示されており、特定の例が記載されているが、それらは、包括的及び説明的な意味のみにおいて使用されており、制限の目的のためではない。従って、本発明の範囲は、例示的な実施例によってではなく、添付された特許請求の範囲によって解釈されるべきである、ということが理解されるべきである。
【図面の簡単な説明】
【0051】
【図1】図1は、3Dグラフィックスエンジンに含まれるベーシックオープンGLラスタ化パイプラインの一例の概略ブロック図である。
【図2】図2は、本発明の第一実施例の一例による3Dグラフィックスパイプラインの概略ブロック図である
【図3】図3は、本発明の第二実施例の一例による3Dグラフィックスパイプラインの概略ブロック図である。
【図4】図4は、本発明の第三実施例の一例による3Dグラフィックスパイプラインの概略ブロック図である。
【図5】図5は、本発明の第四実施例の一例による3Dグラフィックスパイプラインの概略ブロック図である。

【特許請求の範囲】
【請求項1】
ピクセルデータを処理するためのグラフィックスパイプラインであって、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージを備え、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージと深さテストステージとを含み、そして、前記深さテストステージは、前記グラフィックスパイプラインにおいて前記テクスチャリングステージより早くに位置する、グラフィックスパイプライン。
【請求項2】
前記複数の連続して配列された処理ステージは、シザーテストステージを更に含み、そして、前記深さテストステージは機能的に、前記シザーテストステージと前記テクスチャリングステージとの間に位置する、請求項1記載のグラフィックスパイプライン。
【請求項3】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを含む、請求項1記載のグラフィックスパイプライン。
【請求項4】
前記複数の連続して配列された処理ステージは、アルファテストステージを欠いている、請求項1記載のグラフィックスパイプライン。
【請求項5】
前記複数の連続して配列された処理ステージは、アルファテストステージを含む、請求項1記載のグラフィックスパイプライン。
【請求項6】
前記深さテストステージによって得られた深さ値を保存する深さバッファを更に備え、なおここでは、前記アルファテストステージは前記テクスチャリングステージの後に位置し、そして、前記深さ値を前記深さバッファに保存することは、前記アルファテストステージの制御の下で一時的に延期される、請求項5記載のグラフィックスパイプライン。
【請求項7】
前記パイプラインは、処理されたピクセルデータの、ディスエーブルにされたアルファテスト状態とイネーブルにされたアルファテスト状態に夫々応じて、少なくとも第1及び第2のステージシーケンスの間に動的に再配列され、
前記第1ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置し、そして
前記第2ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージ及び前記アルファテストステージよりも遅くに位置する、
請求項5記載のグラフィックスパイプライン。
【請求項8】
入力プリミティブオブジェクトデータからディスプレイデータを描画する複数の連続して配列された処理ステージを備え、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージと深さテストステージとを含み;
前記パイプラインは、処理されたピクセルデータのアルファテスト状態に従って、少なくとも第1及び第2のステージシーケンスの間に動的に再配列され、
前記第1ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置し、そして
前記第2ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する、
ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項9】
前記パイプラインの処理ステージ間に動作的に結合され、そして、前記処理されたピクセルデータの前記アルファテスト状態に従い制御される、複数のマルチプレクサ、を更に備える請求項8記載のグラフィックスパイプライン。
【請求項10】
前記複数のマルチプレクサは、
前記アルファテスト状態がディスエーブルされる時は前のパイプラインステージからの出力を前記深さテストステージに適用し、前記アルファテスト状態がイネーブルされる時は前記アルファテストステージからの出力を前記深さテストステージに適用する、第1マルチプレクサと;
前記アルファテスト状態がディスエーブルされる時は前記深さテストステージからの出力を前記テクスチャリングステージに適用し、前記アルファテスト状態がイネーブルされる時は前記前のパイプラインステージからの出力を前記テクスチャリングステージに適用する、第2マルチプレクサと;そして
前記アルファテスト状態がディスエーブルされる時はテクスチャリングステージからの出力を次のステージに適用し、前記アルファテスト状態がイネーブルされる時は前記前のパイプラインステージからの出力を前記次のステージに適用する、第3マルチプレクサと;
を備える、請求項9記載のグラフィックスパイプライン。
【請求項11】
前記前のステージはシザーテストステージである、請求項10記載のグラフィックスパイプライン。
【請求項12】
前記次のステージはアルファブレンディングステージである、請求項11記載のグラフィックスパイプライン。
【請求項13】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項8記載のグラフィックスパイプライン。
【請求項14】
前記グラフィックスパイプラインの少なくとも1つのステージのピクセルデータは、前記第1及び第2のステージシーケンス間で遷移する時、フラッシュされる、請求項8記載のグラフィックスパイプライン。
【請求項15】
深さ値を保存する深さバッファと;
処理されたピクセルの現在の深さ値と前記深さバッファの中に保存された前の深さ値とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように書き込みコマンドを出す、深さテストステージと;
深さテストステージによって出された前記書き込みコマンドの実行を一時的に延期する書き込み延期回路と;
前記深さテストステージの後に前記処理されたピクセルを受け取るテクスチャリングステージと;そして
前記テクスチャリングステージの後に前記処理されたピクセルを受け取るアルファテストステージと;
を備え、
なおここでは、前記書き込み延期回路は、前記深さテストステージによって出された前記延期された書き込みコマンドを無視するか又は実行するために、前記アルファテストステージに応答する、
ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項16】
前記書き込み延期回路は、前記深さテストステージから前記現在の深さ値を受け取るFIFO回路と、そして、前記FIFO回路と前記深さバッファとの間に動作的に結合されたインタフェース回路と、を備える、請求項15記載のグラフィックスパイプライン。
【請求項17】
前記FIFO回路の深さは、前記テクスチャリングステージのピクセル容量の合計に等しい、請求項16記載のグラフィックスパイプライン。
【請求項18】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項17記載のグラフィックスパイプライン。
【請求項19】
前記アルファテストステージは、処理されたピクセルがアルファテストに合格する時は前記深さバッファインタフェースに第1信号を、前記処理されたピクセルが前記アルファテストに不合格となる時は前記深さバッファインタフェースに第2信号を、伝送し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを実行するように前記第1信号に応答し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを無視するように前記第2信号に応答する、請求項17記載のグラフィックスパイプライン。
【請求項20】
前記アルファテストステージは、処理されたピクセルが前記アルファテストステージを機能的にバイパスする時は第3信号を伝送し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを実行するように前記第3信号に応答する、請求項17記載のグラフィックスパイプライン。
【請求項21】
入力プリミティブオブジェクトデータからディスプレイデータを描画する複数の連続して配列された処理ステージと、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージと深さテストステージとを含んでいる;そして
処理されたピクセルデータのアルファテスト状態に応答し、少なくとも第1及び第2のステージシーケンスの間の前記処理ステージの前記連続した配列を動的に再配列するための手段と、なおここでは、前記第1ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインの中で前記テクスチャリングステージよりも早くに位置し、そして、前記第2ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する;
を備える、ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項22】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項21記載のグラフィックスパイプライン。
【請求項23】
前記グラフィックスパイプラインの少なくとも1つのステージのピクセルデータは、前記手段が前記第1及び第2のステージシーケンス間で遷移する時、フラッシュされる、請求項21記載のグラフィックスパイプライン。
【請求項24】
深さ値を保存する深さバッファと;
処理されたピクセルの現在の深さ値と前記深さバッファの中に保存された前の深さ値とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように書き込みコマンドを出す、深さテストステージと;
前記深さテストステージの後に前記処理されたピクセルを受け取るテクスチャリングステージと;
前記テクスチャリングステージの後に前記処理されたピクセルを受け取るアルファテストステージと;そして
深さテストステージによって出された前記書き込みコマンドの実行を一時的に延期するための書き込み延期手段と;
を備える、ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項25】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項24記載のグラフィックスパイプライン。
【請求項26】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時は前記現在の深さ値を保存することと、を含む深さテストパイプラインステージを実行することと;そして
前記深さテストプロセスの実行の間に廃棄されなかった処理されたピクセルにテクスチャパラメータを適用することを含む、前記深さテストパイプラインステージの後の、テクスチャパイプラインステージを実行することと;
を備える、ピクセルデータを処理する方法。
【請求項27】
処理されたピクセルの現在のアルファ値と基準アルファ値とを比較することを含む、前記テクスチャパイプラインステージの後の、アルファテストパイプラインステージを実行すること、を更に備え、なおここでは、前記深さテストパイプラインステージによって前記処理されたピクセルの前記現在の深さ値を前記保存することは、前記アルファテストパイプラインステージの実行の間、延期させられる、請求項26記載の方法。
【請求項28】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時は前記現在の深さ値を保存することと、を含む深さテストパイプラインステージを実行することと;
処理されたピクセルにテクスチャパラメータを適用することを含む、テクスチャリングパイプラインステージを実行することと;そして
少なくとも第1及び第2のパイプラインシーケンス間のパイプラインシーケンスを動的に再配列することと;
を備え、
なおここでは、前記第1パイプラインシーケンスにおいて、前記深さテストパイプラインステージが、前記テクスチャリングパイプラインステージより前に実行され、そして、前記第2パイプラインシーケンスにおいて、前記深さテストパイプラインステージが、前記テクスチャリングステージの後に実行される、
ピクセルデータを処理する方法。
【請求項29】
前記第2パイプラインシーケンスは、前記テクスチャリングステージの後に実行されるアルファテストパイプラインを更に含む、請求項28記載の方法。
【請求項30】
前記第1パイプラインシーケンスは、処理されたピクセルがアルファテストイネーブルにされていない時に実行され、そして、前記第2パイプラインシーケンスは、前記処理されたピクセルがアルファテストイネーブルにされている時に実行される、請求項29記載の方法。
【請求項31】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時はテクスチャパラメータを前記処理されたピクセルに適用することと;
テクスチャパラメータを有する処理されたピクセルのアルファ値と基準アルファ値とを比較することと、前記処理されたピクセルの前記アルファ値が前記基準アルファ値より少ない時は前記処理されたピクセルを廃棄することと、そして、前記処理されたピクセルの前記アルファ値が前記基準アルファ値より大きい時は前記メモリの中に前記処理されたピクセルの前記現在の深さ値を保存することと:
を備えるピクセルデータを処理する方法。
【請求項32】
前記処理されたピクセルの前記アルファ値と前記基準アルファ値との比較の結果まで、第2メモリ中に前記処理されたピクセルの前記現在の深さ値を一時的に保存すること、を備える請求項31記載の方法。
【請求項33】
前記第2メモリはFIFO回路である、請求項32記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2007−526585(P2007−526585A)
【公表日】平成19年9月13日(2007.9.13)
【国際特許分類】
【出願番号】特願2007−502030(P2007−502030)
【出願日】平成17年3月2日(2005.3.2)
【国際出願番号】PCT/US2005/007158
【国際公開番号】WO2005/086090
【国際公開日】平成17年9月15日(2005.9.15)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】