(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-01-18
(54)【発明の名称】ライトボリュームレンダリング
(51)【国際特許分類】
G06T 15/80 20110101AFI20230111BHJP
【FI】
G06T15/80
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022528164
(86)(22)【出願日】2020-11-13
(85)【翻訳文提出日】2022-07-06
(86)【国際出願番号】 US2020060490
(87)【国際公開番号】W WO2021097268
(87)【国際公開日】2021-05-20
(32)【優先日】2019-11-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-08-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ミカ ツオミ
(72)【発明者】
【氏名】ミイカ ペッテリ カンガスルオマ
(72)【発明者】
【氏名】ヤン ヘンリック アクレニウス
(72)【発明者】
【氏名】ローラン ルフェーブル
【テーマコード(参考)】
5B080
【Fターム(参考)】
5B080GA11
(57)【要約】
ライトボリュームレンダリング技術を実装するためのシステム、装置及び方法が開示される。プロセッサは、メモリに結合されている。プロセッサは、シーンのジオメトリをジオメトリバッファにレンダリングする。シーンの所定の光源について、プロセッサは、ジオメトリバッファ内の何れのピクセルを照明するのかを決定するために、2つのシェーダーパイプラインパスを開始する。第1のパスで、プロセッサは、光源に対応するライトボリュームの前面をレンダリングする。ライトボリュームの前面の前にあるジオメトリバッファのピクセルは、廃棄されるピクセルとしてマークされる。次に、第2のパスの間、廃棄するようにマークされなかったピクセルのみがピクセルシェーダーに送られる。このアプローチは、ピクセルシェーダーによって実行される作業を減らすことによって、シーンに照明効果を適用する際のオーバヘッドを削減するのに役立つ。
【選択図】
図8
【特許請求の範囲】
【請求項1】
装置であって、
1つ以上のシェーダーを含むシェーダーパイプラインと、
前記シェーダーパイプラインに結合された制御論理と、を備え、
前記制御論理は、
複数のピクセル内で第1のボリュームの前面の前にあるピクセルの第1の部分を識別することと、
前記複数のピクセル内で前記第1のボリュームの前記前面の後ろにあるピクセルの第2の部分を識別することと、
前記ピクセルの第2の部分のうち何れのピクセルのサブセットが前記第1のボリューム内にあるかを決定することと、
前記ピクセルのサブセットに陰影効果を適用することと、
前記ピクセルのサブセットの陰影が付されたバージョンをディスプレイに送ることと、
を行うように構成されている、
装置。
【請求項2】
前記複数のピクセルは、レンダリングされるシーンのジオメトリバッファに対応し、前記第1のボリュームは、前記シーンの第1の光源に基づいて生成され、照明効果は、前記ピクセルのサブセットに適用され、前記照明効果は、前記第1の光源に対応する、
請求項1の装置。
【請求項3】
前記制御論理は、
前記第1のボリュームの前記前面の前にある前記ジオメトリバッファの各ピクセルに第1の値に等しい第1のパス廃棄インジケータを設定することと、
前記ピクセルの第2の部分のうち何れのピクセルのサブセットが前記第1のボリューム内にあるかを決定する前に、前記第1の値に等しく設定された対応する第1のパスインジケータを有するピクセルを廃棄することと、
を行うようにさらに構成されている、
請求項2の装置。
【請求項4】
前記第1のボリュームの前記前面の前にある前記ピクセルの第1の部分は、前記ジオメトリバッファの前記複数のピクセルの深度バッファ値を、投影面に投影された前記第1のボリュームの前記前面の深度バッファ値と比較することによって識別される、
請求項3の装置。
【請求項5】
前記ジオメトリバッファの前記複数のピクセルは、前記シーンのためにジオメトリをレンダリングすることによって生成され、前記シェーダーパイプラインは、ピクセルシェーダーを含む、
請求項3の装置。
【請求項6】
前記ピクセルの第1の部分は、前記第1のボリュームの前記前面と第2のボリュームの前面との両方の前にあり、前記第2のボリュームは、第2の光源に基づいて生成される、
請求項3の装置。
【請求項7】
前記ジオメトリバッファの前記複数のピクセルは、前記ピクセルの第1の部分及び前記ピクセルの第2の部分から構成されており、前記ピクセルの第1の部分及び前記ピクセルの第2の部分は、ピクセルの重複しない部分である、
請求項3の装置。
【請求項8】
システムであって、
メモリと、
前記メモリに結合されたプロセッサと、を備え、
前記プロセッサは、
シーンに対応するジオメトリバッファの複数のピクセルのうち、第1の光源に基づいて生成される第1のライトボリュームの前面の前にあるピクセルの第1の部分を識別することと、
前記ジオメトリバッファの前記複数のピクセルのうち、前記第1のライトボリュームの前記前面の後ろにあるピクセルの第2の部分を識別することと、
前記ピクセルの第1の部分を廃棄することと、
前記ピクセルの第2の部分のうち、前記第1のライトボリュームの背面の前にあるピクセルの第3の部分を識別することと、
前記第1のライトボリューム内にある前記ピクセルの第3の部分に照明効果を適用することと、
前記複数のピクセルに陰影を付けて、前記シーンを表すためにディスプレイに送られる、陰影が付されたピクセルを生成することと、
を行うように構成されている、
システム。
【請求項9】
前記照明効果は、前記シーンの第1の光源に対応する、
請求項8のシステム。
【請求項10】
前記プロセッサは、
前記第1のライトボリュームの前記前面の前にある前記ジオメトリバッファの各ピクセルに第1の値に等しい第1のパス廃棄インジケータを設定することと、
何れのピクセルが前記第1のライトボリュームの前記背面の前にあるかを決定する前に、前記第1の値に等しく設定された対応する第1のパスインジケータを有するピクセルを廃棄することと、
を行うようにさらに構成されている、
請求項8のシステム。
【請求項11】
前記第1のライトボリュームの前記前面の前にある前記ピクセルの第1の部分は、前記ジオメトリバッファの前記複数のピクセルの深度バッファ値を、投影面に投影された前記第1のライトボリュームの前記前面の深度バッファ値と比較することによって識別される、
請求項8のシステム。
【請求項12】
前記ジオメトリバッファの前記複数のピクセルは、前記シーンのためにジオメトリをレンダリングすることによって生成される、
請求項8のシステム。
【請求項13】
前記プロセッサは、前記第1のライトボリュームの前記前面と第2のライトボリュームの前面との両方の前にある前記ピクセルの第1の部分を識別するようにさらに構成されており、前記第2のライトボリュームは、第2の光源に基づいて生成される、
請求項8のシステム。
【請求項14】
前記ジオメトリバッファの前記複数のピクセルは、前記ピクセルの第1の部分及び前記ピクセルの第2の部分から構成されている、
請求項8のシステム。
【請求項15】
方法であって、
制御論理が、ジオメトリバッファの複数のピクセルに対してシェーダーパイプラインを通る第1のパスを実行して、第1のライトボリュームの前面の前にあるピクセルの第1の部分を識別することであって、前記第1のライトボリュームは、第1の光源に基づいて生成される、ことと、
前記第1のライトボリュームの前記前面の後ろにあるピクセルの第2の部分のみに対して、前記シェーダーパイプラインを通る第2のパスを実行することと、
前記ピクセルの第3の部分に照明効果を適用することであって、前記ピクセルの第3の部分は、前記第1のライトボリューム内にある、ことと、
前記複数のピクセルのピクセルに陰影を付けて、ディスプレイに送られる、陰影が付されたピクセルを生成することと、を含む、
方法。
【請求項16】
前記ジオメトリバッファの前記複数のピクセルは、レンダリングされるシーンに対応し、前記照明効果は、前記シーンの第1の光源に対応する、
請求項15の方法。
【請求項17】
前記第1のライトボリュームの前記前面の前にある前記ジオメトリバッファの各ピクセルに第1の値に等しい第1のパス廃棄インジケータを設定することと、
前記第2のパスを実行する前に、前記第1の値に等しく設定された対応する第1のパスインジケータを有するピクセルを廃棄することと、をさらに含む、
請求項15の方法。
【請求項18】
前記第1のライトボリュームの前記前面の前にある前記ピクセルの第1の部分は、前記ジオメトリバッファの前記複数のピクセルの深度バッファ値を、投影面に投影された前記第1のライトボリュームの前記前面の深度バッファ値と比較することによって識別される、
請求項15の方法。
【請求項19】
前記ジオメトリバッファの前記複数のピクセルは、前記シーンのためにジオメトリをレンダリングすることによって生成される、
請求項15の方法。
【請求項20】
前記第1のライトボリュームの前記前面と第2のボリュームの前面との両方の前にある前記ピクセルの第1の部分を識別することをさらに含み、前記第2のライトボリュームは、第2の光源に基づいて生成される、
請求項15の方法。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックプロセッサは、多くの場合、幾何モデルからコンピュータ生成画像を生成するために、コンピュータグラフィックス処理システム内で使用される。幾何モデルは、仮想シーンの様々なオブジェクト、詳細(details)、光源、及び、他の要素を定義する。コンピューティングシステムは、幾何モデル及びソフトウェアアプリケーションからの他の入力に基づいて、所定のシーンをレンダリングする方法を決定する。これらの入力は、点、線、多角形、3次元ソリッドオブジェクト、及び、他のオブジェクト等のグラフィカルオブジェクトを含む。これらのオブジェクトは、より一般的に「プリミティブ」と呼ばれることがある。
【0002】
グラフィックスプロセッシングユニット(GPU)又は他のタイプのプロセッサは、所望の画像又はビデオフレームを表すピクセルカラー値の2次元配列又は3次元配列を生成するために入力及び幾何モデルを処理する。フレームの各ピクセルは、色又はテクスチャを含む、フレームと関連付けられた複数の属性を有する。シェーダーは、ピクセルを表す最終値を実現するために、各ピクセルの属性に対して算術演算及び論理演算を実行するために使用される。最終値はフレームバッファに格納され、ピクセルがディスプレイデバイスに送り込まれると使用される。レンダリングされている仮想シーンに光源が存在する場合、光源によって照らされているピクセルに照明効果が適用される。何れのピクセルを照らす必要があるのか、及び、何れのピクセルを照らす必要がないのかを決定することは難しい可能性がある。この課題に対処するための既存の手法の多くは、大量の中央演算処理装置(CPU)サイクル、GPU帯域幅を使用する、及び/又は、その初期のピクセルフィルタリングで粗い(つまり、それらが選択するピクセルが多すぎる)。
【0003】
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良好に理解することができる。
【図面の簡単な説明】
【0004】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】グラフィックをレンダリングするためのシステムの別の実施形態の論理ブロック図である。
【
図3】アプリケーションによってレンダリングされているシーンの例示的な実施形態の図である。
【
図4】アプリケーションによってレンダリングされているシーンの一例の図である。
【
図5】一実施形態による、レンダリングされているシーンの図である。
【
図6】レンダリングされているシーンに関連する図である。
【
図7】コンピューティングシステムの一実施形態のブロック図である。
【
図8】ライトボリュームレンダリングを実行するための方法の一実施形態を示す一般化されたフロー図である。
【
図9】ライトボリュームレンダリングを実行するための方法の一実施形態を示す一般化されたフロー図である。
【
図10】ライトボリュームの前面を投影面に投影するための方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の特定の詳細が示される。しかしながら、当業者は、これらの特定の詳細を用いることなく、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書で説明する手法を不明瞭にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令、及び、技術が詳細に示されていない。説明を簡潔及び明瞭にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0006】
本明細書では、ライトボリュームレンダリング技術を実装するための様々なシステム、装置及び方法が開示されている。プロセッサは、仮想シーンをレンダリングするために、アプリケーションを実行する。プロセッサは、仮想シーンのジオメトリをレンダリングし、複数のピクセルを生成してジオメトリバッファに格納する。ジオメトリバッファの複数のピクセルは、光源を考慮せずに生成される。ジオメトリバッファは、画面上の全てのピクセルの深度値を含む。次に、プロセッサは、仮想シーン内の各光源のライトボリュームをレンダリングする。次に、プロセッサは、シーンジオメトリの何れのピクセルが、所定のライトボリュームの前面の前にあるのかを決定するために、ジオメトリバッファを通る第1のパスを実行する。所定のライトボリュームの前面の前にあるこれらのシーンジオメトリピクセルは、ジオメトリバッファを通る第2のパスを実行するときに記録され、廃棄される。第2のパスは、何れのシーンジオメトリピクセルがライトボリュームの背面の後ろにあるのかを決定するために実行される。残りのシーンジオメトリピクセルは、ライトボリュームの範囲に入るそれらのピクセルである。照明効果は、ライトボリュームの範囲に入るピクセルに適用され、次にピクセルシェーダーが仮想シーンを表すためにピクセルに陰影を付ける。次に、ピクセルは、ディスプレイコントローラに提供され、ディスプレイに送り込むことができる。このプロセスは、ビデオゲーム、映画及び他のアプリケーションのフレーム毎に、シーンの各光源について繰り返すことができる。
【0007】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、メモリデバイス(複数可)140と、ディスプレイコントローラ(150)と、ディスプレイ155と、を含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含み、及び/又は、コンピューティングシステム100は、異なる構成とされる。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
【0008】
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。本実施形態では、プロセッサ105Aは、システム100の他のプロセッサの1つ以上と通信する、及び/又は、システム100の他のプロセッサの1つ以上の動作を制御するためのドライバ110(例えば、グラフィックスドライバ)を実行する。実施形態に応じて、ドライバ110は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の適切な組み合わせを使用して実装できることに留意されたい。一実施形態では、プロセッサ105Nは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサには、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等が含まれる。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に送り込まれるピクセルをディスプレイコントローラ150に提供するGPUである。
【0009】
メモリコントローラ(複数可)130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、プロセッサ105A~105Nとは別のものとして示されているが、これは、単に考えられる1つの実施形態を表しているにすぎないことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上に組み込むことができる、及び/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイに配置することができる。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に結合されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140内のメモリのタイプとしては、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、又は、他のメモリが挙げられる。
【0010】
I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。各種の周辺装置(図示省略)がI/Oインタフェース120に結合されている。そのような周辺装置は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインタフェースカード等を含む(が、これらに限定されない)。ネットワークインタフェース135は、ネットワーク全体でネットワークメッセージを送受信することができる。
【0011】
様々な実施形態において、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、他の様々なタイプの任意のコンピューティングシステム若しくはデバイスである。コンピューティングシステム100のコンポーネントの数は、実装毎に異なることに留意されたい。例えば、他の実施形態では、
図1に示す数よりも多い又は少ない各コンポーネントが存在する。他の実施形態では、コンピューティングシステム100は、
図1に示されていない他のコンポーネントを含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成される。
【0012】
図2を参照すると、グラフィックをレンダリングするためのシステム200の一実施形態のブロック図が示されている。一実施形態では、システム200は、処理要素202、アプリケーション205、メモリ225等のコンポーネントを含む。処理要素202は、少なくともジオメトリシェーダー210と、ライトシェーダー215と、ピクセルシェーダー220と、任意の数の他のシェーダー(図示省略)と、を含む。処理要素202は、1つ以上のCPU、GPU、FPGA、ASIC、DSP及び/又は他の処理リソースを含む。また、システム200は、任意の数及びタイプの他のコンポーネントを含むことができ、他のコンポーネントは、実装毎に変わることに留意されたい。一実施形態では、アプリケーション205は、ビデオゲーム、映画又は他のアプリケーションのシーンを表すためにピクセルをレンダリングするためのグラフィックスアプリケーションである。一実施形態では、アプリケーション205は、メモリ225に格納され、処理要素202上で実行されるプログラム命令を含む。アプリケーション205は、汎用プロセッサ又は固定ハードウェア(例えば、FPGA若しくははASIC等)上で実行できる。同様に、ジオメトリシェーダー210、ライトシェーダー215及びピクセルシェーダー220は、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせを使用して実装することができる。
【0013】
様々な実施形態では、ジオメトリシェーダー210は、投影面に投影された所定のシーンのシーンジオメトリの深度値を生成する。ライトシェーダー215は、光源によって照らされるピクセルに照明効果を適用し、一方、ピクセルシェーダー220は、レンダリングされたオブジェクトの各ピクセルに適用される色及び追加の外観属性を生成する。代わりに、ジオメトリシェーダー210、ライトシェーダー215及びピクセルシェーダー220の機能を実装できる単一の統合シェーダーが使用できるであろう。
【0014】
一実施形態では、アプリケーション205は、レンダリングされているシーン毎に、ジオメトリバッファ230から動作して、シーンのジオメトリを、深度情報を含むピクセルにレンダリングさせることによって開始する。ジオメトリレンダリングステップの出力は、ジオメトリバッファ230に格納される。次に、アプリケーション205は、シーンの光源のためにライトボリューム(light volumes)を生成させる。次に、各ライトボリュームについて、システム200は、ジオメトリバッファ230の何れのピクセルが、ライトボリュームの前面の前(front of the front-side of the light volume)にあるのかを決定する。一実施形態では、システム200は、ピクセルがライトボリュームの前面の前にあるのか、それともライトボリュームの前面の後ろにあるのかを示すために、各ピクセルの第1のパス廃棄インジケータ(first pass discard indicator)を維持する。システム200は、各ライトボリュームについてピクセルあたりの別の第1のパス廃棄インジケータを維持することができるか、又は、システム200は、シーンの全ての光源に対応するライトボリュームの全てについてピクセルあたりの単一の第1のパス廃棄インジケータを維持することができる。
【0015】
一実施形態では、第1のパス廃棄インジケータ235は、メモリ225に格納される。別の実施形態では、第1のパス廃棄インジケータ235は、処理要素202の処理ユニット内のキャッシュに格納される。一実施形態では、システム200は、各プリミティブのピクセルの深度をライトボリュームの前面の深度と比較するために深度バッファ240を使用する。別の実施形態では、システム200は、プリミティブの何れのピクセルがライトボリュームの前面の前にあるのかを記録するためにステンシルバッファ(stencil buffer)245を使用する。他の実施形態では、システム200は、プリミティブの何れのピクセルがライトボリュームの前面の前にあるのかを決定及び/又は記録するために他の技術を使用する。
【0016】
一実施形態では、第1のパスの後に、システム200は、ライトボリュームの前面の後ろにあると決定されたそれらのピクセルに対してのみ第2のパスを開始する。第2のパスは、ライトボリュームの前面の前にあると決定されたピクセルに対しては実行されない。これは、第2のパス中に実行される作業の量を減らすのに役立つ。一実施形態では、複数の光源があり、光源をグループとして扱うことが所望される場合、次に、システム200は、1つのライトボリュームの少なくとも1つの前面の後ろにあるピクセルに対して第2のパスを開始する。言い換えれば、本実施形態では、システム200は、シーンの光源の全てに対応するライトボリュームの全ての前面の前にあるピクセルを廃棄する。代わりに、各光源は、独立して且つ連続して扱うことができる。第2のパスは、何れのピクセルがライトボリューム(複数可)の中にあるのかを決定し、ライトボリューム(複数可)の中のピクセルに照明効果を適用し、シーンのピクセルに陰影を付けるためにライトシェーダー215及びピクセルシェーダー220上で開始される。第2のパスの間、ライトボリューム(複数可)の背面の後ろにあるピクセルは、ライトシェーダー215が照明効果を適用する前に廃棄される。全てのピクセルに陰影が付けられ、ライトボリューム(複数可)の中のピクセルが照らされると、ピクセルがフレームバッファ250に書き込まれる。フレームバッファ250のピクセルは、次に、ディスプレイ(例えば、
図1のディスプレイ155)に送り込むことができる。
【0017】
図3を参照すると、アプリケーションによってレンダリングされているシーン300の一例の図が示されている。一実施形態では、シーン300は、(
図2の)システム200のアプリケーション205によってレンダリングされている。一実施形態では、アプリケーションがカメラ302の視点からシーン300をレンダリングする場合、アプリケーションは、ジオメトリを投影面305に投影し、アプリケーションは、隠れたジオメトリを非表示にするためにカリングを使用する。これは、透視投影を使用してシーンの三次元(3D)レンダリングを実行するための一般的な技術である。例えば、正射影等の他の投影のタイプもサポートされている。投影面305が
図3では一次元の線として示されているが、投影面305はピクセルの二次元グリッドを表していることを理解されたい。
【0018】
一実施形態では、シーンジオメトリ310がレンダリングされ、次に、出力がジオメトリバッファ(例えば、
図2のジオメトリバッファ230)に格納される。シーン300に示すように、シーンジオメトリ310は、図の中央に地面及び家型構造を含む。シーン300は、所定のアプリケーションによってレンダリングできるであろうシーンの一例としての役割を果たすことが意図されることを理解されたい。他の実施形態では、より多くのオブジェクト及びより多くの複雑さを有する他のシーンをレンダリングすることができる。
【0019】
図4を参照すると、アプリケーションによってレンダリングされているシーン400の一例の図が示されている。
図4の説明は、
図3の説明の続きであることを意図していることに留意されたい。
図4に示すシーン400は、
図3のシーン300のシーンジオメトリ310と同等であるシーンジオメトリを含む。シーン400のシーンジオメトリは、実際のシーンジオメトリの実線の上方の破線部分445,450,455によって強調表示されている。しかしながら、シーン300及びシーン400の1つの違いは、シーンジオメトリの一部を照らす光源(つまり、スポットライト404)が、シーン400に追加されていることである。
【0020】
光源が所定のシーンに存在する場合には常に、アプリケーションは、光源に対応する照明効果の適用を試行できるであろう。照明効果を適用する前に、アプリケーションは、通常、光源404を無視しながら、シーン400のジオメトリをレンダリングする。ジオメトリのこのレンダリングの結果は、ジオメトリバッファ(例えば、
図2のジオメトリバッファ230)に格納される。ジオメトリバッファでピクセル値を生成した後、アプリケーションは、ピクセル値に照明効果を適用する。照明効果を適用するために、アプリケーションは、光源によって照らされているピクセルを識別する。これらのピクセルを識別するために、アプリケーションは、シーンをレンダリングする場合に、何れのピクセルが光源によって照らされる必要があるのかを決定する際の第1のステップとしてライトボリュームを生成する。
【0021】
図4のシーン400に示す例では、アプリケーションは、光源404のためにライトボリューム408を生成する。一実施形態では、ライトボリューム408を生成した後に、アプリケーションは、ライトボリューム408の内側にあるシーンジオメトリのピクセルの全ての識別を試行する。ライトボリューム408は、
図4では円錐として示されているが、これは、単にライトボリュームを表現するために使用することができる1つのタイプの形状にすぎないことを理解されたい。別の実施形態では、ライトボリュームを表現するために球体が生成される。他の実施形態では、所定の光源のライトボリュームを表現するために他の形状を生成することができる。
【0022】
図4に示す実施形態では、ライトボリューム408は、3つの面425,430,435を有する。面425の法線は投影面410を指すので、面425はライトボリューム408の前面である。これは、面425の中から描かれる矢印によって示される。面425は「前向きプリミティブ」とも呼ばれることに留意されたい。ライトボリューム408は、この例では単一の前面425を有するが、他の実施形態では、ライトボリュームが複数の前面(つまり、前向きプリミティブ)を有することができることを理解されたい。面430,435の法線は、面430及び435の中から出ると示される矢印によって示されるように、投影面410から離れる方向を指すため、面430,435はライトボリューム408の背面である。また、面430,435は、「後向きプリミティブ」と呼ばれる場合がある。他の実施形態では、ライトボリュームは、他の数の背面面(つまり、後向きプリミティブ)を有することができる。
【0023】
シーンジオメトリの何れのピクセルが、光源404によって潜在的に照らされるのかを決定するための従来の実装は、ライトボリューム408の背面をレンダリングするであろう。ライトボリューム408の背面をレンダリングした後、アプリケーションは、光によって潜在的に影響を受けるピクセルの全てを識別するために背面を投影面410に投影する。面430,435の前にあるそれらのセクションのみが、ライトシェーダー及び/又はピクセルシェーダーに渡されるであろう。この例では、セクション445,450が面430,435の前にあるため、これらはライトシェーダー及び/又はピクセルシェーダーに渡されるであろう。セクション455が面435の後ろにあるため、この例では、セクション455がカリングされるであろう。一実施形態では、シーンジオメトリのセクションがライトボリュームの前にあるのか、それとも後ろにあるのかを決定するために、深度バッファ(又は、Zバッファ)テストが実行される。上記のアプローチの欠点は、セクション445のピクセルがライトシェーダー及び/又はピクセルシェーダーに送られ、不必要な作業を実行させることになることである。この結果、比較的多数のピクセルがピクセルシェーダーに送られ、これらのピクセルの多くは、照明パスを通して実行されないままで終わることになる。このアプローチの場合、ピクセルシェーダーは、実際に必要とされるピクセルを照明する前に、必要とされていないピクセルを廃棄するために多くの余分な作業を実行することになる。ピクセルシェーダーのこの非効率的な使用に対処する改善された技術は、
図5についての説明で説明される。
【0024】
図5を参照すると、レンダリングされているシーン500の一実施形態が示されている。
図5の説明が、
図4の説明の続きであることに留意されたい。したがって、シーン500は、(
図4の)シーン400を表すことを意図しているが、シーン500の追加の要素は、様々なライトボリュームレンダリング技術を示す目的でシーン400と比較して名前が付けられている。シーン500の様々な部分について示されている線種は、凡例540によって定義されている。一実施形態では、従来のアプローチに関連するオーバヘッドを削減するための技術が使用されている。本実施形態では、ライトボリューム508の背面を単にレンダリングする代わりに、ライトボリューム508の前面に対して第1のパスが実行され、次に、ライトボリューム508の背面に対して第2のパスが実行される。タイルベースのアプリケーションの場合、シーンのあらゆるタイルに2つのパスが実行される。本明細書で使用される場合、「タイル」は、レンダリングされるフレームのピクセルのブロックとして定義される。ブロックは、任意のサイズ(例えば、8x8ピクセル、16x16ピクセル)であってもよく、サイズは、実装に従って変化する。
【0025】
第1のパスで、ライトボリューム508の前面がレンダリングされる。ライトボリューム508の前面をレンダリングする場合、深度バッファ及びカラーバッファがライトボリューム508によって変更されないように、深度バッファ書き込み及びカラーバッファ書き込みが無効にされる。第1のパスの間、ライトボリューム508の前面は、投影面510に投影される。シーンジオメトリ506の対応する部分が投影面510に投影される場合、深度バッファテストは、ライトボリューム508の左側にある地面が実際にはライトボリューム508の前面のそのセクションを隠していることを示す。これは、シーンジオメトリ506のこの最も左側の部分がライトボリューム508の前にあることを意味する。したがって、投影面510のセクション520に対応するシーンジオメトリ506のピクセルは、それらが全てライトボリューム508の前面の前にあるので廃棄される。一実施形態では、ライトボリューム508の前面の部分がシーンジオメトリ506によって隠されている場合には常に、情報が記録される。一実施形態では、ライトボリューム508の前面の任意の部分がいつ非表示となるのかを決定することは、深度バッファ(例えば、
図2の深度バッファ240)で深度テスト(又はZテスト)を実行することによって達成される。実装に応じて、深度テストは、より大きい、以上、未満又は以下等のように、任意の適切な比較を使用できる。アプリケーションが、シーンジオメトリの何れのセクションがライトボリューム508の前面の前にあるのかを記録すると、ライトボリューム508の背面をレンダリングすることによって第2のパスが実行される。ライトボリューム508の前面の前にあるシーンジオメトリ506のピクセルに対して第2のパスが実行されないことに留意されたい。これは、第2のパス中に実行される作業の量を減らすのに役立つ。
【0026】
第2のパスの間、深度テスト又はステンシルテストは、投影面510のセクション530に対応するシーンジオメトリ506のピクセルを廃棄するために実行される。シーンジオメトリ506のこれらのピクセルは、これらのピクセルがライトボリューム508の背面の後ろにあるので廃棄される。投影面510のセクション525に対応するシーンジオメトリ506のピクセルは、これらのピクセルがライトボリューム508の範囲に入り、照らされる(つまり、ライトシェーダーを通して実行される)必要があるので、第2のパスを生き残る。したがって、投影面510のセクション525に対応するジオメトリバッファピクセルのみが、ライトシェーダーによって処理され、処理リソースのより効率的な使用につながる。
【0027】
図6を参照すると、レンダリングされているシーンに関連する図が示されている。
図6の説明が
図5の説明の続きであることに留意されたい。したがって、
図605,610,615,620,625は、
図5のシーン500に関連するレンダリングプロセス内の異なるステップを表すことを意図している。
図605は、シーンに投影されたライトボリュームの粗い表示である。
図605の暗い部分は、シーンジオメトリから任意のピクセルを削除する前に、ライトボリュームによって潜在的に影響を受けるシーンの部分を反映している。
図610の暗い部分は、シーンに投影されたライトボリュームを表しているが、ライトボリュームの背面の後ろにあるために廃棄されたセクションのピクセルが省略されている。
図615は、投影面に投影された場合にライトボリュームの範囲に入るそれらのピクセルのみを表す。
図620は、シーンのシーンジオメトリに投影されているライトボリュームの視覚化である。
図625は、シーンの光源の全てによって照らされたピクセルの全ての表示である。
図605,610,615の視覚化は、ライトボリュームからピクセルを削除して、ジオメトリバッファのそれらのピクセルのみが照らされる必要のある投影面に投影されることになるために実行される作業量を示している。
【0028】
図7を参照すると、コンピューティングシステム700の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム700は、少なくともジオメトリバッファ705と、制御ユニット710と、第1のパス廃棄インジケータ715と、第2のパス廃棄インジケータ717と、シェーダーェーダパイプライン720と、を含む。コンピューティングシステム700は、図を曖昧にすることを避けるために示されていない任意の数の他のコンポーネント(例えば、メモリデバイス、フレームバッファ、ディスプレイ)を含むことができる。一実施形態では、制御ユニット710は、ジオメトリバッファ705のピクセルを第1のパスでシェーダーパイプライン720によって処理させる。第1のパスの間に、ライトボリュームの前向きの側面の前にあるピクセルが識別され、この情報は、第1のパスの廃棄インジケータ715に記録される。制御ユニット710は、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせを使用して実装されてもよい。制御ユニット710は、制御論理710とも呼ばれる場合があることに留意されたい。
【0029】
第1のパスの後、第1のパス廃棄インジケータ715が第1の値(例えば、1)に設定されたピクセルが、廃棄される。次に、第2のパス廃棄インジケータ717を設定するために制御ユニット710によって第2のパスが実行される。両方のパスを生き残ったピクセルのみが、照明のためにシェーダーパイプライン710に送られる。シェーダーパイプライン720は、1~Nの任意の数のシェーダーユニット725A~725Nを含み、Nは、1より大きい正の整数である。シェーダーユニット725A~725Nがシェーダーステージ725A~725Nとも呼ばれる場合があることに留意されたい。シェーダーユニット725A~725Nは、例えば頂点シェーダー、ライトシェーダー、ピクセルシェーダー、ジオメトリシェーダー、フラグメントシェーダー、計算シェーダー等の任意の数及びタイプのシェーダーを含むことができる。一実施形態では、第2のパスの出力は、シーンを表す複数のピクセルを含む。第2のパスの出力は、さらなる処理を受ける場合、格納される場合、及び/又は、ディスプレイに送り込まれる場合がある。
【0030】
図8を参照すると、ライトボリュームレンダリングを実行するための方法800の一実施形態が示されている。説明のために、この実施形態のステップ及び
図9のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上は、同時に実行されてもよいし、図示した順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も必要に応じて実行される。本明細書で説明する様々なシステム又は装置の何れも、方法800を実施するように構成される。
【0031】
プロセッサ上で実行するアプリケーションは、所定のシーンのジオメトリをレンダリングしてジオメトリバッファの複数のピクセルを生成し、ジオメトリをレンダリングする間、所定のシーンのあらゆる光源が無視される(ブロック805)。次に、プロセッサは、ジオメトリバッファの複数のピクセルに対して第1のパスを実行して、ライトボリュームが光源に基づいて生成される、ライトボリュームの前面の前にあるピクセルの第1の部分を識別する(ブロック810)。
【0032】
ジオメトリバッファの複数のピクセルの各ピクセルについて、ピクセルがライトボリュームの前面の前にある場合(条件ブロック815:「yes」)、対応する第1のパス廃棄インジケータが第1の値に設定される(ブロック820)。ピクセルが、ライトボリュームの前面の後ろにある場合(条件ブロック815:「no」)、対応する第1のパス廃棄インジケータが第2の値に設定される(ブロック825)。次に、プロセッサは、第1の値に設定された対応する第1のパス廃棄インジケータを有するピクセルを廃棄する(ブロック830)。
【0033】
次に、プロセッサは、第2の値に設定された対応する第1のパス廃棄インジケータを有するそれらのピクセルに対してのみ第2のパスを開始する(ブロック835)。一実施形態では、プロセッサは、所定のシーンの投影面に対応する複数のタイルの各タイルに対して、タイル毎に第2のパスを実行する。第2のパスの間、各ピクセルについて、ピクセルがライトボリュームの背面の後ろにある場合(条件ブロック840:「yes」)、プロセッサは、ピクセルに照明効果を適用しない(ブロック845)。ピクセルがライトボリュームの背面の前にある場合(条件ブロック840:「no」)、プロセッサは、ピクセルに照明効果を適用する(ブロック850)。ブロック845,850の後に、方法800は終了する。第2のパスが後に続く第1のパスを実行することによって、第2のパスを通して送られるピクセルがより少なくなり、これにより、照明効果を適用するためにピクセルを処理するオーバヘッドが削減する。
【0034】
図9を参照すると、ライトボリュームレンダリングを実行するための方法900の一実施形態が示されている。プロセッサは、光源を無視しつつ所定のシーンのジオメトリをレンダリングして、ジオメトリバッファの複数のピクセルを生成する(ブロック905)。この説明のために、所定のシーンが単一の光源を有すると仮定される。これは、1つの特定の実施形態を表すことを理解されたい。他の実施形態では、シーンは、複数の光源を含むことができる。次に、プロセッサは、光源に基づいてライトボリュームを生成する(ブロック910)。次に、プロセッサは、ジオメトリバッファの複数のピクセルに対して第1のパスを実行して、ライトボリュームの前面の前にあるピクセルの第1の部分を識別する(ブロック915)。
【0035】
次に、プロセッサは、第1のライトボリュームの前面の後ろにあるジオメトリバッファのピクセルの第2の部分に対してのみ第2のパスを実行する(ブロック920)。第2のパスの結果、ライトボリュームの背面の前にあるピクセルの第3のサブセットが識別される。ピクセルの第1の部分及びピクセルの第2の部分は、ピクセルの重複していない部分であることに留意されたい。また、ジオメトリバッファの複数のピクセルが、ピクセルの第1の部分及びピクセルの第2の部分から構成されることにも留意されたい。言い換えれば、ピクセルの第1の部分及びピクセルの第2の部分は、ジオメトリバッファの複数のピクセルの全体を作り上げる。次に、プロセッサは、第2のパスの結果として、ジオメトリバッファからのピクセルに陰影を付けて所定のシーンを表す(ブロック925)。次に、プロセッサは、ピクセルの第3の部分がライトボリュームの中にあるピクセルの第3の部分に、光源に対応する照明効果を適用する(ブロック930)。次に、プロセッサは、ジオメトリバッファのピクセルの陰影を付けられたバージョンをディスプレイに送り込ませて所定のシーンを表す(ブロック935)。ブロック935の後に、方法900は終了する。
【0036】
図10を参照すると、ライトボリュームの前面を投影面に投影するための方法1000の一実施形態が示されている。装置(例えば、プロセッサ、制御論理)は、ライトボリュームの前面を投影面(例えば、
図5の投影面510)に投影する(ブロック1005)。画面の各タイルについて、装置は、ジオメトリバッファ(例えば、
図7のジオメトリバッファ705)の複数のピクセルを投影面に投影する(ブロック1010)。投影面に投影されるジオメトリバッファの各ピクセルについて、装置は、ピクセルが、投影面に投影されたライトボリュームの前面の前にあるかどうかを判断する(ブロック1015)。
【0037】
ピクセルがライトボリュームの前面の前にある場合(条件付きブロック1020:「yes」)、装置は、ピクセルを廃棄する(ブロック1025)。そうではなく、ピクセルがライトボリュームの前面の前にない場合(条件ブロック1020:「no」)、装置は、ピクセルシェーダーにピクセルを送る(ブロック1030)。ピクセルシェーダーは、ピクセルがライトボリュームの範囲に入るかどうかを判断するためにピクセルを処理することができ、その場合、ライトシェーダーは、対応する光源によって生じる照明効果を表すためにピクセルの色を変更する。ブロック1025,1030の後に、方法1000は終了する。
【0038】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、本明細書で説明する方法及び/又はメカニズムを実施するために使用される。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態において、そのようなプログラム命令は、高水準のプログラミング言語によって表現される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書かれる。このようなプログラム命令は、C等の高水準のプログラミング言語によって表現される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体のうち何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0039】
上述した実施形態が、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するように解釈されることが意図される。
【国際調査報告】