(57)【特許請求の範囲】
【請求項１】
グラフィックス処理システムで表示するシーンを処理する方法であって、方法は、
前記シーン内のオブジェクトを識別するステップと、
前記シーン内の前記オブジェクトを表す第１境界体積を生成するステップと、
表示される前記シーン内で、前記オブジェクトを表す前記第１境界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記第１境界体積について深さのみレンダリングパスを実行することにより前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップと、を含み、
前記グラフィックス処理システムは、複数のレンダリング状態において動作するように構成され、前記レンダリング状態の１つは、深さのみレンダリング状態であり、
前記方法はさらに、
識別子を認識する前記グラフィックス処理システムが、前記第１境界体積を処理する場合に、前記深さのみレンダリング状態で動作するように、第１境界体積にタグ付し及び／または対応する１つまたは複数のプリミティブに識別子をタグ付けするステップを含むことを特徴とする方法。
【請求項２】
前記第１境界体積の少なくとも一部が、表示されるときに前記シーン内に存在すると判定された場合に、
それぞれ前記第１境界体積の異なる部分を表す2つまたはそれ以上の第２境界体積を生成するステップと、
表示される前記シーン内で、2つまたはそれ以上の前記第２境界体積が、1つまたはそれ以上の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された2つまたはそれ以上の前記第２境界体積について深さテストを実行することにより前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定するステップと、を含むことを特徴とする請求項1に記載の方法。
【請求項３】
グラフィックス処理システムで表示するシーンを処理する方法であって、方法は、
前記シーン内のオブジェクトを識別するステップと、
前記シーン内の前記オブジェクトを表す有界体積を生成するステップと、
表示される前記シーン内で、前記オブジェクトを表す前記有界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記有界体積について深さのみレンダリングパスを実行することにより前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記シーンの１つまたは複数の他のオブジェクトを処理するかどうかを決定するステップと、を含み、
前記グラフィックス処理システムは、複数のレンダリング状態において動作するように構成され、前記レンダリング状態の１つは、深さのみレンダリング状態であり、
前記方法はさらに、
識別子を認識する前記グラフィックス処理システムが、前記有界体積を処理する場合に、前記深さのみレンダリング状態で動作するように、前記有界体積にタグ付し及び／または対応する１つまたは複数のプリミティブに識別子をタグ付けするステップを含むことを特徴とする方法。
【請求項４】
グラフィックス処理システムで表示するシーンを処理する方法であって、方法は、
前記シーン内のオブジェクトを識別するステップと、
前記シーン内の前記オブジェクトを表す第１境界体積を生成するステップと、
表示される前記シーン内で、前記オブジェクトを表す前記第１境界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記第１境界体積を使用して前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップと、を含み、
前記方法はさらに、
前記第１境界体積の少なくとも一部が、表示される前記シーン内に存在すると判定された場合に、
それぞれ前記第１境界体積の異なる部分を表す2つまたは複数の第２境界体積を生成するステップと、
表示される前記シーン内で、2つまたはそれ以上の前記第２境界体積が、1つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された2つまたは複数の前記第２境界体積について深さテストを実行することにより前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定するステップと、を含むことを特徴とする方法。
【請求項５】
前記シーン内の前記オブジェクトを表す有界体積を生成するステップと、
前記オブジェクトについて前記生成された有界体積を使用して前記シーンの一部または全部を処理し、表示されるシーン内で、前記オブジェクトを表す前記有界体積が、１つまたは複数の他のオブジェクトを少なくとも部分的に蓋うかどうかを評価するステップと、
前記評価に基づいて表示する前記シーンの１つまたは複数の他のオブジェクトを処理するかどうかを決定するステップと、
を具備することを特徴とする請求項4に記載の方法。
【請求項６】
前記オブジェクトを表す2つまたはそれ以上の体積を生成するステップを含むことを特徴とする請求項1から5のいずれか一項に記載の方法。
【請求項７】
グラフィックス処理システムであって、
シーン内のオブジェクトを識別する手段と、
前記シーン内の前記オブジェクトを表す第１境界体積を生成する手段と、
表示される前記シーン内で、前記オブジェクトを表す前記第１境界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記第１境界体積について深さのみレンダリングパスを実行することにより前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段と、
前記グラフィックス処理システムは、複数のレンダリング状態において動作するように構成され、前記レンダリング状態の１つは、深さのみレンダリング状態であり、
識別子を認識する前記グラフィックス処理システムが、前記第１境界体積を処理する場合に、前記深さのみレンダリング状態で動作するように、第１境界体積にタグ付し及び／または対応する１つまたは複数のプリミティブに識別子をタグ付けする手段と、
を含むことを特徴とするグラフィックス処理システム。
【請求項８】
前記第１境界体積の少なくとも一部が、表示されるときに前記シーン内に存在すると判定された場合に、
それぞれ前記第１境界体積の異なる部分を表す2つまたはそれ以上の第２境界体積を生成する手段と、
表示される前記シーン内で、2つまたはそれ以上の前記第２境界体積が、1つまたはそれ以上の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された2つまたはそれ以上の前記第２境界体積について深さテストを実行することにより前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定する手段と、
を含むことを特徴とする請求項7に記載のグラフィックス処理システム。
【請求項９】
グラフィックス処理システムであって、
シーン内のオブジェクトを識別する手段と、
前記シーン内の前記オブジェクトを表す有界体積を生成する手段と、
表示される前記シーン内で、前記オブジェクトを表す前記有界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記有界体積について深さのみレンダリングパスを実行することにより前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンの１つまたは複数の他のオブジェクトを処理するかどうかを決定する手段と、を含み、
前記グラフィックス処理システムは、複数のレンダリング状態において動作するように構成され、前記レンダリング状態の１つは、深さのみレンダリング状態であり、
識別子を認識する前記グラフィックス処理システムが、前記有界体積を処理する場合に、前記深さのみレンダリング状態で動作するように、前記有界体積にタグ付し及び／または対応する１つまたは複数のプリミティブに識別子をタグ付けする手段と、
を含むことを特徴とするグラフィックス処理システム。
【請求項１０】
グラフィックス処理システムであって、
シーン内のオブジェクトを識別する手段と、
前記シーン内の前記オブジェクトを表す第１境界体積を生成する手段と、
表示される前記シーン内で、前記オブジェクトを表す前記第１境界体積が１つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された前記第１境界体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段と、を含み、
前記第１境界体積の少なくとも一部が、表示される前記シーン内に存在すると判定された場合に、
それぞれ前記第１境界体積の異なる部分を表す2つまたは複数の第２境界体積を生成する手段と、
表示される前記シーン内で、2つまたはそれ以上の前記第２境界体積が、1つまたは複数の他のオブジェクトにより少なくとも部分的に蓋われるかどうかを評価するために、前記オブジェクトのために生成された2つまたは複数の前記第２境界体積について深さテストを実行することにより前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定する手段と、
を含むことを特徴とするグラフィックス処理システム。
【請求項１１】
前記シーン内の前記オブジェクトを表す有界体積を生成する手段と、
前記オブジェクトについて前記生成された有界体積を使用して前記シーンの一部または全部を処理し、表示されるシーン内で、前記オブジェクトを表す前記有界体積が、１つまたは複数の他のオブジェクトを少なくとも部分的に蓋うかどうかを評価する手段と、
前記評価に基づいて表示する前記シーンの１つまたは複数の他のオブジェクトを処理するかどうかを決定する手段と、
を具備することを特徴とする請求項10に記載のグラフィックス処理システム。
【請求項１２】
請求項7から11のいずれか一項に記載されたシステムを含むことを特徴とする3Dグラフィックスプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックスの処理に関するものであり、具体的には、例えば、ディスプレイ画面に表示する三次元(3D)グラフィックスの処理に関するものである。
【背景技術】
【０００２】
当業で知られているように、3Dグラフィックス処理は、通常、表示するシーンを複数の類似の基本コンポーネント(いわゆる「プリミティブ」)に分割して、3Dグラフィックス処理オペレーションを実行しやすくすることから始める。これらの「プリミティブ」は、通常、三角形などの単純な多角形の形態をとる。
【０００３】
表示するシーンに対応するプリミティブは、通常、グラフィックス処理システム用のアプリケーションプログラムインターフェイスにより生成され、そのために、グラフィックスの表示を必要とするアプリケーション(例えば、ゲーム)から受け取ったグラフィックス描画命令(リクエスト)を使用する。
【０００４】
それぞれのプリミティブは、このステージでは、通常、一組の頂点により定義され、一組の頂点により表される。1つのプリミティブに対するそれぞれの頂点には、その頂点を表す一組のデータが関連付けられている。次いで、このデータは、例えば、表示する頂点(頂点が関係する(複数の)プリミティブ)のラスター処理およびレンダリングを行うときに使用される。
【０００５】
それぞれの頂点に関連付けられているデータは、典型的には、当業で知られているように、頂点の位置データ(「シーンワールド」内のその(x,y,z)座標)、および頂点の属性(つまり、ディスプレイ上に描画し、および/または表示する仕方)を定義する、「属性」データの集合を含む。この属性データは、例えば、頂点の色および透明度データ(赤色、緑色、青色、およびアルファ、(RGBa)値)、頂点のテクスチャデータ(典型的には、頂点に適用されるテクスチャマップの(s,t)座標データ)、頂点が属すプリミティブの面の向きに関係する情報などを含みうる。
【０００６】
それぞれの頂点に対するデータは、典型的には、例えば、所定のグラフィックスシーンまたはフレームを表示するために必要なそれぞれのおよびすべての頂点に対する頂点データを含む頂点データの配列として配列される。頂点配列内に格納されているデータは、さらに、例えばそれぞれの頂点にそれぞれの(複数の)プリミティブを関連付けることによりどの頂点がシーン(フレーム)内のどのプリミティブを表すかを示すこともできる。(それとは別に、頂点とプリミティブとの関連付けは、他の何らかの方法で、例えば、頂点データ配列内のどの頂点がプリミティブに使用されるかをプリミティブ毎に示すプリミティブのリスト(いわゆる「プリミティブリスト」)および/または「(複数の)プリミティブ描画」グラフィックスコマンドのリストを用意することにより行える。)
【０００７】
シーンを表示するために、シーンに対するすべてのプリミティブおよびそれらのプリミティブの頂点が生成され、定義された後、これらは、グラフィックス処理システムにより処理されうる。
【０００８】
当業で知られているように、この処理は、典型的には、多数のステージを伴う。
【０００９】
まず最初に、プリミティブそれ自体(実際には、それらのプリミティブについて生成された頂点データ)に対し多数のオペレーションが実行される。これらのプロセスは、当業で知られているように、プリミティブを変換するステップ(例えば、回転、拡大縮小、変位など)、およびプリミティブを「照らす」ステップ(例えば、表示されるシーン内の光源に応じて外観を調節するため)を含むことができる。
【００１０】
これらのプロセスは、定義されている頂点データを使用して実行され、その結果、変換され、照らされるなどしたプリミティブを表す修正された頂点(頂点データ)が得られる。これらのオペレーションが、頂点データに対して実行され、その結果修正された頂点データ(複数の頂点)が得られると、これらは、「頂点シェーディング」プロセスと考えることができ、また一般に「頂点シェーディング」プロセスと称される。
【００１１】
これらの頂点シェーディングステップは、当業で知られているように、専用の「固定機能」処理ユニットまたはステージにより、および/または1つまたは複数の頂点シェーディングプログラムを実行するプログラム可能なまたは構成可能なユニット(これらのユニットは、(プログラム可能)「頂点シェーダー」と一般に称される)により実行されうる。
【００１２】
上記のプロセスが完了した後、処理された(頂点シェーディングされた)頂点データは、2D表面上に表示されるときのプリミティブを表す。次いで、そのデータをディスプレイ(例えば、画面)に表示するのに適切な形態に変換することが必要である。このプロセスは、基本的に、表示画面上のどのピクセル(画素)がどのプリミティブを表すかを決定するステップ、およびそれぞれのピクセルが(例えば、色などに関して)ディスプレイ上で持つべき外観を決定するステップを伴う。これらのプロセスは、一般に、ラスター処理およびレンダリングとそれぞれ称される。
【００１３】
このプロセスは、基本的に、処理するシーンを覆うサンプリング点の配列の中のどのサンプリング点が1つのプリミティブによって覆われるかを決定すること、およびそのサンプリング点でそのプリミティブを表すためにそれぞれのサンプリング点が(例えば、色などに関して)持つべき外観を決定することを伴う。これらのプロセスは、一般に、ラスター処理およびレンダリングとそれぞれ称される。
【００１４】
ラスター処理プロセスでは、1つのプリミティブに対し使用すべきサンプル位置(つまり、表示するシーン内でプリミティブを表すために使用するサンプル点の(x,y)位置)を決定する。これは、典型的には、1つのプリミティブの複数の頂点の位置を使用して決定される。
【００１５】
次いで、レンダリングプロセスは、サンプル点でプリミティブを表示する(つまり、それぞれのサンプル点に「陰影を付ける」)のに必要な、赤色、緑色、および青色(RGB)値ならびに「アルファ」(透明度)値などのデータを導出する。これは、当業で知られているように、テクスチャの適用、サンプル点データ値のブレンドなどを伴うことがある。
【００１６】
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびレンダリングへの両方のプリミティブ変換を指すために使用される。しかし、ここでの「ラスター処理」は、サンプリング点アドレスのみへのプリミティブデータの変換を指すために使用される。)
【００１７】
これらのプロセスは、典型的には、サンプリング点を、グラフィックス処理オペレーション(レンダリングなど)の実行対象となる「フラグメント」と通常呼ばれる個別のグラフィック構成要素として「表現する」ことにより実行される。それぞれのそのようなフラグメントは、所定の1つのサンプリング点またはサンプリング点の集合に対応し、実際に、注目するその1つのまたは複数のサンプリング点(フラグメントを使用してレンダリングされる(複数の)サンプリング点)でプリミティブを表現し、それをレンダリングするために使用されうる。
【００１８】
したがって、「フラグメント」は、事実上、プリミティブの所定の1つ(または複数)の画面空間サンプル点に補間されるようなプリミティブデータの集合(に関連付けられたもの)である。これは、さらに、注目する(複数の)サンプル点(フラグメント位置)でプリミティブに陰影を付けるのに必要なプリミティブ毎のおよび他の状態データをも含むことができる。それぞれのグラフィックスフラグメントは処理されるときにシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。
【００１９】
実際、それぞれのグラフィックス「フラグメント」は、最終的な表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション(レンダリング)対象の「フラグメント」と表示のピクセルとの間に1対1のマッピングがありうる)。しかし、フラグメントと表示ピクセルとの間に1対1対応関係がない場合もありえ、例えば、縮小などの特定の形態の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
【００２０】
「直接モード」グラフィックス処理またはレンダリングと通常呼ばれる、グラフィックス処理に関して知られている技術の1つでは、頂点は、生成されるときに次々に処理される(ラスター処理およびレンダリング)。
【００２１】
このタイプのシステムでは、頂点は、先着順にグラフィックスシステムに渡され(頂点は通常、グラフィックス処理の効率を改善しようとする何らかの方法でソートされるけれども)、したがってプリミティブは、届いた順にレンダリングされ表示される。
【００２２】
また、グラフィックス処理システムでは、いわゆる「タイルベース」または「遅延」レンダリングを使用することも知られている。タイルベースレンダリングでは、シーン全体が直接モードレンダリングで事実上一度に処理されるのとは異なり、表示するシーンは、通常「タイル」と呼ばれる複数のより小さな部分領域に分割される。それぞれのタイル(部分領域)は、別々に(典型的は次々に)レンダリングされ、次いでレンダリングされた部分領域(タイル)は再結合されて、表示できる完全なシーンを構成する。このような構成において、シーンは、典型的には、規則正しいサイズおよび形状の部分領域(タイル)(通常は、例えば、正方形または矩形)に分割されるが、これは、本質的なことではない。
【００２３】
タイルベースレンダリングシステムでは、それぞれの部分領域(タイル)について、その部分領域についてレンダリングされる(つまり、部分領域内に現れる)プリミティブのリスト(「タイルリスト」)を用意するのがふつうである。これは、タイル内に実際には存在していないプリミティブを必要でないのにレンダリングしてしまうことを回避するのに役立つ。
【００２４】
タイルベースレンダリングシステムでタイルリストを用意するために、プリミティブの初期頂点(頂点データ)は、例えばそれぞれのプリミティブが表示されるシーン内に現れるかどうか、またその現れ方を決定するように最初に頂点シェーディングされる。次いで、どのプリミティブがそれぞれのタイル内に(潜在的に)現れるかを決定するために、処理された(頂点シェーディングされた)頂点が使用される。
【００２５】
この方法でそれぞれの部分領域(タイル)についてタイルリストが用意された後、それらのタイルリストは、使用する、例えば、注目するタイルがレンダリングされるときにどのプリミティブが検討される(およびレンダリングされる)必要があるかをシステムが識別できるようにするために、格納される。
【００２６】
したがって、タイリングベースシステムは、3つの主要ステップを実行するものとみなせる。最初に、頂点シェーディングが、プリミティブ毎に実行される。次いで、「頂点シェーディングされた」頂点データは、「タイリングされる」(つまり、タイルリストが、処理された(頂点シェーディングされた)頂点データを使用して用意される)。次いで、それぞれのタイルがラスター処理され、次にレンダリングされる。
【００２７】
グラフィックス処理システムによってレンダリングされるシーンが、例えば、シーンを描画するために使用されうるプリミティブの数に関して複雑化する傾向が強まっている。表示するシーンを処理するときに使用される頂点シェーディングプログラムも、次第に複雑化してきている。これが、グラフィックス処理システムに対する処理および資源の要件ならびに負担を増大するすべてである。
【発明の概要】
【発明が解決しようとする課題】
【００２８】
表示の処理のためグラフィックス処理システムに「提示される」シーンが複雑なシーンであっても、これらの負担および要件を低減するのが望ましく、早期Zテストおよび閉塞カリングを使用してシーンについて最終的にレンダリングされるプリミティブの数を減らす試みなど、そのためのいくつかの技術が存在しているが、出願人は、この点に関してまだ改善の余地があると確信している。
【課題を解決するための手段】
【００２９】
本発明の第1の態様によれば、グラフィックス処理システムにおいて表示するシーンを処理する方法が提供され、この方法は、
シーン内のオブジェクトを識別するステップと、
シーン内のオブジェクトを表す体積を生成するステップと、
前記シーン内のオブジェクトの存在を評価するために、オブジェクトについて生成された体積を使用してシーンの一部または全部を処理するステップと、
この評価に基づいて表示するシーンのオブジェクトを処理するかどうかを決定するステップと、を含む。
【００３０】
本発明の第2の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示するために処理されるシーン内のオブジェクトを識別する手段と、
シーン内のオブジェクトを表す体積を生成する手段と、
前記シーン内のオブジェクトの存在を評価するために、オブジェクトについて生成された体積を使用してシーンの一部または全部を処理する手段と、
この評価に基づいて表示するシーンのオブジェクトを処理するかどうかを決定する手段と、を備える。
【００３１】
本発明では、オブジェクト(複数のプリミティブで構成される、または構成されることになる、または構成されうるオブジェクトなどの、より複雑なオブジェクトなど)を表す体積が生成され、次いで、その生成された代表体積は、シーン内のオブジェクトおよび/または他のオブジェクトまたは複数のオブジェクトの存在に関係する情報を導出するために処理される。言い換えると、「プロキシ」代表体積がそのオブジェクトについて生成され、最初に処理されてから、例えば、注目するオブジェクトを構成するすべての「真の」プリミティブを処理する。
【００３２】
これは、例えば、以下でさらに説明されるように、プロキシ代表体積から、オブジェクトが表示されるときにシーン内で実際には見えていない(例えば、実際には表示フレームの外にあるか、または他のオブジェクトによって完全に塞がれているため)と判断されうる場合に、そのオブジェクトに対する複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【００３３】
同様に、プロキシ代表体積から、オブジェクトが表示されるときにシーン内で他のオブジェクトを完全に塞ぐと判断されうる場合に、その他のオブジェクトに対する複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)。
【００３４】
そのため、本発明では、例えば、表示されるときのシーン内のオブジェクトの効果(例えば、存在(可視性)または存在しないこと)を評価するためにオブジェクトの抽象度の高い、または粗い表現(つまり、そのオブジェクトを表現するものとして生成された体積)を最初に処理することにより、表示されるシーン内でオブジェクトが実際には可視とならない場合にシーン内のオブジェクトの不要な処理を回避するようにすることが可能である。
【００３５】
本発明で代表体積(粗い表現)が生成されるオブジェクトは、好適な、所望のそのようなオブジェクトとすることができる。これは、最も有利である本発明の方法によるそのようなオブジェクトの評価なので、好ましくは、より複雑なオブジェクト、例えば、好ましくは、多数の個別のプリミティブで構成されるまたは構成されることになる(レンダリングされるときに)オブジェクトを含む。
【００３６】
特に好ましい一実施形態では、境界体積が生成されるオブジェクトは、描画コール(描画コールのプリミティブ)、描画コールの組み合わせ、または描画コールの一部(例えば、描画コールからの特定の「オブジェクト」プリミティブグルーピング)を含む。好ましい一実施形態では、これは、描画コールを含む。
【００３７】
他の特に好ましい実施形態では、オブジェクトは、好ましくは、いわゆる「パッチ」または「表面」などの、描画されるより抽象的な、高次のオブジェクト(オブジェクトの記述)を含む。したがって、好ましい一実施形態では、オブジェクトは、描画されるオブジェクトのより高次のパラメータ記述を含む。本発明は、例えば、(一筆で描かれた)曲線、曲面、パッチなどの、制御点(および他の情報)に関して、定義されているオブジェクトに、そのようなオブジェクト(その形態で定義されるか、または記述されているオブジェクト)を表す体積を容易に生成することが可能である(またそうすることが有利である)ので適用されうる、また好ましくは適用される。
【００３８】
また、そのようなより高次の「オブジェクト」では、そのようなオブジェクトは、それでも、典型的には最終的に、複数のプリミティブとしてレンダリングされることが可能であり、したがって、それらに関して本発明を使用すると都合がよいことも理解されよう。
【００３９】
本発明の方法により処理されるオブジェクトは、例えば、シーンの1つまたは複数の描画コールを識別する、1つまたは複数の描画コールを分析して、オブジェクトおよび/またはプリミティブなどがその1つまたは複数の描画コールでどのようにグループ化されるかを調べる、シーンに対するより高次のオブジェクト記述を識別する、シーン内で複数のプリミティブで構成されるか、または構成されることになるオブジェクトを識別するなどにより、必要に応じて決定され、識別されうる。
【００４０】
オブジェクトに対する代表体積を使用して実行されるシーン内のオブジェクトの存在の評価は、好適な、所望の方法で実行されうる。これは、好ましくは、1つの(または複数の)オブジェクトが表示されるとシーン内で可視になるかどうかを評価するステップを含む。
【００４１】
これは、以下でさらに説明されるように、体積が生成されるオブジェクトに関して、および/またはシーン内の他の1つの(または複数の)オブジェクトに関して実行されうる。実際には、シーン上のオブジェクトの効果が評価されるべきである。
【００４２】
同様に、この評価に基づき表示するシーンのオブジェクトを処理するかどうかの決定は、体積が生成されるオブジェクトに関して、および/またはシーン内の他の1つの(または複数の)オブジェクトに関して実行されうる。
【００４３】
特に好ましい一実施形態では、オブジェクトを表すものとして生成される「体積」は、オブジェクトの境界体積(つまり、オブジェクトによって占有される体積を少なくとも表すために、オブジェクトの「境界」となるか、またはオブジェクトを包含する体積)を含む。
【００４４】
これは、例えば、本明細書で説明されているように、プロキシ境界体積(境界体積表現)から、オブジェクトが表示されるときにシーン内で実際には見えていない(例えば、実際には表示フレームの外にあるか、または他のオブジェクトによって完全に塞がれているため)と判断されうる場合に、そのオブジェクトに対するその例えば複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【００４５】
これらの実施形態では、本発明は、それに応じて、好ましくは、
シーン内のオブジェクト(例えば、複数のプリミティブからなる)を識別するステップまたは手段と、
シーン内のオブジェクトを表す境界体積を生成するステップまたは手段と、
オブジェクトについて生成された境界体積を使用してシーンの一部または全部を処理し、シーン内のオブジェクトの存在を評価する(例えば、そのオブジェクトの存在に関係する情報を導出する)ステップまたは手段と、
この評価(例えば、導出情報)を使用して、表示するオブジェクトを処理するかどうかを決定する(例えば、オブジェクトの複数のプリミティブのうちの1つまたは複数を処理するかどうかを決定する)ステップまたは手段と、を含む。
【００４６】
複雑なオブジェクトのより粗い表現として生成される境界体積は、所望の、好適な形態をとりうる。
【００４７】
特に好ましい一実施形態では、境界体積は、オブジェクトを囲む境界ボックスの形態をとる。
【００４８】
他の実施形態では、境界体積は、例えば、オブジェクトに対する1つの好ましくは保存的な深さ範囲(オブジェクトの持つ広がりに対する深さ値の範囲の指標)(したがって、オブジェクトが占有すると考えられる「深さ」を示す)とともにオブジェクトの二次元マッピング(オブジェクトによって覆われる領域を表す)を含む。この場合、当業者であれば理解するように、2Dマッピングおよび深さ範囲は、効果的に、オブジェクトに対する境界体積を一緒に定義する。
【００４９】
オブジェクトのより粗い表現を構成する境界体積は、注目するオブジェクトが識別された後、所望の、好適な方法で生成されうる。
【００５０】
したがって、境界ボックス表現の場合、複雑なオブジェクトを囲む(および包含する)境界ボックスを導出する好適な技術を使用することで、複雑なオブジェクトのより粗い表現を形成する境界ボックスを生成することができる。
【００５１】
境界体積は、必要に応じて、オブジェクトが占有する体積の精度の高いまたは低い表現((複雑な)オブジェクトの真の体積(形状)に近いまたは近くない「適合」)とすることができる。
【００５２】
また、例えば、オブジェクトに対する境界体積全体を一緒になって構成する複数の「代表」体積の集合を生成し、次いで処理することも可能である(好ましい一実施形態においては、これが行われる)。この場合、本発明の「境界体積」は、複数のより小さな「体積」の集合で構成される。これにより、例えば、必要ならば、オブジェクトによって占有される体積のより正確な表現が生成されるようにできる。これは、単一の「大域的」境界体積を使用したのでは正確に表現することは簡単にはできない形状を有するオブジェクトの場合に特に望ましいものと言える。(それとは別に、このような「オブジェクト」は、複数の個別のより小さなオブジェクトとして処理することが可能であり、次いでそれぞれは本発明の方法により処理される。)
【００５３】
(当業者であれば理解するように、また上述のように、本発明のこれらの実施形態で使用され、テストされる境界体積は、オブジェクトの「境界」となるか、またはオブジェクトを包含し、これにより、オブジェクトによって占有される体積を少なくとも表す。したがって、境界体積が、複数のより小さな体積からなる場合(したがって、オブジェクトの「境界」には個別に完全にはなりえない)、この構成では、より小さな体積を組み合わせたものは、オブジェクトの完全な「境界」となる。)
【００５４】
オブジェクトのより粗い表現を含む、境界体積、例えば、境界ボックスは、複雑なオブジェクトを構成するプリミティブの変換頂点データまたは未変換頂点データから生成されうる。
【００５５】
したがって、好ましい一実施形態では、複雑なオブジェクトを表すべき境界体積表現、例えば、好ましくは、境界ボックスは、複雑なオブジェクトを構成するプリミティブの未変換頂点データから生成され、次いで、複雑なオブジェクトの境界体積表現は、処理のため画面空間に変換される。
【００５６】
他の好ましい実施形態では、複雑なオブジェクトのプリミティブを構成する頂点は、最初に、画面空間に変換され、次いで、複雑なオブジェクトを表すための境界ボックスなどの境界体積表現が、変換頂点(頂点データ)を使用して生成される。この構成では、複雑なオブジェクトの変換された「真」の頂点データは、必要ならば、後から使用できるように、キャッシュされることが可能であり、また好ましい一実施形態ではキャッシュされる。
【００５７】
初期変換ステップは、例えば、必要なソフトウェアプログラムが実装されている、例えばCPUコアなどの、グラフィックス処理システム内に備えられている専用ユニットで実行されうる。しかし、これは、好ましくは、例えば好適な事前生成された頂点シェーダープログラム、または注目するシーンに対する頂点シェーディングに使用される(複数の)アプリケーション指定頂点シェーダープログラムから(例えば、コンパイラステージにおいて)抽出された頂点シェーダープログラムを使用して、グラフィックス処理システムの頂点シェーダーユニットで実行される。後者の場合、システムコンパイラは、例えば、実際の完全な頂点シェーダープログラムから注目する(それぞれの)頂点に対する頂点シェーダープログラムの「特別」バージョンを生成することが可能である。頂点シェーダープログラムのこの特別な縮小バージョンは、好ましくは、例えば、頂点シェーディングの後に頂点の位置を推定するのに必要なそれぞれの頂点が持つ(x,y,z)座標の変換命令のみを含む。コンパイラは、例えば、必要ならば、アプリケーションによって提供されるすべての頂点シェーダープログラムに対する追加分析およびデッドコード消去ステップを備え、これを容易にすることができる。
【００５８】
(複雑な)オブジェクトのより粗い表現である生成された境界体積を使用して実行される処理は、好ましくはシーン内のオブジェクトの存在を評価する(例えば、その存在に関係する情報を導出する)ためのものであり、所望の、好適なそのような処理であってよい。これは、好ましくは、複雑なオブジェクトが表示されるときにシーン内で可視になるかまたは可視にできるかどうかを評価する。
【００５９】
生成された境界体積を使用して実行される処理は、オブジェクトを表す境界体積が(表示されるときに)シーンの可視領域を完全に外れるかどうかを評価するステップを含むことが可能であり、好ましい一実施形態では含む(この場合、複雑なオブジェクトはそのシーンについてまったく処理される必要がないと結論されうる)。これは、例えば、好ましくは、オブジェクトを表す境界体積が画面の縁から完全に外れているかどうかを評価することにより、および/または、タイリングシステムでは、オブジェクトを表す境界体積がシーンを表示するために使用されるタイル内にあるかどうかを評価することにより実行されうる。
【００６０】
特に好ましい一実施形態では、シーン内のオブジェクトの存在に関係する情報を導出するために(複雑な)オブジェクトのより粗い表現である生成された境界体積を使用して実行される処理は、オブジェクトを表す境界体積がシーン内の他のオブジェクトによって完全におよび/または部分的に塞がれるかどうかを評価するステップを含む。このことから、ここでもまた、(複雑な)オブジェクトが実際に、表示されるときにシーン内で可視になるかどうか(したがって、表示するために完全な処理を必要とするかどうか)に関する情報が得られる。
【００６１】
オブジェクトを表す境界体積が塞がれるか、または実行されえないかどうかのそのような評価は、必要に応じて、ただし好ましくは、Z(深さ)テストおよび/または他の形態のグラフィックス閉塞テストを、例えば、好ましくは、当業で知られているように、実行するステップを含む。
【００６２】
オブジェクトを表す境界体積のこのような処理は、必要に応じて実行されることが可能であるが、特に好ましい一実施形態では、表示する注目するシーンを処理するときに注目する(複雑な)オブジェクトについて定義されている「真の」プリミティブの代わりに境界体積を処理するステップを含む。言い換えると、(複雑な)オブジェクトを表す生成された境界体積は、注目する(複雑な)オブジェクトを構成する個々の「真の」プリミティブを処理する代わりに、表示するシーンの他のオブジェクトおよび/またはプリミティブとともに処理される。
【００６３】
境界体積の処理は、例えば、境界体積を表す適切な1つまたは複数のプリミティブを生成し、次いで、シーンの他のプリミティブと同じ方法で境界体積を表す(複数の)プリミティブ処理することにより、実装されることが可能である、つまり、境界体積を表す生成されたプリミティブは、好ましくは、シーンについて定義された他の(好ましくはすべての)プリミティブとともに処理される(したがって、適宜、複数のタイルにビニングされ(タイルベースのレンダリングシステムにおいて)、ラスター処理されてレンダリングされ、といったことが行われる)。
【００６４】
(ここでは、境界体積を処理することができるように1つまたは複層のプリミティブが生成される場合であっても、生成のために、(複雑な)オブジェクトが通常の方法で単純に処理される場合よりも少ないプリミティブを処理する必要があることは理解されるであろう。)
【００６５】
他の構成も、もちろん、可能である。
【００６６】
それが他のオブジェクトおよび/またはプリミティブであるかのように複雑なオブジェクトを表す生成された境界体積(および/または境界体積を表す(複数の)プリミティブ)を完全に処理することが可能であるが、出願人は、(複雑な)オブジェクトを表す境界体積に対する、例えば色情報の導出は、必要というわけではないことを認識している((複雑な)オブジェクトのより粗い表現である境界体積は、表示されるシーンに実際に寄与することが意図されていないからである)。
【００６７】
したがって、特に好ましい一実施形態では、(複雑な)オブジェクトを表す生成された境界体積に関して実行される処理は、表示されるときにシーン内の生成された境界体積の存在(または存在しないこと)を判定するのに必要な処理のみを実行するステップを含む。
【００６８】
このような処理は、好ましくは、生成された境界体積(または境界体積の導出元の頂点)の、表示されるときのシーン内の(複数の)適切な位置への必要な変換を含む(その後、これにより、表示されるときのシーン内の複雑なオブジェクトの存在を評価することができるからである)。
【００６９】
同様に、深さテストベースの閉塞決定の場合、(複雑な)オブジェクトを表す生成された境界体積の処理は、好ましくは、境界体積に関するZ-only(深さのみ)レンダリングパス、つまり、境界体積はレンダリングされるが、境界体積について有効化されているレンダリング状態のみがZの読み込みおよび書き込みおよびZテストであるレンダリングパスを実行するステップを含む。
【００７０】
好ましくは、(複雑な)オブジェクトを表す境界体積(境界体積を表すプリミティブ)は、深さ(または他の)テストを実行できるように処理されるときに適切な方法で(および好ましくは、深さ(または他の)テストに関する限り注目するグラフィックス処理システムに対する通常の方法で)レンダリングされる。
【００７１】
複雑なオブジェクトを表す生成された境界体積に関して実行される処理を制限するステップは、さらに、処理をより効率的なものにでき、また消費する資源が少なくて済むという利点を有し、したがって、例えば、制約のきついシステムで実行する許容性が高まる。例えば、Z-only処理の場合、Zバッファに書き込みが行われうるが、他のメモリアクセスは、減少するか、または最小限に抑えられ、フラグメントプロセッサはアイドル状態のままにされうる。
【００７２】
グラフィックス処理システムは、この方法により(複雑な)オブジェクトを表す生成された境界体積を処理するように好適な、所望の方法で構成されうる。好ましくは、これは、この目的のために適したレンダリング状態(Z-onlyレンダリング状態など)に設定される。(当業で知られているように、グラフィックスプロセッサが設定されるレンダリング状態は、プロセッサが、受け取ったグラフィックスプリミティブに対して実行する処理を決定し、したがって、実行される処理を制御するために使用できる。)
【００７３】
この目的のための(レンダリング)「状態」は、処理のため(複雑な)オブジェクトを表す境界体積(例えば、(複数の)プリミティブ)を送る前に、例えば、当業で知られているように、プロセッサをフラッシュし、その状態を新しい(例えば、Z-only)状態に大域的に(つまり、すべての処理ユニットについて)設定することにより設定されうる。
【００７４】
しかし、好ましい一実施形態では、(複雑な)オブジェクトを表す境界体積および/またはその対応する(複数の)プリミティブは、これによりそれ自体をそのような特定の処理を受けるものとして識別するため何らかの方法でタグ付けまたはマークされ、グラフィックス処理システムは、それに応じて(および適宜)そのようなタグ付けされた「オブジェクト」(およびプリミティブ)を処理するように構成される。
【００７５】
例えば、出願人の以前の英国特許出願第2420261号で説明されている技術などにおいて、グラフィックス処理システムが、例えばプリミティブおよび/またはフラグメントに関連付けられうる多数の定義済みレンダリング状態を有する場合、好ましくは、利用可能な定義済みレンダリング状態(インデックス「0」(または他のインデックス)のレンダリング状態など)の1つは、(複雑な)オブジェクトを表す境界体積を処理するために使用されるレンダリング状態(例えば、好ましくは、Z-onlyレンダリング状態)に設定される。これにより、次いで、例えば、そのような境界体積(および/またはプリミティブ、フラグメントなど)に、これらが処理パスに送られるときに、適切なレンダリング状態インデックスなどをタグとして付け、例えば処理パイプライン全体の状態を大域的にフラッシュして変更しなくても、それに応じた処理が行われるようにできる。
【００７６】
これは、同様に、グラフィックス処理システムがフラグメントシェーディングプログラムをサポートしている場合に好ましいが、それは、(複雑な)オブジェクト(例えば、Z-only処理(レンダリング状態)を受ける)を表す境界体積の処理用に予約され、使用される定義済みフラグメントプログラムアドレスがあるからである。このアドレスは、例えば、生成された境界体積を処理するための、例えばフラグメントシェーダープログラム全体のより限定されたバージョン(のコンパイルおよび実行)のトリガーとなる可能性がある。次いで、これにより、ここでもまた、そのような境界体積(ならびにプリミティブおよびフラグメント)は、処理が実行される際にこの定義済みフラグメントプログラムアドレスをタグ付けされ、それに応じて、例えば大域的(例えば、Z-only)状態をグラフィックスプロセッサに適用する必要がなくなるようにできる。
【００７７】
シーン内の(複雑な)オブジェクトを表す境界体積の存在(例えば、可視性)または存在しないことが評価された後、その情報は、オブジェクト(例えば、(複雑な)オブジェクトを構成する「真の」プリミティブ)を処理するかどうかを決定するために使用される。
【００７８】
これは、所望の、好適な方法で実行されうるが、ただし好ましい一実施形態では、オブジェクトを表す境界体積の処理から、オブジェクトが表示されるときにシーン内にまったく存在(例えば、好ましくは可視)しないこと判定された場合(例えば、生成された境界体積が可視フレームの縁から完全に外れている、表示されるときにシーンに使用されるタイル内にない、および/またはシーン内の他のオブジェクトにより完全に塞がれているため)、生成された境界体積に対応する(複雑な)オブジェクトは、好ましく単純にシーンから除去、例えばカリングされ、これにより、シーンに関してさらに処理を受けることがない。
【００７９】
その一方で、オブジェクトを表す境界体積の処理で、オブジェクトが表示されるときにシーン内に(少なくとも一部は)存在する(例えば、可視)と判定した場合、オブジェクトは表示するために「適切に」処理することを必要とする。(これは、オブジェクトを表す境界体積の処理がそれ自体オブジェクトを表示するために使用されえないため必要である)。
【００８０】
これは、好ましくは、表示する複雑なオブジェクトに対し定義されているか、または定義されることになる1つまたは複数の(例えば、すべての)個別の実際の(真の)プリミティブをグラフィックス処理システムに処理させることにより達成される。言い換えると、生成された境界体積(オブジェクトのより粗い表現)が表す元のデータ(例えば、プリミティブ)が処理されなければならないということである。
【００８１】
この場合、オブジェクトに対する「真の」プリミティブは、好ましくは、表示するため通常の方法で処理され、したがって、必要に応じて、適宜、必要なタイリング、ラスター処理、レンダリングなどのオペレーションを実行されるべきである。
【００８２】
複雑なオブジェクトに対する「真の」プリミティブのこの処理は、上述のように、キャッシュされた変換頂点データなどの、必要ならばこれらのプリミティブに関するすでに導出され、格納されているデータを、必要ならば使用することができる。
【００８３】
これらの状況におけるオブジェクトの「真の」の処理(オブジェクトに対する「真の」プリミティブの処理)は、(複雑な)オブジェクトが表示されるために(例えば、見えるようになるために)処理されなければならないと決定された後に必要に応じてトリガーされうる。しかし、好ましい一実施形態では、(複雑な)オブジェクトの境界体積表現は、(複雑な)オブジェクトの実際のプリミティブの処理をトリガーする、および/または注目する(複雑な)オブジェクトに対し処理される必要のある実際のプリミティブを識別するために使用できる情報を関連付けられている。
【００８４】
この実施形態は、もっぱら単一境界体積(例えば、境界ボックス)、または単一境界体積全体を一緒に構成する一組の体積をテストするものとして説明されているけれども、描画される複雑なオブジェクトのより粗い表現として(好ましい一実施形態ではこれは実行されるもの)、例えば、必要ならば所定のより複雑なオブジェクトを個別に表す境界体積を構成する2つまたはそれ以上の体積をテストすることが可能である。例えば、複雑なオブジェクトを別々に表す複数の体積をテストすることにより、シーン内の複雑なオブジェクトの異なる部分の存在および可視性を評価することも可能であろう。
【００８５】
したがって、特に好ましい一実施形態では、2つまたはそれ以上の代表体積(境界体積を一緒に構成する)が、(複雑な)オブジェクトを表すために生成され、別々にテストされる。この場合、それぞれのそのような生成された体積は、好ましくは、オブジェクトを構成する複数の実際のプリミティブを表す。これらの構成で生成された代表体積は、好ましくは、それぞれ、注目するオブジェクトの異なる部分を表し、好ましくはオブジェクトの異なる(画面)領域を表すように生成される。
【００８６】
好ましい一実施形態では、複雑なオブジェクトを表す2つまたはそれ以上の代表体積が、最初から生成される。
【００８７】
しかし、特に好ましい一実施形態では、システムは、最初に、複雑なオブジェクト全体を表すために単一の境界体積を生成し、次いで、オブジェクト、次いでオブジェクトの部分がシーン内に存在し、表示されるときにシーンについて処理されなければならないと決定された場合に、また決定されるときに、それぞれが(複雑な)オブジェクトの漸次小さくなる部分を表すさらに多くの代表体積を漸次生成する。
【００８８】
この構成では、実際に、(複雑な)オブジェクトを、それぞれが生成された代表体積(注目するオブジェクトの一部の「境界」となる)によって表されるより小さな部分に漸次分割し、これにより、シーン内のオブジェクトのそれぞれのそのような部分の存在または存在しないことが、オブジェクトの全部または一部がシーン内に表示されるときに存在しない場合に適切な「代表」レベル(分解能)で評価され除去されうる。
【００８９】
これらの構成では、好ましくは、(複雑な)オブジェクトを表すより小さな体積を漸次生成する反復手順が、使用される(オブジェクトの少なくとも一部がそれぞれのステージのシーン内に「存在」し続ける限りにおいて)。
【００９０】
したがって、好ましくは、(複雑な)オブジェクトは、最初に、それを表すために生成される単一境界体積によって表され、その生成された境界体積の存在が評価される。シーン内に存在しない場合、(複雑な)オブジェクトは、このステージで除去できるが、その境界体積が存在する場合、好ましくはそれぞれオブジェクトの異なる部分(および元の境界体積全体の一部)を表す2つまたはそれ以上の(および好ましく2または4つの)体積が生成され、その存在が評価される。
【００９１】
このプロセスは、必要に応じて、また必要な場合に続けることができ、これにより、例えば、その例えば2つの「第2のレベル」の生成された体積がシーン内に、表示されるときに存在すると判明した場合に、2つ(またはそれ以上、などの)小さな体積は、生成された「第2のレベル」の体積が対応し、評価し、次いで、除去した(複雑な)オブジェクトの部分を表すものとして生成されるか、または(複雑な)オブジェクトのその「部分」に対する対応する真のプリミティブは、表示のため処理されるか、または(複雑な)オブジェクトのその「部分」は、さらに細分され、といったことが行われる。
【００９２】
したがって、本発明の特に好ましい一実施形態では、オブジェクトを表す最初に生成された境界体積がシーン内に、表示されるときに存在すると判定された場合に、表示のために表されているオブジェクトを構成する「真の」プリミティブをそのときに直接処理するのではなく、代わりに、それぞれオブジェクトの異なる部分を表す2つまたはそれ以上の(および好ましくは、2または4つの)小さな代表体積が、本発明の方法で生成され、処理される。
【００９３】
次いで、好ましい一実施形態では、表示されるときにシーン内に存在することが判明しているそれらのより小さな体積のどれかについて、それぞれ(複雑な)オブジェクトのその部分に対する「真の」プリミティブが、表示するため処理されるか、または(複雑な)オブジェクトのその(より小さな)部分の異なる部分を表す2つまたはそれ以上の(および好ましく2または4つの)より小さな体積が、本発明の方法で生成され、処理される。
【００９４】
次いで、このプロセスは、好ましい一実施形態において、必要ならば、(複雑な)オブジェクトのこれらのより小さな「部分」に関して繰り返すことができ、これにより、ここでもまた、表示されるときにシーン内に存在することが判明しているこれらのより小さな代表体積のどれかについて、(複雑な)オブジェクトのその部分に対する「真の」プリミティブが表示のため処理されるか、またはそれぞれが(複雑な)オブジェクトのその(より小さな)部分の異なる部分を表す2つまたはそれ以上の(および好ましくは2または4つの)より小さな体積が、本発明の方法で生成され、処理され、というように続く。
【００９５】
好ましくは、この細分は、いくつかの特定の、好ましくは選択されるか、または選択可能な、および好ましくは所定の、細分限界に到達するまで続けられる。この限界は、例えば、実行される細分の数に関する、および/またはオブジェクトが分割される異なる部分(領域)の(および/またはオブジェクトの一部を表すために生成された体積の)サイズに関するものとすることが可能である。
【００９６】
当業者であれば理解するように、使用されるそのような細分のレベルおよび限界は、例えば、さらなる細分に伴う処理の増大と複雑なオブジェクトの一部を処理しないようにすることによる潜在的節約との間のトレードオフの関係に依存しうる。したがって、例えば、特に複雑なオブジェクト(例えば、多数のプリミティブで構成されるオブジェクト)の場合には細分レベルを高めるとよく、またその逆も言える。
【００９７】
これらの構成では、オブジェクトまたはオブジェクトの一部の細分のそれぞれのレベルで(複雑な)オブジェクトを表すために使用される生成された体積は、好ましくは、すべて同じまたは類似のサイズであり、最も好ましくは同じまたは類似の形状である。好ましい一実施形態では、これらは、それぞれ直平行六面体であり、好ましくは立方体である。
【００９８】
好ましい一実施形態において、この方法による(複雑な)オブジェクトの細分では、オブジェクトは、単一の生成された境界体積(オブジェクトのすべてを覆う)によって、次いで、それぞれオブジェクトの異なる部分を表す4つの(より小さな)生成された体積(つまり、オブジェクトが実際に4つの領域に分割されるような)によって表すことができる。
【００９９】
同様に、存在することが判明しているより小さな代表体積(オブジェクトの一部)は、好ましくはここでもまた4つのより小さな部分に分割される(これにより、初期細分からの4つすべての代表体積が存在していると判明した場合、オブジェクトは、次いで、実際に、16個の領域に分割され、これらはそれぞれ異なる生成された代表体積により表される)。
【０１００】
ここでもまた、存在することが判明したこれらのそのようなより小さな代表体積のどれかが、細分すべきである場合に、好ましくは4つのより小さな部分に細分され、それぞれ生成された体積によって表され(これにより、16個すべてのより小さな体積がまだ存在している場合に、オブジェクトは64個の領域に分割される)、というように必要に応じて続けられる。
【０１０１】
特に好ましい他の実施形態では、オブジェクトを表すために生成された体積は、オブジェクトの有界体積、つまり、(オブジェクトによって占有される体積以下の部分を占有する)オブジェクト内に確実に封じ込められる(オブジェクトが境界となる)体積を含む。
【０１０２】
出願人は、さらに、例えば、本発明の方法により1つのオブジェクトがシーン内の他のオブジェクトを塞ぐ可能性があるかどうかをテストする(それらのオブジェクトがそれに応じて次に破棄されうる)ことも等しく可能であることを認識している。このような構成では、複雑なオブジェクトのより粗い表現は、ここでもまた、閉塞テスト(occlusion)
プロセスで、ただしこの場合、シーン内の他のオブジェクトが注目する(複雑な)オブジェクトによって塞がれているものとして破棄されうるかどうかを判定するために、生成され、使用される。
【０１０３】
出願人は、さらに、この場合、複雑なオブジェクトを包含する境界体積を生成することは適切でないことを理解している(「境界」体積は、複雑なオブジェクトによって占有されるシーン内の体積(空間)を正確に表さないからである)。したがって、この処理については、代わりに、「有界」体積、つまり、複雑なオブジェクト内に確実に封じ込められている(つまり、複雑なオブジェクトによって占有される体積以下を占有する)体積が生成される。
【０１０４】
したがって、本発明の特に好ましい一実施形態では、有界体積は、シーン内のオブジェクトを表すために生成され、次いで、その生成された有界体積は、シーン内のオブジェクトの存在を評価する(例えば、存在に関係する情報を導出する)ために処理される。言い換えると、「プロキシ」有界体積(有界体積表現)がそのオブジェクトについて生成され、最初に処理されてから、例えば、注目するオブジェクトを構成するすべての「真の」プリミティブを処理する。
【０１０５】
これは、例えば、以下でさらに説明されるように、そのオブジェクトに対するプロキシ有界体積(有界体積表現)から、オブジェクトが表示されるときにシーン内の他のオブジェクトを塞ぐと判断されうる場合に、それらの他のオブジェクトは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【０１０６】
したがって、特に好ましい一実施形態では、本発明は、
シーン内のオブジェクト(例えば、複数のプリミティブからなる)を識別するステップまたは手段と、
シーン内のオブジェクトを表す有界体積を生成するステップまたは手段と、
オブジェクトについて生成された有界体積を使用してシーンの一部または全部を処理し、シーン内の他の1つまたは複数のオブジェクトの存在を評価する(例えば、そのオブジェクトの存在に関係する情報を導出する)ステップまたは手段と、
導出された情報を使用して、表示するシーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定するステップまたは手段を含む。
【０１０７】
当業者であれば理解するように、本発明のこれらの実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。
【０１０８】
したがって、例えば、「境界体積」の使用に関して本明細書で説明されているオプションの、好ましい技術のどれか、またはすべては、適宜1つのオブジェクトに対して「有界体積」が生成される構成に等しく適用されうる。
【０１０９】
したがって、有界体積は、好ましくは、オブジェクトによって(および/またはオブジェクトの1つまたは複数の部分によって)確実に包含される適切なx、y、およびz値範囲を考慮することにより生成される。
【０１１０】
同様に、(複雑な)オブジェクトに対する適切な有界体積が導出された後、再び、その有界体積を使用してオブジェクトを表す、好ましくは、それに応じてオブジェクトがシーン内に現れる他のオブジェクト、プリミティブなどを塞ぐかどうかを判定してシーンが処理されうる(次いで破棄されうる(表示のために処理されない))。
【０１１１】
特に好ましい一実施形態では、オブジェクトのより粗い表現である生成された有界体積を使用して実行される処理は、オブジェクトを表す有界体積がシーン内の他のオブジェクトを完全におよび/または部分的に塞ぐかどうかを評価するステップを含む。このことから、他の1つまたは複数のオブジェクトが実際に、表示されるときにシーン内で可視になるかどうか(したがって、表示するために完全な処理を必要とするかどうか)に関する情報が得られる。
【０１１２】
オブジェクトを表す有界体積が他のオブジェクトを塞ぐかどうか、または実行されえないかどうかのそのような評価は、必要に応じて、ただしここでもまた好ましくは、Z(深さ)テストおよび/または他の形態のグラフィックス閉塞テストを、例えば、好ましくは、当業で知られているように、実行するステップを含む。
【０１１３】
したがって、有界体積に関する処理は、同様に好ましくは、Z-onlyレンダリングパスとして実行され、好ましくは、上述の「境界体積」処理に対応する方法で使用され、これにより(複雑な)オブジェクトによって塞がれるオブジェクトを破棄することができる。
【０１１４】
ここで、オブジェクトの有界体積の生成およびテストは、有界体積が、例えば、それが表すオブジェクトによって実際には占有されないシーンの体積または面積を包含することがないように、適切に保存的な形で実行されるべきであることは理解されるであろう。
【０１１５】
有界体積は、必要に応じて、オブジェクト、および/またはオブジェクトの1つまたは複数の部分の高いまたは低い精度の表現となるように導出されうる。
【０１１６】
また、例えば、必要ならばオブジェクトによって占有される体積を例えばより正確に表すように複数の有界体積の集合を生成し、次いで処理することも可能である(好ましい一実施形態においては、これが行われる)。これは、単一の有界体積を使用したのでは十分正確に表現することは簡単にはできない形状を有するオブジェクトの場合に特に望ましいものと言える。
【０１１７】
特に好ましい一実施形態では、境界体積および有界体積両方が、所定のオブジェクトについて生成され、次いで、上述の方法で処理される。最も好ましくは、これは、シーン内の複数の(複雑な)オブジェクトに対し実行されるが、それというのも、それにより、次いで、例えば、それらのオブジェクトの1つまたは複数をシーンの処理から外すことができるからである。
【０１１８】
上記のことから、本発明のすべての構成は、最初に、複雑なオブジェクトのより抽象的な、またはより粗い表現を処理して(つまり、そのオブジェクトを表すものとして生成された境界および/または有界体積)、表示されるときのシーン内の複雑なオブジェクトの存在(可視性)または存在しないことおよび/または効果を評価することを伴うことは理解されるであろう。
【０１１９】
したがって、本発明の第3の態様によれば、グラフィックス処理システムにおいて表示するシーンを処理する方法が提供され、この方法は、
グラフィックス処理システムが、
シーンのオブジェクトのより粗い表現を生成し、
表示されるシーン内の1つまたは複数のオブジェクトの可視性を評価するために、オブジェクトの生成されたより粗い表現を処理するステップを含む。
【０１２０】
本発明の第4の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示されるシーンのオブジェクトのより粗い表現を生成する手段と、
表示されるシーン内の1つまたは複数のオブジェクトの可視性を評価するために、オブジェクトの生成されたより粗い表現を処理する手段とを備える。
【０１２１】
当業者であれば理解するように、本発明のこれらの態様は、適宜、本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、より粗い表現が生成されるオブジェクトは、好ましくは、多くの個別プリミティブで構成される1つのオブジェクトなどのより複雑なオブジェクトを含む。
【０１２２】
同様に、本発明のこれらの態様は、好ましくは、シーン内の複数のプリミティブからなる1つのオブジェクトを識別するステップまたは手段、および次いでシーン内のオブジェクトを表すためのその識別されたオブジェクトのより粗い表現を生成するステップまたは手段を含む。
【０１２３】
同様に、本発明のこれらの態様の好ましい一実施形態では、オブジェクトのより粗い表現は、シーン内のオブジェクトを表すための境界体積を含む。この場合、表示されるシーン内の1つまたは複数のオブジェクトの可視性の評価は、好ましくは次いで、シーン内のオブジェクトの存在に関係する情報を導出するためにオブジェクトの生成された境界体積を使用してシーンの一部または全部を処理するステップまたは手段を含む。
【０１２４】
同様に、好ましい他の実施形態では、生成されるオブジェクトのより粗い表現は、シーン内のオブジェクトを表すための有界体積を含む。この場合、オブジェクトの生成されたより粗い表現の処理は、好ましくは、シーン内の1つまたは複数のオブジェクトの存在に関係する情報を導出するためにオブジェクトの生成された有界体積を使用してシーンの一部または全部を処理するステップを含む。
【０１２５】
特に好ましい一実施形態では、境界体積および有界体積は両方とも、上述のように、オブジェクトに対し生成される。
【０１２６】
同様に、本発明のこれらの態様の方法およびシステムは、好ましくは、表示されるシーン内の1つまたは複数のオブジェクトの可視性の評価を使用して、注目するオブジェクトを処理するかどうか、および/または表示するシーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定するステップまたは手段を含む。
【０１２７】
また、本明細書で説明されている本発明の態様および実施形態のすべてにおいて、本発明の方法により代表的なより粗い表現、1つまたは複数の境界体積、および/または1つまたは複数の有界体積が生成され、評価される所定のシーン内に複数のオブジェクトがありうることにも留意されたい。実際、好ましい一実施形態においては、そうである。この場合、それぞれのそのようなオブジェクトは、上述の方法で取り扱われ、処理されることが可能であり、そうすべきである。
【０１２８】
上記から理解されるように、本発明の構成では、最初に、より限定された方法で、より具体的にはその「位置」のみに関して、(複雑な)オブジェクトの、または(複雑な)オブジェクトを表す頂点を処理することができる。
【０１２９】
出願人は、限られたデータの集合のみを使用する本発明のようにそのような「予めの」処理を実行するステップは、それ自体新しく、有利な方法でありえると確信しているが、それというのも、例えば、組み込みシステムおよび携帯デバイスなど、処理能力およびメモリ資源の制限が大きい状況において、「予めの」処理を、例えば実行しやすくすることが可能であり、実際、これにより、他の方法では(例えば、処理の負担が通常、大きすぎると考えられるため)そうするのが望ましくない可能性のある状況においてそのような処理を実行させることが可能であるからである。
【０１３０】
したがって、本発明の第5の態様によれば、グラフィックス処理システムを操作する方法が提供され、この方法は、
グラフィックス処理システムが、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点の位置に関係するデータのみを処理するステップと、
表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために処理の結果を使用するステップを含む。
【０１３１】
本発明の第6の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点の位置に関係するデータのみを処理する手段と、
表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために処理の結果を使用する手段と、を備える。
【０１３２】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、1つまたは複数の頂点に対する、またはそれらの頂点に関係する位置データに対し、またはその位置データを使用して実行される処理は、好ましくは、位置データを変換するステップ(つまり、位置データに対応して表示されるときにシーンに対する(内の)位置データを導出するステップ)を含む。
【０１３３】
本発明のこれらの態様において、またこの実施形態において、予め処理される頂点の集合の中の複数の頂点の位置に関係するデータは、好適な、所望のそのようなデータ、つまり、1つまたは複数の頂点の位置に影響を及ぼすか、または定義するデータとすることができる。
【０１３４】
したがって、注目する頂点に対する位置データ(x、y、zデータ)を、例えば含むことが可能であり、好ましくは含む。しかし、これは、1つの頂点に対する色データなどの頂点の位置に影響を及ぼす可能性のある他のデータとすることも可能である(例えば、頂点の色がその位置を定義するか、または影響を及ぼす場合)。
【０１３５】
位置関係データは、さらに、または代わりに、本発明の場合のような頂点の位置データ、特に、オブジェクトの「真の」頂点の(複数の)位置を表す境界ボックスなどの境界体積の位置データから導出されるか、または位置データに関係するデータとすることが可能である。
【０１３６】
好ましい一実施形態では、本発明のこれらの態様および実施形態において処理される位置データは、上述のように、表示するために処理される(複雑な)オブジェクトの頂点の集合に関係する。これは、また、あるいは代わりに、本発明のこれらの態様において、例えば、必要に応じて、表示するシーン全体を処理するのに必要な頂点を含むことができる。
【０１３７】
いくつかの場合において、例えば、頂点の集合の中の1つの頂点が、それに対し定義された位置関係データのみを持つ場合(例えば、その属性が他の何らかの形で定義済みデフォルト値に設定されるので)、予め処理される位置関係データは、1つの頂点について定義された(また格納された)すべてのデータを含む。
【０１３８】
しかし、より典型的には、位置関係データは頂点に対し定義されたデータの部分集合を含むが、それは、例えば、頂点がそれに対し定義されている位置定義する、または影響を及ぼすデータ、および頂点の位置に関係または影響を及ぼさない色またはテクスチャなどの属性などの他のデータの両方を有するからである。
【０１３９】
したがって、特に好ましい一実施形態では、予め処理される位置関係データは、注目する1つの、またはそれぞれの頂点について定義された、または関係するデータの部分集合のみを含む。同様に、したがって本発明は、表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されている、または関係するデータの部分集合のみを処理する手段またはステップを含む。
【０１４０】
実際、出願人は、表示する頂点を処理する前に予め表示するために処理される頂点について定義されているデータの部分集合のみを処理するという考え方は、それ自体新しく、有利でありえると確信しているが、それは、例えば、この方法で処理される位置関係データのみでない場合であっても、同様に処理および資源の節約を容易に行えるようにすることが可能であるからである。
【０１４１】
したがって、本発明の第7の態様によれば、グラフィックス処理システムを操作する方法が提供され、この方法は、
グラフィックス処理システムが、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されているデータの部分集合のみを処理するステップを含む。
【０１４２】
本発明の第8の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されているデータの部分集合のみを処理する手段を備える。
【０１４３】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、グラフィックス処理システムによって処理されるデータの部分集合は、好ましくは、頂点の集合の中の1つまたは複数の頂点、好ましくはそれぞれの頂点について定義されているか、または関係する位置データ(例えば、(x,y,z)座標)を含む(好ましくはその位置データのみを含む)。同様に、処理の結果は、好ましくは、表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために使用される。
【０１４４】
本発明のこれらの態様および実施形態で位置データ(および/または選択された頂点データ部分集合)に対し、またはそれを使用して「予め」実行される1つまたは複数の処理オペレーションは、必要に応じて選択することができ、また好適な、または所望のそのようなオペレーションとすることができる。
【０１４５】
特に好ましい一実施形態では、この処理は、頂点の集合のその後の処理に使用されるデータ構造体を用意するステップを含み、および/またはその後の処理オペレーション(例えば、好ましくは頂点データの)でグラフィックスシステムによって使用される情報を推論し、および/または提供するために頂点データを分析するステップを含む。
【０１４６】
本発明の方法で処理されるプリミティブは、好適な、所望のそのようなプリミティブとしてよい。これらは、好ましくは、当業で知られているように、単純な多角形の形をとる。好ましい一実施形態では、1つのオブジェクトを構成する少なくとも「真の」プリミティブは三角形である。
【０１４７】
本発明のまたは本発明とともに使用するグラフィックス処理システムは、好適な任意の形態をとりうる。当業者であれば理解するように、本発明に従って動作する必要のある特定のコンポーネントまたは機能とともに、表示するグラフィックス頂点データを処理させるために必要な他の機能およびコンポーネントを備えることができ、また備えるべきである。そのため、これは、好ましくは、当業で知られているように、例えば(プログラム可能な)1つまたは複数の頂点シェーダーユニット、(プログラム可能な)1つまたは複数のピクセルシェーダーユニット、(複数の)ラスター処理ユニット、(複数の)レンダリングユニット(例えば、テクスチャマッピングユニット、フォギングユニット、および/またはブレンディングユニットなどを含む)などのうちの1つまたは複数を備える。
【０１４８】
特に好ましい一実施形態では、本発明のさまざまな機能は、表示デバイスのフレームバッファに書き込まれるデータを生成して出力する単一のグラフィックス処理プラットフォーム上で実行される。
【０１４９】
本発明のさまざまな機能、要素などは、必要に応じて実装することができ、また例えば、好ましくは、本発明のさまざまなステップおよび機能などを実行するように動作可能な、適切な機能ユニット、プロセッサ、回路、処理ロジック、マイクロプロセッサ装置などを備え、および/またはこれらによって実行される。
【０１５０】
本発明は、「パイプライン化」された構成を備えるグラフィックスプロセッサなどの、任意の形態または構成のグラフィックスプロセッサに適用可能である。好ましい一実施形態では、これは、ハードウェアグラフィックスパイプライン、好ましくはレンダリングパイプラインに適用される。
【０１５１】
本発明は、直接モードレンダリング、遅延モードレンダリング、タイルベースレンダリングなどのすべての形態のグラフィックス処理およびレンダリングに適用可能であるが、これは、遅延モードレンダリングおよび特にタイルベースレンダラーを使用するグラフィックスレンダラーに特に適用可能である。
【０１５２】
上記から理解されるように、本発明は、もっぱらというわけではないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の装置を含む、またはその態様に従う、またはその態様に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームに拡張される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのような3Dグラフィックスプロセッサは、他の何らかの方法で、3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの1つまたは複数またはすべてを備えることができる。
【０１５３】
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備えることを理解するであろう。
【０１５４】
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データ処理システムは、マイクロプロセッサシステム、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などとしてよい。
【０１５５】
本発明は、さらに、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、またはマイクロプロセッサシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアにも拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
【０１５６】
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、コンピュータソフトウェア、および本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
【０１５７】
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜具現化されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を具現化する。
【０１５８】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることが企図される。
【図面の簡単な説明】
【０１５９】
本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実施例のみを使って説明する。
【図１】本発明の方法およびシステムが有益に適用されうる例示的なシーンの概略を示す図である。
【図２】本発明のオペレーションを例示する図である。
【図３】本発明のオペレーションを例示する図である。
【図４】本発明のオペレーションを例示する図である。
【図５】本発明のオペレーションのステップを例示する流れ図である。
【図６】本発明のオペレーションを例示する図である。
【図７】本発明の他の好ましい一実施形態を示す図である。
【図８】本発明の他の好ましい一構成を示す図である。
【図９】本発明の他の好ましい一構成を示す図である。
【図１０】本発明の他の好ましい一構成を示す図である。
【図１１】本発明のさらに他の一実施形態を例示する図である。
【図１２】本発明を実装することができるグラフィックスプロセッサの概略を示す図である。
【発明を実施するための形態】
【０１６０】
図1は、本発明が有益に適用されうるグラフィックス処理システムによってレンダリングされる例示的なシーン1を示している。図1に示されているように、シーンは、自動車3の形態の他のオブジェクトを完全に塞ぐ丘の形態の前景オブジェクト2を含む。
【０１６１】
当業者であれば理解するように、自動車3は、多数の個別プリミティブで構成される複雑なオブジェクトであり、典型的には、シーン1をレンダリングするためにグラフィックス処理システムに送られる命令内の単一描画コールとして定義される。
【０１６２】
本発明に従って動作していないグラフィックス処理システムの通常オペレーションでは、シーン1は、自動車3を構成するそれぞれのプリミティブを順に取り出し、そのプリミティブを処理して表示されるときにシーン1内に現れるかどうかを判定することにより処理される。したがって、自動車3が実際にはシーン1内の丘2によって完全に塞がれているとすると、この結果、実際には見えないかなりの数のプリミティブの処理でこの実施例のようになる。
【０１６３】
上述のように、本発明では、この可能性を認識して、シーン1をレンダリングするときに自動車3を処理するための代替え構成を提案している。本発明のこの構成は、図2および3に例示されている。
【０１６４】
図2に示されているように、また上で説明されているように、本発明のこの実施形態の基本原理は、自動車3を表す体積を生成することであり、その体積は、この実施例では、複雑なオブジェクト(自動車)3を囲む境界体積4の形態をとる。
【０１６５】
次いで、シーン1は、自動車3を構成する実際のプリミティブの代わりに境界体積4を使用して図3に示されているように処理される。次いで、これは、自動車3(複雑なオブジェクト)に関するシーンの処理を簡素化するが、それは、図3に例示されているように、自動車3の境界体積表現4がシーン内で完全に塞がれ、したがって、自動車3を構成する個別プリミティブを処理する必要はないと決定されうるからである。このことにより、上述のように、シーン1に対する処理時間および資源をかなり節約することができる。
【０１６６】
その一方で、自動車3に対する境界体積4を処理したことで、実際にその境界体積の一部がシーン内に表示されるときに存在する(可視である)と判明した場合、システムは自動車3を構成する実際のプリミティブを処理するステップに進みシーンを適切にレンダリングすることができる。これは、図4に例示されており、そこでは、境界体積4が丘2によって完全には塞がれていない少し異なるシーン10が示されている。
【０１６７】
図5は、上述のような本発明のオペレーションを例示する流れ図である。
【０１６８】
図5に示されているように、本発明が動作する際に、グラフィックスプロセッサは最初に、当業で知られているように、表示するシーンをレンダリングするための一組のコマンドを受け取る。次いで、これは、本発明の技術が適用される表示されるべきシーン内の1つまたは複数の複雑なオブジェクトを識別するステップに進む(ステップ50)。
【０１６９】
本発明が使用される複雑な1つまたは複数のオブジェクトのこのような識別は、必要に応じて実行されうる。例えば、グラフィックスプロセッサは、個別の1つまたは複数の描画コールを単純に識別し、その1つまたは複数の描画コールを、本発明が適用される複雑なオブジェクトとして取り扱うことが可能である。それに加えて、またはそれとは別に、シーンの他の分析を実行して、例えば、所定の描画コール内のプリミティブおよびオブジェクトの個別グルーピングを評価する、パッチまたは表面などの高次のオブジェクトを識別する、オブジェクトの高次のパラメータ記述を識別するなどの方法により、本発明の技術を適用する好適な複雑なオブジェクトを識別することが可能である。
【０１７０】
複雑な1つまたは複数のオブジェクトが、識別された後、この実施形態のシステムは、そのオブジェクトに対する(またはそれぞれのオブジェクトに対する)境界体積を生成するステップに進む(ステップ51)。
【０１７１】
これは、例えば当業で知られているように、好適な、所望の方法で実行されうる。例えば、複雑なオブジェクトによって覆われる最大および最小のx、y、およびz位置が決定され、次いで、それらの最大および最小のx、y、およびz位置を使用する境界体積が、当業で知られているように、生成されうる。他の、粗さの少ない境界体積表現も、必要ならば、同様にして導出することが可能である。
【０１７２】
また、例えば、複雑なオブジェクトのxおよびy方向の広がりを表す境界「面積」を導出し、次いで、それをオブジェクトが覆う深さ範囲に関連付け、それによって、オブジェクトに対する境界体積表現を構成することも可能である。
【０１７３】
(これらの構成では、オブジェクト3に対して定義されている頂点データを、例えば、評価し、オブジェクト3を表す境界体積4をそのデータから作成し、次いで、境界体積4をレンダリングするために画面空間に変換することが可能である。それとは別に、オブジェクト3に対して定義されている頂点データを、例えば、最初に、画面空間に変換し、次いで、境界体積4を画面空間内のオブジェクト3を表すように定義することも可能である。)
【０１７４】
境界体積4が生成された後、次いで、グラフィックスプロセッサは、複雑なオブジェクト3を構成する実際のプリミティブを使用せずに、複雑なオブジェクトの境界体積表現を使用してシーンを処理すべきである。
【０１７５】
そこで、例えば、境界体積4に対応する1つまたは複数のプリミティブが生成され、次いで、シーン内の他のプリミティブ(およびオブジェクト)と一緒にシーンについて処理される(ステップ52)。
【０１７６】
境界体積4を表すプリミティブは、他のプリミティブと同様の処理パイプラインによって処理されなければならない。そのため、これらは、例えば、レンダリングパスで、適切なタイルにビニングされ、1つのタイル内にまったく入っていなければカリングされ、レンダリングパイプライン内で行われるさまざまな形態の閉塞試験および深さ試験を受けることができ、受ける。
【０１７７】
上述のように、境界体積を使用するシーンのこの処理は、この実施形態において表示されるときにシーン内の境界体積の可視性または可視でないことを評価することにより実行されるシーン内の境界体積の存在または存在しないことをテストすることを意図されている。
【０１７８】
したがって、この実施形態では、この処理は、オブジェクト3の境界体積表現(境界体積を表す(複数の)プリミティブ)についてZ-onlyレンダリングパスを実行し、境界体積表現4が表示されるときにシーン内で完全に塞がれるかどうかを判定するステップを含む。
【０１７９】
グラフィックスプロセッサは、必要に応じて複雑なオブジェクトに対する境界体積4に関するそのような「Z-only」オペレーションを容易に行えるように適切なレンダリング状態に設定されうる。好ましい一実装では、これは、出願人の初期の英国特許出願第2420261号で説明されている技術を使用して行われ、またZ-onlyレンダリングパスが境界体積4上で実行されることを指示する適切な定義済みレンダリング状態インデックスを境界体積4(そのプリミティブ)にタグ付けすることにより行われる。
【０１８０】
境界体積4に対するZ-onlyレンダリングパスの結果から、当業者であれば理解するように、グラフィックスZテスト(深さテスト)プロセスを使用することで、境界体積4が表示されるときにシーン内で可視となるかどうかが判定される(ステップ53)。
【０１８１】
この判定に対する応答として、次いで、グラフィックスプロセッサは、複雑なオブジェクト3を破棄するステップに進むか(境界体積が(表示されるときに)シーン内でまったく見えないと判定された場合)、またはシーンを複雑なオブジェクト3とともにレンダリングするステップに進む(テストの結果、境界体積が(少なくとも一部は)可視であると判定された場合)ことができる。
【０１８２】
(この実施形態では、グラフィックス処理システムは、オブジェクト3を表す境界体積4に、境界体積4がグラフィックス処理システムを通るパスで除去されない場合にオブジェクト3を表す真のプリミティブの処理をトリガーする好適な情報、データ、またはタグなどを関連付けることにより、シーン1内に適切にレンダリングできるように「真の」個別のプリミティブ形態でオブジェクト3を現在処理するようにトリガーされる。他の構成も、もちろん、可能である。)
【０１８３】
したがって、図5に示されているように、境界体積4のテストの結果として、グラフィックスプロセッサは、複雑なオブジェクトを破棄して、複雑なオブジェクト3なしで表示するようにシーンをレンダリングするか(ステップ54)、または複雑なオブジェクト3を含むシーンをレンダリングするステップに進む(ステップ55)。
【０１８４】
いずれの場合も、グラフィックスプロセッサは、例えば、複雑なオブジェクト3を含めて(ただし、その場合、複雑なオブジェクト3を構成する実際のプリミティブをレンダリングする)、または複雑なオブジェクト3を含めずに、ここでもまたシーンを完全にレンダリングすることが可能であるか、または境界体積4を使用してシーンを処理するようにプロセスを構成する方法に応じて、シーンが、実際に、複雑なオブジェクトを含むシーンの一部を再レンダリングするために複雑なオブジェクトが可視である場合にのみ必要なように複雑なオブジェクトを含めずにすでにレンダリングされている可能性がある。
【０１８５】
表示するシーンのレンダリング(複雑なオブジェクトを含むか、または含まない場合)は、必要に応じて実行することが可能であり、好ましくは、注目するグラフィックスプロセッサにとって通常の方法で実行される。
【０１８６】
ここで、本発明では境界体積4に対し適切に保存的な「存在」(可視性)テストを使用することに留意されたい。したがって、例えば、図6に例示されているように、境界体積4がシーン内で完全に塞がれるかどうかを評価するときに、他の1つまたは複数のオブジェクト60が境界体積4を完全に塞ぐときにその閉塞のみを描画する保存的テストを使用する必要がある。
【０１８７】
本発明の上記の実施形態は、複雑なオブジェクト3を表す単一の境界体積4を生成することに関して説明されているけれども、複雑なオブジェクト3を表す複数の体積を生成することも可能である。これにより、例えば、複雑なオブジェクトのいくつかの部分がシーン内に現れるとしても、複雑なオブジェクトの異なる部分を破棄するようにできる。
【０１８８】
図7は、そのような構成を例示している。この場合、自動車3を表す「境界体積」4全体が、2つのより小さな代表体積11、12に分割され、そのそれぞれが、本発明の方法によりテストされる。この場合、それに応じて、体積11が表示するためレンダリングする必要があるが、体積12によって包含される複雑なオブジェクトの部分は、破棄されうると判定される。
【０１８９】
本発明の特に好ましい一実施形態では、グラフィックスプロセッサは、オブジェクトの異なる部分を処理から破棄できるかどうかを調べるために、複雑なオブジェクトについて生成された境界体積を漸次細分するように動作可能である。図8、9、および10は、これを例示している。
【０１９０】
図8は、複雑なオブジェクトに対する例示的な初期境界体積20を示している。
【０１９１】
この構成において、境界体積20が表示されるシーン内に存在することが判明した場合、図9に例示されているように、システムは、初期境界体積20を4つのさらに小さい体積21、22、23、および24に細分するステップに進む。
【０１９２】
次いで、それぞれのそのようなより小さな体積は、本発明の方法でテストされ、完全に塞がれていると判明したものがあれば、上述のように破棄される。
【０１９３】
図9のより小さな体積21、22、23、および24のどれかが、シーン内にまだ存在すると判明した場合、それらの体積は、さらに、同じようにして細分される。
【０１９４】
図10は、体積21についてこのことを例示し、その体積が4つのより小さな体積25、26、27、および28に細分されることを示しており、ここでもまた、本発明の方法でテストされ、適切であれば破棄されうる。
【０１９５】
漸次小さくなる代表体積のこのような細分とテストは、必要に応じて、例えば、いくつかの所定の、または選択された細分限界まで繰り返されうる。
【０１９６】
本発明は、複雑なオブジェクトが表示されるときにシーン内に存在するかどうかを判定するステップについて特に参照しつつ上で説明されているけれども、出願人は、さらに、複雑なオブジェクトが同様の方法でシーン内の他のオブジェクトを塞ぐ可能性があるかどうかをテストすることも等しく可能であることを認識している。
【０１９７】
この場合、複雑なオブジェクト3のより粗い表現は、ここでもまた、閉塞テストプロセスで、ただしこのときに、シーン内の他のオブジェクトが、それらのオブジェクトが複雑なオブジェクトによって塞がれることに基づき破棄されうるかどうかを判定するために、生成され、使用される。
【０１９８】
この場合、複雑なオブジェクト3を包含する「境界」体積を生成するのではなく、「有界」体積、つまり複雑なオブジェクト内に確実に封じ込められる体積(複雑なオブジェクト内に封じ込められる空間を確実に表す)が生成される。
【０１９９】
図11は、このことを例示し、複雑なオブジェクト71について生成される例示的な有界体積70を示している。
【０２００】
この有界体積70は、ここでもまた、必要に応じて、例えば、複雑なオブジェクト71によって確実に包含される適切なx、y、およびz値範囲を考慮することにより、生成されうる。また、必要ならば、例えば、それぞれ複雑なオブジェクト内に完全に収まる2つ(またはそれ以上の)有界体積を生成することも可能である(例えば、複雑なオブジェクトの異なる部分を表す)。
【０２０１】
複雑なオブジェクトに対する適切な有界体積70が導出された後、再び、その有界体積を使用して複雑なオブジェクト71を表し、またそれに応じて複雑なオブジェクトがシーン内に現れる他のオブジェクト、プリミティブなどを塞ぐかどうかを判定してシーンが処理されうる(次いで破棄されうる)。
【０２０２】
ここでもまた、有界体積70に関する処理は、好ましくは、Z-onlyレンダリングパスとして実行され、有界体積70は、好ましくは、上述の「境界体積」と類似の方法で使用され、これにより複雑なオブジェクト3によって塞がれるオブジェクトを破棄することができる。
【０２０３】
ここで、複雑なオブジェクトの有界体積の生成およびテストは、有界体積が、例えば、複雑なオブジェクトによって実際には占有されない(複雑なオブジェクトによって塞がれることのない)シーンの体積または面積を包含することがないように、適切に保存的な形で実行されるべきであることは理解されるであろう。
【０２０４】
ここで、「境界体積」の使用に関して本明細書で説明されているオプションの、好ましい技術のどれか、またはすべては、1つの複雑なオブジェクトに対して「有界体積」が生成される構成に(適宜)等しく適用されうることも等しく理解されるであろう。
【０２０５】
特に好ましい一実施形態では、1つ(または複数)の境界体積および1つ(または複数)の有界体積が、所定の複雑なオブジェクトについて生成され、次いで、それぞれのそのような体積は上述の方法で処理される。最も好ましくは、これは、シーン内の複数の複雑なオブジェクトについて実行される。次いで、これにより、例えば、これらのオブジェクトのうちの1つまたは複数をシーンの処理から破棄するようにできる。
【０２０６】
本発明は、グラフィック処理システムにおいて、好適な方法により、また必要に応じて、グラフィックスプロセッサを使用して実装されうる。
【０２０７】
図12は、本発明に従って動作しうるグラフィックス処理システム100の構成の概略を示す。
【０２０８】
図12は、タイルベースのグラフィックス処理システムを示している。しかし、理解されるように、また上で説明されているように、本発明は、グラフィックス処理システムの他の構成でも実装されうる。
【０２０９】
図12に示されているように、グラフィックス処理システム100は、グラフィックスプロセッサ110、および当業で知られているように、グラフィックスプロセッサ110が結合されているホストCPU(プロセッサ)上に典型的には常駐し、実行されるグラフィックスプロセッサ用のドライバ111を備える。ドライバ111は、当業で知られているように、コマンドおよびデータのリストなどをグラフィックスプロセッサに送り、ホストプロセッサ上で実行されるアプリケーションなどからのグラフィックス表示の呼び出しに対する応答として表示するグラフィックスをレンダリングするようグラフィックスプロセッサに命令する。
【０２１０】
図12に示されているように、グラフィックスプロセッサ110は、頂点シェーダー112、ビニングユニット113、状態管理ユニット101、ラスター処理ステージ102、およびレンダリングステージ103をレンダリングパイプラインの形態で備える。
【０２１１】
頂点シェーダー112は、当業で知られているように、描画されるグラフィックスオブジェクト、頂点などの記述をドライバ111から取り出し、それらのオブジェクトおよび頂点などに対し適切な頂点シェーディングオペレーションを実行して、例えば、オブジェクトおよび頂点に対し適切な変換および照明オペレーションを実行する。
【０２１２】
ビニングユニット113は、当業で知られているように、シーンに必要なさまざまなプリミティブ、オブジェクトなどを表示されるシーンの分割であるタイルについて適切なビン(タイルリスト)にソート(ビニング)する(上述のように、この例示的なグラフィックス処理システムは、タイルベースのグラフィックス処理システムだからである)。
【０２１３】
状態管理ユニット101は、当業で知られているように、状態データ、およびグラフィックス処理オペレーションを制御するグラフィックス処理ユニットの状態を格納し、制御する。
【０２１４】
当業で知られているように、ラスタライザー102は、その入力として、表示すべきプリミティブを受け取り、それらのプリミティブをレンダリングされるフラグメント位置(フラグメント)にラスター処理する。
【０２１５】
レンダリングパイプライン103は、ラスタライザー102からフラグメントを受け取り、それらのフラグメントを表示のためレンダリングする。当業で知られているように、レンダリングパイプラインは、フラグメントシェーダー、ブレンダー、テクスチャマッパーなどの多くの異なる処理ユニットを備える。
【０２１６】
レンダリングパイプライン103からの出力(レンダリングされたフラグメント)は、タイルバッファ104に出力される(この実施形態は、タイルベースシステムだからである)。次いで、表示するため、タイルバッファの出力は、最終的にフレームバッファ105に出力される。
【０２１７】
図12に示されているようなグラフィックスプロセッサのステージ、要素、およびユニットなどのそれぞれは、必要に応じて実装することが可能であり、そこで、例えば、必要なオペレーションおよび機能を実行する適切な回路、および/または処理ロジック、プログラム可能なロジックなどを備え、また本発明を実行するために適切な制御および処理回路などを備えることは理解されるであろう。
【０２１８】
本発明によるこのグラフィックス処理システム110のオペレーションにおいて、ドライバ111は、例えば、表示のためにレンダリングするようにグラフィックスプロセッサ110に命令することになるレンダリングする適切な複雑なオブジェクトを識別するよう動作し、次いで、それらのオブジェクトに対する適切な代表体積を生成するようにホストプロセッサを制御するか、またはグラフィックスプロセッサ110の頂点シェーダー112に、所望の代表体積を生成する適切な命令を送り、次いでそれに応じてそれらの代表体積を処理するようグラフィックスプロセッサ110の残りのユニットおよびステージに指令することができる。
【０２１９】
この点に関して、当業者であれば理解するように、これは、ビニングユニット113、ラスタライザー102、およびオブジェクトに対する代表体積に関して、適切な例えばZ-only処理を実行するよう特に制御されうるタイルバッファ104のオペレーションである。
【０２２０】
他の構成も、もちろん、可能である。例えば、頂点シェーダー112は、レンダリングされるシーン内の適切な、例えば複雑な、オブジェクトを識別し、次いで、それに応じて本発明の方法によりそのようなオブジェクトおよびトリガーオペレーションに対する適切な1つまたは複数の代表体積を生成するように構成することが可能である。
【０２２１】
また、図12は、単に、これらの構成の概略を示しているにすぎず、したがって、例えば、本発明のオペレーションのデータフローは、図12に示されるようなものである必要はなく、また図12に示されているとおりでなくてよいが、例えば、適宜図12に示されているさまざまなユニットとステージとの間で行われるようなデータのループバックを伴うことがあることは理解されるであろう。当業者であれば理解するように、適切なデータフローを使用して、本発明を実装することができる。
【０２２２】
上記のことから、本発明は、その好ましい実施形態において、少なくとも、レンダリングされるシーン内の複雑なオブジェクトを取り扱う、そのようなオブジェクトのより効率的で、効果的な処理を行うことができる構成を実現することがわかる。
【０２２３】
これは、本発明の好ましい実施形態では少なくとも、最初に境界体積および/または有界体積を使用して複雑なオブジェクトを表し、次いで、境界体積および/または有界体積を使用してオブジェクトを表してシーンを処理し、例えば、シーン内の複雑なオブジェクトの存在または存在しないことを評価してから、複雑なオブジェクトに対し完全レンダリングオペレーションを実行するという方法で達成される。
【符号の説明】
【０２２４】
1  シーン
2  前景オブジェクト
3  自動車
4  境界体積
11  体積
12  体積
20  境界体積
21、22、23、および24  体積
25、26、27、および28  体積
60  オブジェクト
70  有界体積
71  複雑なオブジェクト
100  グラフィックス処理システム
101  状態管理ユニット
102  ラスター処理ステージ
103  レンダリングステージ
104  タイルバッファ
105  フレームバッファ
110  グラフィックスプロセッサ
111  ドライバ
112  頂点シェーダー
113  ビニングユニット
【図１】
0005538748.tif 000002
【図２】
0005538748.tif 000003
【図３】
0005538748.tif 000004
【図４】
0005538748.tif 000005
【図５】
0005538748.tif 000006
【図６】
0005538748.tif 000007
【図７】
0005538748.tif 000008
【図８】
0005538748.tif 000009
【図９】
0005538748.tif 000010
【図１０】
0005538748.tif 000011
【図１１】
0005538748.tif 000012
【図１２】
0005538748.tif 000013