(57)【特許請求の範囲】
【請求項１】
半透明及び不透明なオブジェクトを有する３次元コンピュータグラフィック画像をレンダリングする方法であって、
前記画像において可視とすることができるオブジェクトのリストを判定する段階と、
前記画像の各画素について、前記リストからのオブジェクトが該画素で可視とすることができるかどうかを判定する段階と、
可視画素と判定された半透明または不透明なオブジェクトのデータタグをタグバッファ内に記憶する段階と、
ある画素でさらなる半透明なオブジェクトが可視であると判定される度に、以前に記憶された任意のタグとは別のタグバッファに記憶されるように、さらなる付加的なタグを記憶する段階を含み、
全てのタグバッファが一杯になっている場合には最初に記憶されたタグバッファからタグデータ及びオブジェクトデータをテクスチャリング及びシェーディングユニット（ＴＳＵ）にパスする段階と、
を含む方法。
【請求項２】
ある画素で不透明なサーフェスが可視であると判定された場合に全てのタグバッファをクリアする段階と、
前記不透明なサーフェスに関連したタグを記憶する段階と、
を含む請求項１に記載の方法。
【請求項３】
レンダーされるべきシーンを複数の矩形のサブ領域に最初に細分する段階と、続いて各サブ領域について前記方法を実行する段階とを含む前記請求項１または２のいずれか１項に記載の方法。
【請求項４】
オブジェクトがパンチスルーオブジェクトであるか否か判定する段階と、パンチスルーオブジェクトが検出された場合に異なるプロセスを実行する段階とを含む請求項１に記載の方法。
【請求項５】
前記パンチスルーオブジェクトが不透明なオブジェクトであるか否かを判定する段階と、
不透明なオブジェクトが検出された場合、該オブジェクトが交差する画素に対して前記タグバッファから全てのタグバッファをクリアする段階と、
前記パンチスルーオブジェクトデータを前記ＴＳＵに送る段階と、
を含む請求項４に記載の方法。
【請求項６】
前記パンチスルーオブジェクトが半透明であるか否かを判定する段階と、
半透明なオブジェクトが検出された場合、画素についての全データタグ及びオブジェクトデータを前記ＴＳＵにパスする段階と、
前記半透明なパンチスルーオブジェクトについて前記オブジェクトデータを含める段階と、
を含む請求項４に記載の方法。
【請求項７】
半透明及び不透明なオブジェクトを有する３次元コンピュータグラフィック画像をレンダリングする装置であって、
前記画像において可視とすることができるオブジェクトのリストを判定する手段と、
前記画像の各画素について前記リストからのオブジェクトが該画素で可視とすることができるかどうかを判定する手段と、
前記画素で可視と判定された半透明なオブジェクトについてデータタグを記憶するためのタグバッファと、
ある画素で半透明なオブジェクトが可視であると判定される度に、以前に記憶された任意のタグとは別のタグバッファに記憶されるように、さらなる付加的なタグを記憶する手段と、
全てのタグバッファが一杯になっている場合には、タグデータ及びオブジェクトデータをテクスチャリング及びシェーディングユニット（ＴＳＵ）にパスする手段と、
を備える装置。
【請求項８】
ある画素で不透明なサーフェスが可視であると判定された場合に全タグをクリアする手段と、
前記不透明なサーフェスに関連したタグを前記タグバッファに記憶する手段と、
を含むことを特徴とする請求項７に記載の装置。
【請求項９】
レンダーされるべきシーンを複数の矩形のサブ領域に最初に細分し、続いて各サブ領域について動作する手段を含むことを特徴とする請求項７または８に記載の装置。
【請求項１０】
オブジェクトがパンチスルーオブジェクトであるか否かを判定する手段と、パンチスルーオブジェクトが検出された場合に異なるプロセスを実行する手段とを含む請求項７に記載の装置。
【請求項１１】
パンチスルーオブジェクトが不透明なオブジェクトであるか否かを判定する手段と、
不透明なパンチスルーオブジェクトによって交差された画素に対して前記タグバッファから全てのタグをクリアする手段と、
前記不透明なパンチスルーオブジェクトデータを前記ＴＳＵに送る手段と、
を含む請求項１０に記載の装置。
【請求項１２】
前記パンチスルーオブジェクトが半透明であるか否か判定する手段と、
半透明なパンチスルーオブジェクトが検出された場合、画素について全データタグ及びオブジェクトデータを前記ＴＳＵにパスする手段と、
前記半透明なパンチスルーオブジェクトについて前記オブジェクトデータを含める手段と、
を含むことを特徴とする請求項１０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元コンピュータグラフィックスシステムに関し、特に、このようなシステムで画像をレンダリングする場合に修正する必要のある各画素に割り当てられたデータを数分の１に低減する方法及び装置に関する。
【背景技術】
【０００２】
タイルベースのレンダリングシステムが知られている。これらは、レンダーされるべき画像を複数の矩形のブロック又はタイルに分解する。これが行われる方法及び実行される後続のテクスチャリング及びシェーディングが、図１に概略的に示されている。これは、アプリケーションから画像データを受け取り、該画像データを公知の方法を使用して画面スペースに変換するジオメトリ処理ユニット２を示している。次いで、データはタイリングユニット４に供給され、定義された矩形領域又はタイルのセットのためのオブジェクトリスト６に画面スペースジオメトリを挿入する。各リストは、画面（すなわちタイル）のサブ領域に全体的又は部分的に存在するプリミティブ（サーフェス）を含む。リストは、画面上の全てのタイルに対して存在するが、幾つかのリストはその中にデータを持たない可能性があることに留意しなければならない。
【０００３】
次に、データは、１タイルずつ隠面消去ユニット８（ＨＳＲ）に移され、そこからテクスチャリング及びシェーディングユニット１０（ＴＳＵ）に移される。ＨＳＲユニットは、タイルの各プリミティブを処理し、可視画素についてのデータだけをＴＳＵにパスする。
【０００４】
多くの画像は、不透明なオブジェクトと半透明なオブジェクトの両方を含む。このような画像を正確にレンダーするために、ＨＳＲユニットは、ＴＳＵに対して影にする必要のある画素の「レイヤ」をパスしなければならない。これは、１つより多いオブジェクトが特定の画素に加えられるべき画像データに寄与することに起因する。例えば、汚れた窓ガラスを通して見る建物の内側からのビューは、ガラスを通して見ることのできるジオメトリと、ＴＳＵにパスされるべき窓ガラス自体の両方を必要とする。このプロセスは、「パススパウニング」と呼ばれる。
【０００５】
通常、図１に示されたタイプのタイルベースのレンダリング装置は、現在処理されているタイルの各画素に対して最も前面のオブジェクトのためのタグを保持するためにバッファを使用することになる。パスは通常、可視性試験が行われる前に、ＨＳＲユニット８が半透明のオブジェクトを処理する際には常に生成される。これは、ＴＳＵに送られる半透明オブジェクトの可視画素の前にバッファ内に記憶された現在可視タグの全てにおいて得られる。すなわち画素データの１つより多いセットが各画素についてパスされる。
【０００６】
図２のフロー図はこの方法を示している。本図において、処理されるプリミティブが不透明であるか否かの判定が１２で行われる。不透明でない場合、１４でタグのバッファがＴＳＵ１０に送られる。次いで、不透明でないプリミティブのための全ての可視タグは、１５で同様にＴＳＵにパスされ、次にＨＳＲユニット８が、１８で次のプリミティブに移ることになる。ステップ１２で、プリミティブが不透明であると判定された場合には、そのタグは、１８で次のプリミティブに移る前に１６でバッファに書き込まれる。タグは、どのオブジェクトが画素で可視であるかを示すデータの１つである。半透明なオブジェクトが不透明なオブジェクトを覆う場合に、１つの画素につき１つより多いタグが必要とされる。
【０００７】
上記の方法の使用は、半透明な画素によって覆われず且つ別の不透明なオブジェクトによって覆い隠される可能性のある不透明な画素が、不必要にＴＳＵにパスされる場合があることを意味する。これに加えて、半透明なオブジェクトは、不透明なオブジェクトが引き続き覆い隠す場合にＴＳＵにパスされる。
【発明の開示】
【０００８】
上記の説明においてタグバッファが存在することにより、幾つかの不必要なパスの排除を可能にするパススパウニング規則（上記に説明された）への修正が可能になる。
【０００９】
本発明の実施形態では、半透明なオブジェクトが見られる時点でパスを生成するのではなく、半透明なタグが不透明なオブジェクトと同じ方法でタグバッファにレンダーされ、既に占有されているロケーションに可視の半透明な画素を書き込むことが必要な時点でのみパスが生成された。更に、半透明なオブジェクトタグがタグバッファにレンダーされるときには、これらを直ちにＴＳＵにパスする必要はない。従って、これらが引き続き隠される場合には、これらを廃棄することができる。
【００１０】
本発明は、言及される添付の請求項でより正確に定義される。
【発明を実施するための最良の形態】
【００１１】
次に、本発明の好ましい実施形態について、添付の図面を参照しながら実施例により詳細に説明する。
【００１２】
図３では、修正されたパススパウニング規則のセットを使用してレンダーされる３つの三角形のシーケンスが示されている。図１ａで、不透明な三角形Ｔ１は、タグバッファにレンダーされる。半透明な三角形Ｔ２が可視の不透明な画素の上部にレンダーされる場合、ＨＳＲユニットは、ＴＳＵにこれらの画素をパスする必要があり、その後、半透明なタグを継続してラスタライズすることができる。不透明な三角形は、Ｔ２がラスタライズされるときのスキャン行順序で生じる。従って、以前にラスタライズされたＴ１の画素とＴ２の画素の全ては、ＴＳＵにパスされる。これにより、図３ｂに示される半透明なオブジェクトの残りはそのままにされる。次に、不透明な三角形Ｔ３は、図３ｃに示されるようにタグバッファにレンダーされる。この三角形Ｔ３は、Ｔ１とＴ２の全てを覆い隠す。
【００１３】
Ｔ１及びＴ２からのタグは、改良された規則にも関わらずＴＳＵに不必要にパスされているのが分かるであろう。不必要にパスされた三角形は、図３ｃの破線で示されている。これに加えて、Ｔ３が半透明で、別のオブジェクトによって引き続き覆い隠された場合、Ｔ２からの全てのタグはＴＳＵにパスされることになる。
【００１４】
１つより多いタグバッファが提供される場合、これは不必要なパスの数を更に低減できる。Ｎ個のタグバッファを有するシステムでは、最低Ｎ個の覆い隠されたパスを取り除くことができる。これは、全てのタグバッファが書き込まれるまで、半透明な画素を占有ロケーションに書き込むよう試行される毎に新しいタグバッファに切り換えることによって達成される。この時点で、第１タグバッファはＴＳＵにパスされる。
【００１５】
不透明な画素が現在のタグバッファに書き込まれる場合、これは、結果として同じ画素が全ての他のバッファで無効にされることになり、従って、どの覆い隠された画素も取り除かれる。これは、不透明なプリミティブによって書き込まれるどのような画素もそのプリミティブによって作成されたデータからだけ構成される場合に行うことができる。図４のフローチャートは、パススパウニング規則がこの場合にどのように作用するかを示している。
【００１６】
オブジェクトの処理について２０で開始した後２２及び２４で、図２のようにオブジェクトのタイプに関する判定が行われる。２２でオブジェクトが不透明であると判定された場合にはシステムは１００で不透明処理経路を実行し、そうでなく、オブジェクトが２４でパンチスルーであると判定された場合には、パンチスルー処理経路が３００で実行され、それ以外は半透明処理が２００で実行される。
【００１７】
オブジェクトが不透明である場合、該オブジェクトは１００から画素毎に基づき処理される。オブジェクト内の各画素について、システムはまず１０２でその可視性を判定する。画素が不可視である場合、システムは１０８にスキップし、オブジェクトにそれ以上画素が残っていないかどうか判定する。画素が可視の場合、そのタグは、１０４で現在のタグバッファに書き込まれ、全ての他のバッファのタグは、１０６でクリアされる。次いで、システムは、現在のオブジェクトから処理されずに残っているそれ以上の画素があるか否かを１０８で判定し、残っている場合には、１１０で次の画素に移り、１０２から処理を続ける。オブジェクトに処理すべき画素がない場合には、システムは１１２で次のオブジェクトに移り２０に戻る。
【００１８】
３Ｄコンピュータグラフィックスは、「パンチスルー」オブジェクトと呼ばれるものを使用する場合が多い。これらのオブジェクトは、バックエンドテストを使用して、画素が描かれるべきかどうかを判定する。例えば、画素がフレームバッファに書き込まれる前に、そのアルファ値を幾つかの比較モードの１つを使用して基準に対して比較することができ、この比較の結果が真である場合には、画素が可視であると判定され、偽である場合、不可視でなると判定される。不可視であると判定された画素は、奥行きバッファを更新しない。このテストは、不透明なオブジェクト及び部分的に半透明なオブジェクトの両方に適用できる点に留意されたい。この技術は、森のような複雑なシーンを比較的少ないポリゴンを使用してモデル化することができ、従来のｚバッファでは、システムに対しポリゴンが提示される順序に関わらずパンチスルーの半透明性を正確にレンダーできることから、３Ｄゲームアプリケーションで一般的なものである。
【００１９】
奥行きバッファの更新はバックエンドテストの結果に依存するので、タイルベースのレンダリング（ＴＢＲ）システムでは、特定の方法でこれらのオブジェクトを扱う必要がある。既存のＴＢＲシステムでは、あたかもパンチスルーオブジェクトが透明であるようにパスをまず生成し、次にパンチスルーオブジェクトは、必要に応じて奥行きバッファを更新するＨＳＲユニットに可視性情報をフィードバックするＴＳＵにパスされる。
【００２０】
パンチスルーオブジェクトの取扱いは最適化することができる。パンチスルーが不透明なオブジェクトに適用される場合、これは十分可視であるか、又は全く不可視であるかのいずれかになり、これにより、これらをタグバッファのフラッシングに対して不透明として扱うことができる。特に、不透明なパンチスルーオブジェクトが受信された時点で、隠面消去（ＨＳＲ）ユニットによって可視と判定されたどの画素も、ＴＳＵに直接パスされる。次にＴＳＵは、フィードバック画素について、タグバッファの同じ画素を適切及び無効として奥行きバッファを更新するＨＳＲユニットに有効とされる画素をフィードバックする。後者は、ＴＳＵにパンチスルー画素をパスする動作が、タグバッファがもはや必要とされない同じロケーションで該画素が何らかの有効なタグを既に描かれたことを意味するときに可能である。複数のタグバッファが存在する場合、タグは、全てのバッファにわたり無効にされる。
【００２１】
部分的に透明なパンチスルーデータは、ＴＳＵにフラッシュされるべき現在のタグバッファを含むこれまでの全てのタグバッファを必要とする。これは、透明性が、タグバッファに現在含まれるどのような重なり合ったタグともブレンドすることが場合によっては必要となるためである。或いは、パンチスルータグは、これらがフレームバッファ画像を更新せずにパンチスルーテストによって命令される通りに次のバッファに書き込まれるように、これらのタグが修正された状態でＴＳＵにパスすることができる。これは、引き続き隠されているパンチスルーオブジェクトの下にあるオブジェクトをレンダーされないようにすることができる。しかしながらこれは、パンチスルーオブジェクトを潜在的にレンダリングするコストが２重になり、１つは画素の可視性を判定するため、１つはパンチスルーオブジェクトが隠されていない場合に最終画像をレンダーするためである。パンチスルーオブジェクトを２度レンダリングする影響は、ＴＳＵ画素のシェーディング状態をパンチスルー状態を判定するのに必要な状態と最終画像をレンダーするのに必要な状態とに分割することによって低減することができる。
【００２２】
図４のフロー図に関する限り、２４でオブジェクトがパンチスルーであると判定された場合、システムはパンチスループロセス３００にジャンプする。次にオブジェクトは、画素毎に処理され、最初に３０２で可視性を判定する。画素が不可視である場合、システムは３２４にスキップする。画素が可視である場合、更にオブジェクト画素が同様に透明であるかを判定するテストが３０４で行われ、３０６で、これがオブジェクト内の第１の可視画素であると判定された場合には、３０８で、現在のバッファを含みこれまでの全てのタグバッファがフラッシュされ、すなわちＴＳＵに送られる。半透明性に関するテストは、タグバッファが、不可視のオブジェクトの場合にフラッシュされないように１画素毎に行われる。次に、オブジェクト自体の画素は、３１０でＴＳＵに送られ、３１２で公知の方法を使用してテクスチャリング及びシェーディングが適用される。次いでパンチスルーテストは、３１４で適用され、３１６で画素の有効性が判定される。例えばアルファテストに不合格となり、画素が３１６で無効であることが分かった場合には、システムは３２４にスキップする。画素が有効である場合、その座標は、３１８でＨＳＲユニットに戻され、ＨＳＲユニットは、３２０で奥行きバッファに画素の奥行き値を記憶し、３２２で全てのタグバッファの対応するタグを無効にする。次にシステムは、３２４で、オブジェクトで処理すべきそれ以上の画素が存在するか否かを判定し、存在する場合は、３２６で次の画素に移り、３２０にジャンプして戻り、処理を続ける。オブジェクトにそれ以上の画素が存在しない場合、システムは次のオブジェクトに移り、２０に戻る。
【００２３】
２４でのパンチスルーの判定がＮＯである場合、オブジェクトは半透明でなければならず、システムは半透明プロセス２００にジャンプする。次いで、オブジェクトが画素毎に処理され、まず２０２で可視性を判定する。画素が不可視である場合、システムは２２２にスキップする。画素が可視の場合、システムは、現在のタグバッファでのロケーションが２０４で占有されているかどうかを判定する。現在のタグバッファロケーションが占有されていると判定された場合、システムは、２０６で次のタグバッファに移る。２０８でバッファ内に有効なタグが存在するか否かに関して判定が行われ、存在する場合には、これらは２１０でＴＳＵに送られ、タグバッファは２１２でリセットされる。有効なタグが存在しない場合、タグは２２０で書き込まれ、システムは、不透明なオブジェクトで記載されたように次の画素又はオブジェクトに進む。
【００２４】
不透明なオブジェクトが全てのバッファにわたってタグを無効にすると、パススパウニング規則は、半透明な画素を書き込むことができるタグバッファを見つけることができない場合だけパスを生成するよう更に拡張することができる。図５は、タグバッファの更新規則を示し、これを用いて点線によって囲まれた図４のフロー図の一部を置き換えることができる。２０８でのバッファに何らかの有効なタグが存在するか否かに関する判定の代わりに、このバッファが以前に見られているか否かの判定が行われる。見られている場合は、フローは２１０及び２１２に移る。見られていない場合、フローは、タグロケーションが占有されているか否かに関して判定が行われる２０４に戻る。占有されている場合、フロー図は２４０で次のタグバッファに移った後、２４２で、バッファが見られているか否かを再度判定する。
【００２５】
単一及び複数のバッファ実装に更なる拡張を行うことができる。半透明なオブジェクトについて占有されていない画素を見つけることができない時点で全タグバッファをフラッシュするのではなく、半透明な画素によって上書きされるタグだけが、ＴＳＵにフラッシュされる。この方法の主な欠点は、ＴＳＵへのオブジェクトの部分送信を生じる可能性があり、これが何回もの送信を生じる結果となる恐れがある点である。これは、ＴＳＵの状態フェッチコスト及びセットアップコストの追加につながる。これは、半透明なオブジェクトによって重ねられたものだけでなく、ＴＳＵへの同じタグ値を有する全ての画素を送信することによって軽減することができる。或いは、タグバッファは、上記の状態が生じた場合にコンフリクトを含むタグバッファのセクションだけがフラッシュされるように正方形／矩形セクションに細分することができる。この方法はまた、小さい程度までのＴＳＵへのタグの複数送信を生じる可能性がある。
【００２６】
本発明の好ましい実施形態のブロック図が図６に示されている。これはパラメータフェッチユニット５０を含み、該ユニットは、三角形のタイル当たりのリスト及び三角形当たりのリスト５２からのラスタ化状態を読み込む。次に、これらは、スキャンコンバータ５４及びパス生成制御ユニット５６にそれぞれパスされる。スキャンコンバータ５４は、各三角形内の各画素についての位置、奥行き、及びステンシルの値を生成し、これらをＨＳＲユニット５８にパスする。ＨＳＲユニットは、各画素の可視性を判定し、この情報をパス生成制御ユニット（ＰＳＣ）５６にパスする。このユニットは、循環方法で循環される２つ又はそれ以上のタグバッファ６０にアクセスすることができる。不透明な画素では、ＰＳＵユニットは、三角形のタグを現在のタグバッファに書き込み、他のバッファの対応するロケーションを無効にする。半透明な画素では、ＰＳＣユニットは、現在のタグバッファでのロケーションが有効であるか否かを認識するようチェックする。有効である場合、ＰＳＵユニットは他のタグバッファに切り換える。タグロケーションが有効でない場合、ＰＳＵユニットは、半透明なタグを書き込み、次の画素に移る。タグロケーションが有効である場合、タグバッファは、テクスチャリング及びシェーディングユニット６２にフラッシュされる。この時点では、タグバッファの全てのロケーションは無効としてマーク付けされ、半透明なタグがバッファに書き込まれる。不透明なパンチスルー画素では、ＰＳＣは、全ての可視画素をＴＳＵ６２に直接パスする。ＴＳＵは、適切なものとして画素の有効性を判定し、これらの画素のステータスをＨＳＲ及びＰＳＣユニット５８、５６に返す。次いで、ＨＳＲ及びＰＳＣユニットは、奥行きバッファを更新し、有効な画素に対してタグバッファのロケーションをそれぞれ無効にする。半透明なパンチスルー画素は、ＰＳＣユニットが次に進む前にＴＳＵに対しタグバッファの全ての現在有効なタグをフラッシュする以外は、不透明なパンチスルーと同じように動作する。このプロセスは、タイル内の全ての三角形の全ての画素について繰り返される。
【００２７】
パラメータフェッチユニット５０が、現在のタイルにおいてこれ以上三角形が存在しないと判定した場合、パラメータフェッチユニット５０は、パス生成ユニット５６に信号を送り、ＴＳＵ６２に対するタグバッファからの残っているどのような有効タグをもフラッシュする。次に、パラメータフェッチユニットは、次のタイルについてのパラメータリストの読み取りに進み、最終画像を構成する全てのタイルがレンダーされるまでプロセスを繰り返す。パラメータフェッチを除いて、ユニットの全ては並行して複数の画素で動作するよう修正され、これによってプロセスを迅速化することができる点に留意されたい。
【００２８】
ＨＳＲユニット５８は、奥行き及びステンシルバッファ６４にアクセスすることができ、ここで各三角形内の各画素についての奥行き値及びステンシル値が記憶される。
【図面の簡単な説明】
【００２９】
【図１】上述のタイルベースのレンダリングシステムのブロック図を示す。
【図２】公知のパススパウニングシステムのフローチャートを示す。
【図３】（ａ）−（ｃ）は、本発明を具現化する修正されたパススパウニング規則を使用してレンダーされる三角形のシーケンスを示す。
【図４】本発明の実施形態のフロー図である。
【図５】図４の拡大図である。
【図６】本発明の実施形態のブロック図である。
【図１】
0004602334.tif 000002
【図２】
0004602334.tif 000003
【図３】
0004602334.tif 000004
【図４】
0004602334.tif 000005
【図５】
0004602334.tif 000006
【図６】
0004602334.tif 000007