(57)【要約】      （修正有）【課題】グラフィックス処理システム内でライトシャフトをレンダリングする改善された技法を提供する。【解決手段】レンダリングされるシーンを表す境界ボリューム２０およびボリューム表面の透明度を表す立方体テクスチャが定義される。シーンがレンダリングされる時、視点位置２４から見た第1サンプリング点２５を表すのに使用される色が、第1サンプリング点から視点位置へのベクトルに沿った複数の第2サンプリング点２７のそれぞれについて、当たる光の量を示す透明度パラメータを求め、色を決定する。各透明度パラメータは、シーン内の境界ボリュームの表面の透明度を表すテクスチャをサンプリングするのに使用されるベクトルを決定することと、第2サンプリング点に関する光源の透明度パラメータ値を決定するためにテクスチャをサンプリングするのに決定されたベクトルを使用することとによって決定される。【選択図】図２
2017076374.tif 000002
【特許請求の範囲】
【請求項１】
出力のためにシーンをレンダリングする時にグラフィックス処理システムの動作の方法であって、レンダリングされる前記シーンのすべてまたは一部のボリュームを表す境界ボリュームが定義され、
前記シーン内の前記境界ボリュームの表面の前記透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定すること、および第2のサンプリング点に関する前記光源の透明度パラメータ値を決定するために前記グラフィックステクスチャをサンプリングするのに前記決定されたベクトルを使用することによって、前記第1のサンプリング点から前記シーンの前記視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、前記境界ボリュームの外部にある光源から前記第2のサンプリング点に当たる光の量を示す透明度パラメータを決定すること、ならびに
前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される前記色を決定するために、前記複数の第2のサンプリング点のそれぞれについて前記決定された透明度パラメータ値を使用することによって、
前記境界ボリューム上または前記境界ボリューム内の少なくとも1つの第1のサンプリング点について、前記シーンの視点位置から見られた前記サンプリング点を表すのに使用される色を決定するステップ
を含む方法。
【請求項２】
前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルは、
前記第2のサンプリング点から前記光源へのベクトルによって交差される前記境界ボリューム上の位置を決定すること、および
前記グラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するのに前記交差位置を使用すること
によって決定される、請求項1に記載の方法。
【請求項３】
前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するのに前記境界ボリューム上の前記決定された交差位置を使用することは、
前記テクスチャがそれに関して定義される基準位置から前記決定された交点へのベクトルを決定するのに前記境界ボリューム上の前記決定された交差位置を使用すること
を含み、前記方法は、
前記透明度を示すテクスチャをサンプリングするのに、前記基準位置から前記決定された交点までの前記決定されたベクトルを使用するステップ
をさらに含む、請求項2に記載の方法。
【請求項４】
前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルは、
テクスチャサンプリングベクトルのセットを決定すること、および
テクスチャサンプリングベクトルの前記セットのベクトルを使用して補間することによって、前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定すること
によって決定される、請求項1に記載の方法。
【請求項５】
テクスチャサンプリングベクトルの前記セットの各テクスチャサンプリングベクトルは、
第3のサンプリング点から前記光源へのベクトルによって交差される前記境界ボリューム上の位置を決定すること、および
前記テクスチャサンプリングベクトルを決定するのに前記交差位置を使用すること
によって決定される、請求項4に記載の方法。
【請求項６】
前記第3のサンプリング点は、検討されつつある前記第1のサンプリング点が関係するプリミティブの頂点から前記視点位置への前記ベクトルに沿った選択されたサンプリング点を含む、請求項5に記載の方法。
【請求項７】
テクスチャサンプリングベクトルの前記セットの少なくともいくつかのテクスチャサンプリングベクトルについて、前記光源からの光が前記対応する第3のサンプリング点に当たるかどうかを判定するステップと、
前記判定に基づいて、さらなる処理が1つまたは複数の第1のサンプリング点および/または第2のサンプリング点について省略可能かどうかを判定するステップと
をさらに含む、請求項5または6に記載の方法。
【請求項８】
少なくとも1つの第2のサンプリング点について、ノイズテクスチャ値を決定するためにノイズテクスチャをサンプリングするステップと、
前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される前記色を決定する際に前記サンプリングされたノイズテクスチャ値を使用するステップと
をさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記ノイズテクスチャをアニメートするステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記複数の第2のサンプリングポイントのそれぞれに関する前記決定された透明度パラメータ値は、前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される前記色への色寄与を決定するのに使用され、前記方法は、
前記シーンの複数のそのような色寄与を決定するステップと、
前記シーンの前記視点位置から見られた前記境界ボリューム上または前記境界ボリューム内の複数の第1のサンプリングポイントのそれぞれを表すのにそれぞれ使用される複数の色を決定するステップと
を含み、前記色寄与は、前記複数の第1のサンプリング点のそれぞれを表すのに使用される前記色より低い解像度で決定される
請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記第1のサンプリング点から前記シーンの前記視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、前記境界ボリュームの外部にある複数の光源のそれぞれからの前記第2のサンプリング点に当たる光の量を示す透明度パラメータを決定することによって、前記境界ボリューム上または前記境界ボリューム内の第1のサンプリング点について、前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される色を決定するステップをさらに含む、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
前記シーン内の前記境界ボリュームの表面の前記透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定すること、および第2のサンプリング点に関する前記光源の透明パラメータ度値を決定するために前記グラフィックステクスチャをサンプリングするのに前記決定されたベクトルを使用することによって、前記第1のサンプリング点から前記シーンの前記視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、前記境界ボリュームの外部にある光源から前記第2のサンプリング点に当たる光の量を示す透明度パラメータを決定すること、ならびに
前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される色を決定するために、前記複数の第2のサンプリング点のそれぞれについて前記決定された透明度パラメータ値を使用することによって、
レンダリングされるシーンのすべてまたは一部のボリュームを表す境界ボリューム上または前記境界ボリューム内の少なくとも1つの第1のサンプリング点について、前記シーンの視点位置から見られた前記サンプリング点を表すのに使用される色を決定するように構成された処理回路網
を含むグラフィックス処理ユニット。
【請求項１３】
前記第2のサンプリング点から前記光源へのベクトルによって交差される前記境界ボリューム上の位置を決定すること、および前記グラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するのに前記交差位置を使用することによって、前記処理回路網は、前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するように構成される、請求項12に記載のグラフィックス処理ユニット。
【請求項１４】
前記処理回路網は、
前記テクスチャがそれに関して定義される基準位置から前記決定された交点へのベクトルを決定するのに前記境界ボリューム上の前記決定された交差位置を使用することによって、前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するのに前記境界ボリューム上の前記決定された交差位置を使用し、
その後、前記透明度を示すテクスチャをサンプリングするのに、前記基準位置から前記決定された交点までの前記決定されたベクトルを使用する
ように構成される、請求項13に記載のグラフィックス処理ユニット。
【請求項１５】
テクスチャサンプリングベクトルのセットを決定すること、およびテクスチャサンプリングベクトルの前記セットのベクトルを使用して補間することによって、前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定することによって、前記処理回路網は、前記透明度を表すグラフィックステクスチャをサンプリングするのに使用される前記ベクトルを決定するように構成される、請求項12に記載のグラフィックス処理ユニット。
【請求項１６】
第3のサンプリング点から前記光源へのベクトルによって交差される前記境界ボリューム上の位置を決定すること、および前記テクスチャサンプリングベクトルを決定するのに前記交差位置を使用することによって、前記処理回路網は、テクスチャサンプリングベクトルの前記セットの各テクスチャサンプリングベクトルを決定するように構成される、請求項15に記載のグラフィックス処理ユニット。
【請求項１７】
前記第3のサンプリング点は、検討されつつある前記第1のサンプリング点が関係するプリミティブの頂点から前記視点位置への前記ベクトルに沿った選択されたサンプリング点を含む、請求項16に記載のグラフィックス処理ユニット。
【請求項１８】
前記処理回路網は、
テクスチャサンプリングベクトルの前記セットの少なくともいくつかのテクスチャサンプリングベクトルについて、前記光源からの光が前記対応する第3のサンプリング点に当たるかどうかを判定し、
前記判定に基づいて、さらなる処理が1つまたは複数の第1のサンプリング点および/または第2のサンプリング点について省略可能かどうかを判定する
ように構成される、請求項16または17に記載のグラフィックス処理ユニット。
【請求項１９】
前記処理回路網は、
少なくとも1つの第2のサンプリング点について、ノイズテクスチャ値を決定するためにノイズテクスチャをサンプリングし、
前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される前記色を決定する際に前記サンプリングされたノイズテクスチャ値を使用する
ように構成される、請求項12から18のいずれか一項に記載のグラフィックス処理ユニット。
【請求項２０】
前記処理回路網は、
前記ノイズテクスチャをアニメートする
ように構成される、請求項19に記載のグラフィックス処理ユニット。
【請求項２１】
前記処理回路網は、
前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される前記色への色寄与を決定するのに前記複数の第2のサンプリングポイントのそれぞれに関する前記決定された透明度パラメータ値を使用し、
前記シーンの複数のそのような色寄与を決定し、
前記シーンの前記視点位置から見られた前記境界ボリューム上または前記境界ボリューム内の複数の第1のサンプリングポイントのそれぞれを表すのにそれぞれ使用される複数の色を決定する
ように構成され、
前記色寄与は、前記複数の第1のサンプリング点のそれぞれを表すのに使用される前記色より低い解像度で決定される、請求項12から20のいずれか一項に記載のグラフィックス処理ユニット。
【請求項２２】
前記処理回路網は、
前記第1のサンプリング点から前記シーンの前記視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、前記境界ボリュームの外部にある複数の光源のそれぞれからの前記第2のサンプリング点に当たる光の量を示す透明度パラメータを決定することによって、前記境界ボリューム上または前記境界ボリューム内の第1のサンプリング点について、前記シーンの前記視点位置から見られた前記第1のサンプリング点を表すのに使用される色を決定するように構成される、請求項12から21のいずれか一項に記載のグラフィックス処理ユニット。
【請求項２３】
プログラムがデータ処理システム上で実行される時に、請求項1から11のいずれか一項に記載の方法を実行するように適合されたソフトウェアコードを含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス処理システムに関し、具体的には、表示のためにイメージをレンダリングする時にライトシャフト(light shaft)の効果を考慮に入れる方法および装置に関する。
【背景技術】
【０００２】
グラフィック処理システムでの表示のために、出力フレームなどのイメージをレンダリングする時には、しばしば、レンダリングされるシーン内のライトシャフトの効果を考慮に入れることができることが望ましい。ライトシャフトは、たとえば、光が光を散乱させる媒体を通過する時に発生する可能性がある。様々なレンダリング技法が、これを行うことを試みるために開発された。
【０００３】
1つのそのような技法は、シーン内のライトシャフトを表す幾何オブジェクトを配置することを含む。オブジェクトは、透明オブジェクトとしてレンダリングされ、ライトシャフトの外見を与えるためにシーンの残りとブレンディングされる。しかし、この技法は、たとえばシーンの視点(カメラ)位置がライトシャフトに近いかその内部にある時に、必ずしも現実的な結果を与えない。さらに、ライトシャフトは、「固い」エッジを有するように見える可能性がある。さらに、幾何オブジェクトは、ライト位置が変化する時に、必ず再構成されなければならない。
【０００４】
ライトシャフトの効果を考慮に入れるための他の技法は、いわゆる「シャドウマップ」または光空間サンプリング面を利用する。一般に、こうした技法では、シーンの視点(カメラ)位置から見られたライトシャフトを示す1つまたは複数のテクスチャが、導出され(たとえば、1つまたは複数の第1のレンダリングパスにおいて)、その後、ライトシャドウが表示されるようにするためにシーンを変更するために、出力フレームをレンダリングする時に使用される。
【０００５】
こうした技法の使用は、ライトシャフトの効果がイメージをレンダリングする時に現実的な形で検討されることを可能にするのに効果的である可能性があるが、これらの配置での、1つまたは複数のテクスチャをまず準備し、その後に記憶し、使用する必要は、特に検討される必要がある複数の光源がある場合に、これらの配置が非常に高価になる可能性がある(たとえば、メモリリソースおよび帯域幅リソースに関して)ことを意味する。ライト位置または視点(カメラ)位置が変化する(各フレームで発生し得る)時には、必ずテクスチャを再生成することが必要になる可能性もある。これらの技法は、たとえば視点(カメラ)位置が移動する時に、ピクセル不安定性/フリッカに悩まされる可能性もある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、本出願人は、グラフィックス処理システム内でライトシャフトをレンダリングする改善された技法の余地が残されていると考える。
【課題を解決するための手段】
【０００７】
本発明の第1の態様によれば、出力のためにシーンをレンダリングする時にグラフィックス処理システムの動作の方法であって、レンダリングされるシーンのすべてまたは一部のボリュームを表す境界ボリューム(bounding volume)が定義され、
シーン内の境界ボリュームの表面の透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定すること、および第2のサンプリング点に関する光源の透明度パラメータ値を決定するためにグラフィックステクスチャをサンプリングするのに決定されたベクトルを使用することによって、第1のサンプリング点からシーンの視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、境界ボリュームの外部にある光源から第2のサンプリング点に当たる光の量を示す透明度パラメータを決定すること、ならびに
シーンの視点位置から見られた第1のサンプリング点を表すのに使用される色を決定するために、複数の第2のサンプリング点のそれぞれについて決定された透明度パラメータ値を使用することによって、
境界ボリューム上または境界ボリューム内の少なくとも1つの第1のサンプリング点について、シーンの視点位置から見られたそのサンプリング点を表すのに使用される色を決定するステップ
を含む方法が提供される。
【０００８】
本発明の第2の態様によれば、
シーン内の境界ボリュームの表面の透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定すること、および第2のサンプリング点に関する光源の透明度パラメータ値を決定するためにグラフィックステクスチャをサンプリングするのに決定されたベクトルを使用することによって、第1のサンプリング点からシーンの視点位置へのベクトルに沿った複数の第2のサンプリング点のそれぞれについて、境界ボリュームの外部にある光源から第2のサンプリング点に当たる光の量を示す透明度パラメータを決定することと、ならびに
シーンの視点位置から見られた第1のサンプリング点を表すのに使用される色を決定するために、複数の第2のサンプリング点のそれぞれについて決定された透明度パラメータ値を使用することによって、
レンダリングされるシーンのすべてまたは一部のボリュームを表す境界ボリューム上または境界ボリューム内の少なくとも1つの第1のサンプリング点について、シーンの視点位置から見られたそのサンプリング点を表すのに使用される色を決定するように構成された処理回路網
を含むグラフィックス処理ユニットが提供される。
【０００９】
本発明は、出力のためにシーンをレンダリングする時に、特にシーン内の定義された境界ボリュームの外部の光源がある状況で、ライトシャフトの効果を考慮に入れる方法および装置を対象とする。光源に起因する境界ボリューム内のライトシャフトの効果を決定するために、シーンの少なくとも1つの「第1の」(スクリーン空間)サンプリング点について、複数の透明度パラメータが、第1のサンプリング点からシーンの視点(カメラ)位置へのベクトルに沿った(ベクトル上の)複数の「第2の」(中間)サンプリング点のそれぞれについてそれぞれ決定される。透明度パラメータは、それぞれ、光源から問題の第2のサンプリング点に当たる光の量を示し、境界ボリュームの表面の透明度を表すテクスチャを使用して決定される。複数の透明度パラメータは、シーンの視点位置から見られるすなわち、ライトシャフトを通じて見られる第1のサンプリング点を表すのに使用される色を決定するのに使用される。
【００１０】
下でさらに議論されるように、本出願人は、この配置を使用して、特に効率的な形で境界ボリュームの外部の光源に起因するライトシャフトの効果を現実的にシミュレートできることを認識した。具体的には、本発明の技法は、シーンの視点位置から見られる第1のサンプリング点を表すのに使用される色へのボリュメトリックライトシャフト「寄与」を決定するのに使用され得る(好ましくは使用される)ので、たとえばシーンの視点(カメラ)位置がライトシャフトに近いかその内部にある時に、従来の幾何学的手法に関連する問題に悩まされない(対照的に、本発明の技法は、この状況で現実的な結果を提供することができる)。
【００１１】
さらに、本出願人は、本発明の配置が、境界ボリュームの表面の透明度を表す単一の「静的」グラフィックステクスチャを使用して境界ボリュームの外部の光源に起因するライトシャフトの効果をシミュレートするのに使用され得ることを認識した。これは、たとえば、視点(カメラ)位置および/またはライトの位置が変化する場合であっても、同一のグラフィックステクスチャを複数のフレームに使用できることを意味する。また、その同一のテクスチャを使用して、境界ボリュームの外部にあるすべての光源に起因するライトシャフトを査定することができる(たとえば、光源ごとに別々のテクスチャまたは幾何オブジェクトがあることを必要とするのではなく)。
【００１２】
本発明が、「動的な」テクスチャを使用するのではなく、ライトシャフト効果をシミュレートするのに「静的な」テクスチャを使用するので、それは、本発明のテクスチャが、はるかにより高い品質で生成され得、より洗練された効果を使用することをも意味する。テクスチャは、たとえば、「オフラインで」生成され、非リアルタイム最適化を受け、その後にグラフィックス処理システムによる使用のために提供され得る。単一の「静的な」テクスチャが、本発明において所与の境界ボリュームに使用され得るので、望まれる場合に、テクスチャを圧縮形式で提供することも可能であり、これによって、帯域幅節約およびメモリ節約がもたらされる。
【００１３】
したがって、本発明は、高められたレンダリング品質をも提供すると同時に、ライトシャフトが存在する状況を処理するためのメモリ効率が良く帯域幅効率が良い技法を提供する。
【００１４】
本発明は、ライトシャフトが、境界ボリュームの外部にある光源に起因して、シーンの境界ボリューム内に存在する状況に関する。境界ボリュームは、レンダリングされつつあるシーン全体を表すことができる(1つの好ましい実施形態ではそうである)が、境界ボリュームがシーンの一部だけを表すことも可能である。たとえば、境界ボリュームは、たとえばほこりまたは霧などの光を散乱させる媒体を含む部屋を表すことができる。
【００１５】
境界ボリュームは、任意の所望の適切な形で定義され得る。好ましくは、境界ボリュームは、ワールド空間内で定義される。境界ボリュームは、任意の適切な所望の形をとることができるが、好ましくは、境界ボックス(立方体)の形である。境界ボリュームの他の配置は、もちろん可能である。
【００１６】
境界ボリュームの表面の透明度を表すグラフィックステクスチャは、任意の適切な所望の形をとることができる。特に好ましい実施形態では、そのグラフィックステクスチャは、立方体テクスチャ(立方体マップ)または球テクスチャ(球マップ)など、環境マッピングに使用されるテクスチャの形である。
【００１７】
したがって、好ましい実施形態では、境界ボリュームの表面の透明度を表すテクスチャは、そのテクスチャが包囲するボリューム内の基準位置を囲む表面上の点について、各点の透明度値を示し、記憶するテクスチャを含む。このテクスチャは、好ましくは、テクスチャの基準位置(テクスチャがそれに関して定義される)からのベクトル(方向)に基づいてサンプリングされる。
【００１８】
言い換えると、テクスチャは、そのテクスチャが表すボリューム内の基準位置(点)からのそれぞれの方向の透明度値を好ましくは記憶し、そのテクスチャ内の基準位置(点)からそのテクスチャが表す表面上の位置への方向を決定することによってサンプリングされる。
【００１９】
テクスチャがそれに関して定義される(かつ、サンプリングされる)テクスチャ内の基準位置(点)は、好ましくは、そのテクスチャが包囲するボリュームの中心にあるが、望まれる場合には、他の配置がもちろん可能である。
【００２０】
境界ボリュームの表面の透明度を表すテクスチャは、好ましくは、シーンの境界ボリュームに対応するように構成される。したがって、たとえば、境界ボリュームが立方体の形である場合には、テクスチャは、好ましくは立方体テクスチャ(立方体マップ)の形である。好ましい実施形態では、テクスチャは、立方体テクスチャ(立方体マップ)である。
【００２１】
対応して、テクスチャは、好ましくは、テクスチャがそれと共に使用される境界ボリュームの予想されるサイズに適切な解像度を有する(これは、必須ではなく、テクスチャは、必要な場合に、たとえば使用のためにスケーリングされ得る)。
【００２２】
テクスチャは、そのテクスチャがそれに関して定義されるボリューム内の基準点からの関連する方向でのシーン内の境界ボリュームの表面の透明度を示す透明度値(アルファ値)を記憶しなければならず、好ましくはこれを記憶する。したがって、たとえば、境界ボリューム表面が、所与の方向で不透明である場合に、基準点からその方向のテクスチャ透明度(アルファ)値には、表面がその方向で不透明であることを示す値(たとえば、「1」)がセットされなければならない。対応して、表面が完全に透明である基準点からの方向に関して、完全な透明を示す透明度(アルファ)値(たとえば、「0」)が、テクスチャ内に記憶されなければならない。半透明の表面領域に関して、半透明を示す透明度(アルファ)値すなわち、「0」と「1」との間を使用することができる。この形で、テクスチャを使用して、完全に透明から完全に不透明までの透明度の全範囲を表すことができる(テクスチャ内のアルファ値は、当業者によって了解されるように、本質的に、光源からのどれほどの量の光が、問題の点において(その方向から)表面によって透過されるのか(光強度)を表す)。
【００２３】
テクスチャは、透明度値だけを記憶することができる(すなわち、単一の透明度(アルファ)チャネルだけを記憶する単一チャネルテクスチャとすることができる)。代替案では、テクスチャは、カラーチャネルなどの他のデータチャネルをも記憶することができる(たとえば、RGBαテクスチャとすることができる(好ましい実施形態では、これが行われる))。この場合に、不透明度(アルファ)データチャネルを使用して、異なる目的に使用される環境テクスチャを記憶することができる。たとえば、RGBαテクスチャを使用して、アルファチャネル内に本発明の形で使用されるテクスチャを記憶し、RGBカラーチャネル内に他の目的のための第2のテクスチャを記憶することもできる。これは、同一のテクスチャ、たとえば立方体テクスチャを複数の目的に使用することを可能にする。
【００２４】
これは、それに加えまたはその代わりに、別の(別々の)カラー(たとえば、RGB)テクスチャをこれらの目的のために生成し、使用することを可能にする。
【００２５】
テクスチャがさらに(または他のテクスチャが)カラーチャネルを含む好ましい実施形態では、これらのカラーチャネルは、たとえばライトシャフト効果を計算する時に使用されるさらなるカラーパラメータとして、本発明の方法でも使用される。これは、境界ボリューム内のライトシャフトの効果を計算する時に、着色された(色付きの)半透明表面(たとえば、ステンドグラスの窓)の効果をシミュレートし、考慮に入れることを可能にする。
【００２６】
したがって、好ましい実施形態では、テクスチャ(または他のテクスチャ)は、そのテクスチャがそれに関して定義されるボリューム内の基準点からの関連する方向のシーン内の境界ボリュームの表面の色を示すカラー(RGB)値を記憶する。
【００２７】
テクスチャは、好ましくは、テクスチャの基準位置の視点からの(テクスチャ基準位置からの)境界ボリュームの表面のイメージをレンダリングすることによって生成される。生成されるテクスチャは、たとえばイメージをレンダリングする時にそのテクスチャを使用することが望まれる時に、グラフィックス処理ユニットによる将来の使用のために、たとえばDVDなどの適当なポータブル記憶媒体上またはメモリ内に記憶され得る。
【００２８】
好ましい実施形態では、テクスチャは、ミップマップのセット(すなわち、詳細(解像度)の異なるレベルをそれぞれが有するオリジナルテクスチャの複数のバージョンが使用のために記憶されるところ)として記憶される(符号化される)。
【００２９】
テクスチャは、「リアルタイム」に(ランタイムに)すなわち、必要とされる時に必要に応じて生成され得るが、より好ましくは、テクスチャは、その必要の前に、たとえば「オフラインで」生成される。
【００３０】
好ましい実施形態では、テクスチャは、生成された後に(使用のために記憶される前に)、好ましくは、1つまたは複数の畳み込みフィルタを適用されるなど、1つまたは複数のフィルタリングプロセスなどの1つまたは複数の処理動作を受ける。好ましくは、テクスチャは、ブラー、輝度処理、コントラスト処理(たとえば、エンハンスメント)、鮮明化などのうちの1つまたは複数を受ける。特に好ましい実施形態では、テクスチャは、1つまたは複数の非リアルタイム最適化を受ける(上で議論したように、本発明の特定の利点は、透明度値を表すのに使用されるテクスチャが、事実上「静的な」テクスチャなので、リアルタイムで生成される必要がなく、したがって、結果的に、望まれる場合に1つまたは複数の非リアルタイム最適化を受けることができることである)。
【００３１】
特に好ましい実施形態では、テクスチャは、記憶される前に圧縮もされる。任意の適切なテクスチャ圧縮プロセスを、これに使用することができる。
【００３２】
特に好ましい実施形態では、テクスチャの生成と同様に、そのテクスチャが表す(これと共に使用される)境界ボリュームも、生成され、記憶される。この境界ボリュームは、テクスチャがそれに関連して使用される、レンダリングされるシーンのすべてまたは一部のボリュームを表さなければならず、好ましくはこれを表す。
【００３３】
好ましくは、テクスチャがそれに関連して使用される境界ボリュームを定義するデータは、生成され、テクスチャに関連して(関連付けられて)記憶される。境界ボリュームは、好ましくはワールド空間内で定義され、好ましくは、透明度を示すテクスチャにアラインされる。やはり、この境界ボリューム情報は、望まれる場合に、圧縮などの任意の所望の後処理動作を受けることができる。
【００３４】
上で議論したように、透明度を示すテクスチャは、好ましくは、テクスチャの基準位置の視点から境界ボリュームの表面を表すイメージをレンダリングすることによって生成される。これは好ましくは、境界ボリューム上のそれぞれの位置について(テクスチャの基準位置からの関連する方向で)表面(表面を表すイメージ)上のそれぞれの位置をサンプリングすることによって行われる。このプロセスでは、境界ボリュームが、通常は定義される実際のシーン(たとえば、部屋)の近似になるので、境界ボリュームは、定義されるシーン(たとえば、部屋)の表面に正確には一致しない可能性がある(たとえば、部屋のたとえば壁が不均一であるか、表面粗さを有する可能性がある場合)。テクスチャを生成する時にこれを可能にするために、テクスチャについて(テクセルごとに)サンプリングされる表面の点は、境界ボリュームに、その外部に、またはその内部にあることを許され得、好ましくはこれを許される(サンプリング点が境界ボリュームの壁上にあることに制約されるのではなく)。これは、境界ボリュームがシーン幾何に正確には一致しない場合にテクスチャ内に穴が導入されるのを防ぐ。サンプリング点が境界ボリュームから離れれば離れるほど、テクスチャを使用する時、特にローカル補正(下で説明する)を行う時に、より大きい誤差が導入されるので、表面は、好ましくは、できる限り境界ボリューム上の対応する位置の近くの位置でサンプリングされる(テクスチャの基準位置からの関連する方向で)。したがって、境界ボリュームは、テクスチャが、境界ボリュームの壁の近く(できる限り近く)のサンプルを使用して生成され得るように、シーン(シーンを定義する表面)とよく(好ましくはできる限りよく)一致するように好ましくは定義される。
【００３５】
好ましい実施形態では、複数のテクスチャおよび好ましくは対応する境界ボリュームが、たとえば、テクスチャおよびシーンが関係するアプリケーション、たとえばゲームを実行する時に表示されると予想されるそれぞれのシーンについて、生成され、記憶される。たとえば、ゲームが、外部光源を有する可能性がある、部屋などの複数のシーンを含む場合に、好ましい実施形態では、それぞれの透明度を示すテクスチャおよび境界ボリュームは、ゲームがプレイされる時に表示され始める可能性があるシーン(たとえば、部屋)ごとに生成される。その後、テクスチャおよび境界ボリュームは、たとえばゲームが実行されつつある時の使用のために残りのゲームデータと共に、記憶され得る。
【００３６】
上で議論したように、本発明では、シーンの視点(カメラ)位置から見られる(すなわち、ライトシャフトを通じて見られる)第1のサンプリング点を表すのに使用される色を決定するために、透明度パラメータが、第1のサンプリング点からシーンの視点位置へのベクトルに沿った複数の「第2の」サンプリング点のそれぞれについて決定される。すなわち、第1のサンプリング点について、複数の透明度パラメータが、好ましくは、たとえば「レイマーチング」プロセスで、第1のサンプリング点から視点へのベクトルに沿った(その上の)複数の第2のサンプリング点のそれぞれについてそれぞれ決定される。
【００３７】
第1のサンプリング点からシーンの視点位置へのベクトルは、好ましくは、ワールド空間内で定義される。了解されるように、このベクトルは、シーンの視点位置から第1のサンプリング点へのベクトルと同等である。
【００３８】
第1のサンプリング点は、たとえば、複数の第1の(スクリーン空間)サンプリング点(フラグメント)の配列の、すなわち、それに関してレンダリングプロセス内で(出力)色を決定することが要求される(すなわち、ライトシャフトを通じて見られる)、スクリーン空間サンプリング点(たとえば、フラグメント)である必要がある(好ましくは、そうである)。
【００３９】
第2のサンプリング点は、第1のサンプリング点から視点へのベクトルに沿った(その上の)、すなわち、「レイマーチング」プロセスで使用される、「中間」サンプリング点のセットである必要がある(好ましくは、そうである)。
【００４０】
その透明度パラメータが決定される第2のサンプリング点は、サンプリング点から視点へのベクトルに沿った(その上の)サンプリング点の任意の適切な所望のセットを含むことができる。使用される第2のサンプリング点の個数は、望み通りに選択され得る。了解されるように、より多くの第2のサンプリング点の使用は、ライトシャフト計算についてより正確な結果をもたらすが、より多くのリソースを要求するという犠牲を伴う(逆も同様である)。
【００４１】
同等に、サンプリング点から視点へのベクトルに沿った(その上の)第2のサンプリング点の位置は、望み通りに選択され得る。第2のサンプリング点は、好ましくは、規則的な(等距離の)インターバルで配置され、好ましくは、第1のサンプリング点から視点へのベクトルに沿って広がるが、不規則なインターバルを使用することも可能である。ライトシャフトが存在することが既知であるか予測される領域内で相対的により多数の第2のサンプリング点を使用すること(および、他の領域内で相対的により少数または0個の第2のサンプリング点を使用すること)も可能である。
【００４２】
複数の第2のサンプリング点の複数の透明度パラメータは、任意の適切な所望の順序で決定され得る。たとえば、これらは、1つずつ、たとえば、サンプリング点から視点へのベクトルの一端から他端へ漸進的に(たとえば、サンプリング点から視点へまたは視点からサンプリング点へ)決定され得、かつ/または透明度パラメータの一部またはすべてが、並列に決定され得る。
【００４３】
下でより詳細に説明するように、本発明の技法は、好ましくは、第1のサンプリング点の配列の複数(好ましくはすべて)の第1のサンプリング点について実行される(たとえば、それぞれの第1のサンプリング点から視点へのベクトルに沿って透明度パラメータを決定することによって)。それぞれのサンプリング点から視点へのベクトルに沿った対応する第2のサンプリング点位置は、第1のサンプリング点の配列の一部またはすべてについて使用され得る。しかし、より好ましくは、これが行われず、それぞれの第1のサンプリング点から視点へのベクトルに沿った(その上の)第2のサンプリング点位置は、好ましくは、それぞれの(隣接する)第1の(スクリーン空間)サンプリング点について異なる(対応しない)。たとえば、それぞれの(隣接する)第1のサンプリング点から視点へのベクトルに沿った(わずかに)異なる位置(距離)から「レイマーチング」プロセスを開始し、その後、たとえば、「レイマーチング」プロセス内で一定の第2のサンプリング点間隔を使用する、すなわち、インターリーブされたサンプリングを使用することが、可能である(1つの好ましい実施形態では、これが行われる)。当業者によって了解されるように、これは、レイマーチングプロセスの量子化された性質に起因する、隣接する第1のサンプリング点を横切る「バンディング」アーティファクトを回避することができる。
【００４４】
他の配置も、もちろん可能である。
【００４５】
上で議論したように、本発明では、第2のサンプリング点ごとに、透明度パラメータが、透明度を表すグラフィックステクスチャをサンプリングすることによって決定される。透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルは、任意の適切な所望の形で決定され得る。
【００４６】
好ましい実施形態では、透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルは、まず、第2のサンプリング点から光源へのベクトルによって交差される境界ボリューム上の位置を決定することと、次に、その交差位置を使用して、グラフィックステクスチャをサンプリングするのに使用されるベクトルを決定することとによって決定される。
【００４７】
この実施形態では、第2のサンプリング点(その透明度パラメータが要求される)から光源(その透明度パラメータが決定されようとしている)へのベクトルによって交差される境界ボリューム上の位置は、望み通りに決定され得る。好ましい実施形態では、第2のサンプリング点から(ワールド空間内の)光源位置へのベクトルが、決定され、次に、第2のサンプリング点から光源までのそのベクトルの境界ボリューム上の交点が、決定される。
【００４８】
次に、透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルは、任意の適切な所望の形で交差位置を使用して決定され得る。たとえば、第2のサンプリング位置から交点へのベクトルが、グラフィックステクスチャをサンプリングするのに使用されるベクトルとして単純に使用され得る。
【００４９】
しかし、本出願人は、グラフィックステクスチャが、そのグラフィックステクスチャが対応するボリューム内の基準位置(たとえば、中心点)を参照して定義される場合に、関心を持たれている第2のサンプリング位置から境界ボリューム上の交点へのベクトルを単純に使用することは、必ずしもグラフィックステクスチャを正しくサンプリングしないことを認識した。したがって、好ましい実施形態では、サンプリングプロセスは、テクスチャが、検討されつつある第2のサンプリング位置に対応しない可能性がある基準点を参照して定義されるという事実を考慮に入れる(これを補償する)ことを含む。
【００５０】
この補償は、望み通りに実行され得るが、好ましい実施形態では、テクスチャがそれに関して定義される基準位置から境界ボリューム上の決定された交点へのベクトルが、決定され、その後、そのベクトルが、透明度を示すテクスチャをサンプリングするのに使用される。これは、第2のサンプリング位置が、テクスチャがそれに関して定義される基準位置に対応しない場合であっても、テクスチャ内の正しい位置がサンプリングされることを保証する。これは、事実上、検討されつつある第2のサンプリング位置から光源へのベクトルに「ローカル」補正を適用する。
【００５１】
言い換えると、境界ボリューム上の決定される交差位置は、テクスチャ基準位置(たとえば、中心点)から決定された交点へのベクトルを決定するのに使用され、次に、基準位置から決定された交点までのそのベクトルが、透明度を示すテクスチャをサンプリングするのに使用される。
【００５２】
これらのプロセス(グラフィックステクスチャをサンプリングするのに使用されるベクトルを決定するための)は、グラフィックス処理ユニットの任意の所望の適切なステージまたはコンポーネントによって実行され得る。好ましい実施形態では、これらは、グラフィックス処理ユニットのフラグメントシェーディングステージ(フラグメントシェーダ)によって、好ましくは適当なフラグメントシェーディングプログラムを実行することによって実行される。
【００５３】
グラフィックステクスチャをサンプリングするのに使用されるベクトルを決定するプロセスの少なくとも一部を、グラフィックス処理ユニットの頂点シェーディングステージ(頂点シェーダ)によって、好ましくは適当な頂点シェーディングプログラムを実行することによって実行することも可能である(1つの好ましい実施形態では、これが行われる)。
【００５４】
好ましい実施形態では、テクスチャサンプリングベクトルのセットが、決定され、次に、透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルが、テクスチャサンプリングベクトルのセットを使用して補間することによって決定される。
【００５５】
テクスチャサンプリングベクトルのセットは、好ましくは、限られた個数の(「第3の」)好ましくは選択されたサンプリング点について決定される複数のテクスチャサンプリングベクトルを含み、各テクスチャサンプリングベクトルは、好ましくは、その(第3の)サンプリング点についてグラフィックステクスチャをサンプリングするのに使用されるベクトル(たとえば、「ローカルに補正された」ベクトル)である。したがって、この実施形態では、事実上、制限された個数のテクスチャサンプリングベクトルが、決定され、次に、(たとえばハードウェア)補間プロセスが、問題の第2の(好ましくは各)サンプリング点について所望のテクスチャサンプリングベクトル(グラフィックステクスチャをサンプリングするのに使用されるベクトル)を入手するのに使用される。これは、特に第1のサンプリング点の相対的に多数の透明度パラメータ(相対的に多数の第2のサンプリング点について)を決定することが望まれる場合に、問題の第1のサンプリング点の色を決定するために要求される処理の全体的な量を減らすことができる。
【００５６】
テクスチャサンプリングベクトルのセット内の各ベクトルは、好ましくは、問題の(第3の)サンプリング点から光源へのベクトルによって交差される境界ボリューム上の位置を決定することと、次に、交差位置を使用して、グラフィックステクスチャをサンプリングするのに使用されるベクトルを決定することとによって決定される。好ましくは、第3のサンプリング点から光源位置へのベクトル(ワールド空間内)が、決定され、次に、第3のサンプリング点から光源までのそのベクトルの境界ボリューム上の交点が、決定される。
【００５７】
第3のサンプリング位置から交点へのベクトルは、テクスチャサンプリングベクトルとして単純に使用され得るが、より好ましくは、テクスチャサンプリングベクトルのセット内の各ベクトルが、「ローカルに補正された」そのようなベクトルである。したがって、テクスチャサンプリングベクトルのセット内の各テクスチャサンプリングベクトルは、好ましくは、テクスチャがそれに関して定義される基準位置から、第3のサンプリング点から光源へのベクトル(決定された交点が、好ましくは、このベクトルを決定するのに使用される)の境界ボリューム上の交点へのベクトルである。
【００５８】
そのテクスチャサンプリングベクトルがテクスチャサンプリングベクトルのセットに関して決定される第3のサンプリング点は、望み通りに選択され得る。たとえば、使用される第3のサンプリング点の個数は、望み通りに選択され得る。了解されるように、より多くの第3のサンプリング点を使用することは、補間プロセスに関してより正確な結果をもたらすが、テクスチャサンプリングベクトルのセットを判定するためにより多くのリソースを必要とするという犠牲を伴う(逆も同様である)。
【００５９】
1つの好ましい実施形態では、第3のサンプリング点は、サンプリング点から視点(カメラ)へのベクトルに沿った(その上の)サンプリング点を含む。したがって、第3のサンプリング点は、第2のサンプリング点のサブセットを含むことができる。別の好ましい実施形態では、複数の第3のサンプリング点は、検討されつつある第1のサンプリング点が関係するプリミティブの頂点から視点(カメラ)位置へのベクトルに沿った(その上の)サンプリング点を含むことができる。
【００６０】
第3のサンプリング点は、好ましくは、サンプリング点の相対的にまばらな(たとえば、第2のサンプリング点のセットと比較した時に)選択物であり、好ましくは、規則的な形で離隔される。第3のサンプリング点は、好ましくは、規則的なインターバルで配置され、好ましくは、問題のベクトルに沿って広がるが、不規則なインターバルを使用することも可能である。ライトシャフトが存在することが既知であるか期待される領域内で相対的により多数の第3のサンプリング点を使用すること(および、他の領域内で相対的により少数または0個の第3のサンプリング点を使用すること)も可能である。
【００６１】
これらの実施形態では、透明度を表すグラフィックステクスチャ(所与の第2のサンプリング点に関して)をサンプリングするのに使用されるベクトルは、好ましくは、テクスチャサンプリングベクトルのセットからの複数のテクスチャサンプリングベクトルを使用する適当な(たとえばハードウェア)補間によって決定される。
【００６２】
第3のサンプリング点が、第1のサンプリング点から視点(カメラ)へのベクトルに沿った(その上の)サンプリング点を含む場合に、所与の第2のサンプリング点に関して透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルは、問題の第2のサンプリング点のいずれかの側にある(これに最も近い)第3のサンプリング点に関するテクスチャサンプリングベクトルのセットのテクスチャサンプリングベクトルを使用する適当な補間によって決定されなければならない(好ましくはこれによって決定される)。複数の第3のサンプリング点が、検討されつつある第1のサンプリング点が関係するプリミティブの頂点から視点(カメラ)位置へのベクトルに沿った(その上の)サンプリング点を含む場合には、問題の第2のサンプリング点に関して透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定するために、さらに頂点補間が実行されなければならない(好ましくは実行される)。
【００６３】
これらの実施形態では、本発明の処理の一部またはすべてがそれに関して実行される第1のサンプリング点の個数を減らすことが可能である(好ましい実施形態では、これが行われる)。すなわち、一実施形態では、本発明の処理が、第1のサンプリング点のすべてより少数について実行される。
【００６４】
好ましいそのような実施形態では、テクスチャサンプリングベクトルのセットのテクスチャサンプリングベクトルのうちの少なくともいくつか、好ましくはそれぞれについて、たとえばテクスチャサンプリングベクトルを使用してグラフィックステクスチャをサンプリングすることによって(下で説明するように)、光源からの光が対応する第3のサンプリング点に当たるかどうかが決定される。
【００６５】
光源からの光が、特定の第1のサンプリング点から視点へのベクトルのすべての第3のサンプリング点に当たらないと判定される場合には、光源からの光が、そのベクトル上のどの(第2の)サンプリング点にも当たらないと仮定することができる。
【００６６】
同様に、光源からの光が、特定のプリミティブに関する頂点から視点へのベクトルのすべての第3のサンプリング点に当たらないと判定される場合には、光源からの光が、そのプリミティブに関するどの(第2の)サンプリング点にも当たらないと仮定することができる。したがって、この場合には、問題のプリミティブについて、本発明によるさらなる処理を実行する必要はない。
【００６７】
したがって、好ましい実施形態では、テクスチャサンプリングベクトルのセットの少なくともいくつかの(好ましくは各)テクスチャサンプリングベクトルについて、光源からの光が、対応する第3のサンプリング点に当たるかどうかが判定され、次に、これらの判定に基づいて、さらなる処理を省略できるかどうかが判定される。
【００６８】
事実上、(「第3の」)サンプリング点が光源によって照らされるかどうかに関する「粗」チェックは、当初に実行され(たとえば、頂点シェーダ内で)、次に、この粗チェックは、第1のサンプリング点を表すのに使用される色の後続の「微細」判定に必要な処理(たとえば、フラグメントシェーダ内での)を減らす(適当な場合に)のに使用される。
【００６９】
これらの実施形態では、その透明度係数が判定される(したがって、そのテクスチャサンプリングベクトルが決定され、テクスチャがサンプリングされるなど)第1のサンプリング点から視点へのベクトル上の第2のサンプリング点の個数を減らすことも可能であり、好ましい実施形態では、これが行われる。すなわち、一実施形態では、透明度パラメータは、第1のサンプリング点から視点へのベクトル上の第2のサンプリング点のすべてより少数について決定される。
【００７０】
好ましいそのような実施形態では、テクスチャサンプリングベクトルのセットの少なくともいくつかの、好ましくはそれぞれの、テクスチャサンプリングベクトルについて、たとえばテクスチャサンプリングベクトルを使用してグラフィックステクスチャをサンプリングすることによって(下で説明するように)、光源からの光が対応する第3のサンプリング点に当たるかどうかが判定される。光源からの光が、隣接する第3のサンプリング点(または第3のサンプリング点の隣接するセット)に当たらないと判定される場合には、光源からの光が、隣接する第3のサンプリング点または第3のサンプリング点のセットの間のどの(第2の)サンプリング点にも当たらないと仮定することができる。したがって、この場合には、これらの第2のサンプリング点について透明度パラメータを決定する必要はなく、その代わりに、光が問題の第2のサンプリング点に当たらないことを示す透明度パラメータ(たとえば、「1」)が使用され得る。
【００７１】
したがって、好ましい実施形態では、テクスチャサンプリングベクトルのセットの少なくともいくつかの(好ましくは各)テクスチャサンプリングベクトルについて、光源からの光が対応する第3のサンプリング点に当たるかどうかが判定され、次に、これらの判定に基づいて、透明度パラメータ判定プロセスが、視点から第1のサンプリング点へのベクトル上の1つまたは複数の第2のサンプリング点について省略され得るかどうかが判定される。
【００７２】
事実上、(「第3の」)サンプリング点が光源によって照らされるかどうかに関する「粗」チェックが、当初に実行され(たとえば、頂点シェーダ内で)、次に、この粗チェックは、(「第2の」)サンプリング点が光源によって照らされるかどうかの後続の「微細」判定(すなわち、複数の第2のサンプリング点の透明度パラメータを決定するステップ)のために要求される処理(たとえば、フラグメントシェーダ内での)を減らすのに使用される。
【００７３】
テクスチャサンプリングベクトルのセットを決定する処理および補間によって透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定する処理は、グラフィックス処理ユニットの任意の所望の適切なステージまたはコンポーネントによって実行され得る。好ましい実施形態では、テクスチャサンプリングベクトルのセットは、グラフィックス処理ユニットの頂点シェーディングステージ(頂点シェーダ)によって、好ましくは適当な頂点シェーディングプログラムを実行することによって決定される。対応して、好ましい実施形態では、補間プロセスは、グラフィックス処理ユニットのフラグメントシェーディングステージ(フラグメントシェーダ)によって、好ましくは適当なフラグメントシェーディングプログラムを実行することによって実行される。
【００７４】
望まれる場合に、他の配置も可能である。
【００７５】
透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルが、交差位置を使用して、補間によって、または他の形のいずれによって決定されるにせよ、透明度を示すテクスチャは、所望の透明度値を取り出すために、決定されたテクスチャサンプリングベクトルを使用して、適当にサンプリングされなければならない。
【００７６】
透明度を示すテクスチャは、任意の所望の適切な形でサンプリングされ得る。たとえば、バイリニアフィルタリングなどの適当なフィルタリング(補間)プロセスが、望まれる場合に、テクスチャをサンプリングする時に使用され得る。同様に、透明度を示すテクスチャが、ミップマップのセットとして提供される場合に、サンプリングプロセスは、好ましくは、たとえば(好ましくは)トライリニアフィルタリングを使用して、サンプリングされたテクスチャ値を提供するためにミップマップをフィルタリングする(補間する)ように構成される。
【００７７】
テクスチャが、ミップマップのセットの形である場合に、サンプリングプロセスは、好ましくは、透明度を示すテクスチャがそこでサンプリングされなければならない1つまたは複数のミップマップレベル(詳細のレベル)を決定すること(および、その後に、透明度を示すテクスチャについてそのように決定されたミップマップレベルをサンプリングすること)をも含む。
【００７８】
使用すべきミップマップレベル(詳細のレベル)は、好ましくは、検討されつつある第2のサンプリング点(からのベクトルの長さ)から、そのサンプリング点から光源へのベクトルの境界ボリューム上の交差位置までの距離に基づいて決定される。
【００７９】
他の配置も、もちろん可能である。
【００８０】
これらのプロセスは、やはり、グラフィックス処理ユニットの任意の所望の適切なステージまたはコンポーネントによって実行され得る。好ましい実施形態では、これらは、グラフィックス処理ユニットのフラグメントシェーディングステージ(フラグメントシェーダ)によって、好ましくは適当なフラグメントシェーディングプログラムを実行することによって実行される。これらは、それに加えてまたはその代わりに、望まれる場合に、少なくとも部分的に、グラフィックス処理ユニットの適当なテクスチャマッピングステージによって実行され得る。
【００８１】
複数の第2のサンプリング点のそれぞれの複数の透明度パラメータ値は、任意の適切な所望の形で、シーンの視点位置から見られたサンプリング点を表すのに使用される色を決定するのに使用され得る。
【００８２】
これに関して、本出願人は、決定された透明度パラメータのそれぞれが、光源から問題の第2のサンプリング点に当たる光の量を表し(たとえば、これに比例し)、したがって、透明度パラメータのそれぞれが、問題の第2のサンプリング点で散乱され、したがってシーンの視点(カメラ)位置から可視の光の量に関することを認識した。さらに、第1のサンプリング点から視点へのベクトルに沿って複数のそのような透明度パラメータを決定することによって、たとえば視点(カメラ)位置および/または光源位置にかかわりなく(具体的には、視点(カメラ)位置がライトシャフトに近いかその内部にある場合であっても)、視点(カメラ)位置から見られるライトシャフトの効果の「真の」ボリュメトリック(現実的な)表現が提供され得る(好ましくは提供される)。
【００８３】
したがって、好ましい実施形態によれば、決定された透明度パラメータが、光源からの光がそれに当たることを示す第2のサンプリング点ごとに(たとえば、透明度パラメータ≠1ごとに)、色「寄与」(視点位置から見られた問題の第1のサンプリング点の最終的な色への)が、決定される。
【００８４】
複数の第2のサンプリング点の色寄与のそれぞれは、好ましくは、たとえば、オプションでたとえば第1のサンプリング点の(従来の)レンダリング計算で決定され得る問題の第1のサンプリング点の1つまたは複数の他の色と一緒に、複数の色寄与を組み合わせる(合計する)ことによって、問題の第1のサンプリング点を表すのに使用される色(視点位置から見られた)を決定する際に使用される。これは、任意の適切な所望の形で、たとえば決定された色を一緒にブレンディングすることによって、行われ得る。
【００８５】
複数の寄与のそれぞれは、問題の第1のサンプリング点の色に(別々に)影響するのに使用され得、あるいは、複数の寄与は、オプションで問題のサンプリング点の1つまたは複数の他の色と組み合わされ(ブレンディングされ)得る、問題の第1のサンプリング点の「最終的な」ライトシャフト色寄与を決定するために、組み合わされ(たとえば、合計され)得る。
【００８６】
色寄与のそれぞれは、任意の適切な所望の形で、たとえば、任意の適切な所望のレンダ式を使用して、決定され得る。
【００８７】
1つの好ましい実施形態によれば、決定された透明度パラメータが、光源からの光が当たることを示す第2のサンプリング点ごとに、一定の色寄与が、提供され、使用される。これは、問題の第1のサンプリング点に対するライトシャフトの効果を決定する、特に単純で効率的な技法を表す。一定の色寄与は、望み通りに選択され得、たとえば光源の特性(たとえば、色、強度、位置など)に依存することができる。
【００８８】
別の好ましい実施形態によれば、各色寄与は、透明度パラメータの値により直接に依存するように配置され得る。各第2のサンプリング点の色寄与は、たとえば、決定された透明度パラメータの値に(直接に)依存する(比例する)ことができる。たとえば、各第2のサンプリング点の決定された透明度(アルファ)パラメータは、乗算係数としてまたはこれを導出するのに使用され(かつ、たとえば光源の色を変更するのに使用され)得る。
【００８９】
グラフィックステクスチャが、1つまたは複数のカラーチャネルをも含む場合(または、別のカラーテクスチャが提供される場合)(上で説明したように)には、第2のサンプリング点のテクスチャサンプリングベクトルは、光源のカラーパラメータを決定するためにグラフィックステクスチャをサンプリングするのにも使用され得る(一実施形態においては使用される)。この場合に、決定されたカラーパラメータは、好ましくは、問題の第2のサンプリング点の色寄与を決定する際に使用される。これは、境界ボリューム内のライトシャフトの効果を計算する時に、着色された(色付きの)半透明表面の効果をシミュレートし、考慮に入れることを可能にする。
【００９０】
たとえば境界ボリューム内の異なる位置での、異なる強さの光散乱、吸収、減衰などの効果を考慮に入れることも可能である(一実施形態では、これが行われる)。これは、たとえば、境界ボリューム内の変化する密度を有する霧の効果をシミュレートするのに使用され得る。
【００９１】
好ましいそのような実施形態では、少なくともいくつかの、好ましくは各、第2のサンプリング点での光散乱、吸収、または減衰の強さを示す光散乱、吸収、または減衰のパラメータが、決定され、各第2のサンプリング点の(たとえば一定のまたは透明度パラメータ依存の)決定された色寄与は、好ましくは、決定された光散乱パラメータによって、たとえば乗算係数としてまたはこれを導出するのに光散乱、吸収、または減衰のパラメータを使用することによって、変更される。各光散乱、吸収、または減衰のパラメータは、たとえば境界ボリュームについて定義された媒体「密度」関数から決定され得る。
【００９２】
それに加えてまたはその代わりに、好ましい実施形態では、ライトシャフト内の不均一性の効果が、たとえばノイズテクスチャ(すなわち、透明度(アルファ)値のランダム配列を含むテクスチャ)を使用して、シミュレートされ得る。ノイズテクスチャは、透明度を示すグラフィックステクスチャの透明領域および/または半透明領域についてサンプリングされ得、サンプリングされた値は、たとえば、1つまたは複数の第2のサンプリング点の決定された色寄与を変更するのに使用され得る。
【００９３】
したがって、好ましい実施形態では、ノイズテクスチャが、サンプリングされ、サンプリングされたノイズテクスチャ値は、シーンの視点位置から見られた第1のサンプリング点を表すのに使用される色を判定する際に使用される。
【００９４】
ノイズテクスチャは、透明度を示すグラフィックステクスチャに統合され(その一部とされ)得、または、別々のテクスチャとして提供され得る。
【００９５】
1つの好ましい実施形態では、ノイズテクスチャは、動的とされ得るすなわち、時間に伴って変化することができる(アニメートされ得る)。これは、たとえば、境界ボリューム内で移動するオブジェクト(たとえば、ほこりなどの粒子)および/または境界ボリュームの外部で移動するオブジェクト(たとえば、群葉など)の効果をシミュレートするのに使用され得る。
【００９６】
シーンの視点位置から見られたサンプリング点を表すのに使用される色を決定するこれらのプロセスは、グラフィックス処理ユニットの任意の所望の適切なステージまたはコンポーネントによって実行され得る。好ましい実施形態では、これらは、グラフィックス処理ユニットのレンダラによって、好ましくはグラフィックス処理ユニットのフラグメントシェーディングステージによって(やはり、好ましくは、所望のレンダリング計算を実行する適当なフラグメントシェーディングプログラムを実行することによって)実行される。
【００９７】
上で説明したように、好ましい実施形態では、所与の第1の(スクリーン空間)サンプリング点のライトシャフト色寄与は、その第1のサンプリング点を表すための(最終的な)色を決定する他の(たとえば、従来の)レンダリングプロセスによって、その第1のサンプリング点について決定された1つまたは複数の色と組み合わされ(ブレンディングされ)得る(好ましくは、される)。
【００９８】
たとえば、他の第1のサンプリング点(たとえば、フラグメント)を表すための(最終的な)色を決定するために(他の(たとえば従来の)レンダリングプロセスによって)他の第1のサンプリング点(たとえば、フラグメント)について決定された1つまたは複数の色とライトシャフト色寄与を組み合わせることによって、1つまたは複数の他の第1の(スクリーン空間)サンプリング点(たとえば、フラグメント)に関して所与の第1の(スクリーン空間)サンプリング点のライトシャフト色寄与を使用することも可能である。
【００９９】
好ましい実施形態では、ライトシャフト色寄与(透明度パラメータから決定される)は、相対的に低い解像度で(たとえば、第1のサンプリング点(たとえば、フラグメント)の配列について実行される(たとえば従来の)レンダリングプロセスと比較した時に)決定される(評価される)。そのように決定されたライトシャフト色寄与は、好ましくはその後にスケールアップされ、好ましくはブラーリングされ(たとえば、適当なハードウェアを使用して)、好ましくは、シーンについて実行された他の(たとえば、従来の)レンダリングプロセスの結果と組み合わされる(ブレンディングされる)。これは、ライトシャフトの効果を決定するのに必要なリソースの量をさらに減らすことができる。
【０１００】
したがって、好ましい実施形態では、複数の第2のサンプリング点のそれぞれの決定された透明度パラメータ値は、シーンの視点位置から見られた第1のサンプリング点を表すのに使用される色に対する色寄与を決定するのに使用され、複数のそのような色寄与が、シーンについて決定され、シーンの視点位置から見られた境界ボリューム上または境界ボリューム内の複数の第1のサンプリング点のそれぞれを表すのにそれぞれ使用される複数の色が、シーンについて決定され、色寄与は、複数の第1のサンプリング点のそれぞれを表すのに使用される色より低い解像度で決定される。
【０１０１】
上記のプロセスのいずれかまたはすべてが、サンプリング点について個別に実行され得、あるいは、それらの一部またはすべてが、複数のサンプリング点のセットについて実行され得る(これは、検討されつつあるセット内のサンプリング点についてプロセスを実行するという効果を有する)。たとえば、グラフィックス処理ユニットが、複数のサンプリング位置のセットをそれぞれが表すフラグメントに作用する場合に、本発明のプロセスは、フラグメントが表すサンプリング点ごとに個別にではなく、フラグメントごとに実行され得る(好ましい実施形態では、これが、行われることである)。この場合には、したがって、たとえば、フラグメントがそれをレンダリングするのに使用されつつあるサンプリング点ごとに使用される、フラグメントについて決定された単一の色がある。
【０１０２】
上から了解されるように、本発明の利点は、本技法が、境界ボリュームの外部にある光源の位置にかかわりなく、ライトシャフトを計算するのに使用され得ることである。さらに、これは、境界ボリュームの表面の透明度を表す同一のグラフィックステクスチャが、異なる外部光源について使用され得ることを意味する。
【０１０３】
したがって、本発明は、境界ボリュームの外部にある任意の個数のライトに拡張され得る。この場合に、光源についてサンプリング点の色寄与を決定するための本発明のプロセスは、境界ボリューム内のライトシャフトを生じさせることのできる外部光源ごとに繰り返されなければならず、好ましくは繰り返される。別々の光源寄与が、好ましくは検討される光源ごとに決定され、別々の光源寄与値は、問題のサンプリング点での光源の全体的効果を決定するために適当に組み合わされる。
【０１０４】
したがって、好ましい実施形態では、本発明のプロセスは、たとえば、境界ボリューム内または境界ボリューム上のサンプリング点について複数の外部光源に起因するライトシャフトの効果を決定するために、境界ボリュームの外部の複数の光源のそれぞれについて(好ましくは、境界ボリュームの外部の複数の光源のすべてについて)繰り返される。複数の外部光源が検討されつつある場合に、好ましくは、本発明の形の動作は、色寄与が光源ごとに別々に決定されるように、光源ごとに別々に実行され、それぞれの別々の光源の結果の値は、サンプリング点に関する複数の光源の全体的な効果を決定するために、適当に組み合わされる。
【０１０５】
本発明が、上では問題の境界ボリューム上または境界ボリューム内の所与の第1のサンプリング点での色の決定を特に参照して説明されたが、本発明の技法が、境界ボリューム上および境界ボリューム内の複数の第1のサンプリング点に関して、好ましくはシーンをレンダリングする時に検討される必要がある境界ボリューム上または境界ボリューム内の各第1のサンプリング点に関して使用され得、好ましくは使用されることも了解される。
【０１０６】
したがって、このプロセスは、好ましくは、検討されつつある境界ボリューム上または境界ボリューム内にあるプリミティブのサンプリング点ごとに、および検討されつつある境界ボリューム上または境界ボリューム内にあるプリミティブごとに、繰り返される。
【０１０７】
同様に、このプロセスは、レンダリングされつつあるシーンのシーケンス内の複数のシーンに関して、たとえば、好ましくは、ライトシャフトを生じさせることのできる1つまたは複数の外部光源を含む、レンダリングされるフレームのシーケンスの各フレームに関して、好ましくは繰り返される。
【０１０８】
上記から、本発明の技法が、レンダリングされるシーンのすべてまたは一部を表す境界ボリュームの外部にある光源からのライトシャフトの効果を決定し、シミュレートすることが望まれる状況に特に適用可能であることが、明白になる。したがって、本発明は、部屋などのシーン内の環境に関するライトシャフトの効果を決定し、シミュレートするのに特に適し、好ましい実施形態ではこれに使用されるが、検討される境界ボリューム内のライトに起因するライトシャフトの決定にはより少なく有用である(好ましくは、これには使用されない)。
【０１０９】
本発明の技法がそれに使用され得ないか使用されないことが好ましい他の光源がある場合には、他の、たとえば既知の、ライトシャフトシミュレーション技法が、これらの光源に関して使用され得る。したがって、好ましい実施形態では、本発明の技法は、ライトシャフトの効果を決定し、シミュレートする1つまたは複数の他の技法と組み合わせて使用され得、好ましくはそのように使用される。したがって、たとえば、シーン境界ボリュームの外部にある光源とシーン境界ボリュームの内部にある光源とを有するシーンの場合には、本発明の技法は、好ましくは外部光源に起因するライトシャフトの効果を決定し、シミュレートするのに使用されるが、異なるライトシャフト決定およびシミュレーション技法が、好ましくは、境界ボリュームの内部にある光源について使用される。この配置は、シーンに影響する各すべての光源について繰り返され得る。
【０１１０】
本発明の技法を、望み通りに、任意の1つまたは複数の他のレンダリング技法と組み合わせることもできる。たとえば、本発明の技法は、影および/または反射の効果などを考慮に入れる技法と組み合わされ得る。
【０１１１】
特に好ましい実施形態では、シーン内でライトシャフトと影および/または反射との両方をレンダリングすることが望まれる場合に、ライトシャフトの効果を考慮に入れるのに使用される(上で説明したように)同一のグラフィックステクスチャ(たとえば、立方体マップ)が、影(シャドウマッピングを実行するため)および/または反射(リフレクションマッピングを実行するため)の効果を考慮に入れるのにも使用される。これは、複雑で高品質のシーンをレンダリングする、特に便利で効率的な技法を表す。
【０１１２】
特に好ましい実施形態では、シーンをレンダリングする時に影の効果を(追加して)考慮に入れるために、境界ボリューム上または境界ボリューム内の少なくとも1つの第1のサンプリング点について、光源によってサンプリング点に落とされる影の量を示す透明度パラメータは、サンプリング点から光源へのベクトルによって交差される境界ボリューム上の位置を決定するステップと、シーン内の境界ボリュームの表面の透明度を表すグラフィックステクスチャをサンプリングするのに使用されるベクトルを決定するのに交差位置を使用するステップと、サンプリング点に関する光源の透明度パラメータ値を決定するのに、グラフィックステクスチャをサンプリングするための決定されたベクトルを使用するステップとによって決定される。当業者によって了解されるように、この実施形態では、同一のグラフィックステクスチャ(立方体マップ)が、影の効果とライトシャフトの効果との両方を決定するのに使用されるので、レンダリングされる影およびライトシャフトは、シーン内で適当にマッチする。
【０１１３】
本発明は、任意の適切な所望のグラフィックス処理システムおよびグラフィックス処理ユニットの中で、これと共に使用され得る。グラフィックス処理ユニットは、好ましくは、グラフィック処理パイプラインを含む。
【０１１４】
本発明は、タイルドレンダラ(tiled renderer)(タイルベースのグラフィックス処理システム)と共に使用するのに特に適する。したがって、好ましい実施形態では、グラフィックス処理ユニットは、タイルベースのグラフィックス処理ユニットである。
【０１１５】
グラフィックス処理ユニットは、好ましくは、少なくとも、処理されるグラフィックスフラグメント(各グラフィックスフラグメントは1つまたは複数の第1のサンプリング位置を関連付けられる)を生成するために入力プリミティブをラスタ化するラスタライザと、出力フラグメントデータを生成するためにラスタライザによって生成されたフラグメントを処理するレンダラとを含む、複数の処理ステージを含む。
【０１１６】
グラフィックス処理ユニットのラスタライザは、好ましくは、表示されるフレームなど、所望のグラフィックス出力のサンプリング点のレンダリングされたグラフィックスデータを生成するために、レンダリングされるグラフィックスフラグメントを生成する。ラスタライザによって生成される各グラフィックスフラグメントは、グラフィックス出力の(「第1の」)サンプリング点のセットを関連付けられ、フラグメントに関連付けられたサンプリング点のセットのサンプリング点のうちの1つまたは複数のレンダリングされたグラフィックスデータを生成するのに使用される。
【０１１７】
ラスタライザは、任意の所望の適切な形でレンダリングのためのフラグメントを生成するように構成され得る。ラスタライザは、好ましくは、たとえばラスタ化されるべきプリミティブを受け取り、(「第1の」)サンプリング点位置のセットに対してこれらのプリミティブをテストし、プリミティブを表すフラグメントをしかるべく生成する。
【０１１８】
レンダラは、フラグメントが表す(カバーされた)(「第1の」)サンプリング点のレンダリングされたフラグメントデータを生成するために、ラスタライザによって生成されたフラグメントを処理しなければならない。これらのレンダリングプロセスは、たとえば、フラグメントシェーディング、ブレンディング、テクスチャマッピングなどを含むことができる。好ましい実施形態では、レンダラは、プログラマブルフラグメントシェーダの形であるか、これを含む。
【０１１９】
グラフィックス処理ユニットは、アーリーデプス(early depth)(またはアーリーデプスおよびステンシル)テスタ、レートデプス(late depth)(またはレートデプスおよびステンシル)テスタ、ブレンダ、タイルバッファ、書き出しユニット、その他など、グラフィックス処理ユニットが含むことのできる任意の他の適切な所望の処理ステージをも含むことができる。
【０１２０】
グラフィックス処理ユニットは、好ましくは、透明度を示すテクスチャ、シーン境界ボリューム、その他などの本明細書で説明されるデータを記憶し、かつ/または本明細書で説明されるプロセスを実行するソフトウェアを記憶する1つまたは複数のメモリおよび/またはメモリデバイスをも含み、かつ/またはこれと通信している。グラフィックス処理ユニットは、ホストマイクロプロセッサ、および/またはグラフィックス処理ユニットによって生成されたデータに基づくイメージを表示するディスプレイと通信しているものともされ得る。
【０１２１】
グラフィックス処理ユニットは、好ましくは、少なくとも、透明度パラメータ決定プロセスのために必要なデータおよび決定された透明度パラメータを記憶するのに使用され得る、(オンチップ)バッファなどのローカルメモリおよび/またはレジスタを含む。存在する場合に、タイルバッファは、望まれる場合に、この目的のために使用され得る。グラフィックス処理ユニットは、好ましくは、望まれる場合に、将来の使用のためにサンプリングされた透明度値をキャッシングすることもできる。
【０１２２】
本発明は、表示のためのフレーム、レンダトゥテクスチャ(render-to-texture)出力、その他など、グラフィックス処理ユニットがそれを生成するのに使用され得るすべての形の出力について使用され得る。
【０１２３】
特に好ましい実施形態では、本発明の様々な機能は、たとえばディスプレイデバイス用のフレームバッファに書き込まれる、レンダリングされたフラグメントデータを生成し、出力する単一のグラフィックス処理プラットフォーム上で実行される。
【０１２４】
本発明は、適切に構成されたマイクロプロセッサベースのシステムなど、任意の適切なシステム内で実施され得る。好ましい実施形態では、本発明は、コンピュータおよび/またはマイクロプロセッサベースのシステム内で実施される。
【０１２５】
本発明の様々な機能は、任意の所望の適切な形で実行され得る。たとえば、本発明の機能は、望み通りにハードウェアまたはソフトウェアで実施され得る。したがって、たとえば、そうではないと示されない限り、本発明の様々な機能要素および「手段」は、所望の形で動作するようにプログラムされ得る適当な専用ハードウェア要素および/またはプログラマブルハードウェア要素など、様々な機能などを実行するように動作可能な、適切なプロセッサ、コントローラ、機能ユニット、回路網、処理論理、マイクロプロセッサ配置などを含むことができる。
【０１２６】
当業者によって了解されるように、本発明の様々な機能などは、所与のプロセッサ上で複製され、かつ/または並列に実行され得ることにもここで留意されたい。同等に、様々な処理ステージは、望まれる場合に、処理回路網などを共有することができる。
【０１２７】
上で議論した特定の機能を実行するのに必要な任意のハードウェアの影響下で、グラフィックス処理システムは、グラフィックス処理システムが含む通常の機能ユニットなどの任意の1つまたは複数またはすべてを他の形で含むことができる。
【０１２８】
本発明の説明される態様および実施形態のすべてが、適宜、本明細書で説明される好ましい特徴およびオプションの特徴の任意の1つまたは複数またはすべてを含むことができ、好ましくは含むことも、当業者によって了解される。
【０１２９】
本発明による方法は、少なくとも部分的に、ソフトウェア、たとえばコンピュータプログラムを使用して実施され得る。したがって、さらなる態様から見た時に、本発明は、データ処理手段上にインストールされた時に本明細書で説明される方法を実行するように特に適合されたコンピュータソフトウェア、プログラム要素がデータ処理手段上で実行される時に本明細書で説明される方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、および、プログラムがデータ処理システム上で実行される時に本明細書で説明される方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データプロセッサは、マイクロプロセッサシステム、プログラマブルFPGA(フィールドプログラマブルゲートアレイ)などとすることができる。
【０１３０】
本発明は、グラフィックスプロセッサ、レンダラ、またはデータ処理手段を含むマイクロプロセッサシステムを動作させるのに使用される時に、前記データ処理手段に関連して、前記プロセッサ、レンダラ、またはシステムに、本発明の方法のステップを実行させるソフトウェアを含むコンピュータソフトウェア担体にも拡張される。そのようなコンピュータソフトウェア担体は、ROMチップ、CD ROM、RAM、フラッシュメモリ、またはディスクなどの物理記憶媒体とすることができ、あるいは、ワイヤを介する電子信号、衛星または類似物などへの光信号または無線信号などの信号とすることができる。
【０１３１】
さらに、本発明の方法のすべてのステップが、コンピュータソフトウェアによって実行される必要があるのではなく、したがって、さらなる幅広い態様から、本発明が、コンピュータソフトウェアと、本明細書で示される方法のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェア担体上にインストールされたそのようなソフトウェアとを提供することが、さらに了解される。
【０１３２】
したがって、本発明は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として適切に実施され得る。そのような実施態様は、コンピュータ可読媒体、たとえばディスケット、CD-ROM、ROM、RAM、フラッシュメモリ、またはハードディスクなどの有形の非一時的媒体上に固定された一連のコンピュータ可読命令を含むことができる。そのような実施態様は、モデムもしくは他のインターフェースデバイスを介して、光通信回線もしくはアナログ通信回線を含むがこれに限定されない有形の媒体を介して、またはマイクロ波、赤外線、もしくは他の伝送技法を含むがこれに限定されないワイヤレス技術を使用して非有形にのいずれかで、コンピュータシステムに伝送可能な一連のコンピュータ可読命令をも含むことができる。一連のコンピュータ可読命令は、本明細書で前に説明した機能性のすべてまたは一部を実施する。
【０１３３】
当業者は、そのようなコンピュータ可読命令が、多数のコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するための複数のプログラミング言語で記述され得ることを了解する。さらに、そのような命令は、半導体、磁気、もしくは光を含むがこれに限定されない、存在するか将来の任意のメモリ技術を使用して記憶され、または、光、赤外線、もしくはマイクロ波を含むがこれに限定されない、存在するか将来の任意の通信技術を使用して送信され得る。そのようなコンピュータプログラム製品が、付随する印刷された文書または電子文書と共にリムーバブル媒体として、たとえばシュリンクラップされたソフトウェアとして配布され、たとえばシステムROMまたは固定ディスク上でコンピュータシステムにプリロードされ、あるいは、ネットワーク、たとえばインターネットまたはワールドワイドウェブを介してサーバまたは電子掲示板から配布され得ることが、企図されている。
【０１３４】
本発明の複数の好ましい実施形態を、これから、例としてのみ、添付図面を参照して説明する。
【図面の簡単な説明】
【０１３５】
【図１】本発明の形で動作され得るグラフィックス処理パイプラインを概略的に示す図である。
【図２】本発明の実施形態の動作を概略的に示す図である。
【図３】本発明の実施形態で使用される例示的なテクスチャを示す図である。
【図４】本発明の実施形態でのテクスチャの生成を概略的に示す図である。
【図５】本発明の実施形態の動作を示す図である。
【図６】本発明の実施形態の動作を示す図である。
【図７】本発明の実施形態の動作を示す図である。
【図８】本発明の実施形態の動作を示す図である。
【図９】本発明の実施形態による、複数の異なる位置からレンダリングされたライトシャフトを示す図である。
【図１０】本発明の実施形態の動作を示す図である。
【図１１】本発明の実施形態の動作を示す図である。
【発明を実施するための形態】
【０１３６】
同様の符号が、図面内で適当な場合に同様のコンポーネントに使用される。
【０１３７】
本発明の好ましい実施形態を、これから、表示のためのコンピュータグラフィックスの処理の文脈で説明する。
【０１３８】
コンピュータグラフィックスイメージが表示される時には、通常、そのイメージは、まず、一連のプリミティブ(ポリゴン)として定義され、プリミティブは、その後、グラフィックスレンダリングのためにグラフィックスフラグメントに分割される(ラスタ化される)。通常のグラフィックスレンダリング動作中に、レンダラは、フラグメントを正しく表示できるようにするために、各フラグメントに関連する(たとえば)色データ(赤、緑、および青、RGB)および透明度データ(アルファ、α)を変更する。フラグメントが、レンダラを完全にトラバースしたならば、それに関連するデータ値は、メモリに記憶され、表示のための出力の準備が調う。
【０１３９】
図1に、本発明に従って動作することのできるグラフィックス処理パイプライン1を概略的に示す。グラフィックス処理パイプライン1は、完全にプログラマブルなGPGPUコンテキストを有するタイルドデファードレンダラ(tiled deferred renderer)、たとえば、部分的にDirect Compute、OpenCL、CUDAその他を介して実行するレンダラである。
【０１４０】
図1に示されたグラフィックス処理パイプライン1は、タイルベースのレンダラなので、したがって、生成される出力フレームなどのレンダ出力データ配列のタイルを生成する。
【０１４１】
(タイルベースのレンダリングでは、レンダ出力全体、たとえばフレームが、直接モードレンダリングで行われるように効果的に1回で処理されるのではなく、レンダ出力、たとえば表示されるフレームは、通常は「タイル」と呼ばれる複数のより小さい副領域に分割される。各タイル(副領域)は、別々に(通常は、次々に)レンダリングされ、レンダリングされたタイル(副領域)は、その後、完全なレンダ出力、たとえば表示用のフレームを提供するために再組合せされる。そのような配置では、レンダ出力は、通常、規則的なサイズおよび形状を有する副領域(タイル)(通常、たとえば正方形または長方形である)に分割されるが、これは、必須ではない。各タイルは、スクリーン空間(「第1の」)サンプリング位置のそれぞれのセットに対応する。)
【０１４２】
レンダ出力データ配列は、通常、スクリーンまたはプリンタなどのディスプレイデバイス上の表示のための出力フレームとすることができるが、たとえば、より後のレンダリングパスでの使用のための中間データ(「レンダトゥテクスチャ」出力とも称する)などを含むこともできる。
【０１４３】
図1は、本実施形態の動作に関するグラフィックス処理パイプライン1の主要な要素およびパイプラインステージを示す。当業者によって了解されるように、図1には示されていない、グラフィックス処理パイプラインの他の要素がある場合がある。ここでは、図1が概略にすぎず、たとえば、実際には、図1で別々のステージとして概略的に示されている場合であっても、図示の機能ユニットおよびパイプラインステージが、重要なハードウェア回路を共有する場合があることにも留意されたい。図1に示されたグラフィックス処理パイプラインのステージ、要素、およびユニットなどのそれぞれが、望み通りに実施され得、したがって、たとえば、必要な動作および機能を実行するための適当な回路網および/または処理論理などを含むことをも了解されたい。
【０１４４】
図1は、ラスタ化プロセスへの入力のためのグラフィックスプリミティブ(ポリゴン)2が生成された後のパイプラインステージを概略的に示す。したがって、この点で、グラフィックスデータ(頂点データ)は、グラフィックスプロセッサに供給されたコマンドおよび頂点データに応答して、変換動作(図示せず)、頂点シェーディング、補間、およびレンダリングされるプリミティブをセットアップするためのプリミティブセットアップステージ(図示せず)など、フラグメントフロントエンド動作8を受けている。
【０１４５】
図1に示されているように、グラフィックス処理パイプライン1のこの部分は、ラスタ化ステージ3、アーリーZ(デプス)およびステンシルテストステージ4、フラグメントシェーディングステージ6の形のレンダラ、レートZ(デプス)およびステンシルテストステージ7、ブレンディングステージ9、タイルバッファ10、ならびにダウンサンプリングおよび書き出し(マルチサンプル解決)ステージ13を含む複数のステージを含む。
【０１４６】
グラフィックス処理パイプライン1のラスタ化ステージ3は、レンダ出力(たとえば、表示されるイメージ)を構成するプリミティブを、処理のために個々のグラフィックスフラグメントにラスタ化するように動作する。これを行うために、ラスタライザ3は、レンダリングのためにグラフィックスプリミティブ2を受け取り、プリミティブを(「第1の」)サンプリング点にラスタ化し、プリミティブをレンダリングするのに適当な位置(適当なサンプリング位置を表す)を有するグラフィックスフラグメントを生成する。
【０１４７】
ラスタライザによって生成されたフラグメントは、処理のためにパイプラインの残りに向かって送られる。
【０１４８】
アーリーZ/ステンシルステージ4は、いずれかのフラグメントをこのステージで破棄する(カリングする)ことができるかどうかを調べるために、ラスタライザ3から受け取ったフラグメントに対してZ(デプス)テストを実行する。これを行うために、アーリーZ/ステンシルステージ4は、新しいフラグメントがすでにレンダリングされたフラグメントによってさえぎられる(か否か)を判定するために、ラスタライザ3から発するフラグメントの(に関連する)デプス値を、すでにレンダリングされたフラグメントのデプス値(これらのデプス値は、タイルバッファ10の一部であるデプス(Z)バッファに記憶される)と比較する。それと同時に、アーリーステンシルテストが実行される。
【０１４９】
フラグメントアーリーZおよびステンシルテストステージ4を通過したフラグメントは、フラグメントシェーディングステージ6に送られる。フラグメントシェーディングステージ6は、適当なレンダリングされたフラグメントデータを生成するためにフラグメントを処理するために、アーリーZテストおよびステンシルテストに合格するフラグメントに対して適当なフラグメント処理動作を実行する。
【０１５０】
このフラグメント処理は、適当なフラグメントデータを生成するために、フラグメントに対するフラグメントシェーダプログラムの実行、フラグメントへのテクスチャの適用、フラグメントへのフォギングまたは他の動作の適用、その他など、任意の適切な所望のフラグメントシェーディングプロセスを含むことができる。本実施形態では、フラグメントシェーディングステージ6は、シェーダパイプライン(プログラマブルフラグメントシェーダ)の形であるが、望まれる場合には、それに加えてまたはその代わりの固定機能フラグメントシェーディングユニットの使用など、他の配置が可能である。
【０１５１】
次に、「レート」フラグメントZおよびステンシルテストステージ7があり、これは、なかんずく、レンダリングされるフラグメントが最終的なイメージ内で実際に見られるかどうかを判定するために、シェーディングされたフラグメントに対して最後のパイプラインデプステストを実行する。このデプステストは、フラグメントシェーディングステージ6から発するフラグメントの(に関連する)デプス値をすでにレンダリングされたフラグメントのデプス値(デプスバッファに記憶される)と比較することによって、新しいフラグメントのフラグメントデータがすでにレンダリングされたフラグメントのフラグメントデータを置換しなければならないかどうかを判定するのに、タイルバッファ10内のZバッファに記憶されたフラグメントの位置のZバッファ値を使用する。このレートフラグメントデプスおよびステンシルテストステージ7は、フラグメントに対するすべての必要な「レート」アルファテストおよび/またはステンシルテストをも実行する。
【０１５２】
レートフラグメントテストステージ7を通過するフラグメントは、必要な場合に、ブレンダ9内のタイルバッファ10にすでに記憶されたフラグメントとの任意の必要なブレンディング動作を受ける。ディザリングその他(図示せず)など、フラグメントに対して必要な任意の他の残りの動作も、このステージで実行される。
【０１５３】
最後に、(ブレンディングされた)出力フラグメントデータ(値)が、タイルバッファ10に書き込まれ、タイルバッファ10から、たとえば、表示のためにフレームバッファに出力され得る。出力フラグメントのデプス値は、タイルバッファ10内のZバッファにも適当に書き込まれる。(タイルバッファは、バッファが表すサンプリング位置ごとに(本質的に処理されつつあるタイルのサンプリング位置ごとに)、それぞれ適当な色などの値またはZ値を記憶する、カラーバッファおよびデプスバッファを記憶する。)これらのバッファは、全体的なレンダ出力(たとえば、表示されるイメージ)の一部(タイル)を表すフラグメントデータの配列を記憶し、バッファ内のサンプル値のそれぞれのセットは、全体的なレンダ出力のそれぞれのピクセルに対応する(たとえば、サンプル値の各2x2セットは、出力ピクセルに対応することができ、ここでは、4xマルチサンプリングが使用されている)。
【０１５４】
タイルバッファは、グラフィックス処理パイプライン(チップ)上(これにローカル)のRAMの一部として提供される。
【０１５５】
タイルバッファ10からのデータは、ダウンサンプリング(マルチサンプル解決)書き出しユニット13に入力され、そこから、ディスプレイデバイスのフレームバッファ(図示せず)など、外部メモリ出力バッファに出力(ライトバック)される(ディスプレイデバイスは、たとえば、コンピュータモニタまたはプリンタなど、ピクセルの配列を含むディスプレイを含むことができる)。
【０１５６】
本実施形態では、ダウンサンプリングおよび書き出しユニット13は、出力バッファへの出力のために出力値(ピクセル)を生成するために、タイルバッファ10に記憶されたフラグメントデータを出力バッファ(デバイス)に適当な解像度にダウンサンプリングする(固定された形または可変の形のいずれかで)(すなわち、出力デバイスのピクセルに対応するピクセルデータの配列が生成されるように)。
【０１５７】
レンダ出力のタイルが処理され、そのデータが記憶のためにメインメモリ(たとえば、メインメモリ(図示せず)内のフレームバッファ)にエクスポートされた後に、次のタイルが処理され、レンダ出力全体(たとえば、表示されるフレーム(イメージ))を生成するのに十分なタイルが処理されるまで、以下同様である。その後、このプロセスは、次のレンダ出力(たとえば、フレーム)について繰り返され、以下同様である。
【０１５８】
グラフィックス処理パイプライン1の他の配置が、もちろん可能である。
【０１５９】
上は、図1に示されたグラフィックス処理システムの動作のある特徴を説明するものである。本発明の実施形態に従って、レンダリングされつつあるイメージ内のライトシャフトの効果をシミュレートすることを可能にする、図1に示されたグラフィックス処理システムの動作のさらなる特徴を、これから説明する。
【０１６０】
本実施形態は、境界ボリュームの外部にある光源に起因するシーンの定義されたボリューム内のライトシャフトの効果をシミュレートするように動作する。
【０１６１】
図2に、これを示し、ワールド空間で定義され、レンダリングされるシーン内のボリュームを表す、境界ボックスの形の例示的な境界ボリューム20を示す。本実施形態では、境界ボリューム20が、シーン全体に対応し、たとえば部屋を表すと仮定されるが、他の配置が、もちろん可能である。図2に示されているように、境界ボリューム20は、窓21を有するが、それ以外は不透明の壁を有すると仮定される。
【０１６２】
また、図2に示されているように、窓21を通って光を放ち、したがって境界ボリューム20内にライトシャフト23を生じさせる、境界ボリューム20の外部の光源22があると仮定される。上で議論したように、本発明は、シーンの視点(カメラ)位置24から見られたシーンに対するライトシャフト23の効果を決定するための配置に関する。
【０１６３】
本発明の形での動作を容易にするために、本実施形態では、境界ボリューム20の表面の透明度を表す透明度(アルファ)値を記憶する、境界ボリューム20の表面に対応する立方体テクスチャが、生成される。
【０１６４】
図3に、図2に示された境界ボリューム20の対応する立方体テクスチャ30を示す。図3に示されているように、立方体テクスチャ30は、境界ボリューム表面の不透明である領域について不透明表面を示す値を記憶するが、境界ボリューム表面の窓21が存在する領域については、透明(または少なくとも半透明)を示す透明度値が記憶される。したがって、不透明である立方体テクスチャ30の面32は、1のアルファ値を記憶し、窓21を囲む領域33もそうであるが、窓21の領域は、境界ボリュームの表面のその部分が半透明または完全に透明であることを示すために、1未満のアルファ値を記憶する。
【０１６５】
図4に、図3に示された立方体テクスチャの生成を概略的に示す。図4に示されているように、このプロセスは、立方体テクスチャがそれに関して定義される基準位置31(図2に図示)から立方体テクスチャまでシーン(または、少なくともシーンのアルファ値)をレンダリングすること(ステップ40)によって始まる。(立方体テクスチャ30は、立方体テクスチャが表すボリューム(したがって、シーンの境界ボリューム)内の基準位置31(図2に図示)に関して定義され、サンプリングされた値(サンプリングされる位置)がそれに関して要求される基準位置からの方向を判定することによってサンプリングされる。)
【０１６６】
このプロセスは、その入力として、シーンに関する情報41、境界ボリューム20を定義する情報、立方体テクスチャの基準位置31を定義する情報、および立方体テクスチャに関して望まれる解像度サイズを示す情報42を使用する。
【０１６７】
立方体テクスチャ30は、テクスチャの基準位置31の視点からの境界ボリューム20の表面を表すイメージをレンダリングすることによって生成される。これを行うために、シーン(シーン情報41によって定義される)の表面(表面を表すイメージ)上のそれぞれの位置が、境界ボリューム上のそれぞれの位置について(テクスチャの基準位置31からの関連する方向で)サンプリングされる。このプロセスでは、境界ボリュームが、通常は実際のシーンの近似であり、したがって、定義されるシーン(たとえば、部屋)の表面と正確には一致しない可能性があるので、テクスチャに関して(テクセルごとに)サンプリングされる表面の点は、境界ボリューム20の壁に正確に当たる必要はなく、境界ボリューム上、その外部、またはその内部とすることができる。この立方体テクスチャ生成プロセスの出力47は、境界ボリュームの表面上のそれぞれの位置で立方体テクスチャが関係するシーンの境界ボリュームの表面の透明度を表すアルファ(透明度)チャネルを有する、図3に示された立方体テクスチャである。
【０１６８】
図4に示されているように、立方体テクスチャが生成された後に、その立方体テクスチャは、オプションで、ブラーリング、ガンマ補正、輝度および/またはコントラストエンハンスメント、その他など、様々な処理効果および最適化を受けることができる(ステップ43)。このステップは、入力として、ブラーリングパラメータ、ガンマ補正パラメータ、コントラストパラメータ、その他など、所望の後処理効果パラメータを使用する。
【０１６９】
この最適化処理が可能であるのは、立方体テクスチャ30が、問題のシーンが要求される時に必ず再利用され得、すべての外部光源について、使用中に動的に再生成される必要がなく、したがって、立方体テクスチャのリアルタイム生成に適しない非リアルタイム最適化が、使用され得るからである。
【０１７０】
さらに、図4に示されているように、生成された(望まれる場合に、後処理された)立方体テクスチャは、所望の圧縮パラメータ46を使用して圧縮され得る(ステップ45)。やはり、これが可能であるのは、立方体テクスチャがリアルタイムで生成される必要がないからである。任意の適切なテクスチャ圧縮方式が、立方体テクスチャを圧縮するのに使用され得る。
【０１７１】
立方体テクスチャ生成および立方体テクスチャの任意の後処理/圧縮は、望み通りに、任意の適切な処理システムを使用して実行され得る。好ましい実施形態では、立方体テクスチャは、「オフラインで」生成され、記憶され、その後、要求される時に使用するためにグラフィックス処理パイプラインに供給される。ここでは、ライトの定義が、立方体テクスチャ生成に関して要求されず、使用されないことにも留意されたい。
【０１７２】
境界ボリューム20内のライト22に起因するライトシャフトの効果を決定するための図3に示された立方体テクスチャの使用を、これから、図2、図5、図6、図7、および図8を参照して説明する。
【０１７３】
図5〜図8に、プロセスの主要なステップを概略的に示す。
【０１７４】
本実施形態は、レンダリングされつつある境界ボリューム20上または境界ボリューム20内のそれぞれの(「第1の」)スクリーン空間サンプリング点25について、立方体テクスチャ30を使用して、視点(カメラ)位置24から見られたサンプリング点25の色に対するライトシャフト23の効果(光源22からの光の散乱に起因する)がある場合に、その効果を決定するように動作する。本質的に、境界ボリューム20上または境界ボリューム20内にあるシーンの各プリミティブがレンダリングされる時に、プリミティブのサンプリング点25ごとに、図5に概略的に示されたプロセスは、問題のサンプリング点25の色に対するライトシャフト23の効果を決定するために(すなわち、事実上、問題のサンプリング点25に適用すべきライトシャフト色寄与を決定するために)実行される。
【０１７５】
したがって、図5は、所与のスクリーン空間サンプリング点25に関するプロセスを示す。このプロセスは、本実施形態の形で処理される(「第1の」)スクリーン空間サンプリング点25ごとに繰り返される。
【０１７６】
図5に示されているように、本実施形態のプロセスは、グラフィックス処理パイプラインのフラグメントフロントエンド動作8の頂点シェーディングステージで開始される(ステップ51)。
【０１７７】
図6に示されているように、頂点シェーディングプログラムが開始される(ステップ61)。検討されつつあるスクリーン空間サンプリング点25が関係するプリミティブのワールド空間内の頂点位置が、決定され(ステップ62)、この頂点から光源22へのベクトルが、入力としてワールド空間内の光源22の位置を使用して決定され(ステップ63)、頂点から視点(カメラ)位置24へのベクトルが、入力としてワールド空間内の視点(カメラ)位置24を使用して決定される(ステップ64)。これらの値は、その後、フラグメントシェーダに出力される(ステップ65)。
【０１７８】
したがって、図5に示されているように、頂点シェーディングステージ51の結果は、頂点位置と、頂点から光源22へのベクトルと、頂点から視点(カメラ)位置24へのベクトルとである(ステップ52)。このプロセスは、フラグメントシェーダ内で継続される(ステップ53)。
【０１７９】
図7に示されているように、フラグメントシェーダプログラムを開始(ステップ71)した後に、問題のスクリーン空間サンプリング点25から視点(カメラ)位置24へのベクトル26上の要求される(「第2の」)中間サンプリング点(P1、P2、…  Pn)の個数nが、まず、望み通りにセットされ得るサンプリングステップ55を入力として使用して決定される。色寄与(「AccumColor」)パラメータも、0に初期化される(ステップ72)。
【０１８０】
サンプリング点(フラグメント)から視点(カメラ)へのベクトル26に沿った「レイマーチング」プロセスが、開始される(ステップ73)。本質的に、このプロセスでは、スクリーン空間サンプリング点から視点へのベクトル26上の中間サンプリング点(P1、P2、…  Pn)のセットの中間(「第2の」)サンプリング点27ごとに、視点位置24から見られた問題のスクリーン空間(「第1の」)サンプリング点25の最終的な色への色寄与が決定される。各色寄与は、中間サンプリング点27で散乱された光に起因して視点(カメラ)24に達する、光源22からの光の量を表す。この形で、視点24から見られたライトシャフト23の「真の」ボリュメトリック表現が提供され得る。
【０１８１】
したがって、図7に示されているように、サンプリング点から視点(カメラ)へのベクトル26上の(「第2の」)中間サンプリング点27ごとに、そのサンプリング点の位置が、中間サンプリング点27から光源22へのベクトル28と一緒に決定される(ステップ74)。次に、立方体テクスチャ30をサンプリングするのに使用されるベクトル29が決定され、立方体テクスチャ30が、問題の中間サンプリング点27のアルファ値を決定するために、そのベクトルを使用してサンプリングされる(ステップ75)。このプロセスが、図8に示されている。
【０１８２】
図8に示されているように、このプロセスは、検討されつつある中間サンプリング点27から光源22へのベクトル28を決定することによって始まる(ステップ81)。このプロセスは、入力として、光源22の位置および中間サンプリング点27の位置を使用する。
【０１８３】
次のステップは、立方体テクスチャ30内の正しい位置がサンプリングされることを保証するために、サンプリング点からライトへのベクトル28に「ローカル補正」を適用することである(ステップ82)。これが要求されるのは、図2からわかるように、たとえば、立方体テクスチャがそれから(それに関して)サンプリングされる基準位置31が、検討されつつあるサンプリング点27に対応しない場合があり(通常は対応しない)、サンプリング点27から光源22へのベクトル28を単純に採用し、立方体テクスチャ30の基準位置31からサンプリングするのにこれを使用することが、立方体テクスチャの正しい部分をサンプリングしなくなるからである。
【０１８４】
この「ローカル補正」を適用するために、図2に示されているように、サンプリング点27からライト22へのベクトル28の境界ボリューム20の表面上の交点34が、決定され、その後、立方体テクスチャ30がそれに関して定義される基準位置31から境界ボリューム20上の交点34へのベクトル29が、決定され、そのベクトル29が、立方体テクスチャ30をサンプリングするのに使用される(ステップ83)。したがって、これは、図2からわかるように、処理されつつあるサンプリング点27と光源22との間にある境界ボリューム20の表面の部分に対応する交点位置34において立方体テクスチャ30をサンプリングする。
【０１８５】
その後、立方体テクスチャ30が、交点位置34に対応する位置において、その点での境界ボリューム20の表面のアルファ値(すなわち、透明度)を決定するためにサンプリングされる(ステップ84)。立方体テクスチャ30は、バイリニアフィルタリングおよび/またはトライリニアフィルタリング(たとえば、立方体テクスチャ30がミップマップの形である場合に)など、任意の所望のテクスチャサンプリング(フィルタリング)プロセスを使用してサンプリングされ得る。フィルタリングは、たとえば、グラフィックス処理パイプラインのテクスチャリングモジュール(ステージ)によって提供され得る。その後、これは、光源22からサンプリング点27に当たる光の量を示すアルファ値(透明度値)85を与える。
【０１８６】
ここで図7に戻ると、その後、出力アルファ値85は、問題の中間サンプリング点27が光源22によって照らされるか否かを判定するのに使用される(ステップ76)。これは、アルファ値が「1」と等しくない場合になる。サンプリング点27が照らされる場合には、何らかの色寄与が、色寄与パラメータに加算され(ステップ77)、その後、サンプリング点から視点(カメラ)へのベクトル26に沿ったサンプリング点のセット(P1、P2、…  Pn)内の次の中間サンプリング点が、検討される。サンプリング点27が照らされない場合(すなわち、サンプリングされたアルファ値が「1」と等しい場合)には、寄与は、色寄与パラメータに加算されず、その後、サンプリング点から視点(カメラ)へのベクトル26に沿ったサンプリング点のセット(P1、P2、…  Pn)内の次の中間サンプリング点が、検討される。中間サンプリング点のセット(P1、P2、…  Pn)内の中間サンプリング点のすべてが検討され終えた後に、レイマーチングプロセスは、終了される(ステップ78)。
【０１８７】
色寄与パラメータの最終的な値は、その後、カメラ位置24から見られるスクリーン空間サンプリング点25の最終的な色を決定するために、望み通りに(必要に応じて)、たとえば、1つまたは複数の適当なレンダリング計算(たとえば、別のテクスチャを使用する)の結果と一緒に使用され得る(ステップ79)。
【０１８８】
図5に示されているように、最終的な色値は、その後、フレームバッファ(タイルバッファ10)に出力される(ステップ54)。
【０１８９】
上のプロセスは、スクリーン空間(「第1の」)サンプリング点のすべてについて、およびレンダリングされるべきすべてのプリミティブについて(およびその後に次のフレーム(適用可能な場合)などについて)繰り返される。
【０１９０】
図9に、本発明の技法を使用して、すなわち、単一の立方体テクスチャ30を用いてレンダリングされた様々なライトシャフトを示す。各イメージは、レンダリングプロセスの結果を示し、光源22は、異なる位置にある。図9からわかるように、光源22の位置が変化する時に、レンダリングされたライトシャフトは、それに従って変化する。
【０１９１】
図10および図11に、本発明の実施形態による代替の「最適化された」レンダリングプロセスの主要なステップを概略的に示す。
【０１９２】
図10に示されているように、この実施形態では、頂点シェーダプログラムを開始(ステップ91)した後に、検討されつつある(「第1の」)スクリーン空間サンプリング点25が関係するプリミティブの頂点から光源22へのベクトルが、頂点から視点(カメラ)位置へのベクトル上の離隔された(「第3の」)サンプリング点の制限されたセットと一緒に決定される(ステップ92)。第3のサンプリング点は、たとえば中間(「第2の」)サンプリング点のセット(P1、P2、…  Pn)と比較した時に、サンプリング点の相対的にまばらな選択物である。これらのプロセスは、入力として、第3のサンプリング点の所望の個数98および光源22の位置を使用する。
【０１９３】
頂点から視点(カメラ)へのベクトル上の(「第3の」)サンプリング点ごとに、テクスチャサンプリングベクトルが、そのサンプリング点について決定され(ステップ93)、テクスチャサンプリングベクトルは、対応する第3のサンプリング位置について立方体テクスチャ30をサンプリングするのに使用されるベクトルである。したがって、テクスチャサンプリングベクトルのセットが決定される。各テクスチャサンプリングベクトルは、好ましくは、「ローカル補正された」そのようなベクトルであり、したがって、図8を参照して説明されたものに対応する形で決定される。図10に示されているように、このステップは、入力として、環境立方体テクスチャ30、立方体テクスチャの基準位置31、ならびに境界ボリューム20の最小範囲および最大範囲を使用する。
【０１９４】
次に、(「第3の」)サンプリング点ごとに、立方体テクスチャ30が、問題の第3のサンプリング点のアルファ値を決定するために対応する決定されたテクスチャサンプリングベクトルを使用してサンプリングされ、サンプリングされたアルファ値は、問題のサンプリング点が光源22によって照らされるか否かを判定するのに使用される(ステップ94)。これは、アルファ値が「1」と等しくない場合になる。
【０１９５】
このプロセスが、(「第3の」)サンプリング点のセットの一部またはすべてについて完了された後に、サンプリング点のすべてが影の中にある(すなわち、光源22によって照らされていない)かどうかが判定される(ステップ95)。頂点から視点(カメラ)へのベクトル上のすべての第3のサンプリング点についてそうである場合には、ライトシャフトは存在しないと仮定される。そうではない場合には、ライトシャフトが存在すると判定される(ステップ96)。その後、この判定の結果は、テクスチャサンプリングベクトルのセットと一緒にフラグメントシェーダに出力される(ステップ97)。その後、このプロセスは、フラグメントシェーダ53内で継続される。
【０１９６】
図11に示されているように、フラグメントシェーディングプログラムを開始(ステップ100)した後に、色寄与(「AccumColor」)パラメータが、0に初期化され(ステップ101)、ステップ96の判定の結果が、たとえばライトシャフトが存在しないと仮定されるので、フラグメント処理動作の一部またはすべてがバイパスされ得るか否かを判定するのに使用される(ステップ102)。ライトシャフトが存在する場合には、このプロセスは、適当な色寄与を決定し続ける。
【０１９７】
したがって、サンプリング点から視点(カメラ)へのベクトル26上の必要な(「第2の」)中間サンプリング点(P1、P2、…  Pn)の個数nが、まず、入力としてサンプリングステップ55(望み通りにセットされ得る)を使用して決定される(ステップ103)。
【０１９８】
その後、スクリーン空間サンプリング点から視点(カメラ)へのベクトル26に沿った「レイマーチング」プロセスが開始され(ステップ104)、スクリーン空間サンプリング点から視点(カメラ)へのベクトル26上の(「第2の」)中間サンプリング点27ごとに、その中間サンプリング点27の位置が決定される(ステップ105)。次に、立方体テクスチャ30をサンプリングするのに使用されるベクトル29が、決定され、立方体テクスチャ30が、問題の中間サンプリング点27のアルファ値を決定するために、そのベクトル29を使用してサンプリングされる(ステップ106)。
【０１９９】
図11に示されているように、この「最適化された」実施形態では、(「第2の」)中間サンプリング点27ごとに立方体テクスチャ30をサンプリングするのに使用されるベクトル29は、頂点シェーダ51から出力されたテクスチャサンプリングベクトルのセット97を使用する適当な補間によって決定される。
【０２００】
その後、出力アルファ値は、問題の中間サンプリング点27が光源22によって照らされるか否かを決定するのに、適宜使用される(ステップ107)。サンプリング点27が照らされる場合には、ある色寄与が、色寄与パラメータに加算され(ステップ108)、その後、サンプリング点から視点(カメラ)へのベクトル26上の中間サンプリング点のセット(P1、P2、…  Pn)内の次の中間サンプリング点が、検討される。中間サンプリング点のセット(P1、P2、…  Pn)内の中間サンプリング点のすべてが検討され終えた後に、レイマーチングプロセスが終了される(ステップ109)。
【０２０１】
その後、色寄与パラメータの最終的な値は、望み通りに(必要に応じて)、たとえば、カメラ位置24から見られたスクリーン空間サンプリング点25の最終的な色を決定するために1つまたは複数の適当なレンダリング計算(たとえば、別のテクスチャを使用する)の結果と一緒に、使用され得る(ステップ110)。
【０２０２】
図5に示されているように、その後、最終的な色値が、フレームバッファ(タイルバッファ10)に出力される(ステップ54)。やはり、上のプロセスは、(「第1の」)スクリーン空間サンプリング点のすべてについて、およびレンダリングされるべきプリミティブのすべてについて(およびその後に次のフレーム(適当な場合に)などについて)、繰り返される。
【０２０３】
当業者によって了解されるように、この実施形態では、レンダリング動作に必要なリソースは、通常フラグメントシェーダ内でスクリーン空間サンプリング点(フラグメント)ごとに実行されるはずの処理の一部を効果的に頂点シェーダにオフロードすることと、その後にスクリーン空間サンプリング点25の適当な色を決定する際にフラグメントシェーダ内での(ハードウェア)補間に頼ることとによって減らされる。
【０２０４】
望まれる場合に、本発明の上で説明した実施形態に対する様々な変更、追加、および代替案が可能である。
【０２０５】
たとえば、プロセスが、上ではアルファ値(透明度値)を記憶する立方体テクスチャ30を参照して説明されたが、立方体テクスチャ30がカラーチャネルなどの他のデータチャネルをも記憶することが可能であり、その色データは、たとえば着色された(色付きの)半透明表面の効果をシミュレートする(たとえば、ステンドグラスの窓など)ことを可能にするために、ライトシャフトレンダリングプロセス内でも使用される。
【０２０６】
情報は、たとえば境界ボリューム20の透明または半透明の部分21に対応する(適合する)ことができる、別々のテクスチャ内に記憶され、これからサンプリングされることも可能である。
【０２０７】
透明度係数がそれに関して決定される第1のサンプリング点から視点へのベクトル26上の第2のサンプリング点(P1、P2、…  Pn)の個数を減らすことが可能である。たとえば、光源22からの光が、隣接する第3のサンプリング点または第3のサンプリング点の隣接するセットに当たらないと判定される(ステップ94で)場合には、光源22からの光が、隣接する第3のサンプリング点または第3のサンプリング点のセットの間のどの第2のサンプリング点にも当たらないと仮定することができる。したがって、この場合には、これらの第2のサンプリング点について透明度パラメータを決定する必要はなく、その代わりに、光が問題の第2のサンプリング点に当たらないことを示す透明度パラメータ(たとえば、「1」)が使用され得る。
【０２０８】
照らされる(「第2の」)中間サンプリング点ごとの各色寄与は、一定の色寄与である可能性があり(たとえば、光源22の色、強度、位置、その他などの特性に依存する)、かつ/または透明度パラメータの値に依存する可能性がある。たとえば、中間サンプリング点ごとに決定されたアルファ値は、乗算係数としてまたはこれを導出するのに(かつ、たとえば光源の色を変更するのに)使用され得る。
【０２０９】
たとえば境界ボリューム内の変化する密度を有する霧の効果をシミュレートするために、境界ボリューム内の異なる位置での異なる強さの光散乱、吸収、および/または減衰などの効果を考慮に入れることも可能である。たとえば、各中間サンプリング点での光散乱、吸収、または減衰の強度を示す光散乱、吸収、または減衰のパラメータが、境界ボリューム20について定義される媒体「密度」関数から決定され、中間サンプリング点の色分布を変更する(たとえば、乗算係数としてまたはこれを導出するために光散乱、吸収、または減衰のパラメータを使用することによって)のに使用され得る。
【０２１０】
ライトシャフト内の不均一性の効果は、たとえば、境界ボリューム20の透明および/または半透明の領域21のノイズテクスチャ(すなわち、透明度(アルファ)値のランダム配列を含むテクスチャ)をサンプリングすることと、問題の中間サンプリング点の色寄与を変更するのにサンプリングされた値を使用することとによって、シミュレートされ得る。ノイズテクスチャは、透明度を示すグラフィックステクスチャに統合され得、あるいは、たとえば境界ボリューム20の透明または半透明の部分21に対応し(これにあてはめられ)得る別々のテクスチャとして提供され得る。
【０２１１】
ノイズテクスチャは、たとえば境界ボリューム20内の移動するオブジェクト(たとえば、ほこりなどの粒子)の効果および/または境界ボリューム20の外部の移動するオブジェクト(たとえば、群葉など)の効果をシミュレートするために、アニメートされることも可能である。
【０２１２】
好ましい実施形態では、ライトシャフト色寄与は、基礎になるシーンのスクリーン空間サンプリング点より低い解像度(たとえば、1/4)で評価され、その後、基礎になるシーンと一致するようにスケールアップされ、ブラーリングされ(たとえば、ハードウェアを使用して)、基礎になるシーンとブレンディングされる。これは、ライトシャフト決定に必要な処理を減らすことができる。
【０２１３】
隣接するスクリーン空間サンプリング点25に関してそれぞれのサンプリング点から視点へのベクトル26上の異なる中間サンプリング点位置を使用することも、可能である。たとえば、隣接する第1のサンプリング点から視点へのベクトル26に沿ったわずかに異なる位置から「レイマーチング」プロセスを開始し、その後、「レイマーチング」プロセスで一定の中間サンプリング点間隔を使用する、すなわち、インターリーブされたサンプリングを実行することが、可能である。当業者によって了解されるように、これは、レイマーチングプロセスの量子化された性質に起因する、隣接するスクリーン空間サンプリング点にまたがる「バンディング」アーティファクトを防ぐことができる。
【０２１４】
好ましい実施形態では、透明度を示すテクスチャ(したがって、立方体テクスチャ30)は、ミップマップ(すなわち、それぞれが異なるレベルの詳細(解像度)を有するオリジナルテクスチャデータ配列の複数のバージョンが、使用のために記憶されるところ)の形で記憶される。この場合に、各より低解像度のミップマップレベルは、好ましくは、前のより高解像度のミップマップレベルのダウンスケーリングされた(好ましくは2の倍率で)表現である。
【０２１５】
この場合に、テクスチャサンプリングプロセスは、好ましくは、透明度を示すテクスチャをどのミップマップレベル(詳細のレベル)でサンプリングすべきかをも判定する。使用すべきミップマップレベル(詳細のレベル)は、好ましくは、検討されつつあるサンプリング点から、サンプリング点から光源へのベクトルの境界ボリューム上の交点までの距離に基づいて選択される。他の配置が、もちろん可能である。
【０２１６】
本実施形態は、単一の外部光源22に関して説明されたが、立方体テクスチャ30および境界ボリューム20は、境界ボリューム20の外部にある任意の個数の光源からのライトシャフトの効果を決定し、シミュレートするのに使用され得る。この場合に、光源22を参照して説明された上の動作は、追加の外部光源ごとに別々に繰り返され、外部光源ごとの決定されたライトシャフト効果は、検討されつつあるサンプリング点でのすべての外部光源の全体的なライトシャフト効果を提供するために、適当に組み合わされる。
【０２１７】
たとえば境界ボリューム20内にも光源がある場合に、本発明のプロセスを、他のライトシャフトをシミュレートする技法と組み合わせ、かつ/または影および/もしくは反射などの効果を考慮に入れる技法など、任意の1つもしくは複数の他のレンダリング技法と望み通りに組み合わせることも可能である。
【０２１８】
好ましい実施形態では、シーン内でライトシャフトと影および/または反射との両方をレンダリングすることが望まれる場合に、ライトシャフトの効果を考慮に入れるのに使用される同一の立方体マップが、影(ローカル立方体マップ技法を使用して影をレンダリングするために)および/または反射(ローカル立方体マップ技法を使用して反射をレンダリングするために)の効果を考慮に入れるのにも使用される。これは、複雑で高品質のシーンをレンダリングする、特に便利で効率的な技法を表す。たとえば図9に図示されているように、同一の立方体マップが、影の効果とライトシャフトの効果との両方を決定するのに使用される場合に、レンダリングされる影およびライトシャフトは、シーン内で適当にマッチする。
【０２１９】
上記からわかるように、本発明は、少なくともその好ましい実施形態において、ライトシャフトの効果を決定するために「動的な」テクスチャマップを使用する(かつ、常に再生成する)ことを必要とするのではなく、ライトシャフトの効果を決定するために「静的な」テクスチャマップを使用することができる、ライトシャフトの効果をシミュレートする効果的で帯域幅効率の良い機構を提供する。これは、次に、より高品質のライトシャフト効果が、帯域幅効率が良く処理効率が良い形で達成されることを可能にする。
【０２２０】
これは、少なくとも本発明の好ましい実施形態において、レンダリングされるシーン内の境界ボリュームの表面の透明度を示すテクスチャマップを定義することと、次に、境界ボリュームの外部にある光源に関してサンプリング点から視点(カメラ)へのベクトルに沿ったサンプリング点の透明度値を決定するためにテクスチャマップをサンプリングすることとによって達成される。
【符号の説明】
【０２２１】
1  グラフィックス処理パイプライン
2  グラフィックスプリミティブ(ポリゴン)
3  ラスタ化ステージ
4  アーリーZ(デプス)およびステンシルテストステージ
6  フラグメントシェーディングステージ
7  レートZ(デプス)およびステンシルテストステージ
8  フラグメントフロントエンド動作
9  ブレンディングステージ
10  タイルバッファ
13  ダウンサンプリングおよび書き出し(マルチサンプル解決)ステージ
20  境界ボリューム
21  窓
22  光源
23  ライトシャフト
24  視点(カメラ)位置
25  スクリーン空間サンプリング点
26  ベクトル
27  中間(「第2の」)サンプリング点
28  ベクトル
29  ベクトル
30  立方体テクスチャ
31  基準位置
32  面
33  領域
34  交点
41  シーンに関する情報
42  立方体テクスチャに関して望まれる解像度サイズを示す情報
46  圧縮パラメータ
47  立方体生成プロセスの出力
55  サンプリングステップ
85  アルファ値(透明度値)
98  所望の個数
【図１】
2017076374.tif 000003
【図２】
2017076374.tif 000004
【図３】
2017076374.tif 000005
【図４】
2017076374.tif 000006
【図５】
2017076374.tif 000007
【図６】
2017076374.tif 000008
【図７】
2017076374.tif 000009
【図８】
2017076374.tif 000010
【図９】
2017076374.tif 000011
【図１０】
2017076374.tif 000012
【図１１】
2017076374.tif 000013
【外国語明細書】
2017076374000001.pdf