説明

グラフィックス処理システム

【課題】表示の処理のためグラフィックス処理システムに「提示される」シーンが複雑なシーンであっても、これらの負担および要件を低減するのが望ましく、そのためのいくつかの技術が存在しているが、この点に関してまだ改善の余地がある。
【解決手段】多くの個別のプリミティブで構成される複雑なオブジェクトを含むシーン1をレンダリングするときに、オブジェクトを構成するそれぞれのプリミティブを順に処理するのではなく、複雑なオブジェクトを囲む境界体積4が生成され、次いで、シーン1が、複雑なオブジェクトを構成する実際のプリミティブの代わりに境界体積4を使用して処理される。
オブジェクトの境界体積表現4が、シーン内で(例えば、前景オブジェクト2によって)完全に塞がれると判定された場合、複雑なオブジェクトを構成する個別のプリミティブは処理されない。このことにより、シーン1に対する処理時間および資源をかなり節約することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックスの処理に関するものであり、具体的には、例えば、ディスプレイ画面に表示する三次元(3D)グラフィックスの処理に関するものである。
【背景技術】
【0002】
当業で知られているように、3Dグラフィックス処理は、通常、表示するシーンを複数の類似の基本コンポーネント(いわゆる「プリミティブ」)に分割して、3Dグラフィックス処理オペレーションを実行しやすくすることから始める。これらの「プリミティブ」は、通常、三角形などの単純な多角形の形態をとる。
【0003】
表示するシーンに対応するプリミティブは、通常、グラフィックス処理システム用のアプリケーションプログラムインターフェイスにより生成され、そのために、グラフィックスの表示を必要とするアプリケーション(例えば、ゲーム)から受け取ったグラフィックス描画命令(リクエスト)を使用する。
【0004】
それぞれのプリミティブは、このステージでは、通常、一組の頂点により定義され、一組の頂点により表される。1つのプリミティブに対するそれぞれの頂点には、その頂点を表す一組のデータが関連付けられている。次いで、このデータは、例えば、表示する頂点(頂点が関係する(複数の)プリミティブ)のラスター処理およびレンダリングを行うときに使用される。
【0005】
それぞれの頂点に関連付けられているデータは、典型的には、当業で知られているように、頂点の位置データ(「シーンワールド」内のその(x,y,z)座標)、および頂点の属性(つまり、ディスプレイ上に描画し、および/または表示する仕方)を定義する、「属性」データの集合を含む。この属性データは、例えば、頂点の色および透明度データ(赤色、緑色、青色、およびアルファ、(RGBa)値)、頂点のテクスチャデータ(典型的には、頂点に適用されるテクスチャマップの(s,t)座標データ)、頂点が属すプリミティブの面の向きに関係する情報などを含みうる。
【0006】
それぞれの頂点に対するデータは、典型的には、例えば、所定のグラフィックスシーンまたはフレームを表示するために必要なそれぞれのおよびすべての頂点に対する頂点データを含む頂点データの配列として配列される。頂点配列内に格納されているデータは、さらに、例えばそれぞれの頂点にそれぞれの(複数の)プリミティブを関連付けることによりどの頂点がシーン(フレーム)内のどのプリミティブを表すかを示すこともできる。(それとは別に、頂点とプリミティブとの関連付けは、他の何らかの方法で、例えば、頂点データ配列内のどの頂点がプリミティブに使用されるかをプリミティブ毎に示すプリミティブのリスト(いわゆる「プリミティブリスト」)および/または「(複数の)プリミティブ描画」グラフィックスコマンドのリストを用意することにより行える。)
【0007】
シーンを表示するために、シーンに対するすべてのプリミティブおよびそれらのプリミティブの頂点が生成され、定義された後、これらは、グラフィックス処理システムにより処理されうる。
【0008】
当業で知られているように、この処理は、典型的には、多数のステージを伴う。
【0009】
まず最初に、プリミティブそれ自体(実際には、それらのプリミティブについて生成された頂点データ)に対し多数のオペレーションが実行される。これらのプロセスは、当業で知られているように、プリミティブを変換するステップ(例えば、回転、拡大縮小、変位など)、およびプリミティブを「照らす」ステップ(例えば、表示されるシーン内の光源に応じて外観を調節するため)を含むことができる。
【0010】
これらのプロセスは、定義されている頂点データを使用して実行され、その結果、変換され、照らされるなどしたプリミティブを表す修正された頂点(頂点データ)が得られる。これらのオペレーションが、頂点データに対して実行され、その結果修正された頂点データ(複数の頂点)が得られると、これらは、「頂点シェーディング」プロセスと考えることができ、また一般に「頂点シェーディング」プロセスと称される。
【0011】
これらの頂点シェーディングステップは、当業で知られているように、専用の「固定機能」処理ユニットまたはステージにより、および/または1つまたは複数の頂点シェーディングプログラムを実行するプログラム可能なまたは構成可能なユニット(これらのユニットは、(プログラム可能)「頂点シェーダー」と一般に称される)により実行されうる。
【0012】
上記のプロセスが完了した後、処理された(頂点シェーディングされた)頂点データは、2D表面上に表示されるときのプリミティブを表す。次いで、そのデータをディスプレイ(例えば、画面)に表示するのに適切な形態に変換することが必要である。このプロセスは、基本的に、表示画面上のどのピクセル(画素)がどのプリミティブを表すかを決定するステップ、およびそれぞれのピクセルが(例えば、色などに関して)ディスプレイ上で持つべき外観を決定するステップを伴う。これらのプロセスは、一般に、ラスター処理およびレンダリングとそれぞれ称される。
【0013】
このプロセスは、基本的に、処理するシーンを覆うサンプリング点の配列の中のどのサンプリング点が1つのプリミティブによって覆われるかを決定すること、およびそのサンプリング点でそのプリミティブを表すためにそれぞれのサンプリング点が(例えば、色などに関して)持つべき外観を決定することを伴う。これらのプロセスは、一般に、ラスター処理およびレンダリングとそれぞれ称される。
【0014】
ラスター処理プロセスでは、1つのプリミティブに対し使用すべきサンプル位置(つまり、表示するシーン内でプリミティブを表すために使用するサンプル点の(x,y)位置)を決定する。これは、典型的には、1つのプリミティブの複数の頂点の位置を使用して決定される。
【0015】
次いで、レンダリングプロセスは、サンプル点でプリミティブを表示する(つまり、それぞれのサンプル点に「陰影を付ける」)のに必要な、赤色、緑色、および青色(RGB)値ならびに「アルファ」(透明度)値などのデータを導出する。これは、当業で知られているように、テクスチャの適用、サンプル点データ値のブレンドなどを伴うことがある。
【0016】
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびレンダリングへの両方のプリミティブ変換を指すために使用される。しかし、ここでの「ラスター処理」は、サンプリング点アドレスのみへのプリミティブデータの変換を指すために使用される。)
【0017】
これらのプロセスは、典型的には、サンプリング点を、グラフィックス処理オペレーション(レンダリングなど)の実行対象となる「フラグメント」と通常呼ばれる個別のグラフィック構成要素として「表現する」ことにより実行される。それぞれのそのようなフラグメントは、所定の1つのサンプリング点またはサンプリング点の集合に対応し、実際に、注目するその1つのまたは複数のサンプリング点(フラグメントを使用してレンダリングされる(複数の)サンプリング点)でプリミティブを表現し、それをレンダリングするために使用されうる。
【0018】
したがって、「フラグメント」は、事実上、プリミティブの所定の1つ(または複数)の画面空間サンプル点に補間されるようなプリミティブデータの集合(に関連付けられたもの)である。これは、さらに、注目する(複数の)サンプル点(フラグメント位置)でプリミティブに陰影を付けるのに必要なプリミティブ毎のおよび他の状態データをも含むことができる。それぞれのグラフィックスフラグメントは処理されるときにシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。
【0019】
実際、それぞれのグラフィックス「フラグメント」は、最終的な表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション(レンダリング)対象の「フラグメント」と表示のピクセルとの間に1対1のマッピングがありうる)。しかし、フラグメントと表示ピクセルとの間に1対1対応関係がない場合もありえ、例えば、縮小などの特定の形態の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
【0020】
「直接モード」グラフィックス処理またはレンダリングと通常呼ばれる、グラフィックス処理に関して知られている技術の1つでは、頂点は、生成されるときに次々に処理される(ラスター処理およびレンダリング)。
【0021】
このタイプのシステムでは、頂点は、先着順にグラフィックスシステムに渡され(頂点は通常、グラフィックス処理の効率を改善しようとする何らかの方法でソートされるけれども)、したがってプリミティブは、届いた順にレンダリングされ表示される。
【0022】
また、グラフィックス処理システムでは、いわゆる「タイルベース」または「遅延」レンダリングを使用することも知られている。タイルベースレンダリングでは、シーン全体が直接モードレンダリングで事実上一度に処理されるのとは異なり、表示するシーンは、通常「タイル」と呼ばれる複数のより小さな部分領域に分割される。それぞれのタイル(部分領域)は、別々に(典型的は次々に)レンダリングされ、次いでレンダリングされた部分領域(タイル)は再結合されて、表示できる完全なシーンを構成する。このような構成において、シーンは、典型的には、規則正しいサイズおよび形状の部分領域(タイル)(通常は、例えば、正方形または矩形)に分割されるが、これは、本質的なことではない。
【0023】
タイルベースレンダリングシステムでは、それぞれの部分領域(タイル)について、その部分領域についてレンダリングされる(つまり、部分領域内に現れる)プリミティブのリスト(「タイルリスト」)を用意するのがふつうである。これは、タイル内に実際には存在していないプリミティブを必要でないのにレンダリングしてしまうことを回避するのに役立つ。
【0024】
タイルベースレンダリングシステムでタイルリストを用意するために、プリミティブの初期頂点(頂点データ)は、例えばそれぞれのプリミティブが表示されるシーン内に現れるかどうか、またその現れ方を決定するように最初に頂点シェーディングされる。次いで、どのプリミティブがそれぞれのタイル内に(潜在的に)現れるかを決定するために、処理された(頂点シェーディングされた)頂点が使用される。
【0025】
この方法でそれぞれの部分領域(タイル)についてタイルリストが用意された後、それらのタイルリストは、使用する、例えば、注目するタイルがレンダリングされるときにどのプリミティブが検討される(およびレンダリングされる)必要があるかをシステムが識別できるようにするために、格納される。
【0026】
したがって、タイリングベースシステムは、3つの主要ステップを実行するものとみなせる。最初に、頂点シェーディングが、プリミティブ毎に実行される。次いで、「頂点シェーディングされた」頂点データは、「タイリングされる」(つまり、タイルリストが、処理された(頂点シェーディングされた)頂点データを使用して用意される)。次いで、それぞれのタイルがラスター処理され、次にレンダリングされる。
【0027】
グラフィックス処理システムによってレンダリングされるシーンが、例えば、シーンを描画するために使用されうるプリミティブの数に関して複雑化する傾向が強まっている。表示するシーンを処理するときに使用される頂点シェーディングプログラムも、次第に複雑化してきている。これが、グラフィックス処理システムに対する処理および資源の要件ならびに負担を増大するすべてである。
【発明の概要】
【発明が解決しようとする課題】
【0028】
表示の処理のためグラフィックス処理システムに「提示される」シーンが複雑なシーンであっても、これらの負担および要件を低減するのが望ましく、早期Zテストおよび閉塞カリングを使用してシーンについて最終的にレンダリングされるプリミティブの数を減らす試みなど、そのためのいくつかの技術が存在しているが、出願人は、この点に関してまだ改善の余地があると確信している。
【課題を解決するための手段】
【0029】
本発明の第1の態様によれば、グラフィックス処理システムにおいて表示するシーンを処理する方法が提供され、この方法は、
シーン内のオブジェクトを識別するステップと、
シーン内のオブジェクトを表す体積を生成するステップと、
前記シーン内のオブジェクトの存在を評価するために、オブジェクトについて生成された体積を使用してシーンの一部または全部を処理するステップと、
この評価に基づいて表示するシーンのオブジェクトを処理するかどうかを決定するステップと、を含む。
【0030】
本発明の第2の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示するために処理されるシーン内のオブジェクトを識別する手段と、
シーン内のオブジェクトを表す体積を生成する手段と、
前記シーン内のオブジェクトの存在を評価するために、オブジェクトについて生成された体積を使用してシーンの一部または全部を処理する手段と、
この評価に基づいて表示するシーンのオブジェクトを処理するかどうかを決定する手段と、を備える。
【0031】
本発明では、オブジェクト(複数のプリミティブで構成される、または構成されることになる、または構成されうるオブジェクトなどの、より複雑なオブジェクトなど)を表す体積が生成され、次いで、その生成された代表体積は、シーン内のオブジェクトおよび/または他のオブジェクトまたは複数のオブジェクトの存在に関係する情報を導出するために処理される。言い換えると、「プロキシ」代表体積がそのオブジェクトについて生成され、最初に処理されてから、例えば、注目するオブジェクトを構成するすべての「真の」プリミティブを処理する。
【0032】
これは、例えば、以下でさらに説明されるように、プロキシ代表体積から、オブジェクトが表示されるときにシーン内で実際には見えていない(例えば、実際には表示フレームの外にあるか、または他のオブジェクトによって完全に塞がれているため)と判断されうる場合に、そのオブジェクトに対する複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【0033】
同様に、プロキシ代表体積から、オブジェクトが表示されるときにシーン内で他のオブジェクトを完全に塞ぐと判断されうる場合に、その他のオブジェクトに対する複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)。
【0034】
そのため、本発明では、例えば、表示されるときのシーン内のオブジェクトの効果(例えば、存在(可視性)または存在しないこと)を評価するためにオブジェクトの抽象度の高い、または粗い表現(つまり、そのオブジェクトを表現するものとして生成された体積)を最初に処理することにより、表示されるシーン内でオブジェクトが実際には可視とならない場合にシーン内のオブジェクトの不要な処理を回避するようにすることが可能である。
【0035】
本発明で代表体積(粗い表現)が生成されるオブジェクトは、好適な、所望のそのようなオブジェクトとすることができる。これは、最も有利である本発明の方法によるそのようなオブジェクトの評価なので、好ましくは、より複雑なオブジェクト、例えば、好ましくは、多数の個別のプリミティブで構成されるまたは構成されることになる(レンダリングされるときに)オブジェクトを含む。
【0036】
特に好ましい一実施形態では、境界体積が生成されるオブジェクトは、描画コール(描画コールのプリミティブ)、描画コールの組み合わせ、または描画コールの一部(例えば、描画コールからの特定の「オブジェクト」プリミティブグルーピング)を含む。好ましい一実施形態では、これは、描画コールを含む。
【0037】
他の特に好ましい実施形態では、オブジェクトは、好ましくは、いわゆる「パッチ」または「表面」などの、描画されるより抽象的な、高次のオブジェクト(オブジェクトの記述)を含む。したがって、好ましい一実施形態では、オブジェクトは、描画されるオブジェクトのより高次のパラメータ記述を含む。本発明は、例えば、(一筆で描かれた)曲線、曲面、パッチなどの、制御点(および他の情報)に関して、定義されているオブジェクトに、そのようなオブジェクト(その形態で定義されるか、または記述されているオブジェクト)を表す体積を容易に生成することが可能である(またそうすることが有利である)ので適用されうる、また好ましくは適用される。
【0038】
また、そのようなより高次の「オブジェクト」では、そのようなオブジェクトは、それでも、典型的には最終的に、複数のプリミティブとしてレンダリングされることが可能であり、したがって、それらに関して本発明を使用すると都合がよいことも理解されよう。
【0039】
本発明の方法により処理されるオブジェクトは、例えば、シーンの1つまたは複数の描画コールを識別する、1つまたは複数の描画コールを分析して、オブジェクトおよび/またはプリミティブなどがその1つまたは複数の描画コールでどのようにグループ化されるかを調べる、シーンに対するより高次のオブジェクト記述を識別する、シーン内で複数のプリミティブで構成されるか、または構成されることになるオブジェクトを識別するなどにより、必要に応じて決定され、識別されうる。
【0040】
オブジェクトに対する代表体積を使用して実行されるシーン内のオブジェクトの存在の評価は、好適な、所望の方法で実行されうる。これは、好ましくは、1つの(または複数の)オブジェクトが表示されるとシーン内で可視になるかどうかを評価するステップを含む。
【0041】
これは、以下でさらに説明されるように、体積が生成されるオブジェクトに関して、および/またはシーン内の他の1つの(または複数の)オブジェクトに関して実行されうる。実際には、シーン上のオブジェクトの効果が評価されるべきである。
【0042】
同様に、この評価に基づき表示するシーンのオブジェクトを処理するかどうかの決定は、体積が生成されるオブジェクトに関して、および/またはシーン内の他の1つの(または複数の)オブジェクトに関して実行されうる。
【0043】
特に好ましい一実施形態では、オブジェクトを表すものとして生成される「体積」は、オブジェクトの境界体積(つまり、オブジェクトによって占有される体積を少なくとも表すために、オブジェクトの「境界」となるか、またはオブジェクトを包含する体積)を含む。
【0044】
これは、例えば、本明細書で説明されているように、プロキシ境界体積(境界体積表現)から、オブジェクトが表示されるときにシーン内で実際には見えていない(例えば、実際には表示フレームの外にあるか、または他のオブジェクトによって完全に塞がれているため)と判断されうる場合に、そのオブジェクトに対するその例えば複数の「真の」プリミティブは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【0045】
これらの実施形態では、本発明は、それに応じて、好ましくは、
シーン内のオブジェクト(例えば、複数のプリミティブからなる)を識別するステップまたは手段と、
シーン内のオブジェクトを表す境界体積を生成するステップまたは手段と、
オブジェクトについて生成された境界体積を使用してシーンの一部または全部を処理し、シーン内のオブジェクトの存在を評価する(例えば、そのオブジェクトの存在に関係する情報を導出する)ステップまたは手段と、
この評価(例えば、導出情報)を使用して、表示するオブジェクトを処理するかどうかを決定する(例えば、オブジェクトの複数のプリミティブのうちの1つまたは複数を処理するかどうかを決定する)ステップまたは手段と、を含む。
【0046】
複雑なオブジェクトのより粗い表現として生成される境界体積は、所望の、好適な形態をとりうる。
【0047】
特に好ましい一実施形態では、境界体積は、オブジェクトを囲む境界ボックスの形態をとる。
【0048】
他の実施形態では、境界体積は、例えば、オブジェクトに対する1つの好ましくは保存的な深さ範囲(オブジェクトの持つ広がりに対する深さ値の範囲の指標)(したがって、オブジェクトが占有すると考えられる「深さ」を示す)とともにオブジェクトの二次元マッピング(オブジェクトによって覆われる領域を表す)を含む。この場合、当業者であれば理解するように、2Dマッピングおよび深さ範囲は、効果的に、オブジェクトに対する境界体積を一緒に定義する。
【0049】
オブジェクトのより粗い表現を構成する境界体積は、注目するオブジェクトが識別された後、所望の、好適な方法で生成されうる。
【0050】
したがって、境界ボックス表現の場合、複雑なオブジェクトを囲む(および包含する)境界ボックスを導出する好適な技術を使用することで、複雑なオブジェクトのより粗い表現を形成する境界ボックスを生成することができる。
【0051】
境界体積は、必要に応じて、オブジェクトが占有する体積の精度の高いまたは低い表現((複雑な)オブジェクトの真の体積(形状)に近いまたは近くない「適合」)とすることができる。
【0052】
また、例えば、オブジェクトに対する境界体積全体を一緒になって構成する複数の「代表」体積の集合を生成し、次いで処理することも可能である(好ましい一実施形態においては、これが行われる)。この場合、本発明の「境界体積」は、複数のより小さな「体積」の集合で構成される。これにより、例えば、必要ならば、オブジェクトによって占有される体積のより正確な表現が生成されるようにできる。これは、単一の「大域的」境界体積を使用したのでは正確に表現することは簡単にはできない形状を有するオブジェクトの場合に特に望ましいものと言える。(それとは別に、このような「オブジェクト」は、複数の個別のより小さなオブジェクトとして処理することが可能であり、次いでそれぞれは本発明の方法により処理される。)
【0053】
(当業者であれば理解するように、また上述のように、本発明のこれらの実施形態で使用され、テストされる境界体積は、オブジェクトの「境界」となるか、またはオブジェクトを包含し、これにより、オブジェクトによって占有される体積を少なくとも表す。したがって、境界体積が、複数のより小さな体積からなる場合(したがって、オブジェクトの「境界」には個別に完全にはなりえない)、この構成では、より小さな体積を組み合わせたものは、オブジェクトの完全な「境界」となる。)
【0054】
オブジェクトのより粗い表現を含む、境界体積、例えば、境界ボックスは、複雑なオブジェクトを構成するプリミティブの変換頂点データまたは未変換頂点データから生成されうる。
【0055】
したがって、好ましい一実施形態では、複雑なオブジェクトを表すべき境界体積表現、例えば、好ましくは、境界ボックスは、複雑なオブジェクトを構成するプリミティブの未変換頂点データから生成され、次いで、複雑なオブジェクトの境界体積表現は、処理のため画面空間に変換される。
【0056】
他の好ましい実施形態では、複雑なオブジェクトのプリミティブを構成する頂点は、最初に、画面空間に変換され、次いで、複雑なオブジェクトを表すための境界ボックスなどの境界体積表現が、変換頂点(頂点データ)を使用して生成される。この構成では、複雑なオブジェクトの変換された「真」の頂点データは、必要ならば、後から使用できるように、キャッシュされることが可能であり、また好ましい一実施形態ではキャッシュされる。
【0057】
初期変換ステップは、例えば、必要なソフトウェアプログラムが実装されている、例えばCPUコアなどの、グラフィックス処理システム内に備えられている専用ユニットで実行されうる。しかし、これは、好ましくは、例えば好適な事前生成された頂点シェーダープログラム、または注目するシーンに対する頂点シェーディングに使用される(複数の)アプリケーション指定頂点シェーダープログラムから(例えば、コンパイラステージにおいて)抽出された頂点シェーダープログラムを使用して、グラフィックス処理システムの頂点シェーダーユニットで実行される。後者の場合、システムコンパイラは、例えば、実際の完全な頂点シェーダープログラムから注目する(それぞれの)頂点に対する頂点シェーダープログラムの「特別」バージョンを生成することが可能である。頂点シェーダープログラムのこの特別な縮小バージョンは、好ましくは、例えば、頂点シェーディングの後に頂点の位置を推定するのに必要なそれぞれの頂点が持つ(x,y,z)座標の変換命令のみを含む。コンパイラは、例えば、必要ならば、アプリケーションによって提供されるすべての頂点シェーダープログラムに対する追加分析およびデッドコード消去ステップを備え、これを容易にすることができる。
【0058】
(複雑な)オブジェクトのより粗い表現である生成された境界体積を使用して実行される処理は、好ましくはシーン内のオブジェクトの存在を評価する(例えば、その存在に関係する情報を導出する)ためのものであり、所望の、好適なそのような処理であってよい。これは、好ましくは、複雑なオブジェクトが表示されるときにシーン内で可視になるかまたは可視にできるかどうかを評価する。
【0059】
生成された境界体積を使用して実行される処理は、オブジェクトを表す境界体積が(表示されるときに)シーンの可視領域を完全に外れるかどうかを評価するステップを含むことが可能であり、好ましい一実施形態では含む(この場合、複雑なオブジェクトはそのシーンについてまったく処理される必要がないと結論されうる)。これは、例えば、好ましくは、オブジェクトを表す境界体積が画面の縁から完全に外れているかどうかを評価することにより、および/または、タイリングシステムでは、オブジェクトを表す境界体積がシーンを表示するために使用されるタイル内にあるかどうかを評価することにより実行されうる。
【0060】
特に好ましい一実施形態では、シーン内のオブジェクトの存在に関係する情報を導出するために(複雑な)オブジェクトのより粗い表現である生成された境界体積を使用して実行される処理は、オブジェクトを表す境界体積がシーン内の他のオブジェクトによって完全におよび/または部分的に塞がれるかどうかを評価するステップを含む。このことから、ここでもまた、(複雑な)オブジェクトが実際に、表示されるときにシーン内で可視になるかどうか(したがって、表示するために完全な処理を必要とするかどうか)に関する情報が得られる。
【0061】
オブジェクトを表す境界体積が塞がれるか、または実行されえないかどうかのそのような評価は、必要に応じて、ただし好ましくは、Z(深さ)テストおよび/または他の形態のグラフィックス閉塞テストを、例えば、好ましくは、当業で知られているように、実行するステップを含む。
【0062】
オブジェクトを表す境界体積のこのような処理は、必要に応じて実行されることが可能であるが、特に好ましい一実施形態では、表示する注目するシーンを処理するときに注目する(複雑な)オブジェクトについて定義されている「真の」プリミティブの代わりに境界体積を処理するステップを含む。言い換えると、(複雑な)オブジェクトを表す生成された境界体積は、注目する(複雑な)オブジェクトを構成する個々の「真の」プリミティブを処理する代わりに、表示するシーンの他のオブジェクトおよび/またはプリミティブとともに処理される。
【0063】
境界体積の処理は、例えば、境界体積を表す適切な1つまたは複数のプリミティブを生成し、次いで、シーンの他のプリミティブと同じ方法で境界体積を表す(複数の)プリミティブ処理することにより、実装されることが可能である、つまり、境界体積を表す生成されたプリミティブは、好ましくは、シーンについて定義された他の(好ましくはすべての)プリミティブとともに処理される(したがって、適宜、複数のタイルにビニングされ(タイルベースのレンダリングシステムにおいて)、ラスター処理されてレンダリングされ、といったことが行われる)。
【0064】
(ここでは、境界体積を処理することができるように1つまたは複層のプリミティブが生成される場合であっても、生成のために、(複雑な)オブジェクトが通常の方法で単純に処理される場合よりも少ないプリミティブを処理する必要があることは理解されるであろう。)
【0065】
他の構成も、もちろん、可能である。
【0066】
それが他のオブジェクトおよび/またはプリミティブであるかのように複雑なオブジェクトを表す生成された境界体積(および/または境界体積を表す(複数の)プリミティブ)を完全に処理することが可能であるが、出願人は、(複雑な)オブジェクトを表す境界体積に対する、例えば色情報の導出は、必要というわけではないことを認識している((複雑な)オブジェクトのより粗い表現である境界体積は、表示されるシーンに実際に寄与することが意図されていないからである)。
【0067】
したがって、特に好ましい一実施形態では、(複雑な)オブジェクトを表す生成された境界体積に関して実行される処理は、表示されるときにシーン内の生成された境界体積の存在(または存在しないこと)を判定するのに必要な処理のみを実行するステップを含む。
【0068】
このような処理は、好ましくは、生成された境界体積(または境界体積の導出元の頂点)の、表示されるときのシーン内の(複数の)適切な位置への必要な変換を含む(その後、これにより、表示されるときのシーン内の複雑なオブジェクトの存在を評価することができるからである)。
【0069】
同様に、深さテストベースの閉塞決定の場合、(複雑な)オブジェクトを表す生成された境界体積の処理は、好ましくは、境界体積に関するZ-only(深さのみ)レンダリングパス、つまり、境界体積はレンダリングされるが、境界体積について有効化されているレンダリング状態のみがZの読み込みおよび書き込みおよびZテストであるレンダリングパスを実行するステップを含む。
【0070】
好ましくは、(複雑な)オブジェクトを表す境界体積(境界体積を表すプリミティブ)は、深さ(または他の)テストを実行できるように処理されるときに適切な方法で(および好ましくは、深さ(または他の)テストに関する限り注目するグラフィックス処理システムに対する通常の方法で)レンダリングされる。
【0071】
複雑なオブジェクトを表す生成された境界体積に関して実行される処理を制限するステップは、さらに、処理をより効率的なものにでき、また消費する資源が少なくて済むという利点を有し、したがって、例えば、制約のきついシステムで実行する許容性が高まる。例えば、Z-only処理の場合、Zバッファに書き込みが行われうるが、他のメモリアクセスは、減少するか、または最小限に抑えられ、フラグメントプロセッサはアイドル状態のままにされうる。
【0072】
グラフィックス処理システムは、この方法により(複雑な)オブジェクトを表す生成された境界体積を処理するように好適な、所望の方法で構成されうる。好ましくは、これは、この目的のために適したレンダリング状態(Z-onlyレンダリング状態など)に設定される。(当業で知られているように、グラフィックスプロセッサが設定されるレンダリング状態は、プロセッサが、受け取ったグラフィックスプリミティブに対して実行する処理を決定し、したがって、実行される処理を制御するために使用できる。)
【0073】
この目的のための(レンダリング)「状態」は、処理のため(複雑な)オブジェクトを表す境界体積(例えば、(複数の)プリミティブ)を送る前に、例えば、当業で知られているように、プロセッサをフラッシュし、その状態を新しい(例えば、Z-only)状態に大域的に(つまり、すべての処理ユニットについて)設定することにより設定されうる。
【0074】
しかし、好ましい一実施形態では、(複雑な)オブジェクトを表す境界体積および/またはその対応する(複数の)プリミティブは、これによりそれ自体をそのような特定の処理を受けるものとして識別するため何らかの方法でタグ付けまたはマークされ、グラフィックス処理システムは、それに応じて(および適宜)そのようなタグ付けされた「オブジェクト」(およびプリミティブ)を処理するように構成される。
【0075】
例えば、出願人の以前の英国特許出願第2420261号で説明されている技術などにおいて、グラフィックス処理システムが、例えばプリミティブおよび/またはフラグメントに関連付けられうる多数の定義済みレンダリング状態を有する場合、好ましくは、利用可能な定義済みレンダリング状態(インデックス「0」(または他のインデックス)のレンダリング状態など)の1つは、(複雑な)オブジェクトを表す境界体積を処理するために使用されるレンダリング状態(例えば、好ましくは、Z-onlyレンダリング状態)に設定される。これにより、次いで、例えば、そのような境界体積(および/またはプリミティブ、フラグメントなど)に、これらが処理パスに送られるときに、適切なレンダリング状態インデックスなどをタグとして付け、例えば処理パイプライン全体の状態を大域的にフラッシュして変更しなくても、それに応じた処理が行われるようにできる。
【0076】
これは、同様に、グラフィックス処理システムがフラグメントシェーディングプログラムをサポートしている場合に好ましいが、それは、(複雑な)オブジェクト(例えば、Z-only処理(レンダリング状態)を受ける)を表す境界体積の処理用に予約され、使用される定義済みフラグメントプログラムアドレスがあるからである。このアドレスは、例えば、生成された境界体積を処理するための、例えばフラグメントシェーダープログラム全体のより限定されたバージョン(のコンパイルおよび実行)のトリガーとなる可能性がある。次いで、これにより、ここでもまた、そのような境界体積(ならびにプリミティブおよびフラグメント)は、処理が実行される際にこの定義済みフラグメントプログラムアドレスをタグ付けされ、それに応じて、例えば大域的(例えば、Z-only)状態をグラフィックスプロセッサに適用する必要がなくなるようにできる。
【0077】
シーン内の(複雑な)オブジェクトを表す境界体積の存在(例えば、可視性)または存在しないことが評価された後、その情報は、オブジェクト(例えば、(複雑な)オブジェクトを構成する「真の」プリミティブ)を処理するかどうかを決定するために使用される。
【0078】
これは、所望の、好適な方法で実行されうるが、ただし好ましい一実施形態では、オブジェクトを表す境界体積の処理から、オブジェクトが表示されるときにシーン内にまったく存在(例えば、好ましくは可視)しないこと判定された場合(例えば、生成された境界体積が可視フレームの縁から完全に外れている、表示されるときにシーンに使用されるタイル内にない、および/またはシーン内の他のオブジェクトにより完全に塞がれているため)、生成された境界体積に対応する(複雑な)オブジェクトは、好ましく単純にシーンから除去、例えばカリングされ、これにより、シーンに関してさらに処理を受けることがない。
【0079】
その一方で、オブジェクトを表す境界体積の処理で、オブジェクトが表示されるときにシーン内に(少なくとも一部は)存在する(例えば、可視)と判定した場合、オブジェクトは表示するために「適切に」処理することを必要とする。(これは、オブジェクトを表す境界体積の処理がそれ自体オブジェクトを表示するために使用されえないため必要である)。
【0080】
これは、好ましくは、表示する複雑なオブジェクトに対し定義されているか、または定義されることになる1つまたは複数の(例えば、すべての)個別の実際の(真の)プリミティブをグラフィックス処理システムに処理させることにより達成される。言い換えると、生成された境界体積(オブジェクトのより粗い表現)が表す元のデータ(例えば、プリミティブ)が処理されなければならないということである。
【0081】
この場合、オブジェクトに対する「真の」プリミティブは、好ましくは、表示するため通常の方法で処理され、したがって、必要に応じて、適宜、必要なタイリング、ラスター処理、レンダリングなどのオペレーションを実行されるべきである。
【0082】
複雑なオブジェクトに対する「真の」プリミティブのこの処理は、上述のように、キャッシュされた変換頂点データなどの、必要ならばこれらのプリミティブに関するすでに導出され、格納されているデータを、必要ならば使用することができる。
【0083】
これらの状況におけるオブジェクトの「真の」の処理(オブジェクトに対する「真の」プリミティブの処理)は、(複雑な)オブジェクトが表示されるために(例えば、見えるようになるために)処理されなければならないと決定された後に必要に応じてトリガーされうる。しかし、好ましい一実施形態では、(複雑な)オブジェクトの境界体積表現は、(複雑な)オブジェクトの実際のプリミティブの処理をトリガーする、および/または注目する(複雑な)オブジェクトに対し処理される必要のある実際のプリミティブを識別するために使用できる情報を関連付けられている。
【0084】
この実施形態は、もっぱら単一境界体積(例えば、境界ボックス)、または単一境界体積全体を一緒に構成する一組の体積をテストするものとして説明されているけれども、描画される複雑なオブジェクトのより粗い表現として(好ましい一実施形態ではこれは実行されるもの)、例えば、必要ならば所定のより複雑なオブジェクトを個別に表す境界体積を構成する2つまたはそれ以上の体積をテストすることが可能である。例えば、複雑なオブジェクトを別々に表す複数の体積をテストすることにより、シーン内の複雑なオブジェクトの異なる部分の存在および可視性を評価することも可能であろう。
【0085】
したがって、特に好ましい一実施形態では、2つまたはそれ以上の代表体積(境界体積を一緒に構成する)が、(複雑な)オブジェクトを表すために生成され、別々にテストされる。この場合、それぞれのそのような生成された体積は、好ましくは、オブジェクトを構成する複数の実際のプリミティブを表す。これらの構成で生成された代表体積は、好ましくは、それぞれ、注目するオブジェクトの異なる部分を表し、好ましくはオブジェクトの異なる(画面)領域を表すように生成される。
【0086】
好ましい一実施形態では、複雑なオブジェクトを表す2つまたはそれ以上の代表体積が、最初から生成される。
【0087】
しかし、特に好ましい一実施形態では、システムは、最初に、複雑なオブジェクト全体を表すために単一の境界体積を生成し、次いで、オブジェクト、次いでオブジェクトの部分がシーン内に存在し、表示されるときにシーンについて処理されなければならないと決定された場合に、また決定されるときに、それぞれが(複雑な)オブジェクトの漸次小さくなる部分を表すさらに多くの代表体積を漸次生成する。
【0088】
この構成では、実際に、(複雑な)オブジェクトを、それぞれが生成された代表体積(注目するオブジェクトの一部の「境界」となる)によって表されるより小さな部分に漸次分割し、これにより、シーン内のオブジェクトのそれぞれのそのような部分の存在または存在しないことが、オブジェクトの全部または一部がシーン内に表示されるときに存在しない場合に適切な「代表」レベル(分解能)で評価され除去されうる。
【0089】
これらの構成では、好ましくは、(複雑な)オブジェクトを表すより小さな体積を漸次生成する反復手順が、使用される(オブジェクトの少なくとも一部がそれぞれのステージのシーン内に「存在」し続ける限りにおいて)。
【0090】
したがって、好ましくは、(複雑な)オブジェクトは、最初に、それを表すために生成される単一境界体積によって表され、その生成された境界体積の存在が評価される。シーン内に存在しない場合、(複雑な)オブジェクトは、このステージで除去できるが、その境界体積が存在する場合、好ましくはそれぞれオブジェクトの異なる部分(および元の境界体積全体の一部)を表す2つまたはそれ以上の(および好ましく2または4つの)体積が生成され、その存在が評価される。
【0091】
このプロセスは、必要に応じて、また必要な場合に続けることができ、これにより、例えば、その例えば2つの「第2のレベル」の生成された体積がシーン内に、表示されるときに存在すると判明した場合に、2つ(またはそれ以上、などの)小さな体積は、生成された「第2のレベル」の体積が対応し、評価し、次いで、除去した(複雑な)オブジェクトの部分を表すものとして生成されるか、または(複雑な)オブジェクトのその「部分」に対する対応する真のプリミティブは、表示のため処理されるか、または(複雑な)オブジェクトのその「部分」は、さらに細分され、といったことが行われる。
【0092】
したがって、本発明の特に好ましい一実施形態では、オブジェクトを表す最初に生成された境界体積がシーン内に、表示されるときに存在すると判定された場合に、表示のために表されているオブジェクトを構成する「真の」プリミティブをそのときに直接処理するのではなく、代わりに、それぞれオブジェクトの異なる部分を表す2つまたはそれ以上の(および好ましくは、2または4つの)小さな代表体積が、本発明の方法で生成され、処理される。
【0093】
次いで、好ましい一実施形態では、表示されるときにシーン内に存在することが判明しているそれらのより小さな体積のどれかについて、それぞれ(複雑な)オブジェクトのその部分に対する「真の」プリミティブが、表示するため処理されるか、または(複雑な)オブジェクトのその(より小さな)部分の異なる部分を表す2つまたはそれ以上の(および好ましく2または4つの)より小さな体積が、本発明の方法で生成され、処理される。
【0094】
次いで、このプロセスは、好ましい一実施形態において、必要ならば、(複雑な)オブジェクトのこれらのより小さな「部分」に関して繰り返すことができ、これにより、ここでもまた、表示されるときにシーン内に存在することが判明しているこれらのより小さな代表体積のどれかについて、(複雑な)オブジェクトのその部分に対する「真の」プリミティブが表示のため処理されるか、またはそれぞれが(複雑な)オブジェクトのその(より小さな)部分の異なる部分を表す2つまたはそれ以上の(および好ましくは2または4つの)より小さな体積が、本発明の方法で生成され、処理され、というように続く。
【0095】
好ましくは、この細分は、いくつかの特定の、好ましくは選択されるか、または選択可能な、および好ましくは所定の、細分限界に到達するまで続けられる。この限界は、例えば、実行される細分の数に関する、および/またはオブジェクトが分割される異なる部分(領域)の(および/またはオブジェクトの一部を表すために生成された体積の)サイズに関するものとすることが可能である。
【0096】
当業者であれば理解するように、使用されるそのような細分のレベルおよび限界は、例えば、さらなる細分に伴う処理の増大と複雑なオブジェクトの一部を処理しないようにすることによる潜在的節約との間のトレードオフの関係に依存しうる。したがって、例えば、特に複雑なオブジェクト(例えば、多数のプリミティブで構成されるオブジェクト)の場合には細分レベルを高めるとよく、またその逆も言える。
【0097】
これらの構成では、オブジェクトまたはオブジェクトの一部の細分のそれぞれのレベルで(複雑な)オブジェクトを表すために使用される生成された体積は、好ましくは、すべて同じまたは類似のサイズであり、最も好ましくは同じまたは類似の形状である。好ましい一実施形態では、これらは、それぞれ直平行六面体であり、好ましくは立方体である。
【0098】
好ましい一実施形態において、この方法による(複雑な)オブジェクトの細分では、オブジェクトは、単一の生成された境界体積(オブジェクトのすべてを覆う)によって、次いで、それぞれオブジェクトの異なる部分を表す4つの(より小さな)生成された体積(つまり、オブジェクトが実際に4つの領域に分割されるような)によって表すことができる。
【0099】
同様に、存在することが判明しているより小さな代表体積(オブジェクトの一部)は、好ましくはここでもまた4つのより小さな部分に分割される(これにより、初期細分からの4つすべての代表体積が存在していると判明した場合、オブジェクトは、次いで、実際に、16個の領域に分割され、これらはそれぞれ異なる生成された代表体積により表される)。
【0100】
ここでもまた、存在することが判明したこれらのそのようなより小さな代表体積のどれかが、細分すべきである場合に、好ましくは4つのより小さな部分に細分され、それぞれ生成された体積によって表され(これにより、16個すべてのより小さな体積がまだ存在している場合に、オブジェクトは64個の領域に分割される)、というように必要に応じて続けられる。
【0101】
特に好ましい他の実施形態では、オブジェクトを表すために生成された体積は、オブジェクトの有界体積、つまり、(オブジェクトによって占有される体積以下の部分を占有する)オブジェクト内に確実に封じ込められる(オブジェクトが境界となる)体積を含む。
【0102】
出願人は、さらに、例えば、本発明の方法により1つのオブジェクトがシーン内の他のオブジェクトを塞ぐ可能性があるかどうかをテストする(それらのオブジェクトがそれに応じて次に破棄されうる)ことも等しく可能であることを認識している。このような構成では、複雑なオブジェクトのより粗い表現は、ここでもまた、閉塞テスト(occlusion)
プロセスで、ただしこの場合、シーン内の他のオブジェクトが注目する(複雑な)オブジェクトによって塞がれているものとして破棄されうるかどうかを判定するために、生成され、使用される。
【0103】
出願人は、さらに、この場合、複雑なオブジェクトを包含する境界体積を生成することは適切でないことを理解している(「境界」体積は、複雑なオブジェクトによって占有されるシーン内の体積(空間)を正確に表さないからである)。したがって、この処理については、代わりに、「有界」体積、つまり、複雑なオブジェクト内に確実に封じ込められている(つまり、複雑なオブジェクトによって占有される体積以下を占有する)体積が生成される。
【0104】
したがって、本発明の特に好ましい一実施形態では、有界体積は、シーン内のオブジェクトを表すために生成され、次いで、その生成された有界体積は、シーン内のオブジェクトの存在を評価する(例えば、存在に関係する情報を導出する)ために処理される。言い換えると、「プロキシ」有界体積(有界体積表現)がそのオブジェクトについて生成され、最初に処理されてから、例えば、注目するオブジェクトを構成するすべての「真の」プリミティブを処理する。
【0105】
これは、例えば、以下でさらに説明されるように、そのオブジェクトに対するプロキシ有界体積(有界体積表現)から、オブジェクトが表示されるときにシーン内の他のオブジェクトを塞ぐと判断されうる場合に、それらの他のオブジェクトは、まったく処理される必要はなく、それにより、表示するシーンを処理するときのその処理の負担および要件が回避される(したがって、節電および帯域幅の低減につながる)という利点を有する。
【0106】
したがって、特に好ましい一実施形態では、本発明は、
シーン内のオブジェクト(例えば、複数のプリミティブからなる)を識別するステップまたは手段と、
シーン内のオブジェクトを表す有界体積を生成するステップまたは手段と、
オブジェクトについて生成された有界体積を使用してシーンの一部または全部を処理し、シーン内の他の1つまたは複数のオブジェクトの存在を評価する(例えば、そのオブジェクトの存在に関係する情報を導出する)ステップまたは手段と、
導出された情報を使用して、表示するシーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定するステップまたは手段を含む。
【0107】
当業者であれば理解するように、本発明のこれらの実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。
【0108】
したがって、例えば、「境界体積」の使用に関して本明細書で説明されているオプションの、好ましい技術のどれか、またはすべては、適宜1つのオブジェクトに対して「有界体積」が生成される構成に等しく適用されうる。
【0109】
したがって、有界体積は、好ましくは、オブジェクトによって(および/またはオブジェクトの1つまたは複数の部分によって)確実に包含される適切なx、y、およびz値範囲を考慮することにより生成される。
【0110】
同様に、(複雑な)オブジェクトに対する適切な有界体積が導出された後、再び、その有界体積を使用してオブジェクトを表す、好ましくは、それに応じてオブジェクトがシーン内に現れる他のオブジェクト、プリミティブなどを塞ぐかどうかを判定してシーンが処理されうる(次いで破棄されうる(表示のために処理されない))。
【0111】
特に好ましい一実施形態では、オブジェクトのより粗い表現である生成された有界体積を使用して実行される処理は、オブジェクトを表す有界体積がシーン内の他のオブジェクトを完全におよび/または部分的に塞ぐかどうかを評価するステップを含む。このことから、他の1つまたは複数のオブジェクトが実際に、表示されるときにシーン内で可視になるかどうか(したがって、表示するために完全な処理を必要とするかどうか)に関する情報が得られる。
【0112】
オブジェクトを表す有界体積が他のオブジェクトを塞ぐかどうか、または実行されえないかどうかのそのような評価は、必要に応じて、ただしここでもまた好ましくは、Z(深さ)テストおよび/または他の形態のグラフィックス閉塞テストを、例えば、好ましくは、当業で知られているように、実行するステップを含む。
【0113】
したがって、有界体積に関する処理は、同様に好ましくは、Z-onlyレンダリングパスとして実行され、好ましくは、上述の「境界体積」処理に対応する方法で使用され、これにより(複雑な)オブジェクトによって塞がれるオブジェクトを破棄することができる。
【0114】
ここで、オブジェクトの有界体積の生成およびテストは、有界体積が、例えば、それが表すオブジェクトによって実際には占有されないシーンの体積または面積を包含することがないように、適切に保存的な形で実行されるべきであることは理解されるであろう。
【0115】
有界体積は、必要に応じて、オブジェクト、および/またはオブジェクトの1つまたは複数の部分の高いまたは低い精度の表現となるように導出されうる。
【0116】
また、例えば、必要ならばオブジェクトによって占有される体積を例えばより正確に表すように複数の有界体積の集合を生成し、次いで処理することも可能である(好ましい一実施形態においては、これが行われる)。これは、単一の有界体積を使用したのでは十分正確に表現することは簡単にはできない形状を有するオブジェクトの場合に特に望ましいものと言える。
【0117】
特に好ましい一実施形態では、境界体積および有界体積両方が、所定のオブジェクトについて生成され、次いで、上述の方法で処理される。最も好ましくは、これは、シーン内の複数の(複雑な)オブジェクトに対し実行されるが、それというのも、それにより、次いで、例えば、それらのオブジェクトの1つまたは複数をシーンの処理から外すことができるからである。
【0118】
上記のことから、本発明のすべての構成は、最初に、複雑なオブジェクトのより抽象的な、またはより粗い表現を処理して(つまり、そのオブジェクトを表すものとして生成された境界および/または有界体積)、表示されるときのシーン内の複雑なオブジェクトの存在(可視性)または存在しないことおよび/または効果を評価することを伴うことは理解されるであろう。
【0119】
したがって、本発明の第3の態様によれば、グラフィックス処理システムにおいて表示するシーンを処理する方法が提供され、この方法は、
グラフィックス処理システムが、
シーンのオブジェクトのより粗い表現を生成し、
表示されるシーン内の1つまたは複数のオブジェクトの可視性を評価するために、オブジェクトの生成されたより粗い表現を処理するステップを含む。
【0120】
本発明の第4の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示されるシーンのオブジェクトのより粗い表現を生成する手段と、
表示されるシーン内の1つまたは複数のオブジェクトの可視性を評価するために、オブジェクトの生成されたより粗い表現を処理する手段とを備える。
【0121】
当業者であれば理解するように、本発明のこれらの態様は、適宜、本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、より粗い表現が生成されるオブジェクトは、好ましくは、多くの個別プリミティブで構成される1つのオブジェクトなどのより複雑なオブジェクトを含む。
【0122】
同様に、本発明のこれらの態様は、好ましくは、シーン内の複数のプリミティブからなる1つのオブジェクトを識別するステップまたは手段、および次いでシーン内のオブジェクトを表すためのその識別されたオブジェクトのより粗い表現を生成するステップまたは手段を含む。
【0123】
同様に、本発明のこれらの態様の好ましい一実施形態では、オブジェクトのより粗い表現は、シーン内のオブジェクトを表すための境界体積を含む。この場合、表示されるシーン内の1つまたは複数のオブジェクトの可視性の評価は、好ましくは次いで、シーン内のオブジェクトの存在に関係する情報を導出するためにオブジェクトの生成された境界体積を使用してシーンの一部または全部を処理するステップまたは手段を含む。
【0124】
同様に、好ましい他の実施形態では、生成されるオブジェクトのより粗い表現は、シーン内のオブジェクトを表すための有界体積を含む。この場合、オブジェクトの生成されたより粗い表現の処理は、好ましくは、シーン内の1つまたは複数のオブジェクトの存在に関係する情報を導出するためにオブジェクトの生成された有界体積を使用してシーンの一部または全部を処理するステップを含む。
【0125】
特に好ましい一実施形態では、境界体積および有界体積は両方とも、上述のように、オブジェクトに対し生成される。
【0126】
同様に、本発明のこれらの態様の方法およびシステムは、好ましくは、表示されるシーン内の1つまたは複数のオブジェクトの可視性の評価を使用して、注目するオブジェクトを処理するかどうか、および/または表示するシーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定するステップまたは手段を含む。
【0127】
また、本明細書で説明されている本発明の態様および実施形態のすべてにおいて、本発明の方法により代表的なより粗い表現、1つまたは複数の境界体積、および/または1つまたは複数の有界体積が生成され、評価される所定のシーン内に複数のオブジェクトがありうることにも留意されたい。実際、好ましい一実施形態においては、そうである。この場合、それぞれのそのようなオブジェクトは、上述の方法で取り扱われ、処理されることが可能であり、そうすべきである。
【0128】
上記から理解されるように、本発明の構成では、最初に、より限定された方法で、より具体的にはその「位置」のみに関して、(複雑な)オブジェクトの、または(複雑な)オブジェクトを表す頂点を処理することができる。
【0129】
出願人は、限られたデータの集合のみを使用する本発明のようにそのような「予めの」処理を実行するステップは、それ自体新しく、有利な方法でありえると確信しているが、それというのも、例えば、組み込みシステムおよび携帯デバイスなど、処理能力およびメモリ資源の制限が大きい状況において、「予めの」処理を、例えば実行しやすくすることが可能であり、実際、これにより、他の方法では(例えば、処理の負担が通常、大きすぎると考えられるため)そうするのが望ましくない可能性のある状況においてそのような処理を実行させることが可能であるからである。
【0130】
したがって、本発明の第5の態様によれば、グラフィックス処理システムを操作する方法が提供され、この方法は、
グラフィックス処理システムが、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点の位置に関係するデータのみを処理するステップと、
表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために処理の結果を使用するステップを含む。
【0131】
本発明の第6の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点の位置に関係するデータのみを処理する手段と、
表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために処理の結果を使用する手段と、を備える。
【0132】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、1つまたは複数の頂点に対する、またはそれらの頂点に関係する位置データに対し、またはその位置データを使用して実行される処理は、好ましくは、位置データを変換するステップ(つまり、位置データに対応して表示されるときにシーンに対する(内の)位置データを導出するステップ)を含む。
【0133】
本発明のこれらの態様において、またこの実施形態において、予め処理される頂点の集合の中の複数の頂点の位置に関係するデータは、好適な、所望のそのようなデータ、つまり、1つまたは複数の頂点の位置に影響を及ぼすか、または定義するデータとすることができる。
【0134】
したがって、注目する頂点に対する位置データ(x、y、zデータ)を、例えば含むことが可能であり、好ましくは含む。しかし、これは、1つの頂点に対する色データなどの頂点の位置に影響を及ぼす可能性のある他のデータとすることも可能である(例えば、頂点の色がその位置を定義するか、または影響を及ぼす場合)。
【0135】
位置関係データは、さらに、または代わりに、本発明の場合のような頂点の位置データ、特に、オブジェクトの「真の」頂点の(複数の)位置を表す境界ボックスなどの境界体積の位置データから導出されるか、または位置データに関係するデータとすることが可能である。
【0136】
好ましい一実施形態では、本発明のこれらの態様および実施形態において処理される位置データは、上述のように、表示するために処理される(複雑な)オブジェクトの頂点の集合に関係する。これは、また、あるいは代わりに、本発明のこれらの態様において、例えば、必要に応じて、表示するシーン全体を処理するのに必要な頂点を含むことができる。
【0137】
いくつかの場合において、例えば、頂点の集合の中の1つの頂点が、それに対し定義された位置関係データのみを持つ場合(例えば、その属性が他の何らかの形で定義済みデフォルト値に設定されるので)、予め処理される位置関係データは、1つの頂点について定義された(また格納された)すべてのデータを含む。
【0138】
しかし、より典型的には、位置関係データは頂点に対し定義されたデータの部分集合を含むが、それは、例えば、頂点がそれに対し定義されている位置定義する、または影響を及ぼすデータ、および頂点の位置に関係または影響を及ぼさない色またはテクスチャなどの属性などの他のデータの両方を有するからである。
【0139】
したがって、特に好ましい一実施形態では、予め処理される位置関係データは、注目する1つの、またはそれぞれの頂点について定義された、または関係するデータの部分集合のみを含む。同様に、したがって本発明は、表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されている、または関係するデータの部分集合のみを処理する手段またはステップを含む。
【0140】
実際、出願人は、表示する頂点を処理する前に予め表示するために処理される頂点について定義されているデータの部分集合のみを処理するという考え方は、それ自体新しく、有利でありえると確信しているが、それは、例えば、この方法で処理される位置関係データのみでない場合であっても、同様に処理および資源の節約を容易に行えるようにすることが可能であるからである。
【0141】
したがって、本発明の第7の態様によれば、グラフィックス処理システムを操作する方法が提供され、この方法は、
グラフィックス処理システムが、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されているデータの部分集合のみを処理するステップを含む。
【0142】
本発明の第8の態様によれば、グラフィックス処理システムが実現され、このシステムは、
表示する頂点の集合を処理する前に予め表示するために処理される頂点の集合の中の1つまたは複数の頂点について定義されているデータの部分集合のみを処理する手段を備える。
【0143】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、グラフィックス処理システムによって処理されるデータの部分集合は、好ましくは、頂点の集合の中の1つまたは複数の頂点、好ましくはそれぞれの頂点について定義されているか、または関係する位置データ(例えば、(x,y,z)座標)を含む(好ましくはその位置データのみを含む)。同様に、処理の結果は、好ましくは、表示する頂点の集合を処理するときに、および/または表示するために処理される頂点の集合を修正するために使用される。
【0144】
本発明のこれらの態様および実施形態で位置データ(および/または選択された頂点データ部分集合)に対し、またはそれを使用して「予め」実行される1つまたは複数の処理オペレーションは、必要に応じて選択することができ、また好適な、または所望のそのようなオペレーションとすることができる。
【0145】
特に好ましい一実施形態では、この処理は、頂点の集合のその後の処理に使用されるデータ構造体を用意するステップを含み、および/またはその後の処理オペレーション(例えば、好ましくは頂点データの)でグラフィックスシステムによって使用される情報を推論し、および/または提供するために頂点データを分析するステップを含む。
【0146】
本発明の方法で処理されるプリミティブは、好適な、所望のそのようなプリミティブとしてよい。これらは、好ましくは、当業で知られているように、単純な多角形の形をとる。好ましい一実施形態では、1つのオブジェクトを構成する少なくとも「真の」プリミティブは三角形である。
【0147】
本発明のまたは本発明とともに使用するグラフィックス処理システムは、好適な任意の形態をとりうる。当業者であれば理解するように、本発明に従って動作する必要のある特定のコンポーネントまたは機能とともに、表示するグラフィックス頂点データを処理させるために必要な他の機能およびコンポーネントを備えることができ、また備えるべきである。そのため、これは、好ましくは、当業で知られているように、例えば(プログラム可能な)1つまたは複数の頂点シェーダーユニット、(プログラム可能な)1つまたは複数のピクセルシェーダーユニット、(複数の)ラスター処理ユニット、(複数の)レンダリングユニット(例えば、テクスチャマッピングユニット、フォギングユニット、および/またはブレンディングユニットなどを含む)などのうちの1つまたは複数を備える。
【0148】
特に好ましい一実施形態では、本発明のさまざまな機能は、表示デバイスのフレームバッファに書き込まれるデータを生成して出力する単一のグラフィックス処理プラットフォーム上で実行される。
【0149】
本発明のさまざまな機能、要素などは、必要に応じて実装することができ、また例えば、好ましくは、本発明のさまざまなステップおよび機能などを実行するように動作可能な、適切な機能ユニット、プロセッサ、回路、処理ロジック、マイクロプロセッサ装置などを備え、および/またはこれらによって実行される。
【0150】
本発明は、「パイプライン化」された構成を備えるグラフィックスプロセッサなどの、任意の形態または構成のグラフィックスプロセッサに適用可能である。好ましい一実施形態では、これは、ハードウェアグラフィックスパイプライン、好ましくはレンダリングパイプラインに適用される。
【0151】
本発明は、直接モードレンダリング、遅延モードレンダリング、タイルベースレンダリングなどのすべての形態のグラフィックス処理およびレンダリングに適用可能であるが、これは、遅延モードレンダリングおよび特にタイルベースレンダラーを使用するグラフィックスレンダラーに特に適用可能である。
【0152】
上記から理解されるように、本発明は、もっぱらというわけではないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の装置を含む、またはその態様に従う、またはその態様に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームに拡張される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのような3Dグラフィックスプロセッサは、他の何らかの方法で、3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの1つまたは複数またはすべてを備えることができる。
【0153】
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備えることを理解するであろう。
【0154】
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データ処理システムは、マイクロプロセッサシステム、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などとしてよい。
【0155】
本発明は、さらに、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、またはマイクロプロセッサシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアにも拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
【0156】
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、コンピュータソフトウェア、および本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
【0157】
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜具現化されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を具現化する。
【0158】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることが企図される。
【図面の簡単な説明】
【0159】
本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実施例のみを使って説明する。
【図1】本発明の方法およびシステムが有益に適用されうる例示的なシーンの概略を示す図である。
【図2】本発明のオペレーションを例示する図である。
【図3】本発明のオペレーションを例示する図である。
【図4】本発明のオペレーションを例示する図である。
【図5】本発明のオペレーションのステップを例示する流れ図である。
【図6】本発明のオペレーションを例示する図である。
【図7】本発明の他の好ましい一実施形態を示す図である。
【図8】本発明の他の好ましい一構成を示す図である。
【図9】本発明の他の好ましい一構成を示す図である。
【図10】本発明の他の好ましい一構成を示す図である。
【図11】本発明のさらに他の一実施形態を例示する図である。
【図12】本発明を実装することができるグラフィックスプロセッサの概略を示す図である。
【発明を実施するための形態】
【0160】
図1は、本発明が有益に適用されうるグラフィックス処理システムによってレンダリングされる例示的なシーン1を示している。図1に示されているように、シーンは、自動車3の形態の他のオブジェクトを完全に塞ぐ丘の形態の前景オブジェクト2を含む。
【0161】
当業者であれば理解するように、自動車3は、多数の個別プリミティブで構成される複雑なオブジェクトであり、典型的には、シーン1をレンダリングするためにグラフィックス処理システムに送られる命令内の単一描画コールとして定義される。
【0162】
本発明に従って動作していないグラフィックス処理システムの通常オペレーションでは、シーン1は、自動車3を構成するそれぞれのプリミティブを順に取り出し、そのプリミティブを処理して表示されるときにシーン1内に現れるかどうかを判定することにより処理される。したがって、自動車3が実際にはシーン1内の丘2によって完全に塞がれているとすると、この結果、実際には見えないかなりの数のプリミティブの処理でこの実施例のようになる。
【0163】
上述のように、本発明では、この可能性を認識して、シーン1をレンダリングするときに自動車3を処理するための代替え構成を提案している。本発明のこの構成は、図2および3に例示されている。
【0164】
図2に示されているように、また上で説明されているように、本発明のこの実施形態の基本原理は、自動車3を表す体積を生成することであり、その体積は、この実施例では、複雑なオブジェクト(自動車)3を囲む境界体積4の形態をとる。
【0165】
次いで、シーン1は、自動車3を構成する実際のプリミティブの代わりに境界体積4を使用して図3に示されているように処理される。次いで、これは、自動車3(複雑なオブジェクト)に関するシーンの処理を簡素化するが、それは、図3に例示されているように、自動車3の境界体積表現4がシーン内で完全に塞がれ、したがって、自動車3を構成する個別プリミティブを処理する必要はないと決定されうるからである。このことにより、上述のように、シーン1に対する処理時間および資源をかなり節約することができる。
【0166】
その一方で、自動車3に対する境界体積4を処理したことで、実際にその境界体積の一部がシーン内に表示されるときに存在する(可視である)と判明した場合、システムは自動車3を構成する実際のプリミティブを処理するステップに進みシーンを適切にレンダリングすることができる。これは、図4に例示されており、そこでは、境界体積4が丘2によって完全には塞がれていない少し異なるシーン10が示されている。
【0167】
図5は、上述のような本発明のオペレーションを例示する流れ図である。
【0168】
図5に示されているように、本発明が動作する際に、グラフィックスプロセッサは最初に、当業で知られているように、表示するシーンをレンダリングするための一組のコマンドを受け取る。次いで、これは、本発明の技術が適用される表示されるべきシーン内の1つまたは複数の複雑なオブジェクトを識別するステップに進む(ステップ50)。
【0169】
本発明が使用される複雑な1つまたは複数のオブジェクトのこのような識別は、必要に応じて実行されうる。例えば、グラフィックスプロセッサは、個別の1つまたは複数の描画コールを単純に識別し、その1つまたは複数の描画コールを、本発明が適用される複雑なオブジェクトとして取り扱うことが可能である。それに加えて、またはそれとは別に、シーンの他の分析を実行して、例えば、所定の描画コール内のプリミティブおよびオブジェクトの個別グルーピングを評価する、パッチまたは表面などの高次のオブジェクトを識別する、オブジェクトの高次のパラメータ記述を識別するなどの方法により、本発明の技術を適用する好適な複雑なオブジェクトを識別することが可能である。
【0170】
複雑な1つまたは複数のオブジェクトが、識別された後、この実施形態のシステムは、そのオブジェクトに対する(またはそれぞれのオブジェクトに対する)境界体積を生成するステップに進む(ステップ51)。
【0171】
これは、例えば当業で知られているように、好適な、所望の方法で実行されうる。例えば、複雑なオブジェクトによって覆われる最大および最小のx、y、およびz位置が決定され、次いで、それらの最大および最小のx、y、およびz位置を使用する境界体積が、当業で知られているように、生成されうる。他の、粗さの少ない境界体積表現も、必要ならば、同様にして導出することが可能である。
【0172】
また、例えば、複雑なオブジェクトのxおよびy方向の広がりを表す境界「面積」を導出し、次いで、それをオブジェクトが覆う深さ範囲に関連付け、それによって、オブジェクトに対する境界体積表現を構成することも可能である。
【0173】
(これらの構成では、オブジェクト3に対して定義されている頂点データを、例えば、評価し、オブジェクト3を表す境界体積4をそのデータから作成し、次いで、境界体積4をレンダリングするために画面空間に変換することが可能である。それとは別に、オブジェクト3に対して定義されている頂点データを、例えば、最初に、画面空間に変換し、次いで、境界体積4を画面空間内のオブジェクト3を表すように定義することも可能である。)
【0174】
境界体積4が生成された後、次いで、グラフィックスプロセッサは、複雑なオブジェクト3を構成する実際のプリミティブを使用せずに、複雑なオブジェクトの境界体積表現を使用してシーンを処理すべきである。
【0175】
そこで、例えば、境界体積4に対応する1つまたは複数のプリミティブが生成され、次いで、シーン内の他のプリミティブ(およびオブジェクト)と一緒にシーンについて処理される(ステップ52)。
【0176】
境界体積4を表すプリミティブは、他のプリミティブと同様の処理パイプラインによって処理されなければならない。そのため、これらは、例えば、レンダリングパスで、適切なタイルにビニングされ、1つのタイル内にまったく入っていなければカリングされ、レンダリングパイプライン内で行われるさまざまな形態の閉塞試験および深さ試験を受けることができ、受ける。
【0177】
上述のように、境界体積を使用するシーンのこの処理は、この実施形態において表示されるときにシーン内の境界体積の可視性または可視でないことを評価することにより実行されるシーン内の境界体積の存在または存在しないことをテストすることを意図されている。
【0178】
したがって、この実施形態では、この処理は、オブジェクト3の境界体積表現(境界体積を表す(複数の)プリミティブ)についてZ-onlyレンダリングパスを実行し、境界体積表現4が表示されるときにシーン内で完全に塞がれるかどうかを判定するステップを含む。
【0179】
グラフィックスプロセッサは、必要に応じて複雑なオブジェクトに対する境界体積4に関するそのような「Z-only」オペレーションを容易に行えるように適切なレンダリング状態に設定されうる。好ましい一実装では、これは、出願人の初期の英国特許出願第2420261号で説明されている技術を使用して行われ、またZ-onlyレンダリングパスが境界体積4上で実行されることを指示する適切な定義済みレンダリング状態インデックスを境界体積4(そのプリミティブ)にタグ付けすることにより行われる。
【0180】
境界体積4に対するZ-onlyレンダリングパスの結果から、当業者であれば理解するように、グラフィックスZテスト(深さテスト)プロセスを使用することで、境界体積4が表示されるときにシーン内で可視となるかどうかが判定される(ステップ53)。
【0181】
この判定に対する応答として、次いで、グラフィックスプロセッサは、複雑なオブジェクト3を破棄するステップに進むか(境界体積が(表示されるときに)シーン内でまったく見えないと判定された場合)、またはシーンを複雑なオブジェクト3とともにレンダリングするステップに進む(テストの結果、境界体積が(少なくとも一部は)可視であると判定された場合)ことができる。
【0182】
(この実施形態では、グラフィックス処理システムは、オブジェクト3を表す境界体積4に、境界体積4がグラフィックス処理システムを通るパスで除去されない場合にオブジェクト3を表す真のプリミティブの処理をトリガーする好適な情報、データ、またはタグなどを関連付けることにより、シーン1内に適切にレンダリングできるように「真の」個別のプリミティブ形態でオブジェクト3を現在処理するようにトリガーされる。他の構成も、もちろん、可能である。)
【0183】
したがって、図5に示されているように、境界体積4のテストの結果として、グラフィックスプロセッサは、複雑なオブジェクトを破棄して、複雑なオブジェクト3なしで表示するようにシーンをレンダリングするか(ステップ54)、または複雑なオブジェクト3を含むシーンをレンダリングするステップに進む(ステップ55)。
【0184】
いずれの場合も、グラフィックスプロセッサは、例えば、複雑なオブジェクト3を含めて(ただし、その場合、複雑なオブジェクト3を構成する実際のプリミティブをレンダリングする)、または複雑なオブジェクト3を含めずに、ここでもまたシーンを完全にレンダリングすることが可能であるか、または境界体積4を使用してシーンを処理するようにプロセスを構成する方法に応じて、シーンが、実際に、複雑なオブジェクトを含むシーンの一部を再レンダリングするために複雑なオブジェクトが可視である場合にのみ必要なように複雑なオブジェクトを含めずにすでにレンダリングされている可能性がある。
【0185】
表示するシーンのレンダリング(複雑なオブジェクトを含むか、または含まない場合)は、必要に応じて実行することが可能であり、好ましくは、注目するグラフィックスプロセッサにとって通常の方法で実行される。
【0186】
ここで、本発明では境界体積4に対し適切に保存的な「存在」(可視性)テストを使用することに留意されたい。したがって、例えば、図6に例示されているように、境界体積4がシーン内で完全に塞がれるかどうかを評価するときに、他の1つまたは複数のオブジェクト60が境界体積4を完全に塞ぐときにその閉塞のみを描画する保存的テストを使用する必要がある。
【0187】
本発明の上記の実施形態は、複雑なオブジェクト3を表す単一の境界体積4を生成することに関して説明されているけれども、複雑なオブジェクト3を表す複数の体積を生成することも可能である。これにより、例えば、複雑なオブジェクトのいくつかの部分がシーン内に現れるとしても、複雑なオブジェクトの異なる部分を破棄するようにできる。
【0188】
図7は、そのような構成を例示している。この場合、自動車3を表す「境界体積」4全体が、2つのより小さな代表体積11、12に分割され、そのそれぞれが、本発明の方法によりテストされる。この場合、それに応じて、体積11が表示するためレンダリングする必要があるが、体積12によって包含される複雑なオブジェクトの部分は、破棄されうると判定される。
【0189】
本発明の特に好ましい一実施形態では、グラフィックスプロセッサは、オブジェクトの異なる部分を処理から破棄できるかどうかを調べるために、複雑なオブジェクトについて生成された境界体積を漸次細分するように動作可能である。図8、9、および10は、これを例示している。
【0190】
図8は、複雑なオブジェクトに対する例示的な初期境界体積20を示している。
【0191】
この構成において、境界体積20が表示されるシーン内に存在することが判明した場合、図9に例示されているように、システムは、初期境界体積20を4つのさらに小さい体積21、22、23、および24に細分するステップに進む。
【0192】
次いで、それぞれのそのようなより小さな体積は、本発明の方法でテストされ、完全に塞がれていると判明したものがあれば、上述のように破棄される。
【0193】
図9のより小さな体積21、22、23、および24のどれかが、シーン内にまだ存在すると判明した場合、それらの体積は、さらに、同じようにして細分される。
【0194】
図10は、体積21についてこのことを例示し、その体積が4つのより小さな体積25、26、27、および28に細分されることを示しており、ここでもまた、本発明の方法でテストされ、適切であれば破棄されうる。
【0195】
漸次小さくなる代表体積のこのような細分とテストは、必要に応じて、例えば、いくつかの所定の、または選択された細分限界まで繰り返されうる。
【0196】
本発明は、複雑なオブジェクトが表示されるときにシーン内に存在するかどうかを判定するステップについて特に参照しつつ上で説明されているけれども、出願人は、さらに、複雑なオブジェクトが同様の方法でシーン内の他のオブジェクトを塞ぐ可能性があるかどうかをテストすることも等しく可能であることを認識している。
【0197】
この場合、複雑なオブジェクト3のより粗い表現は、ここでもまた、閉塞テストプロセスで、ただしこのときに、シーン内の他のオブジェクトが、それらのオブジェクトが複雑なオブジェクトによって塞がれることに基づき破棄されうるかどうかを判定するために、生成され、使用される。
【0198】
この場合、複雑なオブジェクト3を包含する「境界」体積を生成するのではなく、「有界」体積、つまり複雑なオブジェクト内に確実に封じ込められる体積(複雑なオブジェクト内に封じ込められる空間を確実に表す)が生成される。
【0199】
図11は、このことを例示し、複雑なオブジェクト71について生成される例示的な有界体積70を示している。
【0200】
この有界体積70は、ここでもまた、必要に応じて、例えば、複雑なオブジェクト71によって確実に包含される適切なx、y、およびz値範囲を考慮することにより、生成されうる。また、必要ならば、例えば、それぞれ複雑なオブジェクト内に完全に収まる2つ(またはそれ以上の)有界体積を生成することも可能である(例えば、複雑なオブジェクトの異なる部分を表す)。
【0201】
複雑なオブジェクトに対する適切な有界体積70が導出された後、再び、その有界体積を使用して複雑なオブジェクト71を表し、またそれに応じて複雑なオブジェクトがシーン内に現れる他のオブジェクト、プリミティブなどを塞ぐかどうかを判定してシーンが処理されうる(次いで破棄されうる)。
【0202】
ここでもまた、有界体積70に関する処理は、好ましくは、Z-onlyレンダリングパスとして実行され、有界体積70は、好ましくは、上述の「境界体積」と類似の方法で使用され、これにより複雑なオブジェクト3によって塞がれるオブジェクトを破棄することができる。
【0203】
ここで、複雑なオブジェクトの有界体積の生成およびテストは、有界体積が、例えば、複雑なオブジェクトによって実際には占有されない(複雑なオブジェクトによって塞がれることのない)シーンの体積または面積を包含することがないように、適切に保存的な形で実行されるべきであることは理解されるであろう。
【0204】
ここで、「境界体積」の使用に関して本明細書で説明されているオプションの、好ましい技術のどれか、またはすべては、1つの複雑なオブジェクトに対して「有界体積」が生成される構成に(適宜)等しく適用されうることも等しく理解されるであろう。
【0205】
特に好ましい一実施形態では、1つ(または複数)の境界体積および1つ(または複数)の有界体積が、所定の複雑なオブジェクトについて生成され、次いで、それぞれのそのような体積は上述の方法で処理される。最も好ましくは、これは、シーン内の複数の複雑なオブジェクトについて実行される。次いで、これにより、例えば、これらのオブジェクトのうちの1つまたは複数をシーンの処理から破棄するようにできる。
【0206】
本発明は、グラフィック処理システムにおいて、好適な方法により、また必要に応じて、グラフィックスプロセッサを使用して実装されうる。
【0207】
図12は、本発明に従って動作しうるグラフィックス処理システム100の構成の概略を示す。
【0208】
図12は、タイルベースのグラフィックス処理システムを示している。しかし、理解されるように、また上で説明されているように、本発明は、グラフィックス処理システムの他の構成でも実装されうる。
【0209】
図12に示されているように、グラフィックス処理システム100は、グラフィックスプロセッサ110、および当業で知られているように、グラフィックスプロセッサ110が結合されているホストCPU(プロセッサ)上に典型的には常駐し、実行されるグラフィックスプロセッサ用のドライバ111を備える。ドライバ111は、当業で知られているように、コマンドおよびデータのリストなどをグラフィックスプロセッサに送り、ホストプロセッサ上で実行されるアプリケーションなどからのグラフィックス表示の呼び出しに対する応答として表示するグラフィックスをレンダリングするようグラフィックスプロセッサに命令する。
【0210】
図12に示されているように、グラフィックスプロセッサ110は、頂点シェーダー112、ビニングユニット113、状態管理ユニット101、ラスター処理ステージ102、およびレンダリングステージ103をレンダリングパイプラインの形態で備える。
【0211】
頂点シェーダー112は、当業で知られているように、描画されるグラフィックスオブジェクト、頂点などの記述をドライバ111から取り出し、それらのオブジェクトおよび頂点などに対し適切な頂点シェーディングオペレーションを実行して、例えば、オブジェクトおよび頂点に対し適切な変換および照明オペレーションを実行する。
【0212】
ビニングユニット113は、当業で知られているように、シーンに必要なさまざまなプリミティブ、オブジェクトなどを表示されるシーンの分割であるタイルについて適切なビン(タイルリスト)にソート(ビニング)する(上述のように、この例示的なグラフィックス処理システムは、タイルベースのグラフィックス処理システムだからである)。
【0213】
状態管理ユニット101は、当業で知られているように、状態データ、およびグラフィックス処理オペレーションを制御するグラフィックス処理ユニットの状態を格納し、制御する。
【0214】
当業で知られているように、ラスタライザー102は、その入力として、表示すべきプリミティブを受け取り、それらのプリミティブをレンダリングされるフラグメント位置(フラグメント)にラスター処理する。
【0215】
レンダリングパイプライン103は、ラスタライザー102からフラグメントを受け取り、それらのフラグメントを表示のためレンダリングする。当業で知られているように、レンダリングパイプラインは、フラグメントシェーダー、ブレンダー、テクスチャマッパーなどの多くの異なる処理ユニットを備える。
【0216】
レンダリングパイプライン103からの出力(レンダリングされたフラグメント)は、タイルバッファ104に出力される(この実施形態は、タイルベースシステムだからである)。次いで、表示するため、タイルバッファの出力は、最終的にフレームバッファ105に出力される。
【0217】
図12に示されているようなグラフィックスプロセッサのステージ、要素、およびユニットなどのそれぞれは、必要に応じて実装することが可能であり、そこで、例えば、必要なオペレーションおよび機能を実行する適切な回路、および/または処理ロジック、プログラム可能なロジックなどを備え、また本発明を実行するために適切な制御および処理回路などを備えることは理解されるであろう。
【0218】
本発明によるこのグラフィックス処理システム110のオペレーションにおいて、ドライバ111は、例えば、表示のためにレンダリングするようにグラフィックスプロセッサ110に命令することになるレンダリングする適切な複雑なオブジェクトを識別するよう動作し、次いで、それらのオブジェクトに対する適切な代表体積を生成するようにホストプロセッサを制御するか、またはグラフィックスプロセッサ110の頂点シェーダー112に、所望の代表体積を生成する適切な命令を送り、次いでそれに応じてそれらの代表体積を処理するようグラフィックスプロセッサ110の残りのユニットおよびステージに指令することができる。
【0219】
この点に関して、当業者であれば理解するように、これは、ビニングユニット113、ラスタライザー102、およびオブジェクトに対する代表体積に関して、適切な例えばZ-only処理を実行するよう特に制御されうるタイルバッファ104のオペレーションである。
【0220】
他の構成も、もちろん、可能である。例えば、頂点シェーダー112は、レンダリングされるシーン内の適切な、例えば複雑な、オブジェクトを識別し、次いで、それに応じて本発明の方法によりそのようなオブジェクトおよびトリガーオペレーションに対する適切な1つまたは複数の代表体積を生成するように構成することが可能である。
【0221】
また、図12は、単に、これらの構成の概略を示しているにすぎず、したがって、例えば、本発明のオペレーションのデータフローは、図12に示されるようなものである必要はなく、また図12に示されているとおりでなくてよいが、例えば、適宜図12に示されているさまざまなユニットとステージとの間で行われるようなデータのループバックを伴うことがあることは理解されるであろう。当業者であれば理解するように、適切なデータフローを使用して、本発明を実装することができる。
【0222】
上記のことから、本発明は、その好ましい実施形態において、少なくとも、レンダリングされるシーン内の複雑なオブジェクトを取り扱う、そのようなオブジェクトのより効率的で、効果的な処理を行うことができる構成を実現することがわかる。
【0223】
これは、本発明の好ましい実施形態では少なくとも、最初に境界体積および/または有界体積を使用して複雑なオブジェクトを表し、次いで、境界体積および/または有界体積を使用してオブジェクトを表してシーンを処理し、例えば、シーン内の複雑なオブジェクトの存在または存在しないことを評価してから、複雑なオブジェクトに対し完全レンダリングオペレーションを実行するという方法で達成される。
【符号の説明】
【0224】
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 ビニングユニット

【特許請求の範囲】
【請求項1】
グラフィックス処理システムで表示するシーンを処理する方法であって、
前記シーン内のオブジェクトを識別するステップと、
前記シーン内の前記オブジェクトを表す体積を生成するステップと、
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップと、を含むことを特徴とする方法。
【請求項2】
前記シーン内の前記オブジェクトを表す体積を生成するステップは、前記シーン内の前記オブジェクトを表す境界体積を生成するステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理し、前記シーン内のオブジェクトの存在を評価するステップと、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップと、を具備し、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップは、
表示されるときに前記シーン内の前記オブジェクトの存在を評価するために、前記オブジェクトについて前記生成された境界体積を使用して前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記オブジェクトを処理するかどうかを決定するステップと、を含むことを特徴とする請求項2に記載の方法。
【請求項4】
最初に、前記オブジェクトを表す単一の境界体積を生成するステップと、
次いで、その境界体積の少なくとも一部が、表示されるときに前記シーン内に存在すると判定された場合に、
それぞれ前記初期境界体積の異なる部分を表す2つまたはそれ以上の他の体積を生成するステップと、
前記シーン内の前記オブジェクトの存在を評価するために、前記オブジェクトについて前記生成された2つまたはそれ以上の他の体積を使用して前記シーンの一部または全部を処理するステップと、
その評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定するステップと、を含むことを特徴とする請求項2または3のいずれか一項に記載の方法。
【請求項5】
前記シーン内の前記オブジェクトを表す体積を生成するステップは、前記シーン内の前記オブジェクトを表す有界体積を生成するステップを含むことを特徴とする請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理し、前記シーン内のオブジェクトの存在を評価するステップと、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップと、を具備し、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定するステップは、
表示されるときに前記シーン内の他の1つまたは複数のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された有界体積を使用して前記シーンの一部または全部を処理するステップと、
前記評価に基づいて表示する前記シーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定するステップと、を含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理するステップは、
前記シーン内のオブジェクトの存在を評価するために必要な処理のみを実行するステップを含むことを特徴とする請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理するステップは、
前記生成された体積に関してZ-onlyレンダリングパスを実行するステップを含むことを特徴とする請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記オブジェクトを表す2つまたはそれ以上の体積を生成するステップを含むことを特徴とする請求項1から8のいずれか一項に記載の方法。
【請求項10】
グラフィックス処理システムであって、
表示するために処理されるシーン内のオブジェクトを識別する手段と、
前記シーン内の前記オブジェクトを表す体積を生成する手段と、
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段と、を備えることを特徴とするグラフィックス処理システム。
【請求項11】
前記シーン内の前記オブジェクトを表す体積を生成する手段は、前記シーン内の前記オブジェクトを表す境界体積を生成する手段を含むことを特徴とする請求項10に記載のシステム。
【請求項12】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段と、を具備し、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段は、
表示されるときに前記シーン内の前記オブジェクトの存在を評価するために、前記オブジェクトについて前記生成された境界体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記オブジェクトを処理するかどうかを決定する手段と、を含むことを特徴とする請求項11に記載のシステム。
【請求項13】
最初に、前記オブジェクトを表す単一の境界体積を生成する手段と、
次いで、その境界体積の少なくとも一部が、表示されるときに前記シーン内に存在すると判定された場合に、
それぞれ前記初期境界体積の異なる部分を表す2つまたはそれ以上の他の体積を生成する手段と、
前記シーン内の前記オブジェクトの存在を評価するために、前記オブジェクトについて前記生成された2つまたはそれ以上の他の体積を使用して前記シーンの一部または全部を処理する手段と、
その評価に基づいて表示する前記オブジェクトの1つまたは複数の部分を処理するかどうかを決定する手段と、を備えることを特徴とする請求項11または12のいずれか一項に記載のシステム。
【請求項14】
前記シーン内の前記オブジェクトを表す体積を生成する手段は、前記シーン内の前記オブジェクトを表す有界体積を生成する手段を含むことを特徴とする請求項10から13のいずれか一項に記載のシステム。
【請求項15】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段と、を具備し、
前記評価に基づいて表示する前記シーンのオブジェクトを処理するかどうかを決定する手段は、
表示されるときに前記シーン内の他の1つまたは複数のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された有界体積を使用して前記シーンの一部または全部を処理する手段と、
前記評価に基づいて表示する前記シーンの1つまたは複数の他のオブジェクトを処理するかどうかを決定する手段と、を含むことを特徴とする請求項14に記載のシステム。
【請求項16】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理する手段は、
前記シーン内のオブジェクトの存在を評価するために必要な処理のみを実行する手段を含むことを特徴とする請求項10から15のいずれか一項に記載のシステム。
【請求項17】
前記シーン内のオブジェクトの存在を評価するために、前記オブジェクトについて前記生成された体積を使用して前記シーンの一部または全部を処理する手段は、
前記生成された体積に関してZ-onlyレンダリングパスを実行する手段を含むことを特徴とする請求項10から16のいずれか一項に記載のシステム。
【請求項18】
請求項10から17のいずれか一項に記載されたシステムを含むことを特徴とする3Dグラフィックスプロセッサ。
【請求項19】
前記プログラム要素がデータ処理手段上で実行されたときに請求項1から9のいずれか一項に記載の方法を実行するコンピュータソフトウェアコード部分を備えることを特徴とするコンピュータプログラム要素。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2009−295161(P2009−295161A)
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−134192(P2009−134192)
【出願日】平成21年6月3日(2009.6.3)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】