【文献】
清川清,“バーチャルリアリティにおける視覚提示技術”,知能と情報,日本,日本知能情報ファジィ学会,2007年 8月15日,第19巻, 第4号,p.4-11
(58)【調査した分野】(Int.Cl.,DB名)
前記メタデータが前記下位区分においてアクティブピクセル数を指定し、前記最終ピクセル値を生成するための前記下位区分のための前記ピクセルの処理における前記メタデータの利用が、前記下位区分のための前記指定された数のアクティブピクセル上のみでのピクセル処理の実行を含む、請求項1に記載の方法。
前記メタデータがスケーリングパラメータを含み、前記下位区分のためのピクセルの処理における前記メタデータの利用が、画面空間における頂点位置及び、前記下位区分のための前記ピクセル解像度を構成するための前記プリミティブのためのテクスチャ空間勾配の調整を含む、請求項2に記載の方法。
前記下位区分のための前記ピクセル解像度が標準解像度である場合に前記下位区分のための前記ピクセルのすべてがアクティブピクセルであることを前記メタデータが指定し、前記ピクセル解像度下位区分が前記標準解像度未満である場合に、前記下位区分のためのすべてより少ない前記ピクセルがアクティブピクセルであることを前記メタデータが指定する、請求項2に記載の方法。
前記下位区分が前記画面空間の中央に、またはその付近に位置する場合に前記メタデータが標準解像度を指定し、前記下位区分が前記画面空間のエッジまたは角に、またはその付近に位置する場合に前記標準解像度未満を前記メタデータが指定する、請求項2に記載の方法。
前記メタデータが1つまたは複数のスケーリングパラメータを含み、前記下位区分のためのピクセルの処理における前記メタデータの利用が、画面空間における頂点位置ならびに、前記下位区分のための前記ピクセル解像度を構成するための前記プリミティブのためのテクスチャ空間勾配及びパラメータ重心座標補間値の調整を含み、テクスチャ空間勾配の調整が、前記複数の下位区分の近傍下位区分のための異なるピクセル解像度を構成するためのテクスチャの応用におけるピクセルごとの勾配スケール補正の実行を含む、請求項2に記載の方法。
ユーザが見ている前記ディスプレイ装置のスクリーンの部分の決定をさらに含み、前記ユーザが見ている前記部分を含む前記スクリーンの1つまたは複数の下位区分についてピクセル解像度が最高となるように前記ピクセル解像度を変化させるように前記メタデータが構成される、請求項1に記載の方法。
前記メタデータが前記下位区分におけるアクティブピクセル数を指定し、前記最終ピクセル値を生成するための前記下位区分のための前記ピクセルの処理における前記メタデータの利用が、前記下位区分のための前記指定された数のアクティブピクセル上のみでのピクセル処理の実行を含み、前記複数の下位区分の異なる下位区分のために異なる数のアクティブピクセルを指定するように前記メタデータが構成される、請求項1に記載の方法。
前記下位区分及びピクセル構成メタデータにおける規則性の利用によって、出力スクリーン領域がより小さいメモリフットプリントへとパッキングされる、請求項1に記載の方法。
出力メモリオフセットを符号化するために付加的な情報を前記メタデータに組み込むことにより、出力スクリーン領域がより小さいメモリフットプリントへとパッキングされる、請求項1に記載の方法。
前記複数の下位区分の特定の下位区分に関連する前記メタデータの一部が、前記特定の下位区分のためのアクティブピクセル数を指定する情報を含む、請求項1に記載の方法。
前記メタデータが前記下位区分においてアクティブピクセル数を指定し、前記下位区分のための前記指定された数のアクティブピクセル上のみでのピクセル処理の実行によって、前記最終ピクセル値を生成するための前記下位区分のための前記ピクセルの処理における前記メタデータを利用するように前記グラフィックス処理装置が構成される、請求項21に記載のシステム。
前記下位区分のための前記ピクセル解像度が標準解像度である場合に前記下位区分のための前記ピクセルのすべてがアクティブピクセルであることを前記メタデータが指定し、前記ピクセル解像度下位区分が前記標準解像度未満である場合に、前記下位区分のためのすべてより少ない前記ピクセルがアクティブピクセルことを前記メタデータが指定する、請求項22に記載のシステム。
前記メタデータがスケーリングパラメータを含み、画面空間における頂点位置ならびに、前記下位区分のための前記ピクセル解像度を構成するための前記プリミティブのためのテクスチャ空間勾配及びパラメータ重心座標補間値の調整により、前記下位区分のためのピクセルの処理において前記メタデータを利用するように前記グラフィックス処理装置が構成され、前記複数の下位区分の近傍下位区分のための異なるピクセル解像度を構成するためのテクスチャの応用におけるピクセルごとの勾配スケール補正の実行によって前記テクスチャ空間勾配を調整するように前記グラフィックス処理装置が構成される、請求項22に記載のシステム。
前記下位区分が前記画面空間の中央に、またはその付近に位置する場合に前記メタデータが標準解像度を指定し、前記下位区分が前記画面空間のエッジまたは角に、またはその付近に位置する場合に前記標準解像度未満を前記メタデータが指定する、請求項21に記載のシステム。
前記ディスプレイ装置のスクリーンのユーザが見ている部分を決定するように前記システムが構成され、前記ユーザが見ている前記部分を含む前記スクリーンの1つまたは複数の下位区分についてピクセル解像度が最高となるように前記ピクセル解像度を変化させるように前記メタデータが構成される、請求項21に記載のシステム。
前記メタデータが前記下位区分においてアクティブピクセル数を指定し、前記下位区分のための前記指定された数のアクティブピクセル上のみでのピクセル処理の実行によって、前記最終ピクセル値を生成するための前記下位区分のための前記ピクセルの処理における前記メタデータを利用するように前記グラフィックス処理装置が構成され、前記複数の下位区分の異なる下位区分のために異なる数のアクティブピクセルを指定するように前記メタデータが構成される、請求項21に記載のシステム。
前記下位区分及びピクセル構成メタデータにおける規則性の利用によって、出力スクリーン領域がより小さいメモリフットプリントへとパッキングされる、請求項21に記載のシステム。
出力メモリオフセットを符号化するために付加的な情報を前記メタデータに組み込むことにより、出力スクリーン領域がより小さいメモリフットプリントへとパッキングされる、請求項21に記載のシステム。
前記複数の下位区分の特定の下位区分に関連する前記メタデータの一部が、前記特定の下位区分のためのアクティブピクセル数を指定する情報を含む、請求項21に記載のシステム。
【発明を実施するための形態】
【0018】
以下の詳細な説明は説明の目的のために多くの具体的な詳細を含むが、以下の詳細への多くの変化及び変更が本発明の範囲内であることを多くの当業者は理解するであろう。したがって、以下に説明する本発明の例示的な実施形態は、特許請求された発明の一般性を失うことなく、かつ特許請求された発明に制限を課すことなく記される。
【0019】
[導入]
図1A〜1Cは、以前は評価されていなかった大型FOVディスプレイの問題を示す。
図1Aは90度FOVディスプレイを示し、
図1Bは114度FOVディスプレイを示す。従来の大型FOVディスプレイにおいて、投影面101への平面投影を利用して三次元形状がレンダリングされる。しかし、高FOV投影面での形状のレンダリングは非常に非効率であることが判明している。
図1Cにおいて見られるように、投影面101のエッジ領域112及び中央領域114は同じ面積であるが、視聴者103が見る際に極めて異なる立体角を表す。結果的に、スクリーンのエッジ付近のピクセルには、中央付近のピクセルに比べて意味のある情報がはるかに少なくなる。シーンのレンダリングを行う際に、従来はこれらの領域が同じピクセル数を有し、スクリーン上の同一サイズの領域のレンダリングに費やされる時間は同一である。
【0020】
図2A〜2Cは、異なる大きさの視野に関する、二次元の大型FOVディスプレイの異なる部分の相対的重要性を示す。
図2Aは、チェッカーボードが114度の角度に定められる場合の、視野方向に対して垂直な平面チェッカーボードの各正方形の立体角のばらつきを表す。つまり、それは従来の114度FOVディスプレイへの平面投影レンダリングの非効率性を表す。
図2Bは、90度FOVディスプレイのための同じ情報を表す。このような平面投影レンダリングにおいて、画像201のエッジにあるタイル202及び角にあるタイル203が、中央のタイル204に比べて小さな立体角へと、投影により圧縮される。この圧縮及び、画像201の各タイルが画面空間において同一のピクセル数を有するという事実により、中央タイル204と比較してエッジタイル202のレンダリングのためにおよそ4Xの非効率性因子が存在する。これは、エッジタイル202の従来のレンダリングが中央タイル204と比較して単位立体角当たりの4倍の処理を含むことを意味する。角タイル203については、非効率性因子はおよそ8Xである。画像201全体で平均化すると、非効率性因子はおよそ2.5Xである。
【0021】
非効率性はFOVの大きさに依存する。たとえば
図2Bに示される90度FOVディスプレイにする非効率性因子は、エッジタイル202のレンダリングについてはおよそ2X、角タイル203のレンダリングについておよそ3X、または画像201のレンダリング全体についてはおよそ1.7Xである。
【0022】
スクリーン102が単位立体角当たりに定められるピクセルに関してほぼ等しい「重要性」の長方形に分割されている、この状況を見る別の方法が
図2Cに示される。各長方形は、ディスプレイを通じて見られるように最終画像に対しておよそ同じ貢献をする。平面投影がいかにエッジの長方形202及び角の長方形203の重要性をゆがめるかを見ることができる。実際に、ピクセルの視感濃度(立体角ごとのピクセルとして表されるように)をディスプレイの中央に向かって高くすることを選択する可能性があるディスプレイ光学素子のために、角の長方形203が中央の長方形に対して行う貢献は少ない場合がある。
【0023】
上述の観察に基づくと、
図2Dに示すように、広FOVディスプレイのための画像210は、エッジ領域202、204、206、208において中央領域205よりも小さな、また角領域201、203、207及び209においてエッジ領域202、204、206、208よりも小さなピクセル密度を有することが有利である。スクリーン上のピクセル密度を変化させるのと同じ効果を得る方法で基本的なグラフィカル画像データ若しくはデータフォーマットを大幅に修正またはデータを処理する必要なく広FOVディスプレイのスクリーン上の従来のグラフィカル画像をレンダリングすることもまた有利である。
【0024】
本開示の態様によると、プリミティブが重複する各下位区分と関連するメタデータの利用によって、グラフィックスパイプラインにおけるこれらの利点を得ることができる。メタデータは下位区分のピクセル解像度を決定する。メタデータは下位区分のためのピクセルの処理において、2つの異なる下位区分におけるシーンの部分が異なるピクセル解像度を有するような方法でディスプレイ装置上に表示されるシーンのビューポートのための最終ピクセル値を生成するために利用される。
【0025】
これを実装するために、仮想空間から画面空間への変換及び裏面に隠れたプリミティブの選別は従来の方法で行うことができる。さらに、プリミティブは1回のみレンダリングされる。スクリーンは単一のピクセルフォーマットを有し、各下位区分が複数のピクセルを含む複数の下位区分に分割される。
【0026】
解像度は下位区分ごとに指定されてもよい。解像度が通常よりも低い場合、複数のレンダリングターゲット(MRT)データの一部のみが、表示される最終ピクセルを生成するために利用される。メタデータは他のパラメータも指定することができる。テクスチャ処理を容易にするために、ピクセルシェーダーがテクスチャマッピングのための水平及び垂直勾配スケール因子を指定するように構成される。
【0027】
[システム及び機器]
本開示の態様は、テクスチャマッピングにおける勾配スケール補正を実装するように構成されるグラフィックス処理システムを含む。
図3Aは例示として、本開示の態様によるグラフィックス処理を実装するために利用されてもよいコンピュータシステム300のブロック図を示すがそれに限定されない。本開示の態様によると、システム300は組み込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム装置、ワークステーション、ゲームコンソールなどであってもよい。
【0028】
システム300は一般に、中央処理装置(CPU)302、グラフィックス処理装置(GPU)304ならびに、CPU及びGPUの両方にアクセス可能であるメモリ308を含んでもよい。CPU302及びGPU304はそれぞれ、たとえば単一のコア、2つのコア、4つのコア、8つのコア、またはそれ以上の、1つまたは複数のプロセッサコアを含んでもよい。メモリ308は、たとえばRAM、DRAMなどのアドレス可能なメモリを設ける集積回路の形式であってもよい。メモリ308は、グラフィックスレンダリングパイプラインのためにグラフィックスリソースを格納してもよく、データのグラフィックスバッファ305を一時的に格納してもよいグラフィックスメモリ328を含んでもよい。グラフィックスバッファ305は、たとえば、頂点パラメータ値の格納のための頂点バッファ、頂点インデックスの保持のためのインデックスバッファ、グラフィックスコンテンツの深度値の格納のための深度バッファ(たとえば、Zバッファ)、ステンシルバッファ、ディスプレイに送信される完成したフレームの格納のためのフレームバッファ、及び他のバッファを含んでもよい。
図3Aに示される実施例において、グラフィックスメモリ328はメインメモリの一部として示される。代替的な実施態様において、グラフィックスメモリ328は、可能であればGPU304に組み込まれる別個のハードウェア構成要素とすることができる。
【0029】
例示として、CPU302及びGPU304はデータバス309を利用してメモリ308にアクセスしてもよいが、それに限定されない。場合によっては、システム300が2つ以上の異なるバスを含むことが有用である可能性がある。メモリ308はCPU302及びGPU304によるアクセス可能なデータを含んでもよい。GPU304は、グラフィックス処理タスクを並列で実行するように構成される複数の計算ユニットを含んでもよい。各計算ユニットは、ローカルデータシェアなどの専用のローカルメモリストアを含んでもよい。
【0030】
CPUは、グラフィックス、コンパイラ及びグラフィックスAPIを利用するアプリケーションを含んでもよいCPUコード303
Cを実行するように構成されてもよい。グラフィックスAPIは、GPUによって実装されるプログラムに描画コマンドを出すように構成することができる。CPUコード303
Cはまた、物理シミュレーション及び他の機能を実装してもよい。GPU304は上述のように動作するように構成されてもよい。特にGPUは上述のように、演算シェーダーCS、頂点シェーダーVS、及びピクセルシェーダーPSなどのシェーダーを実装してもよいGPUコード303
Gを実行してもよい。演算シェーダーCSと頂点シェーダーVSとの間のデータの受け渡しを容易にするために、システムは、フレームバッファFBを含んでもよい1つまたは複数のバッファ305を含んでもよい。GPUコード303
Gはまた、ピクセルシェーダーまたはジオメトリシェーダーなどの他のタイプのシェーダー(図示せず)を任意に実装してもよい。各計算ユニットは、ローカルデータシェアなどの専用のローカルメモリストアを含んでもよい。GPU304は、グラフィックスパイプラインの一部としてテクスチャのプリミティブへの応用のための特定の演算を実行するように構成される、1つまたは複数のテクスチャユニット306を含んでもよい。
【0031】
本開示の態様によると、CPUコード303
c及びGPUコード303
gならびにシステム300の他の要素は、グラフィックスパイプラインを実装するように構成される。グラフィックスパイプラインの特定のステージは、ディスプレイ装置316のスクリーンの1つまたは複数の下位区分に関連するメタデータMDを受信し利用する。メタデータは、関連する1つまたは複数の下位区分のためにピクセル解像度を決定する。システム300のメタデータは、2つの異なる下位区分におけるシーンの部分が異なるピクセル解像度を有することができるような方法で、ディスプレイ装置上に表示されるシーンのビューポートのための最終ピクセル値を生成するための(1つまたは複数の)下位区分のためのピクセルの処理において、メタデータを利用する。
【0032】
本開示の態様によると、特定の実施態様においてCPUコード303
c及びGPUコード303
gならびにシステム300の他の要素は、グラフィックスプリミティブが重複するディスプレイ装置316のスクリーンの1つまたは複数の下位区分のためのアクティブピクセルカウントを指定するメタデータMDを受信し利用する。メタデータMDは、異なるピクセル解像度(スクリーンの単位面積当たりのピクセル数)を有する下位区分のための異なるアクティブピクセルカウントを指定する。このような実施態様において、CPUコード303
c及びGPUコード303
gならびにシステム300の他の関連構成要素は、1つまたは複数の下位区分のための指定された数のアクティブピクセル上でのピクセル処理の実行により、最終ピクセル値を生成するための下位区分のためのピクセルの処理においてメタデータMDを利用するように構成することができる。このように、ピクセル解像度をディスプレイ装置316のスクリーンの異なる下位区分ごとに変化させることができ、単に高解像度領域に対して低解像度領域のためのメタデータMDにおけるアクティブピクセルカウントを削減することにより、GPU304のグラフィックス処理負荷をディスプレイの低解像度領域のために削減することができる。
【0033】
いくつかの実施態様において、32X32などのピクセルの粗いラスタライズタイルなどの一貫した大きさのサブ領域の規則的な配列のためのサブ領域ごとのアクティブピクセル構成としてメタデータMDが指定されてもよい。他の実施態様において、
図5Aまたは5Bに示されるような所定のパターンを構成する水平及び垂直画面座標範囲を構成する配列としてメタデータMDが指定されてもよい。スクリーン領域を覆うサブ領域の集合を定義し、各サブ領域のためのアクティブピクセル構成を指定するために多数の選択肢が存在すること、また、本明細書において提案される本発明がこれらの例示的な場合に限定されるべきでないことが理解されるべきである。
【0034】
いくつかの実施態様において、CPUコード303
c、GPUコード303
g、及びテクスチャユニット306はさらに、スクリーン位置によって変化するピクセル解像度に関連するテクスチャマッピング演算への修正を実装するように構成されてもよい。たとえばピクセルシェーダーPS及びテクスチャユニット306は、1つまたは複数のテクスチャマッピング演算のために座標を提供し、テクスチャフィルタリングの利用のために勾配値Grをテクスチャ座標UVから計算するためにピクセル位置XYごとに1つまたは複数のテクスチャ座標UVを生成するように構成することができる。
【0035】
いくつかの実施態様において、画面空間領域は異なるピクセルサンプル密度または分布を有する領域間に画定され、結果的に勾配値Grの突然の遷移及び領域境界におけるテクスチャフィルタリングに至ってもよい。ピクセルテクスチャごとの勾配スケール因子Scはその後、必要に応じて領域境界上で円滑に変化する勾配値Gr’を得るために、勾配値Grに応用することができる。
【0036】
例示として、以下に記されるグラフィックスパイプラインの他の部分である(1つまたは複数の)テクスチャユニット306が特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはシステムオンチップ(SoCまたはSOC)などの専用ハードウェアとして実装されてもよいが、それに限定されない。
【0037】
本明細書にて利用されるとき、当業者によって一般に理解されるように、特定用途向け集積回路(ASIC)は、汎用利用のためではなく特定の利用のためにカスタマイズされた集積回路である。
【0038】
本明細書にて利用されるとき、当業者によって一般に理解されるように、フィールドプログラマブルゲートアレイ(FPGA)は、製造後に顧客または設計者によって構成されるよう設計された―したがって「フィールドプログラマブル」な集積回路である。FPGA構成は一般に、ASICのために利用されるのと同様に、ハードウェア記述言語(HDL)を利用して指定される。
【0039】
本明細書にて利用されるとき、当業者によって一般に理解されるように、チップまたはシステムオンチップ(SoCまたはSOC)上のシステムは、コンピュータまたは他の電子回路システムのすべての構成要素を単一のチップに統合する集積回路(IC)である。それには、デジタル、アナログ、混合信号、及びしばしば無線周波機能が、すべて単一のチップ基板上に含まれてもよい。典型的な応用は、組み込みシステムの領域にある。
【0040】
典型的なSoCは、以下のハードウェア構成要素を含む。
(たとえば、マイクロコントローラ、マイクロプロセッサまたはデジタルシグナルプロセッサ(DSP)コアなどの1つまたは複数のプロセッサコア。
たとえば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)及びフラッシュメモリなどのメモリブロック。
オシレータまたは位相ロックループなどのタイミングソース。
カウンタータイマー、リアルタイムタイマー、またはパワーオンリセットジェネレータなどの周辺機器。
たとえば、ユニバーサルシリアルバス(USB)、ファイアーワイヤ、イーサネット(登録商標)、汎用非同期送受信機(USART)、直列周辺装置インターフェイス(SPI)バスなどのような業界標準などの外部インターフェイス。
アナログからデジタルへの変換器(ADC)及びデジタルからアナログへの変換器(DAC)を含むアナログインターフェイス。
電圧調整器及び電力管理回路。
【0041】
これらの構成要素は独自規格または業界標準のいずれかのバスによって接続される。ダイレクトメモリアクセス(DMA)コントローラは、プロセッサコアをバイパスして外部インターフェイスとメモリとの間で直接データを送り、それによってSoCのデータスループットを増加させる。
【0042】
典型的なSoCは、上述のハードウェア構成要素ならびに、(1つまたは複数の)プロセッサコア、周辺機器及びインターフェイスを制御する実行可能な命令(たとえば、ソフトウェアまたはファームウェア)の両方を含む。
【0043】
いくつかの実施態様において、テクスチャユニット306またはグラフィックスパイプラインの他の部分の機能の一部または全部が、ソフトウェアプログラマブル汎用コンピュータプロセッサによって実行される適切に構成されたソフトウェア命令によって代わりに実装されてもよい。このような命令は、たとえば、メモリ308または記憶装置315などのコンピュータ可読媒体に組み込まれてもよい。
【0044】
システム300はまた、たとえばバス309を介してシステムの他の構成要素との通信を行ってもよい周知の支援機能310を含んでもよい。このような支援機能は、入力/出力(I/O)要素311、電源供給部(P/S)312、クロック(CLK)313及びキャッシュ314を含んでもよいが、それに限定されない。キャッシュ314に加えて、GPU304はGPUキャッシュ314Gを含んでもよく、GPUはGPU304上で実行されるプログラムがGPUキャッシュ314Gのリードスルーまたはライトスルーを行うことができるように構成されてもよい。
【0045】
システム300は、レンダリングされたグラフィックス317をユーザに提示するディスプレイ装置316を含んでもよい。代替的な実施態様において、ディスプレイ装置316はシステム300に関連して機能する別個の構成要素である。ディスプレイ装置316は、可視のテキスト、数字、図記号または画像を表示することができるフラットパネルディスプレイ、ヘッドマウントディスプレイ(HMD)、ブラウン管(CRT)スクリーン、プロジェクト、または他の装置の形式であってもよい。特に有用な実施態様において、ディスプレイ316は、曲面スクリーンを有する大型視野(FOV)装置である。ディスプレイ装置316は、本明細書に記載の様々な技術によって処理された、レンダリング後のグラフィック画像317を表示する。
【0046】
システム300は、ディスクドライブ、CD−ROMドライブ、フラッシュメモリ、テープドライブなどの、プログラム及び/またはデータを格納するための大容量記憶装置315を任意に含んでもよい。システム300はまた、システム300とユーザとの間の対話を容易にするユーザーインターフェイスユニット318を任意に含んでもよい。ユーザーインターフェイス318は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、またはグラフィカルユーザーインターフェイス(GUI)に関連して利用されてもよい他の装置を含んでもよい。システム300はまた、装置がネットワーク322を介して他の装置と通信を行うことを可能にするためのネットワークインターフェイス320を含んでもよい。ネットワーク322はたとえば、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク、Bluetooth(登録商標)ネットワークなどのパーソナルエリアネットワーク、または他のタイプのネットワークであってもよい。これらの構成要素は、ハードウェア、ソフトウェア、またはファームウェア、またはこれらの2つ以上のいくつかの組み合わせにおいて実装されてもよい。
【0047】
[グラフィックスパイプライン]
本開示の態様によると、システム300は、グラフィックスレンダリングパイプラインの部分を実装するように構成される。
図3Bは、本開示の態様によるグラフィックスレンダリングパイプライン330の実施例を示す。
【0048】
レンダリングパイプライン330は、仮想空間(本明細書において「ワールドスペース」とも称される)において二次元または好ましくは三次元形状を有するシーンを示す画像としてグラフィックスをレンダリングするよう構成されてもよい。パイプラインの初期ステージは、シーンがラスタライズされ、ディスプレイ装置316上での出力のための好適な個別の画素の集合として画面空間に変換される前に、仮想空間において実行される演算を含んでもよい。パイプラインを通じて、グラフィックスメモリ328に含まれる様々なリソースがパイプラインステージにおいて利用されてもよく、画像の最終値が決定される前にステージへの入力及び出力がグラフィックスメモリに含まれるバッファにおいて一時的に格納されてもよい。
【0049】
レンダリングパイプラインは、仮想空間において設定される頂点の集合によって画定される1つまたは複数の仮想オブジェクトを含んでもよい入力データ332上で動作し、シーンにおける座標に関して画定される形状を有してもよい。パイプラインの初期ステージは、
図3Bにおいて頂点処理ステージ334として大きく分類されるものを含んでもよく、これは、仮想空間において物体の頂点を処理するための様々な計算を含んでもよい。これは、位置値(たとえば、XY座標及びZ深度値)、明度、照明値、テクスチャ座標などの、シーンにおける頂点の様々なパラメータ値を処理してもよい頂点シェーディング演算336を含んでもよい。好ましくは、頂点シェーディング演算336は1つまたは複数のプログラム可能な頂点シェーダーによって実行される。仮想空間において新たな頂点及び新たな形状を生成するために任意に利用されてもよいテセレーション及びジオメトリシェーダー演算338などの付加的な頂点処理計算を頂点処理ステージは任意に含んでもよい。頂点処理334と称されるステージが完了すると、パイプラインのこのステージにおいて、それぞれが頂点パラメータ値339の集合を有する頂点の集合によってシーンが画定される。
【0050】
パイプライン330はその後、シーン形状の画面空間及び個別の画素の集合、すなわちピクセルへの変換に関連するラスタライズ処理ステージ340に進んでもよい。仮想空間からシーンの目視用窓(または「ビューポート」)への物体及び頂点の投影の計算を本質的に行ってもよい演算を通じて(三次元とすることができる)仮想空間形状を(通常二次元である)画面空間形状に変換してもよい。プリミティブの集合を画定するために頂点のサブセットがグルーピングされる。
【0051】
図3Bに記されるラスタライズ処理ステージ340は、シーンにおいて頂点の集合のそれぞれによって画定されるプリミティブを設定してもよいプリミティブアセンブリ演算342を含んでもよい。各頂点はインデックスによって画定されてもよく、各プリミティブは、グラフィックスメモリ328内のインデックスバッファに格納されてもよいこれらの頂点インデックスに対して画定されてもよい。プリミティブは好ましくは、少なくとも3つの頂点それぞれによって画定される三角形を含んでもよいが、また、ポイントプリミティブ、ラインプリミティブ、及び他のポリゴン形状を含んでもよい。プリミティブアセンブリステージ342の間、特定のプリミティブが任意に選別されてもよい。たとえば、インデックスが特定の巻上げ順序を示すそれらのプリミティブは、裏面にあると見なされてもよく、シーンから選別されてもよい。
【0052】
例示として、プリミティブが三次元仮想空間において頂点によって画定される三角形の形式である場合、ディスプレイ316のスクリーン上のどこに各三角形が位置するかをプリミティブアセンブリが決定するがそれに限定されない。クリッピング及び画面空間変換演算は通常、プリミティブアセンブリユニット342によって実行される。
【0053】
プリミティブが組み合わせられた後、ラスタライズ処理ステージ340は、サンプルがプリミティブにより覆われた際のさらなる処理のために、各ピクセルにおいてプリミティブをサンプリングし、プリミティブからフラグメント(ピクセルと称される場合もある)を生成してもよい走査変換演算344を含んでもよい。走査変換演算は、画面空間座標に変換されたプリミティブを用いた演算を含み、どのピクセルがプリミティブの一部になるかを決定する。いくつかの実施態様において、走査変換演算344の間にピクセルごとに複数のサンプルがプリミティブ内で用いられ、アンチエイリアスプロセスのために利用されてもよい。特定の実施態様において、異なるピクセルが異なる形でサンプリングされてもよい。たとえばいくつかのエッジピクセルは、ヘッドマウントディスプレイ(HMD)などの特定のタイプのディスプレイ装置316のためにレンダリングの特定の態様を最適化するために、中央ピクセルよりも低いサンプリング密度を含んでもよい。走査変換344の間にプリミティブから生成されるフラグメント(または「ピクセル」)は、それらを生成したプリミティブの頂点の頂点パラメータ値339からピクセルの位置に補間されてもよいパラメータ値を有してもよい。ラスタライズステージ340は、パイプラインの後のステージにおけるさらなる処理のための入力として利用されてもよい、これらの補間フラグメントパラメータ値349を計算するためのパラメータ補間演算346のステージを含んでもよい。
【0054】
本開示の態様によると、プリミティブアセンブリ342と走査変換344との間で、スクリーンの異なる下位区分が異なるピクセル解像度という事実を構成する特定の演算が実行される。特定の実施態様において、プリミティブの頂点のためのスクリーン位置が知られると、プリミティブが重複する所定のスクリーン下位区分(本明細書にて粗いラスタライズタイルとも称される場合がある)のすべてを発見するために粗いラスタライズ343を実行することができる。プリミティブが重複する各下位区分に関して、たとえばアクティブピクセルカウント及びスケーリングパラメータなどの下位区分に依存するメタデータMDが受信され、下位区分のピクセル解像度を構成するためにプリミティブ及びテクスチャ勾配のための頂点位置を調整することが可能になる。走査変換344及びその後の処理ステージは、1つまたは複数の下位区分のための指定された数のアクティブピクセル上のみでのピクセル処理の実行によって最終ピクセル値を生成する。
【0055】
グラフィックスパイプライン330は、補間パラメータ値349をさらに処理し、ディスプレイ316のためにフラグメントが最終ピクセル値を導く方法を決定するさらなる演算を実行するために、
図3Bの350において一般に示されるピクセル処理演算をさらに含んでもよい。これらのピクセル処理タスクの一部は、フラグメントの補間パラメータ値349をさらに処理するピクセルシェーディング演算352を含む。ピクセルシェーディング演算352は、プログラム可能なピクセルシェーダーまたはGPU304内の専用のハードウェアによって実行されてもよい。ピクセルシェーダー呼出し348は、ラスタライズ処理ステージ340の間のプリミティブのサンプリングに基づいて起動されてもよい。ピクセルシェーディング演算352は、レンダリングターゲット、または複数の場合には複数のレンダリングターゲット(MRT)と称される場合もあるグラフィックスメモリ328内の1つまたは複数のバッファ305に値を出力してもよい。MRTにより、ピクセルシェーダーが、それぞれが同じスクリーン寸法を有するが潜在的に異なるピクセルフォーマットを有する2つ以上のレンダリングターゲットに任意に出力することが可能になる。レンダリングターゲットフォーマットの限定はしばしば、レンダリングターゲットのいずれか1つが最大4つの独立した出力値(チャネル)を受容することのみが可能であり、4つのチャネルのフォーマットが互いに堅く結びついていることを意味する。MRTにより、単一のピクセルシェーダーが異なるフォーマットの混合においてより多くの値出力することが可能になる。レンダリングターゲットのフォーマットは、画面空間ピクセルごとに値を格納するが、様々な性能上の理由により、近年のハードウェア生成においてレンダリングターゲットフォーマットはさらに特殊化され、時に(しかし常にではない)テクスチャユニット306による読み取りに対応する前にデータを再フォーマットするための「リゾルブ」と呼ばれるものを必要とする「テクスチャ様」である。
【0056】
図4A〜4Cは、ディスプレイ316のスクリーン400の異なる下位区分401における異なるピクセル解像度の実施例を概略的に示す。この実施例において、スクリーン400の下位区分401のすべてにおけるすべてのピクセルに関して、ピクセルデータは一貫した方法でフォーマットされる。例示として、深度サンプル及びカラーサンプルの数がスクリーン400のすべての下位区分401におけるすべてのピクセルと同じであるがそれに限定されない。通常、カラーサンプルよりも深度サンプルの方が多い。数値例として、下位区分401は32ピクセルx32ピクセルの粗いラスタライズタイルであってもよく、深度サンプルの数は4であってもよく、カラーサンプルの数は1であってもよいがそれに限定されない。代替的な実施態様において、各下位区分及び対応する異なる数の下位区分において、より多くのピクセル数(たとえば、64ピクセルx64ピクセル)またはより少ないピクセル数(たとえば、16x16)または可変のピクセル(たとえば長方形の大きさの混合)が存在することができる。
【0057】
図4A〜4Cに示されるように、下位区分401のそれぞれにおけるアクティブピクセル数は変化する。示される実施例においては、4つの中央下位区分401
cのみにおいてフル解像度である。他の下位区分は、片方または両方の軸においてハーフ解像度である。たとえば、水平エッジ下位区分401
EHは水平方向においてフル解像度を、垂直方向においてハーフ解像度を有し、垂直エッジ下位区分401
EVは水平方向においてハーフ解像度を、垂直方向においてフル解像度を有する。角の下位区分401
Rは垂直及び水平方向の両方においてハーフ解像度を有する。この実施例において、グラフィックスパイプライン330は中央下位区分401
cを正常にレンダリングすることができる。このような実施態様において、グラフィックスパイプライン330は水平エッジ下位区分401
EHにおけるピクセルのための垂直位置及びテクスチャマッピング勾配を調整し、垂直エッジ下位区分401
EVにおけるピクセルのための水平位置及びテクスチャマッピング勾配を調整し、角の下位区分401
Rにおけるピクセルのための垂直及び水平位置ならびにテクスチャマッピング勾配を調整する。
【0058】
メタデータMDによる下位区分ごとのアクティブピクセル数の変化は、メモリ内に格納されたピクセルデータ(たとえば、MRTデータ)を下位区分から下位区分へと変化させないが、そのデータの利用は変化する。特に
図4Cにおいて示されるように、グラフィックスパイプライン330は中央下位区分401
cのためにピクセルデータのすべてを、水平エッジ下位区分401
EH及び垂直エッジ下位区分401
EVのためにデータの半分を、角の下位区分401
Rのためにデータの4分の1を利用する。これらの下位区分のためのデータの利用されない部分が
図4Cにおいては薄く網掛けされている。メモリ内のピクセルデータの大きさは変化していないが、これらの下位区分のためにピクセルデータのすべてを処理する必要がないため、水平エッジ下位区分401
EH、垂直エッジ下位区分401
EV及び角の下位区分401
Rについてグラフィックスプロセッサ304上の演算負荷が削減される。たとえばサブ領域の行が常に同一の垂直スケールを共有し、列が常に同一の水平スケールを共有する特定の単純な場合においては、ピクセルデータのすべての部分をより小さな1つの長方形パッキングし、またメモリフットプリントを削減するために、スクリーン空間の変換を利用することができる。他の標準的でない場合において、メタデータMDへの修正により、同様にメモリオフセットまたはインデックスのオフセットの表への符号化が可能になり、より小さいメモリフットプリントへの出力のより効率的なパッキングが可能になる。
【0059】
いくつかの実施態様において、各領域401がディスプレイ316のスクリーンの固定サイズの部分に対応してもよい。他の実施態様において、各領域がディスプレイの可変サイズの部分に対応してもよい。さらなる実施態様において、メタデータMDは垂直及び水平方向におけるピクセルの範囲によって各領域401を画定することができる。別のさらなる実施態様において、メタデータMDは、たとえば32ピクセルx32ピクセルなどのいくつかの大きさの粗いラスタライズタイルによって、各領域を画定することができる。メタデータは、その領域のためのアクティブピクセル構成を指定する情報を含む特定の領域に関連する。例示として、メタデータは、メモリ308及び/またはグラフィックスメモリ328において表の形式で格納されてもよいが、それに限定されない。
【0060】
メタデータMDからのアクティブピクセルカウントを利用するために、プリミティブアセンブリ演算342は、プリミティブのための頂点情報をからメモリ引き出し、表示されているシーンの視野角錐体の外部のプリミティブをクリッピングし、頂点位置の仮想空間から画面空間への変換を実行し、テクスチャマッピングのための勾配を計算することができる。プリミティブアセンブリ演算342は、プリミティブが位置する1つまたは複数の下位区分を決定することができる。走査変換演算344は、1つまたは複数の下位区分(たとえば、メモリ308またはグラフィックスメモリ328に格納された表からのアクティブピクセルカウント)の解像度を決定するメタデータMDのルックアップを含むことができる。走査変換演算344はまた、頂点画面空間位置を調整するための計算を実行することができる。
【0061】
可変のアクティブピクセルカウントを含む実施態様において、粗いラスタライズ343後に下位区分で特定の数学的処理が行われる。特に変換344の間に、各ピクセルのための水平位置H及び垂直位置Vがスケーリングされ、下位区分(H
SUB、V
SUB)の水平及び垂直位置、水平スケール因子H
scale及び垂直スケール因子V
scaleに依存する更新後の位置H’及びV’へとオフセットされる必要がある。スケール因子H
scale及びV
scaleはメタデータMDに格納することができる。スケール及びオフセット演算は、以下によって数学的に表すことができる。
H’=(H−H
SUB)*H
[scale]+H
SUB
V’=(V−V
SUB)*V
scale+V
SUB
同じように、これらの演算についても、以下によって数学的に表すことができる。
H’=H*H
scale+H
SUB*(1−H
scale)
V’=V*V
scale+V
SUB*(1−V
scale)
【0062】
図4Dにおいて、水平及び垂直スケーリングの実施例が示される。特に
図4Dの左上部分に示されるように、垂直及び水平においてフル解像度を有する下位区分(たとえば、中央下位区分401c)に該当するプリミティブ403はスケーリングする必要がない。
図4Dの右上部分に示されるように、フル水平解像度及び1/2の垂直解像度を有する下位区分(たとえば、水平エッジ下位区分401
EH)に該当するプリミティブ403は水平においてはスケーリングする必要はないが、垂直においてはV
scale=0.5の因子によってスケーリングする必要がある。
図4Dの左下部分において示されるように、1/2の水平解像度及びフル垂直解像度を有する下位区分(たとえば、垂直エッジ下位区分401
EV)に該当するプリミティブ403は、水平においてはH
scale=0.5の因子によってスケーリングする必要があるが、垂直においてはスケーリングする必要はない。
図4Dの右下手部分において示されるように、1/2の水平解像度及び1/2の垂直解像度を有する下位区分(たとえば、角の下位区分401
c)に該当するプリミティブ403は、水平においてはH
scale=0.5の因子によってスケーリングし、垂直においてはV
scale=0.5の因子によってスケーリングする必要がある。
【0063】
図5A〜5Bは、水平及び垂直アクティブピクセルカウントが下位区分によってスケーリングされる実施態様の利点を図示する。
図5A及び
図5Bは両方とも、たとえば、グラフィックスパイプライン330によるシステム300によって処理されるピクセルのための複数のレンダリングターゲット(MRT)を表す。それぞれの図で、1440ピクセルX1440ピクセルのスクリーンのための様々な下位区分における因子H
scale/V
scaleが示される。
図5Aにおいて、800ピクセルX800ピクセルのスクリーン領域を構成する中央下位区分のための因子H
scale/V
scaleは、1/1である。2つの320ピクセルX800ピクセルの領域を構成する垂直エッジ下位区分のためのスケール因子H
scale/V
scaleは、1/0.5である。2つの800ピクセルX320ピクセルを構成する水平エッジ下位区分のためのスケール因子は、0.5/1である。4つの320ピクセルX320ピクセル領域を構成する4つの角の下位区分のためのスケール因子は、0.5/0.5である。エッジ及び角の下位区分の処理負荷の軽減により、
図5Aの左に示される1440ピクセルX1440ピクセルMRTの処理負荷は、
図5Aの右に示されるような1120ピクセルX1120ピクセルMRTの処理に等しい。したがって
図5Aに示されるように、水平及び垂直アクティブピクセルカウントが下位区分によってスケーリングされる場合、GPU300上の処理負荷は通常のおよそ60%まで軽減される。水平及び垂直ピクセルカウントのスケーリングは、
図5Bにおいて多少現実的に示すことができる。しかし最終的には、従来の処理と比較しておよそ処理負荷の40%の軽減という同じ結果になる。
【0064】
メタデータMDにおける各下位区分については、情報の多くの異なる潜在的な構成が存在する。
図5Bに示すように、ある構成によると例示として、メタデータが水平及び垂直方向において4つのうちからアクティブピクセルカウントを指定するがそれに限定されない。これにより、各下位区分のために4ビット、H
scale(すべての4つのうちから4、3、2、または1つのアクティブピクセル列のためのH
scale1、0.75、0.5、または0.25)のために2ビット、V
scale(すべての4つのうちから4、3、2、または1つのアクティブピクセル行のためのV
scale1、0.75、0.5、または0.25)のために2ビットが利用される。
【0065】
図5Aに記されるタイプのスケーリングを実装するために、下位区分ごとに2ビットのみが必要とされる(H
scale=1または0.5、V
scale=1または0.5)。
【0066】
スクリーン下位区分ごとのメタデータの格納は極めて柔軟性が高く、大量のデータを含まない。数値例として、8192の32ピクセルx32ピクセルの下位区分を含む4k2kディスプレイについて考慮する。各下位区分のために4ビット(2分の1バイト)が必要とされ、このディスプレイのためのメタデータMDは、わずか4096バイトの情報を含む可能性がある。上述のように、本開示の態様は、ピクセルx32ピクセルの下位区分を含む実施態様に限定されない。より大きい、またはより小さい下位区分が利用されてもよい。下位区分の大きさに関する実用的な選択は、ラスタライズハードウェアによって独立的かつ効率的に調整されたパラメータを有する可能性がある最小のスクリーン領域要素である。
【0067】
粗いラスタライズタイルの解像度などの、スクリーンラスタライズのハードウェアの実施態様の特定の態様は、いくつかのハードウェアの実施態様においてピクセルの下位区分のために合理的に考えて最小の解像度を設定してもよい。最適なメタデータフォーマットは任意のスクリーン構成を画定する柔軟性とメタデータのために必要なストレージサイズとの間のトレードオフに依存し、それにより、必要なストレージタイプ及び実施態様の処理能力が次に決定されてもよい。たとえば代わりに、同じスケールを共有するいくつかの水平または垂直スクリーン範囲におけるような
図5A及び
図5Bのように単純なパターンのためにメタデータを格納することができ、結果的に柔軟性は制限されるが、ハードウェアレジスタに自明に収まる極めて小さなメタデータを得ることができる。
【0068】
メタデータMDの構成へのいくつかの潜在的な改良が存在する。ある改良によるとメタデータは、メモリ内のピクセルデータの表現の効率性を向上させる方法で構成することができる。特に、各下位区分のデータは16ビット、H
scaleのために2ビット、V
scaleのために2ビット、及びインデックスのために4ビットとすることができる。これらの4ビットは、最大16のMRTアドレスの集合を、異なる解像度のそれぞれに1つのアドレスでインデックス付けすることができる。同じ解像度のすべての領域はその後、同じMRTの集合の対象となる。
【0069】
たとえばいくつかの実施態様において、メタデータMDは、レンダリングターゲット(MRT)の特性を現在定義しているか、あるいはグラフィックスパイプライン330のラスタライズ340及びラスタライズ後の(たとえば、ピクセル処理350)ステージを制御する少なくともいくつかのレジスタの複数のコピーへとインデックスを符号化することができる。このような実施態様において、ハードウェアレジスタ値のパレットからすべてのMRTの特性を設定する値を選択するためにインデックスが利用される。
【0070】
たとえばメタデータMDはタイル当たり4ビットである場合、16値を有する4ビットのインデックスを格納することができ、レンダリングターゲットレジスタのいくつかが16値のパレットを保持するために拡張される場合、このタイルをレンダリングする際にどのMRTの設定のパレットエントリを利用するべきかをメタデータインデックスが選択することができる。一般にGPU304のハードウェアが支持することができるパレットの大きさに依存する多くまたは少ないビットを有するインデックスを格納することが可能である。
【0071】
例示として、このような実施態様の最小バージョンがMRTベースアドレスを格納するレジスタ及び寸法を配列へと拡張し、また同じインデックスによってインデックス付けされるオフセット及びタイル変換のスケールを含むいくつかの新たなレジスタをおそらく追加するが、それに限定されない。バッファフォーマットなどを制御する他のMRTレジスタは、任意の1つのMRTのすべての配列要素に関して一定のままである。ピクセルシェーダーPSはレンダリングターゲットフォーマットを知る必要があり、粗いラスタライズタイルごとに必ずしもそれを変化させなくてよい。
【0072】
このような実施態様は、メタデータに格納された(粗いラスタライズタイルまたはおそらくより大きな)下位区分ごとに1つまたは複数の選択インデックスを有するレンダリングターゲット構成レジスタ値の1つまたは複数の「パレット」としてのメタデータMDの実装として見なすことができる。例示としてメタデータMDは、すべてのレンダリングターゲットのための設定ブロックを調べるためにGPU304のハードウェアが利用するタイルごとにパレットインデックスを格納することができる。このような実施態様におけるレンダリングは、以下のように要約することができる。
1.「仮想32x32ピクセル」の粗いラスタライズタイルへの粗いラスタライズ。
2.各仮想の粗いタイルのそれぞれに関して、メタデータインデックスをルックアップする。
3.プリミティブを粗いラスタライズタイル、ピクセル、またはサンプルへとラスタライズする前に、メタデータインデックスを利用して、H
scale及びV
scaleをルックアップし、それらをプリミティブに応用する。
4.その後、ピクセルシェーディング352の後の出力演算356の間に、すべてのレンダリングターゲットアドレシングを実行するために利用される、x及びyオフセット、ベースアドレス、及びピッチをルックアップするためにメタデータインデックスが再度利用される。
【0073】
たとえば、1.0、0.75、0.5、0.25のパレットからH
scale、V
scaleを取り出すことは特に、たとえばGPU304のハードウェアにおける粗いラスタライズタイルのそれぞれがタイル(それぞれが8x8ピクセル)の4x4の配列を含む場合に、有用である。これは、これらの4つのスケール因子がすべて正確に、1つの粗いラスタライズタイルを、整数のタイルに一致させ、ラスタライズパイプラインの残りを十分な効率性で実行させる(粗いラスタライズの最大限の効率性における効率性の損失を除いて)ことを意味する。
【0074】
加えてメタデータMDは、カスタムスウィズルを可能にするための下位区分オフセットを画定する付加的な16ビットを含むことができる。下位区分オフセットはタイルサイズを乗算され、利用するためのMRTの面積の決定に利用される。本明細書にて利用されるとき、当業者によって一般に理解されるように、コンピュータグラフィックス、スウィズリングは、ベクトルの要素の再配列を指す。線形代数の観点から、スウィズルは、置換行列によるベクトルの乗算に等しい。スウィズルは、通常はCPU302によって行われる計算をGPU304が実行するグラフィックスユニット(GPGPU)アプリケーション上の汎用処理において共通である。
【0075】
レンダリングターゲットへのレンダリングの文脈における「スウィズリング」または「タイリング」は、メモリにおけるピクセルの順序の再配列を指す。「タイリング」または「表面タイリング」は、メモリにおけるピクセル順序のこのタイプの再配列に関してはより一般的な語となりつつある。「スウィズリング」は今では、テクスチャによって利用されるモートン順序として知られる特定の場合を指すためにより頻繁に利用される。メモリにおけるピクセルの順序の再配列は、本質的な二次元処理(ポリゴンのラスタライズ)からの一次元ターゲット(メモリ)への出力のデータ局所性(すなわちコヒーレンス)を向上させるために行われる。例示として、レンダリングターゲットがピクセルの行の単純の配列として格納される場合、細長い三角形ラスタライズの出力は、メモリ内の多くのキャッシュラインにヒットする、多数の行におけるそれぞれの行の少数のピクセルとすることができるが、それに限定されない。メモリ内で近傍のピクセルを近接させて垂直に位置付け、またメモリ内で近傍のピクセルを近接させて水平に位置付けるためにも、メモリ内のピクセルの再順序付けにより、ラスタライズステージ340はポリゴンの向きに関するより優れたデータ局所性及びより均一な性能を実現することができる。
【0076】
本開示の態様によると、レンダリングターゲットのタイリングパラメータはまた、たとえば、レンダリングターゲットベースアドレス及びピッチと同じインデックス、または別個のインデックスなどのメタデータMDによってインデックス付けすることができる。
【0077】
別の改良によると、メタデータMDは、上述のインデックスを通じてと同様に異なるピクセルフォーマットを可能にすることができる。異なるインデックスに関連する各ピクセルフォーマットは、異なるカラー及びZサンプルカウント、異なるカラー及びZサンプル位置、異なるエンハンスドクオリティアンチエイリアシング(EQAA)パラメータ、または異なるアンロールパラメータまたはそれらの2つ以上の組み合わせを指定することができる。このタイプの改良を含む実施態様はその後、様々な状況下で完全にパッキングされる(または新たな波面を開始する)前にするピクセルシェーダー波面を開始する必要がある。
【0078】
このような改良は、粗いラスタライズタイルごとに変化する可能性がある、レジスタのパレタイズ、カラー及びZサンプルカウントの制御、ならびに他の同様のEQAA設定を含む。このような改良を含む実施態様においては、サンプルカウントを制御するメタデータインデックスが、MRTアドレシングを制御するメタデータインデックスに依存しないという選択肢を有することが合理的である。テクスチャ勾配スケール補正を含む実施態様において、テクスチャ勾配相関係数はまた、サンプル構成を制御する同じインデックスによってインデックス付けすることができる。
【0079】
図4Eは、ディスプレイスクリーン316の異なる下位区分401のために異なるアクティブピクセルを指定するようにメタデータMDを構成することができる方法の実施例を示す。
図4Eにおいて示される実施例において、スクリーン316の中央下位区分は、フル解像度を有することが所望され、さらに中央からの下位区分は漸進的により低い解像度を有する。例示として、アクティブピクセルカウントの変化を含む実施態様においては、メタデータMDはフル解像度(4)、3/4の解像度(3)、1/2の解像度(2)及び1/4の解像度(4)に対応するH
scale及びV
scale値を画定することができるが、それに限定されない。例示として、メタデータMDは、メモリ308及び/またはグラフィックスメモリ328における表の形式で格納されてもよいがそれに限定されない。
【0080】
いくつかの実施態様において、メタデータはディスプレイ316の光学素子及びFOVのために固定されている。このようなメタデータ構成の実施例が
図4Dにおいて概略的に示される。代替的な実施態様において、視線追跡のための中心視覚レンダリングを実装するために、メタデータが変化する可能性がある。このような実施態様において、システム300は、ユーザの視線、すなわち、ユーザの目がどこに向けられているかの追跡、及びこの情報のユーザが見ている対応するスクリーン位置との関連付けのためのハードウェアを含む。このようなハードウェアのある実施例は、ディスプレイ装置316のスクリーンに対して既知の位置にあり、ユーザのおおまかな方向に向けられたデジタルカメラを含むことができる。デジタルカメラは、ユーザーインターフェイス318または別個の構成要素の一部とすることができる。CPUコード303
cは、カメラからの画像の分析を行い、(a)ユーザが画像内にいるか否か、(b)ユーザがカメラの方を向いているか否か、(c)ユーザがスクリーンの方を向いているか否か、(d)ユーザの目が見えているか否か、(e)ユーザの頭部に対するユーザの目の瞳孔の向き、及び(f)カメラに対するユーザの頭部の向きを判断する画像分析ソフトウェアを含むことができる。スクリーンに対するカメラの既知の位置及び向き、ユーザの頭部に対するユーザの目の瞳孔の向き、ならびにカメラに対するユーザの頭部の向きから、画像分析ソフトウェアは、ユーザがスクリーンを見ているか否かを、もしそうであれば、ユーザが見ているスクリーンの部分401の画面空間座標を判断することができる。CPUコード303
cはその後、これらの画面座標をGPUコード303
Gに伝え、それによって、部分401を含む1つまたは複数の下位区分を決定することができる。したがって
図4Fにおいて示すように、GPUコードはその後、部分401を含む1つまたは複数の下位区分においてピクセル解像度が最高となり、下位区分において部分401から遠ざかると漸進的に低くなるように、メタデータMDを修正することができる。
【0081】
再び
図3Bを参照すると、下位区分によって変化するアクティブピクセルカウントを含む実施態様において、各下位区分のためのピクセル処理350は、各下位区分におけるアクティブピクセルのために、たいていは正常に進む。一般にピクセル処理350は、ラスタ演算(ROP)として一般に知られるものを含んでもよいレンダリング出力演算356において終了する。ラスタライズ演算(ROP)は単純にピクセルごとに複数回行われ、複数のレンダリングターゲット(MRT)の間の各レンダリングターゲットごとに1度行われる。出力演算356の間に、フラグメントのマージ、ステンシル、深度テスト及び特定のサンプルごとの処理タスクの応用を任意に含んでもよいフレームバッファにおいて最終ピクセル値359が決定されてもよい。最終ピクセル値359は、すべてのアクティブレンダリングターゲット(MRT)への収集された出力を含む。GPU304は、ディスプレイ装置316のピクセル上にリアルタイムで任意に表示されてもよい最終フレーム360を形成するための最終ピクセル値359を利用する。
【0082】
ラスタライズ処理演算340は通常、入力テクスチャ座標、カラー、位置、法線、及び他の値を通常含む頂点シェーダーによって頂点ごとに書き込まれる入力パラメータの補間を含む。パラメータ補間346は、レンダリングされているプリミティブ内の各ピクセルまたはサンプルの位置を示すピクセルごとに生成される重心座標補間値を必要とする。各パラメータ構成要素はその後、ピクセルサンプル位置において値を生成するためのプリミティブ頂点における値の間で補間されてもよい。下位区分によるアクティブピクセルカウントの変化を含む実施態様において、これらの重心座標補間値は、下位区分から下位区分へのピクセル構成の変化を構成するために補正されてもよい。
【0083】
ピクセル処理演算350は通常、ある程度は1つまたは複数のピクセルシェーダーPSによって、またある程度はテクスチャユニット306によって実行されてもよいテクスチャマッピング演算354を含む。ピクセルシェーダー演算352は、画面空間座標XYからのテクスチャ座標UVの計算、及びテクスチャ座標のテクスチャ演算354への送信、及びテクスチャデータTXの受信を含む。テクスチャ座標UVについては任意の方法で画面空間座標XYから計算することができるが、通常は補間入力値から、または時には前のテクスチャ演算から計算する。勾配Grは、テクスチャユニット306(テクスチャ演算ハードウェアユニット)によってテクスチャ座標のクォッドからしばしば直接計算されるが、デフォルト計算を行うテクスチャユニット306に依拠するのではなく、ピクセルシェーダー演算352によって任意に明確に計算してテクスチャ演算354に伝えることが可能である。
【0084】
テクスチャ演算356は一般に、ピクセルシェーダーPS及びテクスチャユニット306のいくつかの組み合わせによって行うことができる以下のステージを含む。まず、ピクセル位置XYごとの1つまたは複数のテクスチャ座標UVが生成され、各テクスチャマッピング演算のための座標の提供に利用される。テクスチャ座標UVから勾配値Grが計算される。ピクセルごとの勾配スケール因子Scは、対応する勾配値Grを対応する調整済みの勾配値Gr’に調整するように構成される。勾配スケール因子Scは、異なるピクセル解像度を有するディスプレイ装置316の領域の間で円滑に遷移させるために勾配値Grを修正することができる。下位区分によるアクティブピクセルカウントの変化を含む実施態様において、勾配Grはスケール因子H
scale及びV
scaleの逆数によって補正されてもよいか、またはピクセル構成メタデータMDから得られる変換に基づいて補正されてもよい。
【0085】
特定のグラフィックスアプリケーションビットマップテクスチャがポリゴンに「ペイントされる」。このような場合において、出力装置によって引き出される各ピクセル値は、テクスチャからサンプリングされる1つまたは複数のピクセルから決定される。本明細書にて利用されるとき、ビットマップは一般に、コンピュータモニタ、紙、または他のディスプレイ装置上のピクセルの長方形グリッド、またはカラーのポイントを一般に表すデータファイルまたは構造を指す。各ピクセルのカラーが個別に定義される。たとえば、着色ピクセルは、1バイトがそれぞれ赤、緑及び青の3バイトによって定義されてもよい。ビットマップは通常、おそらくディスプレイのビデオメモリに格納されるのと同じフォーマットで、またはデバイス独立ビットマップとして、スクリーン上に表示される画像にビットごとに対応する。ビットマップは、ピクセルの画像の幅及び高さならびに、それが表現することができるカラー数を決定する、ピクセルごとのビット数によって特徴づけられる。
【0086】
テクスチャビットマップの表面への転送処理はしばしば、テクスチャMIPマップ(ミップマップとしても知られる)の利用を含む。名称の「MIP」の文字は、「小さい空間に多くの」を意味するラテン語の語句、multum in parvoの頭文字である。このようなミップマップは、レンダリングの速度を向上させアーチファクトを削減させることを意図した、メインテクスチャに付随する、事前に計算され最適化されたビットマップ画像群である。
【0087】
ミップマップセットの各ビットマップ画像はメインテクスチャのバージョンであるが、特定の減少した詳細度(LOD)にある。十分詳細にレンダリングを行う上でビューが十分である場合に、メインテクスチャはなお利用されるが、テクスチャが遠くから、または小さなサイズで見られる場合に、最終画像をレンダリングするグラフィックスハードウェアは、好適なミップマップレベルに切り替える(または2つの最も近いレベルの間を補間する)。処理されているテクスチャピクセル(「テクセル」)数を単純なテクスチャよりもはるかに少なくすることができるため、レンダリング速度は向上する。ミップマップ画像がすでに効果的にアンチエイリアス処理済みであるため、アーチファクトは削減され、リアルタイムレンダリングハードウェアから若干の負荷を除いてもよい。
【0088】
ミップマップレベル間のブレンドは通常、いくつかの形式のテクスチャフィルタリングを含む。本明細書にて利用されるとき、テクスチャフィルタリングは、テクセル(テクスチャのピクセル)を3Dオブジェクトのポイントへとマッピングするために利用される方法を指す。単純なテクスチャフィルタリングアルゴリズムはオブジェクト上のポイントを用いてその位置に最も近いテクセルをルックアップしてもよい。結果として得られるポイントはその後、その1つのテクセルからカラーを得る。単純な技術が時に最近傍フィルタリングと称される。さらに洗練された技術は、ポイントごとに2つ以上のテクセルを組み合わせる。実用において最も頻繁に利用されるアルゴリズムは、ミップマップを利用したバイリニアフィルタリング及びトリリニアフィルタリングである。異方性フィルタリング及び、二次または三次フィルタリングなどのより高度な方法により、さらに高質な画像が得られる。
【0089】
テクスチャは通常正方形であり、2の巾乗に等しい辺長を有さなければならない。たとえばテクスチャが256×256ピクセルの基本サイズを有する場合、関連するミップマップセットはその後、それぞれが前の画像のサイズの半分である、128×128ピクセル、64×64、32×32、16×16、8×8、4×4、2×2、及び1×1(単一のピクセル)の一連の8つの画像を含んでもよい。たとえばこのテクスチャが画面空間の40×40ピクセル部分にマッピングされる場合、64×64及び32×32のミップマップの補間がその後利用される。本明細書にて利用されるとき、用語「画面空間」は一般に、グラフィックスパイプライン内のディスプレイバッファに伝えられる座標の集合を指す。
【0090】
適切なミップマップレベルを決定する処理におけるキー演算は、画面空間(時にXY座標空間と称される)からのピクセル位置の対応する領域のためのテクスチャ座標空間(時にUV座標空間と称される)において覆われる領域の決定を含む。補間テクスチャUV座標の画面空間勾配du_dx、dv_dx、du_dy、dv_dyは一般的に、シーンの関連部分におけるXY空間ピクセル位置でサンプリングされるU及びV値から計算される。いくつかの実施態様において、すべてのテクスチャ座標勾配の大きさの計算によって、スクリーンYを固定保持するスクリーンX座標における変化(時に、du_dx、dv_dxの大きさと称される)のための、またスクリーンXを固定保持するスクリーンY座標における変化(時に、du_dy、dv_dyの大きさと称される)に対して各画面空間方向X及びYのために単一のテクスチャ座標勾配が計算される。異方性ではないテクスチャルックアップのために、これらの2つの間のより大きい勾配が詳細度(LOD)を選択するために利用される。異方性テクスチャリングのために、より小さな勾配が(LOD)を選択するために利用され、より大きな勾配に対応するラインにおいてテクスチャがサンプリングされる。
【0091】
上述の計算が、1、2、3、またはそれ以上のテクスチャ座標次元に汎用化することができることにも留意されたい。典型的なハードウェアは、テクスチャの次元数に応じて、U空間における1Dの大きさまたはUV空間における2Dの大きさまたはUVW空間における3Dの大きさを計算する。このように本開示の態様は、2つのテクスチャ座標次元を含む実施態様に限定されない。
【0092】
[ピクセルごとの勾配スケール補正]
いくつかの実施態様において、ディスプレイ上のピクセル解像度の不連続性を構成するためにテクスチャ勾配du_dx、dv_dx、du_dy、dv_dyがピクセルごとにスケーリングされる。基本的な概念が
図6A〜6Cに示される。
【0093】
図6A及び
図6Bに示されるように、ディスプレイ領域は、異なるピクセル解像度の2つ以上の領域601、602、603、604、605、606、607、608、及び609に分割されてもよい。たとえばヘッドマウントディスプレイ(HMD)の場合において、各領域はディスプレイの領域によって定められた立体角に関する解像度を有してもよい。例示として、中央領域605は名目または標準ピクセル解像度R
0を有してもよいが、それに限定されない。エッジ領域602、604、606、608は標準解像度の半分である1/2R
0を有することができ、たとえばこれらの領域におけるピクセルの半分はディスプレイ上で「オフになる」かまたはレンダリングされない。角領域601、603、607、及び609は標準解像度の4分の1である1/4R
0を有することができ、たとえばこれらの領域におけるピクセルの4分の3はディスプレイ上で「オフになる」かまたはレンダリングされない。
図6Bは、各領域の解像度に応じて異なるサイズに引き出されるこれらの異なる領域を示す。
【0094】
勾配はまた、隣接する領域間の境界付近のピクセルのために調整されなければならない場合がある。たとえば
図6Cにおいて、区分間の境界を示すラインは取り除かれている。しかし、近傍領域間の解像度における不連続性により、境界が視認できる。GPUは、不連続性を視認しづらくすることで不連続性を解消するために、領域間の境界付近のピクセルのための勾配を調整するように構成することができる。たとえば
図6Dに示されるように
図6CのD−D’行のフル解像度の中央領域605において選択されたピクセル611、612のための水平勾配は、ハーフ解像度のエッジ領域604、606に向かって漸進的にぼやけるようにスケーリングすることができる。
【0095】
代わりに、ハーフ解像度のエッジ領域604、606における勾配は、フル解像度の中央領域605に向かって漸進的に濃くなるようにスケーリングすることができる。
【0096】
異なる解像度を構成するための勾配の汎用のスケーリングについては、
図6Eを参照して理解することができる。UV空間(du_dx、dv_dx)、(du_dy、dv_dy)における勾配は正常に計算される。勾配はその後、適切なミップマップレベルを決定するためにテクスチャユニットが利用する最終調整勾配(du_dx’、dv_dx’)、(du_dy’、dv_dy’)を生成するために、勾配スケール因子scaleX、scaleYによってピクセルごとに乗算されることができる。
du_dx’=du_dx*scaleX
dv_dx’=dv_dx*scaleX
du_dy’=du_dy*scaleY
dv_dy’=dv_dy*scaleY
【0097】
勾配スケール因子scaleX及びscaleYは、テクスチャユニット306に伝えられ、最終調整勾配の計算のために利用される。
【0098】
勾配スケール因子scaleX、scaleYのための好適な値は、異なるピクセル解像度の近傍領域の境界に近接する、選択されたピクセルに応用される勾配スケール因子値の反復によって実験的に決定することができる。勾配スケール因子のための好適な値の範囲は、近傍領域の相対的なピクセル解像度から決定することができる。たとえばピクセル解像度は、D−D’行に沿って領域604における1/2Rから領域605におけるRへと、また領域606における1/2Rへと、変化する。勾配スケール値scaleXは、領域604及び606との境界に近接する領域605におけるいくつかのピクセルに渡って、およそ1からおよそ2へと遷移する。同様に勾配スケール値scaleXは、領域607及び609との境界に近接する領域608におけるいくつかのピクセルに渡って、およそ1の値からおよそ2の値へと遷移する。勾配スケール因子は、たとえばおよそ4から8ピクセルのいくつかのピクセルに渡って、2つの値の間で変化してもよい。
【0099】
テクスチャユニット306は、適切なLODを選択するために最終調整勾配を利用し、最終調整勾配からの1つまたは複数のプリミティブに応用してもよい。
【0100】
[付加的な態様]
付加的な本開示の態様は、仮想空間におけるシーンのための1つまたは複数の頂点を表すデータの受信、仮想空間から複数の下位区分に再分割される複数のピクセルを含むディスプレイ装置の画面空間におけるシーンのビューポートへの頂点の投影を計算するための頂点上でのプリミティブアセンブリの実行、画面空間座標に変換された各プリミティブに関する、複数のピクセルのうちのどのピクセルが各プリミティブの一部となるかの決定、プリミティブが重複する1つまたは複数の下位区分がどれかを決定するための各プリミティブのための粗いラスタライズの実行、プリミティブが重複する下位区分に関連する、下位区分のためのピクセル解像度を決定するメタデータの受信、2つの異なる下位区分におけるシーンの部分が異なるピクセル解像度を有するような方法での、ディスプレイ装置上に表示されるシーンのビューポートのための最終ピクセル値を生成するための下位区分のためのピクセルの処理におけるメタデータの利用を含む、グラフィックス処理方法を含む。
【0101】
付加的な本開示の態様は、ディスプレイ装置のスクリーンの異なる領域が異なるピクセル解像度を有するグラフィックス処理方法を含む。
【0102】
別の付加的な態様は、そこにおいて組み込まれ、実行される際に上述の方法の1つまたは両方を実装する、コンピュータ実行可能命令を有するコンピュータ可読媒体である。
【0103】
さらなる態様は、上述の方法の1つまたは両方を実行するための電磁式または他の信号搬送コンピュータ可読命令である。
【0104】
さらなる付加的な態様は、通信ネットワークからダウンロード可能な、かつ/または、上述の方法の1つまたは両方の実装のためのプログラムコード命令を含むことを特徴とする、コンピュータ読み取り可能及び/若しくはマイクロプロセッサによる実行が可能な媒体が格納されたコンピュータプログラム製品である。
【0105】
さらに別の付加的な態様は、上述の方法の1つまたは両方を実装するように構成されるグラフィックス処理システムである。
【0106】
本発明の好ましい実施形態の詳細な説明をこれまで記したが、様々な代替物、修正及び均等物の利用が可能である。したがって、本発明の範囲は上述の説明を参照することなく決定されるべきではなくむしろ、均等物の全範囲とともに添付の特許請求の範囲を参照することにより決定されるべきである。本明細書に記載の特徴は好むと好まざるとに関わらずすべて、本明細書に記載の任意の他の特徴と好むと好まざるとに関わらず組み合わせることができる。以下の特許請求の範囲において、[「A」または「An」の不定冠詞]は、別段に明言されない限りは、以下の文章の項目の1つまたは複数の量を指す。添付の特許請求の範囲は、このような限定が語句「means for」を利用して明確に所与の請求項において記載されない限りは、手段プラス機能の制限として解釈されない。