IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イマジネイション テクノロジーズ リミテッドの特許一覧

特開2022-31812光マップを決定するための重要度サンプリング
<>
  • 特開-光マップを決定するための重要度サンプリング 図1
  • 特開-光マップを決定するための重要度サンプリング 図2
  • 特開-光マップを決定するための重要度サンプリング 図3
  • 特開-光マップを決定するための重要度サンプリング 図4
  • 特開-光マップを決定するための重要度サンプリング 図5
  • 特開-光マップを決定するための重要度サンプリング 図6a
  • 特開-光マップを決定するための重要度サンプリング 図6b
  • 特開-光マップを決定するための重要度サンプリング 図6c
  • 特開-光マップを決定するための重要度サンプリング 図6d
  • 特開-光マップを決定するための重要度サンプリング 図6e
  • 特開-光マップを決定するための重要度サンプリング 図7
  • 特開-光マップを決定するための重要度サンプリング 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022031812
(43)【公開日】2022-02-22
(54)【発明の名称】光マップを決定するための重要度サンプリング
(51)【国際特許分類】
   G06T 15/50 20110101AFI20220215BHJP
   G06T 15/06 20110101ALI20220215BHJP
【FI】
G06T15/50
G06T15/06
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021192494
(22)【出願日】2021-11-26
(62)【分割の表示】P 2017047460の分割
【原出願日】2017-03-13
(31)【優先権主張番号】62/306,887
(32)【優先日】2016-03-11
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】501176037
【氏名又は名称】イマジネイション テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(72)【発明者】
【氏名】ルーク ピーターソン
(72)【発明者】
【氏名】ジャスティン デセル
(72)【発明者】
【氏名】イェンス フアサンド
(57)【要約】
【課題】3-Dレンダリングシステム、システムアーキテクチャ、及び方法を提供する。
【解決手段】シーンに対する跳ね返り光マップが、グラフィックス処理システム内でシーンをレンダリングする際に使用するために決定される。シーン内の照明を表す初期照明表示が決定される。跳ね返り光マップのテクセル位置に対して、初期照明表示は、重要度サンプリング技術を使用してサンプリングされてシーン内の位置を識別する。サンプリング光線は、跳ね返り光マップのテクセル位置に対応するシーン内の位置とシーンによってそれぞれ識別される位置との間で追跡される。照明値が、サンプリング光線の追跡結果を使用して跳ね返り光マップのテクセル位置に対して決定される。本明細書に説明する重要度サンプリング方法を使用することにより、追跡される光線は、テクセルの照明により多く寄与するシーンのより重要な領域に向けられる可能性がより高い。
【選択図】図5
【特許請求の範囲】
【請求項1】
グラフィックス処理システム内でシーンをレンダリングする際に使用するための該シーンに対する跳ね返り光マップを決定するコンピュータ実装方法であって、
前記シーン内の照明を表す初期照明表示を決定する段階と、
前記跳ね返り光マップのテクセル位置に対して、
前記初期照明表示の対応する要素の値に基づいて前記シーン内の1又は2以上の位置を識別する段階、
前記跳ね返り光マップの前記テクセル位置に対応する前記シーン内の位置と該シーン内のそれぞれの前記1又は2以上の識別された位置との間で1又は2以上のサンプリング光線を追跡する段階、及び
前記1又は2以上のサンプリング光線の前記追跡の結果を使用して前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する段階と、
を含むことを特徴とする方法。
【請求項2】
1又は2以上の位置を識別する前記段階は、疑似ランダム技術を使用する段階を含むことを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項3】
1又は2以上の位置を識別する前記段階は、重要度サンプリング技術を使用する段階を含み、与えられた要素を識別する可能性が、前記初期照明表示の各要素に関連付けられた重要度値に基づいていることを特徴とする請求項1又は請求項2に記載のコンピュータ実装方法。
【請求項4】
前記重要度値は、前記初期照明表示の前記要素の輝度に全体的に又は部分的に基づいていることを特徴とする請求項3に記載の方法。
【請求項5】
前記重要度値は、前記初期照明表示内の既知の変更に全体的に又は部分的に基づいており、
前記既知の変更は、現在のフレームの前記初期照明表示と以前のフレームの該初期照明表示の間の差異を含む、
ことを特徴とする請求項3に記載の方法。
【請求項6】
1又は2以上の位置を識別する段階と、1又は2以上のサンプリング光線を追跡する段階と、前記跳ね返り光マップの複数のテクセル位置の各々に対する照明値を決定する段階とを実行する段階を含むことを特徴とする請求項1から請求項5のいずれか1項に記載の方法。
【請求項7】
前記初期照明表示は、1又は2以上の初期光マップとして決定され、
前記1又は2以上の初期光マップは、前記跳ね返り光マップと同じトポロジーを有する、
ことを特徴とする請求項1から請求項6のいずれか1項に記載の方法。
【請求項8】
初期光マップ内の要素に対する有効重要度値が、
前記跳ね返り光マップ内の前記テクセルからの距離、
前記初期光マップの前記要素に対応する前記シーン内の位置と前記跳ね返り光マップ内の前記テクセルに対応する該シーン内の位置との間の距離、及び
前記初期光マップの前記要素に対応する前記シーン内の位置と前記跳ね返り光マップ内の前記テクセルに対応する該シーン内の位置との間の方向、
のうちの1又は2以上によって影響を受ける、
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記初期照明表示を決定する前記段階は、前記シーン内の直接照明を表す直接光マップを構築する段階を含むことを特徴とする請求項7又は請求項8に記載の方法。
【請求項10】
前記初期照明表示を決定する前記段階は、前記直接光マップをフレームのシーケンス内の以前のフレームに対して決定された跳ね返り光マップと結合し、それによって現在のフレームに対する初期光マップを決定する段階を更に含むことを特徴とする請求項9に記載の方法。
【請求項11】
初期照明表示の要素の前記値は、それらが対応する面の表面積に対する照明を表すことを特徴とする請求項1から請求項10のいずれか1項に記載の方法。
【請求項12】
1又は2以上の位置を識別する前記段階は、
前記初期照明表示をサンプリングするための1又は2以上のサンプリング値を選択する段階と、
累積方式に従って前記初期照明表示の値を累積して前記シーン内の照明を表す累積関数を決定する段階と、
前記選択された1又は2以上のサンプリング値を使用して前記累積関数内のそれぞれの1又は2以上の位置を識別する段階と、
前記累積関数内の前記識別された1又は2以上の位置に対応する前記シーン内の前記1又は2以上の位置を識別する段階と、
を含む、
ことを特徴とする請求項1から請求項11のいずれか1項に記載の方法。
【請求項13】
サンプリング光線がそれに向けて追跡される限定された位置セットが識別され、それらの識別された位置が、サンプリング光線を追跡するために前記跳ね返り光マップのテクセルのセット間で共有されることを特徴とする請求項1から請求項12のいずれか1項に記載の方法。
【請求項14】
前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する前記段階は、前記1又は2以上のサンプリング光線の前記追跡の結果に基づいて該テクセル位置に対する既存の照明値を更新する段階を含むことを特徴とする請求項1から請求項13のいずれか1項に記載の方法。
【請求項15】
サンプリング光線の追跡の前記結果は、該サンプリング光線が閉塞に衝突したか否かを示し、
前記跳ね返り光マップのテクセル位置に対する前記照明値は、前記サンプリング光線を追跡した前記結果が該サンプリング光線が閉塞に衝突したことを示すか否かに依存する方式で該サンプリング光線がそれに向けて追跡される前記識別された位置に対応する前記初期照明表示に基づいて決定される、
ことを特徴とする請求項1から請求項14のいずれか1項に記載の方法。
【請求項16】
前記跳ね返り光マップの前記テクセル位置に対する前記照明値は、
前記跳ね返り光マップの前記テクセル位置に対応する前記シーン内の前記位置と前記サンプリング光線がそれに向けて追跡される該シーン内の前記識別された位置との間の距離の表示、又は
前記跳ね返り光マップの前記テクセル位置に対応する前記シーン内の前記位置と前記サンプリング光線がそれに向けて追跡される該シーン内の前記識別された位置との間の方向の表示であって、前記初期照明表示が、方向付けされた照明値である前記方向の表示、
に更に基づいて決定される、
ことを特徴とする請求項15に記載の方法。
【請求項17】
前記跳ね返り光マップを使用して画像をレンダリングし、前記シーン内の面の照明を決定する段階を更に含むことを特徴とする請求項1から請求項16のいずれか1項に記載の方法。
【請求項18】
前記跳ね返り光マップの前記テクセルの部分集合が、シーン内の視点からの視認性に基づいて処理するために選択されることを特徴とする請求項1から請求項17のいずれか1項に記載の方法。
【請求項19】
シーンをレンダリングする際に使用するための跳ね返り光マップを決定するように構成されたグラフィックス処理ユニットであって、
前記シーン内の照明を表す初期照明表示を格納するように構成された1又は2以上のバッファと、
前記初期照明表示の対応する要素の値に基づいて前記シーン内の1又は2以上の位置を識別し、
前記跳ね返り光マップのテクセル位置に対応する前記シーン内の位置と該シーン内のそれぞれの前記1又は2以上の識別された位置との間で1又は2以上のサンプリング光線を追跡し、かつ
前記1又は2以上のサンプリング光線の追跡の結果を使用して前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する、
ように構成された処理論理部と、
を含むことを特徴とするグラフィックス処理ユニット。
【請求項20】
符号化されたコンピュータ可読コードを有するコンピュータ可読ストレージ媒体であって、
前記コンピュータ可読コードは、該コードがコンピュータ上で実行された時に請求項1から請求項18のいずれか1項に記載の方法が実行されるようになっている、
ことを特徴とするコンピュータ可読ストレージ媒体。
【請求項21】
集積回路製造システム内で処理された時に請求項19に記載のグラフィックス処理ユニットを製造するように該システムを構成する集積回路定義データセットが格納された非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書の説明は、一般的に、3-Dレンダリングシステム、システムアーキテクチャ、及び方法に関する。本明細書に説明する実施例の一部は、ハイブリッド光線追跡とラスター化ベースのレンダリングとのような非同期及び同時ハイブリッドレンダリングのためのシステム、アーキテクチャ、及び方法に関する。
【背景技術】
【0002】
グラフィックス処理ユニット(GPU)は、多くの場合に、高度に並列化されたラスター化ベースのレンダリングハードウエアを提供する。従来のグラフィックス処理ユニット(GPU)は、テクスチャマップによって多角形をレンダリングするためだけの固定パイプラインを使用し、かつプログラマブル頂点及び断片段を可能にするより柔軟なパイプラインに漸次進化した。現代のGPUは、形状及びピクセル処理のより大きいプログラム可能性をサポートするが、GPU内の様々な機能は、固定機能ハードウエアに実施される。現代のGPUは、複雑さの範囲が広い可能性があり、かつ特定の使用に適するようになっている場合がある。GPUを設計する時に、多くの場合に、性能、サイズ、電力消費、及びコストのような様々なファクタの間にトレードオフが存在する。GPUは、多くの場合に、リアルタイムレンダリングタスクに使用され、多くのGPUアプリケーションの最適化は、ショートカットを決定して主観的ビデオ品質の望ましいレベルを維持しながら毎秒の望ましいフレームスループットを達成する段階を伴う。例えば、ビデオゲームでは、光挙動の現実的モデル化が目的であることは希であり、逆に、望ましい外観又はレンダリング効果を達成することが多くの場合に主な目的である。
【0003】
従来的に、光線追跡は、アニメーション映画の製作のような高品質非リアルタイムグラフィックレンダリングタスクに対して、又は異なる材料内の光の挙動をより忠実にモデル化する2D画像の生成に使用される技術である。光線追跡では、望ましい結果を達成するためのレンダリング及びパイプライン柔軟性の制御は、多くの場合に、望ましいフレームレートを維持するよりも重要な問題であった。同じく、光線追跡に必要な処理タスクの一部の種類は、ラスター化に最適であるハードウエア上で必ずしも実施可能ではない。
【0004】
一例として、光線追跡は、レンダリングされる画像内に照明効果を導入するのに特に適している。シーン内の物体上に光を放つ光源は、そのシーンに対して定めることができる。一部の物体は、光源からの他の物体を遮ってシーン内に影をもたらすことができる。光線追跡技術を使用したレンダリングは、光線追跡を使用してシーン内の光の挙動をモデル化することができるので、光源の効果が正確にレンダリングされることを可能にする。
【0005】
シーン内の照明を表す光マップを構築することができる。例えば、光マップは、シーン内の照明効果面の輝度及び色の表示を格納する2Dデータ構造であり、これは、グラフィックレンダリング処理におけるテクスチャに類似の方式に使用することができ、例えば、光マップは、3Dシーン内の物体の面上にマップされたテクスチャとすることができる。この意味では、光マップは、照明されることが可能なシーン内の面の「覆われていない」マップとして考えることができる。光マップは、光マップのテクセルと呼ぶことができる特定の位置での値を含む。シーン内の3D面(例えば、プリミティブの面)から変換するために、面上の点に関連付けられたテクスチャ座標(u、v)は、例えば、プリミティブの頂点に対するテクスチャ座標の補間によって決定することができる。u及びv値は、プリミティブ面のための照明を決定するために光マップの座標として使用することができる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
光線追跡レンダリング技術は、多くの場合に、実施するのに計算的に比較的高価であり、かつメモリ集中的である。例えば、光マップの値を決定することは(光マップの「焼成」と呼ぶ場合がある)、多くの場合に、直接照明及び/又は間接照明を理想的には考慮に入れるべきであるので計算的に高価な処理である。間接照明の決定は、各光マップテクセルに対して多くの光線を処理することができることが要求される場合がある。これは、光マップの焼成が典型的に「オフライン」処理として、すなわち、画像がレンダリングされている実行時の前に実行されることを意味する。実行時の前に光マップを計算することは、光マップが、通常は、実行時にレンダリングされるシーン内の照明の推定値であることを意味し、従って、誤差が発生する可能性がある。それは、光マップが物体の移動又は光源の変化のようなシーン内の変化に応答することができないことを同じく意味する。光マップの焼成に関わる処理は、典型的には、リアルタイムで実行するのに計算的にあまりに高価である。
【課題を解決するための手段】
【0007】
この「発明の概要」は、「発明を実施するための形態」で以下に更に説明する選択した概念を単純化された形式で紹介するために提供するものである。この「発明の概要」は、特許請求する主題の重要な特徴又は本質的な特徴を識別するように意図しておらず、特許請求する主題の範囲を制限するのに使用されるようにも意図していない。
【0008】
グラフィックス処理システムにおいてシーンをレンダリングする際に使用するためのシーンに対する跳ね返り光マップを決定するコンピュータ実装方法を提供し、本方法は、シーン内の照明を表す初期照明表示を決定する段階と、跳ね返り光マップのテクセル位置に対して、初期照明表示の対応する要素の値に基づいてシーン内の1又は2以上の位置を識別する段階(例えば、疑似ランダム技術を使用して)、跳ね返り光マップのテクセル位置に対応するシーン内の位置とシーン内のそれぞれの1又は2以上の識別された位置との間で1又は2以上のサンプリング光線を追跡する段階、及び1又は2以上のサンプリング光線の追跡の結果を使用してレンダー光マップのテクセル位置に対する照明値を決定する段階とを含む。
【0009】
疑似ランダム技術が重要度サンプリング技術である上述のコンピュータ実装方法と与えられた要素を識別する可能性とは、初期照明表示の各要素に関連付けられた重要度値に基づいている。
【0010】
重要度値は、初期照明表示の要素の輝度に全体的に又は部分的に基づく場合がある。重要度値は、初期照明表示内の既知の変更に全体的に又は部分的に基づく場合がある。既知の変更は、現在のフレームの初期照明表示と以前のフレームの初期照明表示の間の差異を含むことができる。
【0011】
初期照明表示をサンプリングする段階、1又は2以上のサンプリング光線を追跡する段階、及び照明値を決定する段階は、例えば並行に又は順番に跳ね返り光マップの複数のテクセル位置の各々に対して実行することができる。
【0012】
初期照明表示は、1又は2以上の初期光マップとして決定することができ、1又は2以上の初期光マップは、跳ね返り光マップと同じトポロジーを有することができる。初期照明表示は、シーン内の直接照明を表す直接光マップを構築することによって決定することができる。更に、初期照明表示は、直接光マップをフレームのシーケンス内の以前のフレームに対して決定された跳ね返り光マップと更に結合し、それによって現在のフレームに対する初期光マップを決定することによって決定することができる。
【0013】
初期照明表示は、以前に作成された跳ね返り光マップを含むことができる。初期照明表示の要素の値は、それらが対応する面の表面積に対する照明を表すことができる。初期照明表示の要素の合計値は、寄与光源の出力をほぼ説明することができる。
【0014】
初期光マップ内の要素に対する有効重要度値は、跳ね返り光マップ内のテクセルからの距離によって影響される場合がある。初期光マップ内の要素に対する有効重要度値は、初期光マップの要素に対応するシーン内の位置と跳ね返り光マップ内のテクセルに対応するシーン内の位置との間の距離によって影響される場合がある。初期光マップ内の要素に対する有効重要度値は、初期光マップの要素に対応するシーン内の位置と跳ね返り光マップ内のテクセルに対応するシーン内の位置との間の方向によって影響される場合がある。
【0015】
シーン内の1又は2以上の位置を識別するために疑似ランダム技術を使用する初期照明表示の上述のサンプリングは、1又は2以上のサンプリング値を選択する段階を含むことができる。サンプリング値は、(i)低矛盾シーケンスに従って、(ii)ランダムに又は疑似ランダムに、(iii)準モンテカルロ法を使用して、又は(iii)層別サンプリング技術に従って選択することができる。更に、サンプリング値は、値の表から選択することができる。
【0016】
上述の重要度サンプリング技術は、本明細書で疑似ランダム技術と呼ぶ場合がある上述の技術のうちのいずれかを含むことができる。更に、重要度サンプリング技術を使用した初期照明表示のサンプリングは、累積方式に従って初期照明表示の重要度値を累積して初期照明表示内の全ての照明の結合された重要度を表す累積関数を決定する段階と、選択された1又は2以上のサンプリング値を使用して累積関数内のそれぞれの1又は2以上の位置を識別する段階と、累積関数内の識別された1又は2以上の位置に対応するシーン内の1又は2以上の位置を識別する段階とを更に含むことができる。
【0017】
1又は2以上の位置を識別する段階は、初期照明表示をサンプリングするための1又は2以上のサンプリング値を選択する段階を含むことができる。更に、1又は2以上の位置を識別する段階は、累積方式に従って初期照明表示の値を累積してシーン内の照明を表す累積関数を決定する段階と、選択された1又は2以上のサンプリング値を使用して累積関数内のそれぞれの1又は2以上の位置を識別する段階と、累積関数内の識別された1又は2以上の位置に対応するシーン内の1又は2以上の位置を識別する段階とを更に含むことができる。
【0018】
それぞれの重要度値は、照明表示の要素の輝度に全体的に又は部分的に基づく場合がある。
【0019】
初期照明表示が初期光マップとして決定される実施例では、上述の初期照明表示の値を累積する段階は、初期光マップのタイルに値を累積して、例えば、異なる解像度での初期光マップを表すmipマップされた光マップのセットを形成する段階を含むことができる。これに代えて、与えられたレベルでの各要素がその下にあるレベルでの要素の和を表す値の階層和を使用することができる。サンプリング値は、(i)低矛盾シーケンスに従って、(ii)ランダムに又は疑似ランダムに、又は(iii)層別サンプリング技術に従って、又は(iv)準モンテカルロ法に従って選択することができる。サンプリング値は、値の表から選択することができる。サンプリング光線がそれに向けて追跡される限定された位置のセットを識別することができ、それらの識別された位置は、サンプリング光線を追跡するために跳ね返り光マップのテクセルのセット間で共有することができる。
【0020】
跳ね返り光マップのテクセル位置に対する照明値は、1又は2以上のサンプリング光線の追跡の結果に基づいてテクセル位置に対する既存の照明値を更新することによって決定することができる。テクセル位置に対する既存の照明値の更新は、フレームのシーケンスにわたるテクセル位置に対する照明値に対する移動平均を維持する段階を含むことができる。移動平均は、跳ね返り光マップ内の値の対数減衰を達成することができる。対数関数の底は、初期照明表示が変わる速度を含む外部ファクタに応答して変えることができる。移動平均は、分子と分母を別々に増分することによって漸進的改善効果を生成することができる。
【0021】
一部の実施例では、サンプリング光線の追跡の結果は、サンプリング光線が閉塞に衝突したか否か又は2つの3次元点間に中断されない見通し線があるか否かを示す。跳ね返り光マップのテクセル位置に対する照明値は、サンプリング光線がそれに向けて追跡される識別された位置に対応する初期照明表示と、光線が非閉塞見通し線を見出したか否かとに基づいて決定される。サンプリング光線が閉塞に衝突しないことをサンプリング光線を追跡した結果が示す場合に、光エネルギをテクセルに追加することができるが、サンプル光線が閉塞に衝突した場合に、光は追加されないが、テクセル内の値は、初期照明表示内のターゲット要素を選択する確率に比例して暗くすることができる。テクセル位置の値は、特定のサンプルを選択する可能性に反比例して修正することができる。
【0022】
初期照明表示内の要素又は要素のセットに対する重要度値は、跳ね返り光マップのテクセル位置に対応するシーン内の位置と要素又は要素のセットに対応するシーン内の識別された位置との間の距離又は大体の距離の表示に更に基づいて決定することができる。一部の実施例では、複数の空間的に近い要素の距離表示は、互いにグループにすることができ、これらのグループは、次に、大体の距離に基づいて要素を迅速に選択するための階層を形成することができる。
【0023】
一部の実施例では、初期照明表示は、方向付けされた照明値である。これらの方向付けされた照明値は、シーン内の材料の異なる面特性のモデル化から生じる場合がある。初期照明表示内の要素又は要素のセットに対する重要度値は、跳ね返り光マップのテクセル位置に対応するシーン内の位置と要素又は要素のセットに対応するシーン内の識別された位置との間の方向又は大体の方向の表示に更に基づいて決定することができる。一部の実施例では、複数の類似要素の方向表示は、互いにグループにすることができ、これらのグループは、次に、大体の方向に基づいて要素を迅速に選択するための階層を形成することができる。
【0024】
初期照明表示の要素は、対応する点の空間位置に基づいて階層に編成することができる。初期照明表示は、方向付けされた照明値とすることができ、初期照明表示の要素は、方向付けされた照明値に格納された値の支配的方向に基づいて階層に編成することができる。
【0025】
本方法は、跳ね返り光マップを使用して画像をレンダリングし、シーン内の面の照明を決定する段階を更に含むことができる。
【0026】
跳ね返り光マップは、グラフィックス処理システムにおいてリアルタイムでレンダリングするためのフレームのシーケンスのうちのフレームに対して決定することができる。
【0027】
跳ね返り光マップのテクセルの部分集合は、シーン内の視点からの視認性に基づいて処理に対して選択することができる。跳ね返り光マップ内のテクセルは、レンダリングされるフレームへのそれぞれの寄与に基づいて優先順位を付けることができる。寄与の決定は、近似的である場合があり、及び/又は優先順位付けは、粗い場合がある。光は、非可視の電磁放射線、無線信号、音響振動、弾道運動、及び流体力学を含むあらゆる伝播現象を表すことができる。
【0028】
シーンをレンダリングする際に使用するための跳ね返り光マップを決定するように構成されたグラフィックス処理ユニットを提供し、グラフィックス処理ユニットは、シーン内の照明を表す初期照明表示を格納するように構成された1又は2以上のバッファと、初期照明表示の対応する要素の値に基づいてシーン内の位置のうちの1又は2以上を識別し(例えば、疑似ランダム技術を使用して)、跳ね返り光マップのテクセル位置に対応するシーン内の位置とシーン内のそれぞれの1又は2以上の識別された位置との間で1又は2以上のサンプリング光線を追跡し、かつ1又は2以上のサンプリング光線を追跡した結果を使用して跳ね返り光マップのテクセル位置に対する照明値を決定するように構成された処理論理部とを含む。
【0029】
疑似ランダム技術は、重要度サンプリング技術である場合があり、与えられた要素を識別する可能性は、初期照明表示の要素に関連付けられたそれぞれの重要度値に基づく場合がある。
【0030】
グラフィックス処理システムにおいてシーンをレンダリングする際に使用するためのシーンに対する跳ね返り照明を決定するコンピュータ実装方法を提供することができ、本方法は、シーン内の照明を表す初期照明表示を決定する段階と、バッファ内の各ピクセルに対するシーン内の視点から可視の面を決定する段階と、各ピクセルに対して、疑似ランダム技術を使用して初期照明表示の要素に対応する3D位置のうちの1又は2以上を識別する段階、可視面の位置に対応するシーン内の位置と照明表示の識別された要素に対応するそれぞれの1又は2以上の識別された位置との間で1又は2以上のサンプリング光線を追跡する段階、及び1又は2以上のサンプリング光線の追跡の結果を使用して可視面に対する照明値を決定する段階とを含む。
【0031】
照明表示は、光マップ、複数の光マップ、複数の光プローブ、及び複数の光源のうちの1又は2以上を含むことができる。
【0032】
照明表示の要素は、重要度値に関連付けることができ、疑似ランダム技術は、重要度サンプリング技術である。
【0033】
重要度値は、照明表示の要素の輝度に関連する場合がある。照明表示の要素に対する重要度値は、バッファ内の異なるピクセルに対して異なる場合がある。ピクセルの照明値は、フレーム間の視界の変化に対処するように再計画することができる。照明表示の要素に対する相対的重要度を決定する関数への入力は、フレームにわたって永続的である場合がある。照明表示の要素に対する相対的重要度を決定する関数への入力は、フレーム間の視界の変化に基づいて再計画される場合がある。
【0034】
集積回路製造システムにおいて処理された時に集積回路製造システムをして本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを製造させる集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体を同じく提供する。本明細書に説明するグラフィックス処理ユニットは、ハードウエアに具現化することができる。本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを記述する集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体と、本明細書の実施例のいずれかに説明するようなグラフィックス処理ユニットを具現化する集積回路の回路レイアウト記述を発生させるように集積回路記述を処理するように構成されたレイアウト処理システムと、回路レイアウト記述に従ってグラフィックス処理ユニットを製造するように構成された集積回路発生システムとを含む集積回路製造システムを同じく提供することができる。
【0035】
本明細書に説明する方法のいずれかを実行するためのコンピュータプログラムコードを提供することができる。コンピュータシステムで実行された時にコンピュータシステムをして本明細書に説明する方法のいずれかを実行させるコンピュータ可読命令を格納した非一時的コンピュータ可読ストレージ媒体を提供することができる。
【0036】
上述の特徴は、当業者には明らかであろうが適切な場合に組み合わせることができ、かつ本明細書に説明する実施例の態様のいずれとも組み合わせることができる。
【0037】
ここで実施例を添付図面を参照して詳細に以下に説明する。
【0038】
添付図面は、様々な実施例を示している。当業者は、図面内に図示の要素境界(例えば、ボックス、ボックスのグループ、又は他の形状)が境界の一例を表すことを認めるであろう。一部の実施例では、1つの要素が複数の要素として描かれる場合があり、又は複数の要素が1つの要素として描かれる場合がある。共通参照番号は、適切な場合に図を通して類似の特徴を示すのに使用される。
【図面の簡単な説明】
【0039】
図1】グラフィックス処理システムを示す図である。
図2】グラフィックス処理の方法のための流れ図である。
図3】視点からレンダリングされるシーンを示す図である。
図4】重要度サンプリング技術を使用して初期照明表示をサンプリングするために実行される段階の一部のための流れ図である。
図5】光マップがシーン内の位置に対応する方法の実施例を示す図である。
図6a】16x16光マップとしてmipマップされた初期光マップの第1のレベルを示す図である。
図6b】8x8光マップとしてmipマップされた初期光マップの第2のレベルを示す図である。
図6c】4x4光マップとしてmipマップされた初期光マップの第3のレベルを示す図である。
図6d】2x2光マップとしてmipマップされた初期光マップの第4のレベルを示す図である。
図6e】1x1光マップとしてmipマップされた初期光マップの第5のレベルを示す図である。
図7】グラフィックス処理システムが実施されるコンピュータシステムを示す図である。
図8】グラフィックス処理システムを具現化する集積回路を発生させるための集積回路製造システムを示す図である。
【発明を実施するための形態】
【0040】
以下の説明は、当業者が本発明を製造かつ使用することを可能にするために一例として提示するものである。本発明は、本明細書に説明する実施形態に限定されず、開示する実施形態への様々な修正は、当業者に明らかであろう。ここで実施形態を以下に単に例示的に説明する。
【0041】
2つの光マップ、すなわち、初期光マップ(「ソース」光マップと呼ぶことができる)及び跳ね返り光マップ(「デスティネーション」光マップ又は可能であれば「レンダー」光マップと呼ぶことができる)が使用される実施例が本明細書に説明される。跳ね返り光マップは、シーン内の照明を表すためにシーンの画像をレンダリングするのに使用される。初期光マップは、跳ね返り光マップを調節するのに使用することができるシーン内の照明の大体の表示を供給するために構築される。初期光マップ及び跳ね返り光マップは、トポロジー的に同じであり、同じジオメトリバッファを共有する。光マップのテクセルは、各テクセル位置の異なるタイプの複数の値を含有する「g-バッファ」を使用してシーン-空間内の位置の中にマップすることができる。g-バッファは、各光マップテクセルに対して、面法線と、物体上の点が光マップテクセルの中心に対応するその面に対応するシーン-空間内の位置とを格納する。一部の実施例では、跳ね返り光マップの各テクセルに対して、1又は2以上のサンプリング値は、重要度サンプリング技術に従って初期光マップからそれぞれの1又は2以上のテクセルを選択するのに使用される。このようにして、テクセルを選択する可能性は、初期光マップのテクセルの重要度値の大きさに依存する。従って、シーンの重要な領域(例えば、明るい領域)に対応するテクセルは、シーンの重要でない領域(例えば、暗い領域)に対応するテクセルよりも選択される可能性が高い。各選択されたテクセルは、シーン内の位置を決定するためにシーン-空間の中にマップされ、跳ね返り光マップ内のテクセルに対応するシーン-空間内の位置からその位置に向う光線が追跡される。光線が遮られない場合に、初期光マップの選択されたテクセルの照明は、跳ね返り光マップのテクセルの照明に寄与するが、光線が遮られる場合に、初期光マップの選択されたテクセルの照明は、跳ね返り光マップのテクセルの照明に寄与しない。いずれの場合も、跳ね返り光マップの値は、初期光マップのテクセルが選択された確率を説明するように重み付けされる。処理時間及び電力が重要でない場合に、跳ね返りマップの各テクセルでは、テクセルの照明を決定するために、しかし、処理時間及び電力を低減するために(例えば、光マップの焼成がリアルタイムで実行される場合)、あらゆる方向にサンプリング光線が放たれ、限定された数の光線だけが跳ね返りマップの各テクセルから追跡される。本明細書に説明する重要度サンプリング方法を使用することにより、追跡される光線は、シーンのより有意な領域に向けられる可能性が高い。一例では、初期光マップのテクセルの明度又は輝度は、重要度基準の1つとして使用することができる。シーンの明るい領域がテクセルの照明に寄与するので、これは、限定された光線の数に基づいて照明の決定を改善することを助けることができる。
【0042】
図1は、グラフィックス処理ユニット102とメモリ104とを含むグラフィックス処理システム100を示している。グラフィックス処理ユニット102は、グラフィックス処理ユニット102内でバスを通じて互いに通信することができる面識別論理部106、処理論理部108、画像バッファ110、制御論理部112、バッファ114(ジオメトリバッファ116、直接光マップバッファ118、及び跳ね返り光マップバッファ120を含む)、及びメモリインタフェース122を含む。面識別論理部106は、レンダリングされるシーン内の面を識別するように構成される。処理論理部108は、1又は2以上の実行コアを含み、かつ面識別論理部106によって識別された面のグラフィックスデータを処理するように構成される。画像バッファ110は、レンダリングされたピクセル値を格納するように構成される。制御論理部112は、グラフィックス処理システム100の作動を制御するように構成される。処理論理部108はまた、レンダリングされるシーン内の照明を示すためにフレームのレンダリング中に使用される跳ね返り光マップのテクセル値(跳ね返り光マップバッファ120に格納するための)を決定するように構成される。メモリインタフェース122を通じてグラフィックス処理ユニット102とメモリ104の間でデータを渡すことができる。
【0043】
グラフィックス処理システム100の作動の実施例を図2の流れ図を参照して説明する。
【0044】
シーン内の物体を表すグラフィックスデータが、グラフィックス処理ユニット102で受信される。グラフィックスデータは、レンダリングされる物体の面を表すプリミティブを含むことができる。プリミティブは、三角形であることが多いが、他の形態、例えば、パッチ又はnurb、点、線のような他の2次元形状、球体又はボックスのような3次元形状を取ることができる。プリミティブは、頂点のセットによって定めることができ、例えば、3つの頂点が三角形のプリミティブを定める。グラフィックスデータは、シーン内のプリミティブの頂点の頂点データ(例えば、テクスチャデータのような位置データ及び属性データ)及びどの頂点がプリミティブを形成するかを示すためのプリミティブの表示を含むことができる。グラフィックスデータはまた、レンダリングされるシーン内の光源の属性(例えば、位置、方向、色など)を定めることができる。
【0045】
グラフィックス処理ユニット102は、レンダリングされるフレームに対してリアルタイムで跳ね返り光マップを決定するように作動し、決定された跳ね返り光マップを使用して適切な照明でシーンの画像をレンダリングする。一部の実施例では、グラフィックス処理ユニット102は、跳ね返り光マップを決定するための漸進的改善方法を実施し、それによってフレームのシーケンスにわたって跳ね返り光マップの値を漸次改善し、シーン内の照明のより正確な表現に向けて収束させることができる。これは、特定のフレームの照明を各フレームに対して新しく計算する必要がないことを意味し、それによってリアルタイムで跳ね返り光マップを決定する場合の処理コストを低減する。これは、跳ね返り光マップがシーン内の照明の正確な表現になる前に少数のフレームを取る場合があることを意味する。
【0046】
段階S202で、処理論理部は、シーンの初期光表示を決定する。初期照明表示は、シーン内の照明の大体の表現である。例えば、初期照明表示は、直接光マップのテクセル値の形態を取ることができる。「直接」光マップは、シーン内の直接照明の効果を格納する。直接照明は、面位置と光源の間の見通し線の結果として発生するシーン内の面位置の照明である。光線追跡、影マッピング、又は何らかの他の技術を使用して初期直接照明を構成することができる。対照的に、間接照明は、光源と面位置の間の間接経路の結果として、例えば、シーン内の面からの光の1又は2以上の「跳ね返り」又は反射の結果として発生するシーン内の面位置の照明である。
【0047】
図3は、2つの面3041と3042を含むシーン302の実施例を示している。これは、極めて単純な実施例であり、他の実施例では、シーン内に更に多くの面及び物体が存在する場合がある。図3は、シーン内の物体を照明する2つの光源3061及び3062を示している。シーンが見られる視点が308に示され、レンダリングされるフレームの視野平面が310で表されている。
【0048】
直接光マップは、バッファ118に格納される。直接光マップは、エネルギ節約方式で構築される。例えば、直接光マップの各テクセル位置では、シーン内の対応する面位置は、ジオメトリバッファ116のデータに従って決定される。影光線は、各光源306に向って各テクセル位置に対して面位置から追跡される(例えば、1つの光源につき1つのテクセル当たり1つの光線)。光線が遮られる場合に、光源は、直接光マップのテクセル位置の照明に寄与しないが、光線が遮られない場合に、光源は、直接光マップのテクセル位置の照明に寄与する。光源がテクセル位置の照明に寄与する量は、テクセルがシーン空間で表現する面積、面位置の面法線(ジオメトリバッファ116に示される通り)、面位置と光源の間の光線の方向、シーン内の面位置と光源の間の距離、及び光源の明度に依存する。例えば、直接光マップのテクセルに光源によって寄与される光の量は、テクセルに対応する面位置が光に提示する入射表面積の量によって決定される。テクセル照明値への光源の寄与は、光源の明度をシーン空間で変換されたテクセルの面積で乗算することによって決定することができ、テクセルの面法線(ジオメトリバッファ116によって表示)と光源に向う光線の方向との間のドット積によって乗算され、d2によって割算され、ここでdは、シーン内の面位置と光源の間の距離である。これは、シーン空間に投影される時に空間が小さいテクセルよりもシーン空間内の多くの面積を有するテクセルが、これらが光源に対して同じ距離及び方向である場合に最後には輝く傾向があることを意味する。
【0049】
最初に説明した単純な実施例では、直接光マップ118が初期光マップとして使用され、跳ね返り光マップを決定する場合に使用されるシーン内の照明の近似を表している。後で説明するように、他の実施例では、直接光マップを以前のフレームで決定された跳ね返り光マップと組み合わせることによって初期光マップを決定することができる。
【0050】
段階S204からS210は、跳ね返り光マップの各テクセルに対して繰り返される。図2に示す実施例では、跳ね返り光マップの各テクセルが処理されるが、他の実施例では、跳ね返り光マップの複数のテクセルが互いに並行に処理される。
【0051】
段階S204で、処理論理部108は、重要度サンプリング技術を使用して初期光マップをサンプリングし、シーン内の1又は2以上の位置を識別する。位置を識別する可能性は、シーン内の位置の中にマップされる初期光マップのテクセルの重要度値に基づいている。段階S204は、異なる実施例で異なる方法で実行することができるが、図4は、段階S204の一部として実行することができる段階の実施例を示している。
【0052】
図4に示す実施例では、初期光マップ(例えば、直接光マップ)の各テクセルの輝度値は、確率分布関数の重要度値として処理される。明るいテクセルは、統計的にシーン内の照明に寄与するのでサンプリングされる高い確率を有する。
【0053】
段階S402で、初期光マップの値は、累積関数を決定するために累積される。例えば、確率分布関数は、累積分布関数を形成するために統合される。累積関数は、サンプリングによって特定のテクセルに対して検索することができる単調増加関数である。
【0054】
段階S404で、1又は2以上のサンプリング値が選択される。サンプリング値は、指定された範囲内、例えば、0から1の範囲内で、又は0から初期光マップの合計重要度までの範囲内でランダムに選択することができる。例えば、サンプリング値の表は、グラフィックス処理ユニット102に(例えば、バッファ114に)格納することができ、処理ユニット108は、表を参照してサンプリング値を決定することができる。サンプリング値は、Haltonシーケンス又はHammersleyセットのような低矛盾シーケンスに従って選択することができる。これは、許容されるサンプリング値の範囲にわたる優良なカバレージを提供する。サンプリング値の数が増加する時に、Haltonシーケンスのような低矛盾シーケンスを使用すると、範囲にわたるカバレージは良くなる。これに代えて、サンプリング値は、ランダム又は疑似ランダムに、又は層別抽出法又は別の準モンテカルロ技術に従って選択することができる。
【0055】
段階S406で、選択されたサンプリング値の各々が累積関数内の位置の中にマップされる。換言すると、選択されたサンプリング値は、累積関数内のそれぞれの位置を識別するのに使用される。例えば、サンプリング値が0から初期光マップの合計重要度までの範囲内で選択することができる場合である。最終テクセル位置では初期光マップテクセル値の全てが累積されているので、累積関数の値は、第1のテクセル位置のゼロ(又はゼロに近い)から最大で最終テクセル位置の初期光マップの合計重要度に実質的に等しい値までの範囲に及んでいる。段階S406は、テクセル位置での値が最初にサンプリング値よりも大きくなる累積関数のテクセル位置を決定する段階を伴う可能性がある。累積関数の性質のために、テクセル位置を識別する可能性は、このテクセル位置の初期光マップのテクセル内の値に線形依存する。
【0056】
段階S408で、段階S406で識別された初期光マップ内の位置は、ジオメトリバッファ116を使用してワード空間の中にマップされ、シーン内の対応する位置を識別する。
【0057】
図5は、跳ね返り光マップ502の一部と初期光マップ504の一部の実施例を示している。図5はまた、レンダリングされるシーン内の3つの面5101、5102、及び5103を示している。跳ね返り光マップ502のテクセル506は、段階S204からS210で現在処理されているテクセルである。テクセル506は、面5101上の面位置514に対応する。初期光マップ504のテクセル5081及び5082は、段階S406で識別されていたものである。段階S408で、テクセル5081は、面5102上の面位置5161にマップされていたものであり、テクセル5082は、面5103上の面位置5162にマップされていたものである。
【0058】
段階S206で、処理論理部108は、識別された面位置5161及び5162の各々に向けて位置514からのサンプリング光線(5121及び5122)を追跡する。図5は、シーンのグラフィックスのあらゆる要素、例えば、プリミティブとすることができるシーン内の閉塞518を示している。閉塞518は、光線5122を塞ぐが光線5121は塞がない。光線51215122を追跡した結果は、サンプリング光線が閉塞(例えば、閉塞518)に衝突するか否かを示している。
【0059】
段階S208で、処理論理部108は、段階S206のサンプリング光線の追跡の結果を使用して現在のテクセル位置(例えば、図5に示すテクセル506に対応する)の照明値を決定する。例えば、光線が遮られることなく識別された面位置に当たる場合に、初期光マップの対応するテクセル内の値は、跳ね返り光マップの現在のテクセルの照明に寄与するが、光線が識別された面位置に達する前に遮られる場合に、初期光マップの対応するテクセル内の値は、跳ね返り光マップの現在のテクセルの照明に寄与しない。例えば、光線5121は位置514と識別された面位置5161の間では遮られず、跳ね返り光マップ502のテクセル位置506の照明値は、初期光マップ504のテクセル値5081に基づいて決定される。しかし、光線5122は、位置514と識別された面位置5162の間で(閉塞518により)遮られ、跳ね返り光マップ502のテクセル位置506の照明値は、初期光マップ504のテクセル値5082に基づく寄与を受けない。しかし、テクセル値は、初期光マップ504のテクセル5082を選択する確率に基づいて調節される。特に、テクセル内の値は、特定のサンプルを選択する可能性(すなわち、テクセル5082を選択する確率)に反比例して修正することができる。
【0060】
段階S208は、位置514と位置5161の間の距離に基づいてテクセル506の照明を決定することができる。例えば、サンプリング光線5121が遮られない面位置5161が面位置5141に近い場合に、面位置514の照明は、面位置5161が面位置5141から遠く離れている場合よりも面位置5161の照明によって影響を受ける。例えば、dがシーン内の面位置514と5161の間の距離である場合に、照明の効果は、1/d2によって減少する。
【0061】
テクセル514の照明寄与は、デスティネーションテクセル514に関連付けられた標準値とサンプリング光線512の方向の間の角度の関数に基づいて更に修正することができる。更に、寄与は、ソーステクセル5161に関連付けられた標準値とサンプリング光線512の方向の関数によって更に修正することができる。これらの関数は、そのそれぞれの材料に関連付けられた反射分布関数(BRDF及び/又はBSDF)を表すように意図される。単純余弦関数が完全乱反射効果に使用されることが多い。
【0062】
更に、一部の実施例において、照明表示は、方向付けされた照明値として格納することができる。全ての材料が完全に拡散的というわけではなく、そのためにそれらは、全てが球面で面から均一に入射光を再放射するわけではない。一部の材料(ほとんどの材料)は、強力な鏡面成分を有し、入射方向から鏡面方向に光を放射する。材料は、BRDF又はBSDF(双方向反射分布関数又は双方向散乱分布関数)によって説明することができる。例示的に、光マップの各テクセル(502及び/又は504)は、方向付け関数として格納することができる。これは、面位置での照明が、面位置が見られる方向に依存することを意味する。これは、面位置での面法線に依存する場合がある。例えば、光マップは、各テクセル位置に対して、方向の関数として照明を表す球面調和成分を格納することができる。例えば、面が反射し、1つの方向から強く照明される場合に、この面は、光の反射の角度に対応する方向から明るく見える。これは、ガラス及び水のような反射率の高い面からの鏡面反射では特に真であるが、反射しない面でも真である。この場合では、段階S208は、位置514と位置5161の間の方向に基づいて、すなわち、サンプリング光線5121が面位置5161と衝突する方向に基づいてテクセル506の照明を決定することができる。
【0063】
従って、跳ね返りマップの現在のテクセル(例えば、跳ね返りマップ502のテクセル506)の照明値を決定することができる。
【0064】
段階S210で、処理論理部108は、処理する跳ね返り光マップのテクセルがまだあるか否かを決定する。ある場合に、本方法は、段階S204に戻り、段階S204が跳ね返り光マップの別のテクセルに繰り返される。一部の実施例では、段階S204からS210は、各反復で跳ね返りマップの1又は2以上のテクセルのセットに実行することができる。
【0065】
段階S210で、処理する現在のフレームの跳ね返り光マップのテクセルがもうないと決定された場合に、跳ね返り光マップが決定される。決定された跳ね返り光マップは、バッファ120に格納することができる。段階S212で、跳ね返り光マップは、シーンの画像をレンダリングするのに使用される。特に、シーンの画像は、跳ね返り光マップを使用してレンダリングされ、シーン内の照明を決定する。跳ね返り光マップは、シーンの全体照明(GI)を近似するのに使用される。シーンのレンダリングは、公知の技術に従って実行することができ、レンダリング段階S212の詳細などは本明細書で詳しく説明する。要約すると、レンダリングは、面識別論理部106を使用して視点308からレンダリングされる画像の各ピクセル位置(例えば、視野平面310における)のシーンの可視の面を識別する段階、及び各ピクセル位置に対して処理論理部108の1又は2以上の陰影付けプログラムを実行してピクセルの画像値を決定する段階を伴う可能性がある。陰影付けプログラムは、現在のフレームに対して決定されている跳ね返り光マップを使用して、画像位置に対応する面位置での照明を決定することができる。跳ね返り光マップは、テクスチャに類似の方法に使用することができ、例えば、座標(u、v)を有する光マップをサンプリングして光マップテクセル値間を補間し、レンダリングされるピクセルに対応する特定の面位置に対する照明値を決定することができる。
【0066】
一部の実施例では、跳ね返り光マップは、方向付けされた値を含有する場合がある。この場合では、可視の面の面法線は、跳ね返り光マップから検索される照明を決定するのに使用される。
【0067】
一部の実施例では、本方法は、跳ね返り光マップのテクセルの全てに対して繰り返さなくてもよい。例えば、本方法は、シーンがレンダリングされる時に可視の面上にマップされる光マップのテクセルだけに実行することができる。跳ね返り光マップがシーンに変換される時に、跳ね返り光マップの一部の部分は、視点(例えば、308)から見ることができ、跳ね返り光マップの他の部分は、視点から見ることができない。従って、シーンの視点からの視認性に基づいて処理するための跳ね返り光マップのテクセルの部分集合を選択することができる。これは、シーンをレンダリングする時に使用されない跳ね返り光マップのテクセルを決定する段階に伴う処理を防ぐ。更に、跳ね返り光マップのテクセルは、レンダリングされるフレームへのそれぞれの寄与に基づいて優先順位を付けることができ、寄与の決定は、近似とすることができ、及び/又は優先順位付けは、粗いとすることができる。テクセルの寄与は、テクセルに関連のレンダリングされるピクセルの数により、又は例えばシーンのテクセルの位置によって決定することができる。場合によっては、例えば、フレームがレンダリングされる時に跳ね返り光マップがリアルタイムで決定される場合に、跳ね返り光マップの適切なテクセルの全てを完全に決定することはできず、跳ね返り光マップの重要なテクセルに優先順位を付けることが有用である。テクセルの優先順位付けは、例えば、1つのテクセルが跳ね返り光マップの他のテクセルより早く決定されること、又は多くのサンプリング光線が他のテクセルに比較して1つのテクセルに対して追跡されることを意味する。
【0068】
跳ね返り光マップは、フレームがレンダリングされる時にリアルタイムでフレームのシーケンスのうちの各フレームに対して決定することができる。シーケンスの第1のフレームでは、直接光マップ(バッファ118に格納)を初期光マップとして使用することができ、現在のフレームの跳ね返り光マップを決定するのに使用される(次に、バッファ120に格納される)。
【0069】
次のフレームでは、現在の直接光マップが段階S204で計算され、現在のフレームに対する初期光マップを決定するために以前のフレームの跳ね返り光マップと結合される。これに代えて、初期照明は、直接光マップと以前に作成された跳ね返り光マップの両方からサンプリングすることができ、2つが必ずしも同じバッファに存在する必要はない。
【0070】
更に、これらの次のフレームに対して、跳ね返り光マップ内のテクセル位置に対する照明値を決定する段階は、段階S206でサンプリング光線を追跡した結果に基づいてテクセル位置に対する既存の照明値を更新する段階を含む。例えば、移動平均は、フレームのシーケンスにわたって跳ね返り光マップの照明値に維持することができる。移動平均は、跳ね返り光マップの値の対数減衰を達成することができ、それによって新しい照明値は、古い照明値よりも重く重み付けされる。対数関数の底は、初期照明表示が変化する速度を含む外部ファクタに応答して変えることができる。例えば、シーン内の照明が迅速に変化する場合に、古い照明がシーン内の現在の照明を表さないので、対数関数は迅速に減衰される。一部の実施例では、移動平均は、分子及び分母を別々に増分することによって漸進的改善効果を生成することができる。
【0071】
段階S402で、初期光マップの値が累積される場合に、値は、あらゆる適切な順序、例えば、ラスタ走査順序又は牛耕式順序で累積することができる。しかし、特定の実施例では、初期光マップの値は、初期光マップのタイルに累積される。例えば、初期光マップテクセル内の値は、異なる解像度の初期光マップを表すmipマップされた光マップのセットを形成するために累積することができる。これは、段階S406、すなわち、サンプリング値を使用して累積関数を用いて位置を識別する段階を実行することができる速度を大いに改善することができる。例えば、図6aから6eは、初期光マップの異なるmipマップされたレベルを表している。特に、図6aは、16x16初期光マップ602を示し、図6bは、8x8初期光マップ604を示し、図6cは、4x4初期光マップ606を示し、図6dは、2x2初期光マップ608を示し、図6eは、1x1初期光マップ610を示している。初期光マップの異なるレベルは、段階202で決定することができる。例えば、初期光マップは、高精細解像度602(例えば、図6aに示す単純な実施例の16x16)で決定することができ、低mipマップレベル光マップ604は、現在の光マップ602のブロック(例えば、2x2ブロック)を平均化することによって生成することができる。これは、最低レベルのmipマップされた光マップ610が生成されるまで異なるmipマップレベルに繰り返すことができる。
【0072】
この実施例では、段階S406で、最低解像度mipマップ初期光マップ610から最高解像度mipマップ初期光マップ602までの順序でmipマップ初期光マップに対してサンプリング値を処理することができる。この場合に、高精細解像度以外の各mipマップされたレベルでは、処理論理部108がテクセルの2x2ブロックを考え、下降するテクセルを決定し、それによって次に高精細の解像度のmipマップされたレベルのテクセルの2x2ブロックを識別する。mipマップされた光マップ602では、テクセルの1つが選択され、それによってテクセル位置を識別する。これは、各mipマップされたレベルのごく僅かの(例えば、4つだけの)テクセルが考慮されて特定のサンプリング値のテクセル位置を識別することを意味する。これは、二分探索処理と呼ぶことができる。これは、サンプリング値を初期光マップのテクセル位置の中にマップする段階に伴う処理の量を大いに低減することができる。
【0073】
図6aから6eに示す実施例を参照すると、光マップ610は、初期光マップの平均輝度が0.35であることを示している。高精細解像度光マップ602が256テクセルを有するので、画像の合計輝度は、0.35*256=89.6であるので大体89.6である(光マップ602の値の実際の和は89.1であり、丸め誤差のために89.6とは異なる)。現実の実施では(図6aから6eに示す極めて単純化された実施例ではなく)、テクセル値は、より多くのビットで表現され、例えば、テクセル値は、32ビット浮動小数として表すことができ、それによって丸め誤差は重要でなくなる。
【0074】
光マップの値が平均である(合計ではない)実施例では、サンプリング値は、0から1の範囲から選択される。光マップの値が合計値である他の実施例では、サンプリング値は、0から初期光マップの合計エネルギまでの範囲内(例えば、図6aから6eに示すこの実施例では0から89.6までの範囲)で選択することができる。合計値と平均値の差は、値の個数による乗数であることだけである。
【0075】
合計は、1つには浮動点値の精度の利用のために及び1つには少ない演算作動の実行のための精度の数ビットの損失のために平均よりも良く実行することができ、すなわち、割算作動を節約する。
【0076】
0.5のサンプリング値に対する実施例を以下に説明し、これは、ランダムに又は何らかの他の選択方式に従って例えば上述のように低矛盾シーケンスに従って選択することができる。以下に説明するように、0.5のサンプリング値は、初期光マップ602の10番目の行の第1のテクセル位置(1.0の値を有する)にマップされ、図6aでは太線で618に示されている。0.5のサンプリング値は、0.5*初期光マップの合計輝度にわたる累積値を取るテクセル位置を識別するはずであり、初期光マップ602の大体中央にあるテクセル位置が識別されるのは予想することができる。この検索方法は、再帰的方法又は異なる設計実施によるループとして実施することができる。
【0077】
サンプリング値は、光マップ610によって与えられる平均輝度値によって乗算され、0.175の検索値を与える(すなわち、0.5*0.35=0.175)。検索値は、0.7を与えると考えられるテクセルの数によって乗算される(すなわち、0.175*4=0.7)。光マップ608のテクセルの1つは、ある順序、すなわち、(i)上部左、(ii)上部右、(iii)下部左、次に(iv)下部右に累積される時に4つのテクセルのどれが最初に検索値を超えるかを見出すことによって下降するように選択される。従って、この場合に、光マップ608の上部左テクセルは、上部左テクセルが下降しないように0.7よりも下である0.32の値を有し、光マップ608の上部右テクセルは、上部右テクセルが下降しないようにこの点の累積値が0.7よりも下である0.67(すなわち、0.32+0.35=0.67)であるように0.35の値を有し、下部左テクセルが下降するようにこの点の累積値が0.7よりも上の0.94(すなわち、0.32+0.35+0.27=0.94)になるように、光マップ608の下部左テクセルは、0.27の値を有する。
【0078】
従って、光マップ606に対して、破線612に示すテクセルの下部左2x2ブロックが考慮される。検索値は、0.7を超えないように最後の累積値を引いた検索値の残りによって乗算されたブロック612のテクセルの数(すなわち、4)に設定され、すなわち、検索値は、4*(0.7-0.67)=0.12であるので0.12になるように設定される。光マップ606からのテクセル612の下部左2x2ブロックのテクセルの1つは、(i)上部左、(ii)上部右、(iii)下部左、次に(iv)下部右の順序で累積された時に4つのテクセルのどれが最初に検索値を超えるかを見出すことによって下降するように選択される。従って、この場合に、2x2ブロック612の上部左テクセルは、2x2ブロックの上部左テクセル612が下降するように0.12よりも上である0.38の値を有する。
【0079】
従って、光マップ604に対して、破線で示されたテクセルのブロック614が考慮される。検索値は、0.12を超えないように最後の累積値を減算した検索値の残りによって乗算されたブロック614のテクセルの数(すなわち、4)になるように設定され、すなわち、検索値は、4*(0.12-0)=0.48であるので0.48になるように設定される。光マップ604からのテクセルのブロック614のテクセルの1つは、(i)上部左、(ii)上部右、(iii)下部左、次に(iv)下部右の順序で累積された時に4つのテクセルのどれが最初に検索値を超えるかを見出すことによって下降するように選択される。従って、この場合に、2x2ブロック614の上部左テクセルは、2x2ブロック614の上部左テクセルが下降するように0.48よりも上の0.75の値を有する。
【0080】
従って、光マップ602に対して、破線で示されたテクセルのブロック616が考慮される。検索値は、0.48を超えないように最後の累積値を減算した検索値の残りによって乗算されたブロック616のテクセルの数(すなわち、4)になるように設定され、すなわち、検索値は、4*(0.48-0)=1.92であるので1.92になるように設定される。光マップ604からのテクセルのブロック616のテクセルの1つは、(i)上部左、(ii)上部右、(iii)下部左、次に(iv)下部右の順序で累積された時に4つのテクセルのどれが最初に検索値を超えるかを見出すことによって識別される。従って、この場合に、2x2ブロック616の上部左テクセルは、上部左テクセルが識別されないように1.92よりも下の1.0の値を有し、ブロック616の上部右テクセルは、上部右テクセルが識別されないように、この点の累積値が1.92よりも下の1.5(すなわち、1.0+0.5=1.5)であるように0.5の値を有し、ブロック616の下部左テクセルは、下部左テクセル618が識別されるように、この点の累積値が、1.92よりも上である2.5(すなわち、1.0+0.5+1.0=2.5)であるように1.0の値を有する。
【0081】
本方法によって識別される正しいテクセルは、サンプリング値の値に応答して変わるが、全体的に、特定のテクセルを識別する可能性は、特定のテクセル内の値に正比例する。例えば、0.0の値を有するテクセルは、本方法によっては識別されず、1.0の値を有するテクセルは、0.5の値を有するテクセルよりも識別される可能性が2倍になる。
【0082】
ランダムに又は何らかの他の選択方式に従って例えば上述のように低矛盾シーケンスに従って選択することができる0.9のサンプリング値の実施例を以下に説明する。0.9のサンプリング値は、0.5の値を有する図6aに太線で示されたテクセル620にマップされる。0.9のサンプリング値は、0.9*初期光マップの合計輝度にわたる累積値を取るテクセル位置を識別するはずであり、初期光マップ602を通る道のテクセル位置の大体90%が識別されるのは予想することができる。当業者は、0.9のサンプリング値がテクセル620にどのようにマップされるかを決定するために、0.5のサンプリング値がテクセル618にどのようにマップされるかの上述の解説を用いるが、あるガイダンスでは、光マップ608の下部右テクセルが下降し(0.47の値を有する)、光マップ606の下部右2x2ブロックの下部左テクセルが下降し(0.38の値を有する)、光マップ604の対応するブロックの下部左テクセルが下降し(0.75の値を有する)、光マップ602の対応するブロックの上部左テクセル620が識別される(0.5の値を有する)。上述のように、0.5の値を有するテクセルの識別は、1.0の値を有するテクセルを識別する可能性の半分であるが、有効な結果である。
【0083】
上述の実施例では、初期照明表示は、光マップの形態を取る。他の実施例では、光エネルギを複数の初期光マップ間に拡散することができ、それによって重要度サンプリングが、1つよりも多い場所から合計エネルギに働き掛けることができる。更に、適切な場所にマップするための機構が存在する限り、光マップは光マップのない光源と相互混合される(光マップ、空の画像のような画像ベースの光、エリア光、スポットライト、ポイント光(ゼロに近づいていく距離によって発生する特異点を避けるために最小半径及び従って有限のエネルギを有する))。照明のこれらの異なる表示から、合計光の近似は、サンプリング値を特定の光マップの特定の光源(テクセル)にマップされる場合に使用する何らかの形態で決定することができる。メタ-テーブルを使用して、どのマップ又は他のソースからどのくらいの寄与及び/又はどのくらいの重要度が発生するかを追跡することができる。
【0084】
更に、距離は、重要度値におけるファクタとすることができる。単純に光マップの輝度値である重要度値ではなく、重要度値は、テクセルの輝度値(L)と、テクセル位置に対応するシーン内の位置と処理される跳ね返り光マップ内のテクセルに対応するシーン内の位置との間の距離(d)(例えば、位置5161と514の間の距離)との何らかの組合せとすることができる。例示的に重要度値(I)をI=L/d2として決定することができる。この場合に、重要度値は、処理される跳ね返り光マップのテクセルに依存する。従って、異なる重要度値が、処理される跳ね返り光マップの各テクセルに対して決定される。最高輝度点が最重要度である(すなわち、I=L)として扱われる上述の単純な技術は平均で真であるが、我々が現在照明を評価している跳ね返り光マップの特定のテクセルで真でない場合がある。距離低下が合計エネルギに考慮される跳ね返り光マップの各テクセルの光マップの個別のセットを計算することは優良な結果を提供することができるが、実施する場合に計算的に非常に高価になり、跳ね返り光マップがリアルタイムで焼成されることが意図される場合に実行できない場合がある。従って、処理を単純化するために、テクセルをまとめて分類し(例えば、互いに近いシーン位置に対応するテクセルのブロック、例えば、テクセルの16x16ブロック又はテクセルの何らかの他のサイズ/形状ブロックに)、グループの各々の重要度値を決定することができる(例えば、初期光マップのテクセルの各々までのグループの異なる位置の平均距離に基づいて)。異なる領域の相対的重要度は、その位置に応答して異なるサンプル点で様々に評価することができる。
【0085】
テクセルのグループは、階層的に格納することができ、有界容積階層又は類似の構造を使用してグループ全体の大体の距離を迅速に計算することができ、これは、次に、跳ね返り光マップの与えられたテクセルを評価するためにテクセル又はテクセルのセットの重要度を達成することができる。
【0086】
一般的に、重要度サンプリングとは、基本的には、サンプルにランダムに到着する確率の逆である減衰を我々が印加することを意味する。いずれの重要度関数も、我々が同じ重要度関数を通じて与えられたサンプル点(照明を受け入れる点、又は跳ね返り光マップのテクセル)のサンプルの全てを常にマップすることができる限り正確な結果を生成するはずである(性能は変化する場合がある)。
【0087】
別の最適化として、方向は、重要度値のファクタとすることができる。単純に光マップ内の輝度値(L)又は

である重要度値ではなく、重要度値は、テクセルの輝度値(L)(及び可能であれば距離d)と、初期照明マップのテクセル位置に対応するシーン内の位置と処理される跳ね返り光マップのテクセル位置に対応するシーン内の位置との間の光線の方向(

)(例えば、位置5161と514の間の光線5121の方向)との何らかの組合せとすることができる。例示的に、重要度値(I)は、

として決定することができ、ここで

は、位置5161の面の面法線方向である(ジオメトリバッファ116に示す)。初期光マップのテクセル値が、方向付けされた値(例えば、球面調和成分)である場合に、重要度値は、これらの成分の方向、並びに光線の方向

及び面法線

を説明することができる。重要度値は、処理される跳ね返り光マップ内のテクセルに対応する面位置514の面法線を説明することができる。従って、我々は、平均して、その特定の散乱方向によって初期光マップ要素に向けてより多くのサンプリング光線を送ることができる。
【0088】
上述の実施例では、重要度値は、初期光マップの要素の輝度値に全体的に又は部分的に基づいている。他の実施例では、重要度値は、初期照明表示の既知の変更に全体的に又は部分的に基づく場合がある。例えば、既知の変更は、現在のフレームの初期照明表示と以前のフレームの初期照明表示との間の差異を含むことができる。重要度が高く変更された領域を作ることは、サンプリング光線が、変更された領域に向けて追跡される可能性が高いことを意味している。変化していない照明効果が、以前のフレームからの跳ね返り光マップに既に表されているので、跳ね返り光マップが少数のフレームにわたって反復して調節される時にこれは有用であるが、変化する照明は、以前のフレームの跳ね返り光マップを使用することによって良くは表現されない。
【0089】
上述の例は、跳ね返り光マップを焼成するための重要度サンプリングを使用する。すなわち、上述の重要度サンプリング技術は、直接光マップが、データを非常に有利な方式で間接光マップに焼成することを可能にし、非常に優雅なパイプラインをもたらし、我々が焼成した跳ね返り光マップ(以前のフレームに対して、例えば、フレームのシーケンス内の直前のフレーム)をフレームのシーケンスにわたって第2、第3、第4のような世代跳ね返り光になるように新しい直接照明と統合することができる(現在のフレームのために)。しかし、他の実施例では、重要度サンプリング技術を他の目的に使用することができる。シーン内の照明を表すための直接光マップを有することは、ピクセルをレンダリングする処理の一部として上述の方法を使用して照明(複数の跳ね返りのための)をサンプルすることができることを意味する。これは、処理コストに関して実施するのに効率的ではないが、潜在的には、以前のフレームに対して決定された照明情報に頼らないので品質は良く、可視の面上の光マップの解像度によって限定されることがない。
【0090】
一部の実施例では、位置の限定されたセットは、追跡されるサンプリング光線に向けて識別され、これらの識別された位置は、サンプリング光線を追跡するために跳ね返り光マップのテクセルのセット間で共有される。これは、位置を跳ね返り光マップの各テクセルに対して識別する必要がなく、かつサンプリング光線を跳ね返り光マップのテクセルのセットに対して同じ位置に向けて追跡することができることを意味する。
【0091】
一部の実施例では、初期照明表示の要素は、対応する点の空間位置に基づいて階層に編成される。他の実施例では、初期照明表示は、方向付けされた照明値であり、初期照明表示の要素は、方向付けされた照明値に格納された値の支配的な方向に基づいて階層に編成される。
【0092】
追加の実施形態において、複数の重要度関数をサンプル光線方向の選択に考慮することができる。例えば、予め決められたデスティネーションへの視認性を評価するように選択された光線は、推計学的に選択された方向を有し、予め決められたデスティネーションのない光線と相互混合される。これを使用して、照明された面又は光マップに同時に寄与する照明のいくつかの異なるタイプを評価することができる。異なる光源の相対的重要度は、異なるサンプリング位置から変化することがあり、それによってある一定の光線放出挙動を選択する相対的な可能性又は放出される光線の比率が重要度決定によって影響を受ける。
【0093】
本明細書に説明する実施例では、「光」は、可視光を表す傾向がある。しかし、本明細書に説明する原理は、可視光を表すための光線を必要としない。例えば、一般的に、「光」は、非可視の電磁放射線、無線信号、及び音響振動、弾道運動、及び流体力学を含むあらゆる伝播現象を表すことができる。
【0094】
図7は、本明細書に説明するグラフィックス処理システムを実施することができるコンピュータシステムを示している。コンピュータシステムは、CPU702、GPU704、メモリ706、及びディスプレイ710、スピーカ712、及びカメラ714のような他のデバイス718を含む。GPU704は、上述のGPU102に相当することができる。メモリ706は、上述のメモリ104に相当することができる。コンピュータシステムの構成要素は、通信バス716を通じて互いに通信することができる。
【0095】
グラフィックス処理ユニット102は、いくつかの機能ブロックを含むように示されている。これは単に概略であり、そのようなエンティティの異なる論理要素間の厳密な区分を定めるように意図していない。各機能ブロックは、あらゆる適切な方法で提供することができる。グラフィックス処理ユニットによって形成される本明細書に説明する中間値は、あらゆる点でグラフィックス処理ユニットによって物理的に生成する必要はなく、単に入力と出力間でグラフィックス処理ユニットによって実行される処理を便宜上説明する論理値を表すことができることは理解されるものとする。
【0096】
本明細書に説明するグラフィックス処理ユニットは、集積回路のハードウエアに実施することができる。本明細書に説明するグラフィックス処理ユニットは、本明細書に説明する方法のいずれも実行するように構成することができる。一般的に、上述の機能、方法、技術、又は構成要素のいずれも、ソフトウエア、ファームウエア、ハードウエア(例えば、固定論理回路)、又はこれらのあらゆる組合せに実施することができる。「モジュール」、「機能」、「構成要素」、「要素」、「ユニット」、「ブロック」、及び「論理部」という語は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのあらゆる組合せを一般的に表すために本明細書に使用される場合がある。ソフトウエア実施の場合に、モジュール、機能、構成要素、要素、ユニット、ブロック、又は論理部は、プロセッサで実行される指定されたタスクを実行するプログラムコードを表している。本明細書に説明するアルゴリズム及び方法は、プロセッサにアルゴリズム/方法を実施させるコードを実行する1又は2以上のプロセッサによって実施することができる。コンピュータ可読ストレージ媒体の例には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光学ディスク、フラッシュメモリ、ハードディスクメモリ、及び磁気、光学などの技術を使用することができる他のメモリデバイスが含まれ、命令又は他のデータを格納して、機械によってアクセス可能である。
【0097】
本明細書に使用するコンピュータプログラムコード及びコンピュータ可読命令という語は、機械言語、変換言語、又はスクリプト言語で表現されるコードを含むプロセッサに対して実行可能なコードのいずれの種類も指している。実行可能コードは、バイナリコード、機械コード、バイトコード、集積回路を定めるコード(ハードウエア記述言語又はネットリストなど)、及びC、Java(登録商標)、又はOpenCLのようなプログラミング言語コードで表されるコードを含む。実行可能コードは、例えば、仮想機械又は他のソフトウエア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされたコンピュータシステムのプロセッサをしてコードによって指定されたタスクを実行させるあらゆる種類のソフウエア、ファームウエア、スクリプト、モジュール、又はライブラリとすることができる。
【0098】
プロセッサ、コンピュータ、又はコンピュータシステムは、命令を実行することができる処理機能を有するあらゆる種類のデバイス、機械、又は専用回路、又はこれらの集合又は一部とすることができる。プロセッサは、CPU、GPU、システムオンチップ、状態機械、媒体プロセッサ、特定用途向け集積回路(ASIC)、プログラマブル論理アレイ、フィールドプログラマブルゲートアレイ(FPGA)のようなあらゆる種類の汎用又は専用プロセッサとすることができる。コンピュータ又はコンピュータシステムは、1又は2以上のプロセッサを含むことができる。
【0099】
望ましい機能を実行するために集積回路を設計するのに又はプログラマブルチップを構成するのに使用される場合に、HDL(ハードウエア記述言語)ソフトウエアのような本明細書に説明するハードウエアの構成を定めるソフトウエアを収容することも意図される。すなわち、集積回路製造システムにおいて処理される時に本明細書に説明する方法のいずれかを実行し、又は本明細書に説明するあらゆる装置を含むグラフィックス処理ユニットを製造するように構成されるグラフィックス処理ユニットを製造するようにシステムを構成する集積回路定義データセットの形態でコンピュータ可読プログラムコードを符号化するコンピュータ可読ストレージ媒体を提供することができる。集積回路定義データセットは、例えば、集積回路記述とすることができる。
【0100】
集積回路定義データセットは、例えば、ネットリスト、レジスタ転送レベル(RTL)コードとして、Verilog又はVHDLのようなハイレベル回路表現として、及びOASIS(RTM)及びGDSIIのような低レベル回路表現として含むあらゆるレベルの集積回路を定めるハードウエア記述言語としてプログラマブルチップを構成するためのコードとしてのコンピュータコードの形態とすることができる。表現によって定義されるように集積回路の製造定義を生成するために、論理的に集積回路(RTLなど)を定めるハイレベル表現は、回路要素の定義及びこれらの要素を結合するための規則を含むソフトウエア環境の関連で集積回路の製造定義を生成するように構成されたコンピュータシステムにおいて処理することができる。機械を定めるためにコンピュータシステムにおいて実行するソフトウエアを備えた場合に一般的であるように、1又は2以上の中間ユーザ段階(例えば、指令、変数などを提供)をこの集積回路の製造定義を生成するために集積回路を定めるコードを実行するための集積回路の製造定義を生成するように構成されたコンピュータシステムに対して要求することができる。
【0101】
グラフィックス処理ユニットを製造するように本発明のシステムを構成するために集積回路製造システムにおいて集積回路定義データセットを処理する実施例を図8に関してここで説明する。
【0102】
図8は、レイアウト処理システム804及び集積回路発生システム806を含む集積回路(IC)製造システム802の実施例を示している。IC製造システム802は、IC定義データセット(例えば、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを定める)を受信し、IC定義データセットを処理し、かつIC定義データセットに従ってICを発生させる(例えば、本明細書の実施例のいずれかに説明したグラフィックス処理ユニットを実施する)ように構成される。IC定義データセットの処理は、本明細書の実施例のいずれかで説明したグラフィックス処理ユニットを実施する集積回路を製造するようにIC製造システム802を構成する。
【0103】
レイアウト処理システム804は、IC定義データセットを受信及び処理して回路レイアウトを決定するように構成される。IC定義データセットから回路レイアウトを決定する方法は、当業技術で公知であり、例えば、論理構成要素(例えば、NAND、NOR、AND、OR、MUX、及びFLIP-FLOP構成要素)の点で、発生される回路のゲートレベル表現を決定するためにRTLコードを合成する段階を収容することができる。回路レイアウトは、論理構成要素の位置情報を決定することによって回路のゲートレベル表現から決定することができる。これは、回路レイアウトを最適化するために自動的に又はユーザの介入により実行することができる。レイアウト処理システム804が回路レイアウトを決定した時に、レイアウト処理システム804は、回路レイアウト定義をIC発生システム806に出力することができる。回路レイアウト定義は、例えば、回路レイアウト記述とすることができる。
【0104】
IC発生システム806は、当業技術で公知のように回路レイアウト定義に従ってICを発生させる。例えば、IC発生システム806は、ICを発生させるための半導体素子製造工程を実施することができ、半導体素子製造工程は、半導体材料から構築されたウェーハに電子回路が徐々に生成されていく過程のリソグラフィック及び化学的処理段階の複数段階シーケンスを収容することができる。回路レイアウト定義は、回路定義に従ってICを発生させるためのリソグラフィック処理に使用することができるマスクの形態とすることができる。これに代えて、IC発生システム806に提供される回路レイアウト定義は、ICを発生させる場合に使用する適切なマスクを形成するためにIC発生システム806を使用することができるコンピュータ可読コードの形態とすることができる。
【0105】
IC製造システム802によって実行される異なる処理は、1つの位置で例えば1つの当事者によって全てを実施することができる。これに代えて、IC製造システム802は、処理の一部が異なる位置で実行することができるように分散システムとすることができ、異なる当事者によって実行することができる。例えば、(i)発生される回路のゲートレベル表現を形成するためにIC定義データセットを表すRTLコードを合成する段階、(ii)ゲートレベル表現に基づいて回路レイアウトを発生させる段階、(iii)回路レイアウトに従ってマスクを形成する段階、及び(iv)マスクを使用して集積回路を製造する段階の一部は、異なる位置で及び/又は異なる当事者によって実行することができる。
【0106】
他の実施例では、集積回路製造システムにおける集積回路定義データセットの処理が、回路レイアウトを決定するためにIC定義データセットを処理する必要なくグラフィックス処理ユニットを製造するように本発明のシステムを構成することができる。例えば、集積回路定義データセットは、FPGAのような再構成可能プロセッサの構成を定めることができ、このデータセットの処理は、この定義された構成を有する再構成可能プロセッサを生成するように(例えば、FPGAに構成データをロードすることにより)IC製造システムを構成することができる。
【0107】
一部の実施形態において、集積回路製造定義データセットが、集積回路製造システムにおいて処理された時に、集積回路製造システムに本明細書に説明したデバイスを発生させることができる。例えば、集積回路製造定義データセットによる図8に関して上述した方法での集積回路製造システムの構成は、本明細書に説明したデバイスを製造させることができる。
【0108】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウエア、又はデータセットで定義されたハードウエアと組み合わせて実行されるソフトウエアを含むことができる。図8に示す実施例では、集積回路の製造段階で、集積回路定義データセットで定義されたプログラムコードに従ってこの集積回路にファームウエアをロードするか、又は他に集積回路と共に使用するプログラムコードを集積回路に提供するようにIC発生システムを集積回路定義データセットによって更に構成することができる。
【0109】
本出願人は、本明細書により、これらの特徴又は組合せが当業者の共通する一般的な知識の点から全体として本明細書に基づいて実行することができる程度まで、そのような特徴又は特徴の組合せが本明細書に開示するいずれの問題も解決するか否かにかかわらず、本明細書に説明する各個々の特徴及び2又は3以上のこれらの特徴のいずれの組合せも個別に開示している。以上の説明の観点から、様々な修正を本発明の範囲内で行うことができることは当業者には明らかであろう。
【符号の説明】
【0110】
502 跳ね返り光マップ
504 初期光マップ
506 跳ね返り光マップのテクセル位置
508 初期光マップのテクセル値
512 光線
図1
図2
図3
図4
図5
図6a
図6b
図6c
図6d
図6e
図7
図8
【手続補正書】
【提出日】2021-12-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフィックス処理システム内でシーンをレンダリングする際に使用するための前記シーンに対する跳ね返り光マップを決定するコンピュータ実装方法であって、
前記シーン内の照明を表す1又は2以上の初期光マップを決定する段階であって、前記1又は2以上の初期光マップは前記跳ね返り光マップと同じトポロジーを有する段階と、
前記跳ね返り光マップのテクセル位置に対して、
前記1又は2以上の初期光マップをサンプリングした結果に従った光線追跡を行うことによって前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する段階と、
を含むコンピュータ実装方法。
【請求項2】
前記1又は2以上の初期光マップをサンプリングすることは、前記1又は2以上の初期光マップの対応するテクセルの値に基づいてシーン内の1又は2以上の位置を識別する段階を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記光線追跡を行うことは、前記跳ね返り光マップの前記テクセル位置に対応するシーン内の位置と、前記シーン内の1又は2以上の識別されたそれぞれの位置との間で、1又は2以上のサンプリング光線を追跡する段階を含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
1又は2以上の位置を識別する前記段階は、疑似ランダム技術を使用する段階を含む、請求項2又は3に記載のコンピュータ実装方法。
【請求項5】
前記1又は2以上の位置を識別することは、重要度サンプリング技術を使用することを含み、与えられたテクセルを識別する可能性が、前記1又は2以上の初期光マップのテクセルに関連付けられた重要度値に基づいている、請求項2乃至4のいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記重要度値は、前記1又は2以上の初期光マップの前記テクセルの輝度に全体的に又は部分的に基づいている、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記重要度値は、前記1又は2以上の初期光マップにおける既知の変更に全体的に又は部分的に基づいており、前記既知の変更は、現在のフレームの1又は2以上の初期光マップと以前のフレームの前記1又は2以上の初期光マップとの間の差異を含む、請求項5又は6に記載のコンピュータ実装方法。
【請求項8】
初期光マップ内のテクセルに対する有効重要度値が、
前記跳ね返り光マップ内の前記テクセルからの距離、
前記初期光マップの前記テクセルに対応する前記シーン内の位置と前記跳ね返り光マップ内の前記テクセルに対応する前記前記シーン内の位置との間の距離、及び
前記初期光マップの前記テクセルに対応する前記シーン内の位置と前記跳ね返り光マップ内の前記テクセルに対応する前記前記シーン内の位置との間の方向、
のうちの1又は2以上によって影響を受ける、
請求項5乃至7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記1又は2以上の初期光マップを決定する前記段階は、前記シーン内の直接照明を表す直接光マップを構築する段階を含む、請求項6又は請求項7に記載のコンピュータ実装方法。
【請求項10】
前記1又は2以上の初期光マップを決定する前記段階は、前記直接光マップをフレームのシーケンス内の以前のフレームに対して決定された跳ね返り光マップと結合し、それによって現在のフレームに対する初期光マップを決定する段階を更に含む、請求項5乃至8のいずれか1項に記載のコンピュータ実装方法。
【請求項11】
1又は2以上の位置を識別する前記段階は、
前記1又は2以上の初期光マップをサンプリングするための1又は2以上のサンプリング値を選択する段階と、
累積方式に従って前記1又は2以上の初期光マップのテクセルの値を累積して前記シーン内の照明を表す累積関数を決定する段階と、
前記選択された1又は2以上のサンプリング値を使用して前記累積関数内のそれぞれの1又は2以上の位置を識別する段階と、
前記累積関数内の前記識別された1又は2以上の位置に対応する前記シーン内の前記1又は2以上の位置を識別する段階と、
を含む、請求項2乃至10のいずれか1項に記載のコンピュータ実装方法。
【請求項12】
サンプリング光線がそれに向けて追跡される限定された位置セットが識別され、それらの識別された位置が、サンプリング光線を追跡するために前記跳ね返り光マップのテクセルのセット間で共有される、請求項3に記載の、又は、請求項3に従属するときの請求項4乃至11のいずれか1項に記載のコンピュータ実装方法。
【請求項13】
前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する前記段階は、前記1又は2以上のサンプリング光線の前記追跡の結果に基づいて前記テクセル位置に対する既存の照明値を更新する段階を含む、請求項3に記載の、又は、請求項3に従属するときの請求項4乃至12のいずれか1項に記載のコンピュータ実装方法
【請求項14】
サンプリング光線の追跡の前記結果は、前記サンプリング光線が閉塞に衝突したか否かを示し、
前記跳ね返り光マップのテクセル位置に対する前記照明値は、前記サンプリング光線を追跡した前記結果が前記サンプリング光線が閉塞に衝突したことを示すか否かに依存する方式で前記サンプリング光線がそれに向けて追跡される前記識別された位置に対応する前記1又は2以上の初期光マップのテクセル値に基づいて決定される、
請求項3に記載の、又は、請求項3に従属するときの請求項4乃至13のいずれか1項に記載のコンピュータ実装方法。
【請求項15】
前記跳ね返り光マップの前記テクセル位置に対する前記照明値は、
前記跳ね返り光マップの前記テクセル位置に対応する前記シーン内の前記位置と前記サンプリング光線がそれに向けて追跡される前記シーン内の前記識別された位置との間の距離の表示、又は
前記跳ね返り光マップの前記テクセル位置に対応する前記シーン内の前記位置と前記サンプリング光線がそれに向けて追跡される前記シーン内の前記識別された位置との間の方向の表示であって、前記1又は2以上の初期光マップの急くセル値が、方向付けされた照明値である前記方向の表示、
に更に基づいて決定される、
請求項14に記載のコンピュータ実装方法。
【請求項16】
前記跳ね返り光マップの複数のテクセル位置のそれぞれに対して照明値が決定される、請求項1乃至15のいずれか1項に記載のコンピュータ実装方法。
【請求項17】
前記1又は2以上の初期光マップのテクセル値は、それらが対応する表面の面積に対するに対する照明を表す、請求項1乃至16のいずれか1項に記載のコンピュータ実装方法。
【請求項18】
前記跳ね返り光マップを使用して画像をレンダリングし、前記シーン内の面の照明を決定する段階を更に含む、請求項1乃至17のいずれか1項に記載のコンピュータ実装方法。
【請求項19】
前記跳ね返り光マップの前記テクセルの部分集合が、シーン内の視点からの視認性に基づいて処理するために選択される、請求項1乃至18のいずれか1項に記載のコンピュータ実装方法。
【請求項20】
シーンをレンダリングする際に使用するための跳ね返り光マップを決定するように構成されたグラフィックス処理ユニットであって、
前記シーン内の照明を表す1又は2以上の初期光マップを格納するように構成された1又は2以上のバッファであって、前記1又は2以上の初期光マップは、前記跳ね返り光マップと同じトポロジーを有するバッファと、
前記跳ね返り光マップのテクセル位置に対して、
前記1又は2以上の初期光マップをサンプリングした結果に従った光線追跡を行うことによって前記跳ね返り光マップの前記テクセル位置に対する照明値を決定する、
ように構成された処理論理部と、
を含むグラフィックス処理ユニット。
【請求項21】
符号化されたコンピュータ可読コードを有するコンピュータ可読ストレージ媒体であって、
前記コンピュータ可読コードは、前記コードがコンピュータ上で実行された時に請求項1から請求項19のいずれか1項に記載の方法が実行されるようになっている、
コンピュータ可読ストレージ媒体。
【外国語明細書】