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

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

▶ エヌビディア コーポレーションの特許一覧

特開2022-91091リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング
<>
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図1A
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図1B
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図1C
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図2
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図3A
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図3B
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図4
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図5
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図6
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図7
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図8
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図9
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図10
  • 特開-リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022091091
(43)【公開日】2022-06-20
(54)【発明の名称】リアルタイム・レイ・トレーシング・アプリケーションにおける空間ハッシングを使用した光重要度のキャッシング
(51)【国際特許分類】
   G06T 15/06 20110101AFI20220613BHJP
   G06T 15/00 20110101ALI20220613BHJP
【FI】
G06T15/06
G06T15/00 501
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021001916
(22)【出願日】2021-01-08
(31)【優先権主張番号】17/115,010
(32)【優先日】2020-12-08
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
2.BLUETOOTH
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】ブラゴベスト ボリスラフォフ タスコフ
(72)【発明者】
【氏名】アポロ エリス
【テーマコード(参考)】
5B080
【Fターム(参考)】
5B080AA14
5B080AA17
5B080FA02
5B080FA03
5B080FA14
5B080GA06
5B080GA22
(57)【要約】
【課題】光寄与情報を決定し、その情報をシーンの画像フレームのレンダリングに利用するためにキャッシュできるようにすること。
【解決手段】少なくとも一実施例では、空間ハッシュデータ構造を使用して、シーンを8面体ボクセルなどの領域に分割することができる。投じられた光線を使用して、個々のボクセルごとに平均光寄与を計算することができる。次いで、これらの光の値を使用して、各ボクセルの累積分布関数を構築することができ、この関数を使用して、レンダリング中に所与のフレームについてサンプリングする光を選択することができる。領域又はボクセルに対するサンプリングは、その領域に寄与している光の数、及びそれら光の相対的な寄与に少なくとも部分的に基づくことができる。こうした手法は、高い画像品質を提供しながら、帯域幅及びキャッシュの効率を大幅に向上させることができる。
【選択図】図6
【特許請求の範囲】
【請求項1】
仮想環境内の1つ又は複数の光源に対して投じられた第1のセットの光線に関する光情報を決定するステップと、
前記光情報に少なくとも部分的に基づいて、前記仮想環境の複数の空間領域に対する前記1つ又は複数の光源の値を決定するステップと、
前記値に少なくとも部分的に基づいて、前記複数の空間領域に対する前記1つ又は複数の光源についてサンプリングするための第2のセットの光線を選択するステップであって、前記第2のセットの光線が、より高い値の前記光源用のより多くのサンプルを含む、選択するステップと、
前記第2のセットの光線をサンプリングして、前記複数の空間領域に関する更新された照明情報を取得するステップと、
前記更新された照明情報を使用して、前記仮想環境の画像をレンダリングするステップと
を含む、コンピュータ実装方法。
【請求項2】
空間ハッシング・アルゴリズムを使用して、前記仮想環境の前記複数の空間領域を決定するステップであって、前記空間領域が方向情報も提供する、決定するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記空間ハッシング・アルゴリズムが、前記仮想環境を、複数の8面体ボクセルに対応する前記複数の空間領域にセグメント化し、前記複数の8面体ボクセルが1つ又は複数のサイズである、請求項2に記載のコンピュータ実装方法。
【請求項4】
それぞれの8面体ボクセルに対して選択された光源に関する方向性情報に少なくとも部分的に基づいて前記選択された光源の値を決定するステップをさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記値を使用して、前記複数の空間領域に関する累積分布関数(CDF)を構築するステップと、
前記複数の空間領域に関する前記CDFに従って決定された選択確率データをキャッシュするステップであって、前記選択確率データが、前記第2のセットの光線を選択するために使用される、キャッシュするステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記仮想環境の画像シーケンスの少なくともサブセットの画像について、前記複数の空間領域に関する前記CDFを更新するステップをさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第2のセットの光線をサンプリングするための最大値を有する最大数までの光源を選択するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
個々の空間領域に対する個々の光源の平均光寄与に少なくとも部分的に基づいて、前記複数の空間領域に対する前記1つ又は複数の光源の前記値を決定するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
レンダリングすべき1つ又は複数の後続の画像についてサンプリングするために、決定された値が閾値未満である1つ又は複数の光源が考慮されるようにするステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
システムであって、
プロセッサと、
前記プロセッサによって実行されたとき、前記システムに、
仮想環境内の1つ又は複数の光源に対して投じられた第1のセットの光線に関する光情報を決定すること、
前記光情報に少なくとも部分的に基づいて、前記仮想環境の複数の空間領域に対する前記1つ又は複数の光源の値を決定すること、
前記値に少なくとも部分的に基づいて、前記複数の空間領域に対する前記1つ又は複数の光源についてサンプリングするための第2のセットの光線を選択することであって、前記第2のセットの光線が、より高い値の光源用のより多くのサンプルを含む、選択すること、
前記第2のセットの光線をサンプリングして、前記複数の空間領域に関する更新された照明情報を取得すること、及び
前記更新された照明情報を使用して、前記仮想環境の画像をレンダリングすること
を行わせる命令を含むメモリと
を含む、システム。
【請求項11】
前記命令が、実行されたときに前記システムに、
空間ハッシング・アルゴリズムを使用して、前記仮想環境の前記複数の空間領域を決定することをさらに行わせる、請求項10に記載のシステム。
【請求項12】
前記空間ハッシング・アルゴリズムが、前記仮想環境を、複数の8面体ボクセルによって画定される前記複数の空間領域にセグメント化し、前記複数の8面体ボクセルが1つ又は複数のサイズである、請求項11に記載のシステム。
【請求項13】
前記命令が、実行されたときに前記システムに、
それぞれの8面体ボクセルに対して選択された光源に関する方向性情報に少なくとも部分的に基づいて前記選択された光源の値を決定することをさらに行わせる、請求項11に記載のシステム。
【請求項14】
前記命令が、実行されたときに前記システムに、
前記値を使用して、前記複数の空間領域に関する累積分布関数(CDF)を構築することと、
前記複数の空間領域に関する前記CDFに従って決定された選択確率データをキャッシュすることであって、前記選択確率データが、前記第2のセットの光線を選択するために使用される、キャッシュすることと
をさらに行わせる、請求項10に記載のシステム。
【請求項15】
前記命令が、実行されたときに前記システムに、
前記仮想環境の画像シーケンスの少なくともサブセットの画像について、前記複数の空間領域に関する前記CDFを更新することをさらに行わせる、請求項10に記載のシステム。
【請求項16】
前記命令が、実行されたときに前記システムに、
個々の空間領域に対する個々の光源の平均光寄与に少なくとも部分的に基づいて、前記複数の空間領域に対する前記1つ又は複数の光源の前記値を決定することをさらに行わせる、請求項10に記載のシステム。
【請求項17】
前記システムが、
グラフィカル・レンダリング動作を実行するためのシステム、
シミュレーション動作を実行するためのシステム、
自律マシン・アプリケーションをテスト若しくは検証するためのシミュレーション動作を実行するためのシステム、
深層学習動作を実行するためのシステム、
エッジ・デバイスを使用して実装されたシステム、
1つ又は複数の仮想機械(VM)を組み込んだシステム、
少なくとも部分的にデータ・センタ内に実装されたシステム、又は
少なくとも部分的にクラウド・コンピューティング・リソースを使用して実装されたシステム
のうちの少なくとも1つを含む、請求項10に記載のシステム。
【請求項18】
1つ又は複数のプロセッサによって実行されたとき、前記1つ又は複数のプロセッサに、
仮想環境内の1つ又は複数の光源に対して投じられた第1のセットの光線に関する光情報を決定すること、
前記光情報に少なくとも部分的に基づいて、前記仮想環境の複数の空間領域に対する前記1つ又は複数の光源の値を決定すること、
前記値に少なくとも部分的に基づいて、前記複数の空間領域に対する前記1つ又は複数の光源についてサンプリングするための第2のセットの光線を選択することであって、前記第2のセットの光線が、より高い値の光源用のより多くのサンプルを含む、選択すること、
前記第2のセットの光線をサンプリングして、前記複数の空間領域に関する更新された照明情報を取得すること、及び
前記更新された照明情報を使用して、前記仮想環境の画像をレンダリングすること
を行わせる命令を含む、非一時的なコンピュータ読取り可能ストレージ媒体。
【請求項19】
前記命令が、実行されたときに前記1つ又は複数のプロセッサに、
空間ハッシング・アルゴリズムを使用して、前記仮想環境の前記複数の空間領域を決定することであって、前記複数の空間領域が1つ又は複数のサイズの8面体ボクセルである、決定することをさらに行わせる、請求項18に記載の非一時的なコンピュータ読取り可能ストレージ媒体。
【請求項20】
前記命令が、実行されたときに前記1つ又は複数のプロセッサに、
それぞれの8面体ボクセルに対して選択された光源に関する方向性情報に少なくとも部分的に基づいて前記選択された光源の値を決定することをさらに行わせる、請求項19に記載の非一時的なコンピュータ読取り可能ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
ディスプレイ・デバイスの品質が、ユーザの期待とともに向上し続けているため、表示されるコンテンツの品質を継続的に向上させる必要がある。
【背景技術】
【0002】
これは、レンダリングするシーンの物体を写実的に照らすことなどのタスクを含み得る。反射面又は屈折面を含む、多くの光源を有する複雑なシーンでは、特に高いフレーム・レートが必要とされるアプリケーションの場合、シーン内のすべての照明を正確に表現するにはリソース容量が不十分であることがある。
【0003】
図面を参照しながら、本開示による様々な実施例を説明する。
【図面の簡単な説明】
【0004】
図1A】少なくとも一実施例による、シーン内の物体のレイ・トレーシングを示す図である。
図1B】少なくとも一実施例による、シーン内の物体のレイ・トレーシングを示す図である。
図1C】少なくとも一実施例による、シーン内の物体のレイ・トレーシングを示す図である。
図2】少なくとも一実施例による、ビュー光線と影光線の両方のレイ・トレーシングを示す図である。
図3A】少なくとも一実施例による、8面体ボクセルを用いたレイ・トレーシングを示す図である。
図3B】少なくとも一実施例による、8面体ボクセルを用いたレイ・トレーシングを示す図である。
図4】少なくとも一実施例による、シーンのフレームをレンダリングするための実例プロセスを示す図である。
図5】少なくとも一実施例による、レンダリング中にレイ・トレーシングを実行するためのプロセスを示す図である。
図6】少なくとも一実施例による、光重要度のキャッシングを含む例示的な画像生成システムを示す図である。
図7】少なくとも一実施例による、例示的なデータ・センタ・システムを示す図である。
図8】少なくとも一実施例による、コンピュータ・システムを示す図である。
図9】少なくとも一実施例による、コンピュータ・システムを示す図である。
図10】少なくとも一実施例による、1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図11】少なくとも一実施例による、1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【発明を実施するための形態】
【0005】
様々な実施例による手法は、画像生成に対する既存の手法における様々な欠陥を克服することができる。具体的には、様々な実施例は、シーン内の1つ又は複数の光源に関する重要度情報の決定及びキャッシングを提供することができる。重要度情報は、個々のボクセルに関連し得るシーンの個々の領域について決定されることが可能であり、方向性データを含むことができる。この重要度情報を使用して、重要な光の数、及びそれらの光の決定された重要度などの因子に少なくとも部分的に基づいて、これらの異なる領域に対して実行すべきサンプリング量を決定することができる。こうした手法は、多数の光源のすべてをサンプリングする、又はそのすべての光源のサンプリングを近似する手法に比べて、高い画像品質を提供しながら、帯域幅及びキャッシュの効率を大幅に向上させることができる。
【0006】
様々なリアルタイム及びオフラインのレンダリング・システムでは、3次元シーンの仮想カメラ・ビューを使用して、一連の画像又はビデオ・フレームを生成することができる。このシーンは、様々なタイプの静的又は動的物体、及びこれらの物体を照明するための1つ又は複数の光源を含むことができる。物体は、画像又は他のデジタル表示において視覚的に表現され得る任意のタイプの前景又は背景の物体を含むことができる。光源はまた、これらのシーン物体のうちの1つ又は複数に影響を与え得る任意の適切な光又は照明の源であってもよく、その光は異なる色又は輝度を有する。これらのシーン物体のうちの少なくとも一部は、反射性又は屈折性も有し得るので、これらの光源のうちの1つ又は複数からの照明に影響を与えるか、状況によっては別個の光源として機能することがある。
【0007】
図1Aは、様々な実施例による、そうしたシーンに対して生成され得る例示的なビュー100を示す。この実例では、ビュー100は、仮想3次元(3D)環境に関する仮想カメラのビューであり、決定された視点からのその環境の2次元(2D)表現となっている。この特定のビュー又は画像フレームには、本明細書においてシーン物体と呼ばれる3つの物体108、110、112がある。これらのシーン物体は、背景又は前景の物体、ゲーム内のプレーヤ・アバタ、動的又は静的な物体などを含み得る、シーン内で表現されることが可能な任意の物体を含むことができる。これらの物体は、異なる照明特性を有することがあり、他のそうした選択肢のなかでもとりわけ、不透明な、透明な、反射性の、透過性の、又は屈折性の物体の少なくとも一部分を含み得る。物体はまた、その照明特性に影響を与え得る異なる表面特性又はテクスチャを有することもある。このシーンには、3つの光源102、104、106もある。これらの光源は、太陽、ランプ、ネオン・サインなどの光源を含み得る何らかのタイプの照明を生成することが可能な任意の物体又は要素とすることができる。シーンのこのビューを写実的な方法でレンダリングするためには、様々な光源102、104、106からの光は、シーン物体108、110、112を、それらのシーン物体が実世界の環境で照明される状態と同じように照明すべきである。これには、直接照明だけでなく、反射及び影の作成などの態様も含まれ得る。
【0008】
こうした照明を決定するための1つの手法には、レイ・トレーシングが含まれる。レイ・トレーシングとは、アルゴリズムを利用して光源からの光の経路を追跡し、次いで、コンピュータで生成された環境内で、光線が「当たる」又は交差するシーン物体と光とが相互作用する方法をシミュレートするレンダリング技法を指す。レイ・トレーシングは、写実的な影及び反射、並びに正確な半透明及び散乱を提供することができる。レイ・トレーシングには、NVIDIA社製のGeForce RTXグラフィックス・カード内などのグラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)上で実行して、高フレーム・レートのアプリケーションに対して正確なレンダリングをリアルタイムで実行するのに足りる時間で照明の決定を実行できるという利点もある。
【0009】
図1Bに示すこのシーンのビュー130は、2つの光源102、106からの例示的な光線を示す。シーンには潜在的な各光源から潜在的な画素位置に投じられた少なくとも1つの光線が存在し得るが、こうした手法は非常にリソースを消費する可能性がある。したがって、レイ・トレーシング手法は、多くの場合、フレームごとにこれらの光線のいくつかを選択又は「サンプリング」して、これらのサンプルに基づいて、また少なくとも場合によっては前のフレームからの前の照明情報に基づいて、近似され得る最新の照明情報を決定することになる。図1Bは、光源102及び106からの例示的な光線の選択を示す。図示のように、これらの光源のそれぞれからの光線は、シーン内のそれらの光源及び物体の相対位置に少なくとも部分的に基づいて、異なる物体又はそれらの物体の一部分に沿った点に当たる。
【0010】
様々な実施例による手法は、この情報を利用して、フレーム又はシーンに対する光線のより最適なサンプリングを可能にすることができる。たとえば、光源102からの光線は、このシーン内の3つの物体すべてに当たるが、シーン物体112の右側には当たらない。さらに、シーン物体112は、光源102からの光線がシーン物体112の右側のフレームの大部分に当たるのを妨げている。光源102からの光線は、主に、シーン物体108(便宜上、参照番号は図間で引き継がれる)の上部及び右側、潜在的にはシーン物体110のすべて、並びにシーン物体112の上部及び左側に当たる。次いで、シーンの領域132を決定することができ、この領域は、光源102からの光線が当たる可能性のある物体の表面を含むので、光源102は、比較的重要度の高い(寄与がより大きい)光源である。同様に、光源106からの光線は、シーン物体112の右側に当たるが、シーン物体112は、それらの光線がシーン物体108及び110に当たるのを妨げている。したがって、光源106の重要度が比較的高い、シーンの領域134が画定され得る。見てわかる通り、光源102は、その光源からの光線が領域134内の物体からほとんど遮られるので、領域134内の照明にあまり寄与しない可能性がある。同様に、光源106は、その光源からの光線も同様に領域132内の物体からほとんど遮られるので、領域132にあまり寄与しない可能性がある。所与の部分又は領域により大きな寄与をもたらす光源の光線のみをサンプリングすることはより有益であり得るので、様々な実施例による手法は、フレーム又はフレームの一部分に対してどの光線をサンプリングするかを決定する際にこうした重要度情報を利用することができる。
【0011】
少なくとも一実施例では、ある領域に対して、少なくともある程度重要であると決定された光源についてのみ光線がサンプリングされてもよい。これは、いくつかの実施例では、最大数までの重要な光源を含んでもよい。他の実施例では、シーンの変化を考慮するために、領域に対する寄与がほとんど又はまったく決定されていない光源でも、フレームごとに1つ又は複数の光線がサンプリングされてもよい。たとえば、物体の動きによって、光線がその領域を通過する、又は光線がその領域に反射する場合などがある。さらに、寄与の決定は、サンプリングを使用して決定されるので、潜在的な各光線を分析する必要はなく、その結果、寄与の算出は不完全なデータを使用して求められる可能性があり、光源は、実際には、領域に対して未発見の重要度を有する場合がある。こうした手法により、シーンの領域又は部分にとって一般的に重要度が低い光源に大幅なリソースを割り当てることなく、そうした照明の影響を決定することが可能になる。
【0012】
図1Cに示す例示的なビュー160は、光源104から投じられたサンプルの光線を示す。この実例では、光源104からの光線は、シーン物体108及び112の一部分に直接当たる。図示のように、シーン物体108から反射された光線162は、シーン物体110にも当たる。こうした状況では、光源104は、このシーンの各領域に寄与する可能性があり、したがって、すべての領域について光線がサンプリングされ得る。しかし、少なくともいくつかの実施例では、異なる領域に対して決定される寄与は様々であり得るので、光源104の光線に対するサンプリングの量又は頻度は領域によって異なってもよい。
【0013】
少なくとも一実施例では、所与のシーンについてサンプリングされた異なるタイプの光線もあり得る。図2のビュー200に示すように、このシーンには、単一の光源204及び単一のシーン物体208がある。この3次元シーンの2次元画像206は、仮想カメラ202の視点からレンダリングされ、この視点は、少なくともいくつかの実施例では、異なるフレームのシーンの周りで移動又は方向転換され得る。画像は、決定されたロケーションでその仮想カメラ・ビューと交差する平面に対応することになる。画像206をレンダリングするために、レンダラは、画像内で表現すべきコンテンツを決定するために、このシーン物体208のどの部分がそのカメラ・ビューから見えるかを決定しなければならない。さらに、レンダラは、光源に関連して物体を写実的にレンダリングするために、こうした各部分の照明を決定しなければならない。図示のように、これは、少なくとも2つのタイプの光線を決定することを含み得る。本明細書においてビュー光線と呼ばれる第1のタイプの光線は、仮想ビューで見える、光源204によって(直接的又は間接的に)照明されるシーン物体208上の点又は領域に対応する。本明細書において影光線と呼ばれる第2のタイプの光線は、例示的な環境における地面上又は床上などのシーン内の点又は領域に対応し、そこでは、シーン物体208などの物体が、光源204から投じられた光に少なくとも部分的に基づいて影を投じる。この場合、光源204からシーン物体208への影光線212は、物体208によって遮られ、したがって、この影領域には当たらない。しかし、その光線を延長することで、光源204に関連してシーン物体208によってそのロケーションに影が投じられ得ると判断することができる。したがって、光線は、直接照明だけでなく、影、反射、屈折、拡散、及び他のそうした照明の態様に関しても決定され得る。これらの異なるタイプの光線は、同様の又は異なるサンプリング・レート又はサンプリング周波数でサンプリングされることが可能であり、いくつかの実施例では、シーン又は領域に対するそれらの相対的な重要度に少なくとも部分的に基づいてサンプリングされることが可能である。
【0014】
仮想3次元環境は、3Dグリッド内の複数の個別のボクセルで構成されることが可能である。様々なレンダリング・システムにおいて、各ボクセルは、シーンの特定の部分に関連付けられた、仮想の立方体、三角形、8面体、若しくは他のそのような形状の又は幾何学的な物体を含む。レイ・トレーシングでは、個々のボクセルに光線を放つことで、その光線が当たる任意の物体(たとえば、三角形メッシュ又は高次プリミティブ)を特定することができ、その交差情報を、レンダリングで使用するために記憶することができる。しかし、様々な事例において、ボクセルの方向性データも同様に捕捉することが望ましい場合がある。たとえば、ボクセルの材料特性が存在する場合があり、それにより、ある光源は、第1の方向から重要である(より寄与している)が、別の光源は、第2の方向から重要である場合がある。こうした事例では、少なくともこの次元のいくつかを捕捉できるボクセルを利用することが望ましい場合がある。少なくとも一実施例では、図3Aのビュー300に示すように、シーンの物体に対して8面体ボクセルを使用することができる。少なくともいくつかの実施例では、4面体ボクセルなどの他の形状も同様に使用することができる。図3Aに示すように、光源302からの光線は、仮想カメラ・ビューで見える8面体ボクセル304の少なくとも2つの異なる面に当たる可能性がある。また、図示のように、その光源302がボクセル304に当たらないそのボクセル304の少なくとも1つの面が存在する。こうした方向性情報は、そのボクセルに関連するその光源302の重要度をより適切に決定するのに役立ち得る。8面体形状は、シーン内の異なるロケーション又は方向にある様々な光源からの寄与を決定するための単純で効率的な方法を提供するので、少なくともいくつかの実施例では、8面体形状を選択することができる。
【0015】
図3Bの例示的なビュー350は、仮想カメラ・ビューで見える4つの側面又は面(A、B、C、D)を有する8面体ボクセル352を示す。これは、たとえば、一方の側面上に第1の光源354があり、他方の側面上に第2の光源356がある、薄い壁又は物体の一部分を表すボクセルとすることができる。図示のように、第1の光源354は、2つの面(A、C)にとって重要であり、第2の光源356は、その他の2つの面(B、D)にとって重要である。こうした事例では、重要度情報は、方向性に少なくとも部分的に基づいて決定されることが可能であり、光源はそれぞれ、方向のそれぞれの範囲又は面の数についてのみ、重要であると判断されることが可能である。少なくとも一実施例では、レンダリング・インターフェースは、3D環境の8面体ボクセル表現をオン又はオフにするオプションをユーザに提供してもよい。
【0016】
これらの各ボクセルは、それぞれの空間ハッシュに対応することができる。この同じ空間ハッシュの様々な部分に当たる様々な光線が存在する場合がある。8面体ボクセルを使用してこのハッシュを表現することは、同じ空間ハッシュの方向性光情報を決定及び記憶する比較的単純な方法を提供する。こうした手法により、影光線とビュー(又は近接)光線の両方を、異なる光源及び方向からこれらのボクセルに追跡又は投影し、レンダリングのためにこの情報を記憶することが可能になる。また、この情報は、所与のボクセル、ボクセルのセット、若しくはシーン若しくは画像の領域に対する各光源の相対的な重要度及び/又は寄与を決定するのにも役立ち得る。しかし、8面体の空間ハッシュ(マップ)を使用すると、シーン内の位置及び方向を、光の寄与情報を記憶できるメモリ内のロケーションに関連付けることが可能になることに留意すべきである。しかし、上述したように、光線サンプリングが利用され得るシーン、特に非点光源のすべての可能な光線をサンプリングすることは、多くの状況において、あまりにも非効率的であり、リソースを大量に消費する可能性がある。ランダムに又は擬似乱数サンプリングを使用して光線を選択する代わりに、準モンテ・カルロ・ベースの方法などの他のサンプリング手法又はアルゴリズムを利用することができる。こうした方法は、光路に変換され得る低食い違い量列(low discrepancy sequence)の生成を提供することができる。こうした手法は、決定論的な低食い違い量列を利用して経路セグメントを生成することができる。光路セグメントを生成するために、低食い違い量列のi番目のベクトルの成分を、少なくとも2組に分割することができ、次いで、それを使用して、i番目のカメラ及び光路セグメントを追跡することができる。
【0017】
少なくとも一実施例による経路セグメントは、最初に光源などの原点を選択し、次いで光線を追跡する方向を選択することによって決定され得る。シーン表面との最初の交点において、経路終端、及び、場合によっては次の光線を追跡するための散乱の方向に関する別の決定がなされ得る。このプロセスは、必要に応じて繰り返されることが可能である。光路を決定するための例示的な手法は、影光線を利用し、影光線の個々の経路セグメントの端点が可視であるかどうかを判定する。影光線は、ほとんどの拡散面に対しては十分であるが、鏡によって拡散面上に反射され、鏡によって反射されて戻る光など、鏡面-拡散-鏡面セグメントを含む光路に対しては、影光線は効率的ではない場合がある。こうした非効率性に対処するために、カメラ経路セグメントに近接性によって光子軌道を接続することができ、これは、フォトン・マッピングとも呼ばれ、影光線の寄与を効率的に捕捉するのに役立ち得る。経路空間フィルタリングのためのこうした手法を使用して、選択された光源からの光線(又は光子軌道)を辿り、仮想カメラから経路を追跡することによって、様々な光路のセグメントが生成され得る。次いで、これらの経路セグメントの端点が、影光線に関しては相互に可視である場合、又は十分に近い(たとえば、十分に近接している)場合、これらの端点は接続される。少なくとも一実施例では、これらの接続技法とともに経路空間フィルタリングを利用することができる。光路の頂点xへの寄与cは、決定された領域内の頂点に対する寄与
【数1】
を平均した結果として得られる平滑化された寄与
【数2】
に置き換えられることが可能である。次いで、この平均された寄与
【数3】
に、カメラに向かう経路セグメントのスループットτiを乗算し、画像平面P上に累積することができる。
【0018】
一致性を保証するために、領域のサイズは、サンプル数nの増加とともに縮小すべきである。少なくとも一実施例では、これは、球形領域の半径rを減少させることを含み得る。その場合、フォトン・マッピングを使用して、指定された半径未満の距離にある経路セグメントの端点を接続することができる。半径r(n)は、実際には、極限において影光線の接点と同等になるので、サンプリングされた光路の数nが増加するとともに半径r(n)が小さくなることにより、ある程度の一致性が得られる。確率論による漸進的フォトン・マッピング(progressive photon mapping)と同様に、光輸送経路の連続したバッチを処理することができる。使用する低食い違い量列によっては、あるブロック・サイズが他のブロック・サイズよりも望ましい場合がある。
【0019】
少なくとも、漸進的な経路空間フィルタリングは、影光線及び漸進的フォトン・マッピングを補完する高速で且つ一致性のある分散低減手法であるので、サンプルの疎な集合でも、高品質の画像を生成するのに十分な情報を提供できるという点で、こうした手法は有益である。様々な手法を使用して光路の様々な複数の頂点が選択され得るが、1つの選択肢は、光学特性が十分に拡散しているとされるカメラからの経路に沿った第1の頂点である。ある低食い違い量列を、光輸送経路の連続したバッチにおけるサンプル経路空間に変換することができ、経路ごとに、選択された1つのタプルが経路空間フィルタリング用に記憶される。メモリ消費量はバッチ・サイズに比例するので、タプルのサイズ及びメモリ・ブロックの最大サイズが与えられれば、最大自然数を決定することは比較的容易である。
【0020】
少なくとも一実施例では、この光データは、シーンの画像を生成する際に使用するために一時的に記憶又はキャッシュされることが可能である。少なくとも一実施例では、放射輝度のサンプルをキャッシュ及び補間して、レンダリング・エンジンに実装された光輸送シミュレーションの効率を高めることができる。放射輝度の補間以外に、経路空間フィルタリングは、細かい幾何形状などの不連続部全体にわたって効率的にフィルタリングすることができる。こうしたフィルタリングは、過度の軌道分割を克服して、キャッシュされるサンプル内のノイズを低減し、これにより効率的な経路トレーシングが可能になる。さらに、この計算を通して、個別の計算なしでフレーム内の一致性関連のアーチファクトの存在を低減することができる。光輸送経路のバッチ内で平均化プロセスを反復することで、さらなる大幅な高速化につながるが、照明の細部が多少ぼやける可能性がある。
【0021】
こうした手法は、重み付けをしなくても一致性を有し得るが、半径が大きい場合、xで収集できなかった寄与が平均に含まれるようになるので、結果として得られる画像が、過度にぼやけて見える場合がある。光漏れのこの一時的なアーチファクトを低減し、より大きい半径を利用して平均により多くの寄与を含めるために、軌道分割によって、どの程度の確率で頂点xに寄与csi+jが作成されるかを評価するように、重みを決定することができる。幾何形状間又はテクスチャ間でぼかしを実行するぼかし手法を利用することができる。幾何形状間でぼかす場合、面法線と他の面法線の類似性が、それらの内積によって決定され得る。テクスチャ間でぼかす場合、平均に含まれる寄与について、頂点によって光学表面特性が評価されれば、画像は最適となり得る。光沢のある表面など、拡散面以外の表面の場合、これらの特性は、少なくとも部分的には観察方向に依存し、観察方向は、頂点とともに記憶され得る。方向が、たとえばカメラから直接見たクエリ位置xiの方向と類似していると暗黙的に知られている場合、この追加のメモリの一部を省くことができる。ぼやけた影の場合、点光源を考慮すると、異なる頂点から見たときのその可視性は、同一であることもあり、異なることもある。鮮明な影の境界がぼやけるのを避けるために、寄与は同一の可視性にのみ含まれ得る。アンビエント・オクルージョン、及び環境マップによる照明の場合、これらの頂点で半球内に放たれた光線1本ずつの長さを、それらの差を閾値処理することによって比較することで、ぼやけを低減することができる。
【0022】
こうした経路空間フィルタリング手法は、任意のサンプリングベースのレンダリング・アルゴリズム上で実装されることが可能であり、追加のオーバーヘッドがほとんどない状態で実装されることが可能である。漸進型アルゴリズムは、効率的に分散を低減することができ、一致性に起因した永続的なアーチファクトなしで収束することを保証することができる。こうした空間フィルタリング、又は空間ハッシングの手法を使用して、画面を、図3A及び図3Bに関して説明した8面体ボクセルなどのボクセルに分割することができる。こうした手法は、リアルタイム・レイ・トレーシングなどのアプリケーションに好適であり、少なくともいくつかの実施例では、先行技術の手法を用いて様々な欠陥を解消しながら、1つ又は複数のGPUにおいてのみ実行されることが可能である。こうした手法はまた、様々なレイ・トレーサにすでに存在する機能以外のサンプリング又はトレーシングのための追加の機能を必要としないので、少なくとも部分的には有利である場合がある。代わりに、プロセスは、シーンに投影された光線に関する統計値を収集してシーンの特定の部分に対する各光源の重要度を決定し、シーンの可視性及び材料特性などの因子に基づいて、シーンのその部分に対してどれだけサンプリングを実行するかを決定することができる。こうした手法では、特に、スクリーン空間サンプリングではなくワールド空間サンプリングの場合に、必要とされるサンプルが、ReSTIRなどの先行手法において必要とされるサンプルよりもはるかに少なくなる可能性がある。先行手法では多くの追加のサンプルが必要になるので、多くの場合、代わりに近似が実行されることになり、これらの先行手法の画像品質を低下させる可能性がある。代わりに、様々な実施例による手法は、どの光源がシーンの様々な領域にとって重要であるかを決定し、それに関する情報をキャッシュすることができ、その光源の相対的重要度に少なくとも部分的に基づいて、その光源の光で実際のサンプルを生成することができる。少なくともいくつかの実施例では、これらのサンプルを決定するために、光源の重要度を決定すること、次いで、分析ソリューションを使用してシーンのこれらの光源からサンプルを選択又は「選び取る(pick)」ことを含む、少なくとも2つのステップを使用することができる。少なくともいくつかの実施例では、これは、多重重点的サンプリング(MIS:multiple importance sampling)を使用して実行することができる。
【0023】
しかし、上述したように、シーンにおいてどの光源が重要であるかを決定することは、複雑なシーン又は動的なシーンに対しては困難である場合がある。たとえば、遮蔽若しくは配置又はシーン内の動きに起因して、表面に影響を与える光源からの光線がわずかしかない可能性がある。シーンの可能な光線のサブセットのみをサンプリングすると、光源から物体への光線が多数のフレームに対してサンプリングされない場合があり、これにより、その光源においては、その物体又は領域に対して計算される重要度が、決定されるべき重要度よりも不適切に低くなる可能性がある。いくつかの実施例では、シーンの2つの領域間で利用されるサンプリング・パターンが大きく異なる場合があり、その結果、そこで光線を追跡するときに、様々なボクセルの境界上に格子状のアーチファクトがある可能性がある。少なくともこのタイプのアーチファクトに対処するために、データがサンプリングされるロケーションをジッタリングすることによって、ボクセル間の境界をぼかすことができる。こうしたジッタリング又はオフセットベースのサンプリングは、これらのボクセル状のアーチファクトを効果的にノイズに変えることができ、全体的な画像品質の向上に役立ち得る。こうした手法では、光の選択のための確率分布関数(PDF:probability distribution function)は、フレームごとに一致性を保つことができ、結果として、光源がシーン内を移動するにつれてノイズ・パターンが徐々に変化することになる。少なくとも一実施例では、同様の理由で、法線方向も同様にジッタリングされ得る。
【0024】
上述したように、少なくともいくつかの実施例における重要度値は、ボクセル・レベルで決定され得る。これらのボクセルのサイズは規則的ではない場合があり、むしろ、シーンの8面体ボクセルは、シーンの仮想カメラからの距離とともにサイズが大きくなるボクセルなどのサイズが潜在的に変化するボクセルとして配置され得る。様々な実施例では、シーンにすでに投じられているすべての光線に関する光情報を、ボクセルごとに収集することができ、平均光寄与が各ボクセルで計算される。少なくとも一実施例では、この寄与データは、放射輝度データ、又はそのボクセルに当たる各光源からの方向性のパワー量に相当し得る。少なくとも一実施例では、球形光源などの光源は、その光源を構成する多数の三角形又は他の幾何学的成分とは無関係に、少なくとも重要度の決定のために単一の光源として扱うことができるが、様々な実施例の範囲内で、他の光源の抽象化も同様に使用することができる。少なくともいくつかの実施例では、シーン内で光を放出している任意の物体を光源として扱うことができる。
【0025】
次いで、これらの平均値を使用して、光の選択又は選び取りのための累積分布関数(CDF:cumulative distribution function)を生成することができる。フレームごとに、又はn個のフレームごとに、離散化されたCDFを生成することができ、ここで、nは、性能及びリソースの可用性などの因子に基づいて、2、4、8、又は10などの値に選択され得る。こうした手法は、CDFの構築コストを償却するのに役立ち得る。各ボクセルにおける各光源の平均寄与を使用してCDFを構築して、フレームごとに、又はn個のフレームごとに、これらのボクセルに対するこれらの光源の相対的な重要度を決定することができる。実数値の確率変数XについてのCDFは、
(x)=P(X≦x)
によって与えられることが可能であり、ここで、この方程式の右辺は、確率変数Xの値がx以下である確率を表す。プレフィックス合計及びリダクション合計を決定するためなど、これらの関数を構築するために使用される演算は、様々なGPU上で並列に実行できる高性能コンピューティング・プリミティブを含み得るので、異なる実施例において直列又は並列に実行され得る。これらのCDFを、ボクセル及び光に対して並列にボクセル上に構築するため、又は個々のボクセルの代わりにボクセル群用のCDFを構築するためなど、他の様々な性能向上も同様に利用され得る。
【0026】
様々な実施例において、CDFに関するデータは、0から1の間の浮動小数点数の配列の形態をとることができ、次の連続する数はすべて、前の数よりも大きいか、又は等しい。次いで、この配列を使用して、二分探索が実行され得る。このプロセスは、光源がサンプリングされるたびに、このボクセルのCDFにアクセスし、たとえば乱数を使用して、二分探索を実行することができる。このとき、その二分探索に対応するこの配列におけるインデックスが利用され得る。重要度情報を使用して、適応サンプリングを誘導することもできる。たとえば、重要な光源が1つ又は2つしか存在しない可能性がある領域、及び多数の影光線を投じること、又はできるだけ多くのサンプルを捕捉することがそれほど重要ではない領域に余分な労力を費やすことなく、重要な光の情報をより正確に捕捉するために、複数の重要な光を伴う領域に、より多くの量又は部分のサンプリング又は影光線の投影を割り当てることができる。したがって、こうした手法により、重要な光が1つ又は2つしかない可能性がある領域では、より少ない影光線を放つことが可能になり、一方、より多くの重要な光があるように見えるシーンの領域に対して、より多くの影光線を当てることができる。潜在的な性能を向上させる場合、CDFをunormに圧縮することができる。32ビットである浮動小数点で作業する代わりに、結果にバイアスを掛けない低精度を使用することができる。浮動小数点であるCDF値を記憶する代わりに、その値を8ビット値として記憶することができ、これにより帯域幅及びキャッシュ・ストレージを節約することができる。
【0027】
いくつかの実施例では、より少数のより重要な光を識別することにより、通常であれば使用するには実用的ではない追加の解決策又は手法の使用が可能になり得る。たとえば、線形変換された余弦(LTC:linearly transformed cosines)をベースとする手法を、より少数の光源に利用することができる。さらに、領域にとって最も重要な光はどれか、及び重要な光の数を知ることは、誘導適応サンプリングに有用である場合があり、これにより、影光線のバジェットを、レンダリングされる画像全体で一様に利用するのではなく、労力がより重要である場所にバジェットの一部をより重点的に集中させる。少なくとも一実施例では、PVDを利用して、ライト・カリングを実行するなど、分散を評価することができる。ライト・カリングは、ある領域にとって重要ではない光を効果的に間引き、すなわち考慮から除外し、その領域にとって重要である又は「ヒーロー」光である光を保持することができる。次いで、重要な光に対してのみ、比較的高価であり得るLTC評価などの評価を実行することができる。次いで、少なくとも一実施例では統計及び標準偏差情報を含み得るCDFにおける数値を使用して、分散が大きいことに起因してより多くの影光線がいつ必要とされるかを判断することができる。
【0028】
少なくとも一実施例では、光源が領域又はボクセルにとって重要ではないことを示すゼロの値を受け取ったPDFが、その光源が実際にはその領域又はボクセルにとっていくらかの重要度を有し得る場合に、ゼロ以外の値を取得する機会を確実に持てるようにする試みがなされ得る。上述したように、サンプリング手法は、小さな開口を通って、又はシーン内の動きの結果として、光から物体にのみ通過する光線を見逃すことがある。ランダム・サンプリングの期間にわたって捕捉されなかった可能性があるこの重要度を捕捉する方法を提供することが望ましい場合がある。少なくとも一実施例では、これは、各フレーム又はフレームのサブセットごとに、いくつかの光線を、それらの重要度にも、比較的重要度が低いと見なされるものにも関係なく、シーン内のランダムな光に放つことによって実行され得る。これにより、物体又は領域に当たった可能性のある光線をこれらの光源でサンプリングする機会が与えられ、それぞれのPDFが、当たりが検出された結果としてゼロ以外の値を有することが可能になる。いくつかの実施例では、これは、フレームごと又はnフレームごとに、各ボクセルについて、ランダムに(また、一様に)選び取られたいくつかの光源に少数の影光線を放つことを含んでもよい。したがって、影光線の少量のバジェットを使用して、サンプリング手法によって以前は見逃されていた光の相互作用を発見することを試みることができる。別の手法は、PDFが0の値を有さないようにすることであり、これにより、光源のいくらかの寄与が常に許容される。少なくとも一実施例では、これは、光源に割り当てられる最小許容PDF値を設定することを含むことができる。
【0029】
PDFは、シーン内の光の数に少なくとも部分的に基づいて決定される。連続関数の場合、確率密度関数(PDF)は、変量の値がxである確率である。離散分布の場合、PDFは、
f(x)=P[X=x]
によって与えられる。少なくとも一実施例では、PDFは、シーン内の光の数分の1に対応し、その空間ハッシュ又はボクセルから放たれる影の光線の数分の1が乗算される。少なくとも一実施例では、すべてのフレームについて、少なくとも光値のサブセットのリフレッシュがあり得る。フレームについて取得された新しい情報を使用して、平均放射輝度を記憶するデータ構造を更新することができる。フレームについての算出が終了すると、新しいCDFが構築され、所与の光源についての新しい確率が得られる。少なくとも一実施例では、エントリの数を固定することができ、置換ポリシーを使用して、これらの演算に必要なメモリの量を最小限に抑えることができる。こうした手法は、最も重要な光の最大数についてのみ情報を記憶することができる。他の手法では、最小重要度閾値を満たすか又は超える重要度値を有する光についてのみ、光情報を記憶することができる。
【0030】
上述したように、少なくとも一実施例では、ボクセルをサンプリングするとき、ジッタベースのブレンディングを使用することができる。PDFアニメーションに関連し得る他のブレンディング手法も同様に使用することができる。これは、たとえば、PDF間の線形補間アニメーションを含み得る。フレームの最後で新しいPDFが取得されると、前のフレームから古いPDFが存在し、その遷移をアニメーション化することが望ましい場合がある。こうした目的のために、PDFがアニメーション化され得る。他の手法は、平均ベースの手法から移行して、代わりに最大ベースの手法を利用することができる。上述したように、ボクセルにごくまれにしか当たらない光、又は光線のごく一部にしか当たらない光が存在することがあり、そのため、その影響を平均ベースの手法によって最小限に抑えることができる。しかし、これらの光線の放射輝度の値が高い場合、その情報を保持することが望ましい場合がある。最大ベースの手法は、高PDFの放射輝度が保持され得るように高PDFと低PDFの間の対応するブレンド手法を用いて、任意のボクセルの光に対して返される最大寄与に関する情報を保持することができ、光の全体的な重要度が比較的低いことにより、その光を過度にサンプリングすることがない。
【0031】
いくつかの実施例では、部分CDFが生成され、使用のために記憶されてもよい。部分CDFは、シーン内の光のうちの固定数、選択したもの、又はサブセットに対してのみ、所与のCDFを構築することができる。一実例では、確率変数をサンプリングして、閾値bと比較することができる。このランダムなサンプルの値がbより大きい場合、たとえば、固定サイズのリストから光を選択することができる。この選択は、
確率=(1-b)*PartialPDFValue+b*(1/n)
によって与えられる確率を用いて、部分CDFを使用して実行されることが可能であり、ここで、nは、総光数であり、PartialPDFValueは、部分CDFから減算を用いて構築される。ランダムなサンプルがbよりも低い場合、b*(1/n)によって与えられる確率を用いて、すべての光から一様に光が選択されてもよい。構造を更新するために、フレームについて一様に選択されたすべての光に対して、光からの最大寄与を累積することができ、光は、固定サイズの構造において選択されて最大寄与に置き換えられる。少なくとも一実施例では、置換えは、置き換えるためのランダム・スロットを選択することによって、又は、最も低いPDFを選ぶ、サイコロを振ってそれを置き換えるかどうかを決定するなどの別の方法によって実装され得る。
【0032】
図4は、様々な実施例により実行されることが可能な、シーンのフレーム又は画像をレンダリングするための実例プロセス400を示す。本明細書で提示する上記のプロセス及び他のプロセスについて、同様の順番で、若しくは代替的な順番で、又は少なくとも一部が並行して実行される追加の、より少ない、又は代替的な、又はステップが、別段の記載のない限り様々な実施例の範囲内で存在してもよいことが理解されるべきである。この実例では、シーン内の複数の光源及び物体について、いくつかの光線がサンプリングされる402。このサンプリングからのデータを使用して、このシーンの様々な領域について、これらの光源の重要度値を決定することができる404。様々な手法を使用して、シーンを領域に分割することができ、これは、領域を様々なサイズの複数の8面体ボクセルに分割することを含んでもよい。これらの重要度値は、GPUメモリなどにキャッシュされ得る406。少なくとも一実施例では、各光源を選び取るための確率値を、キャッシュに記憶することができ、その確率値は、重要度値を使用して算出され得る。一連のフレームの一部であり得る、レンダリングすべきフレームについて、これらのキャッシュされた重要度値に少なくとも部分的に基づいて、(すべての可能な光源に投じられ得るすべての可能な光線から)サンプリングすべきいくつかの光線が選択され得る408。所与の領域又はボクセルについて、サンプリングすべき光線の数は、重要な光源の数、及びそれらの光源の相対的重要度に少なくとも部分的に基づくことができる。光線が選択されると、それらの選択された光線に対してサンプリングが実行され得る410。この情報を使用して、このシーンのキャッシュ・データを更新することができる。これらのサンプリングされた光線から得られた光情報を使用して、このシーン内の物体に対するこれらの光源の配置、形状、及び放射輝度などの因子に基づいて、このシーン内の物体を写実的に照明するように、このフレームをレンダリングすることもできる412。均一の又は異なるサイズのタイルに関係し得る他のタイプの領域も同様に選択することができる。
【0033】
図5は、少なくとも一実施例により実行され得る、フレームをレンダリングするための別の実例プロセス500を示す。この実例プロセスは、図4に示すプロセス400などのより一般的なプロセスのための1つ又は複数の実装の選択肢を表し得る。この実例では、レンダリングすべきシーンが決定される502。これは、たとえば、仮想3次元環境、並びにその環境内又は近傍に配置された物体及び光源を決定することを含むことができる。この実例では、このシーンの(前景物体と背景物体の両方を含む)物体は、任意選択で、8面体ボクセルのセットに分割されてもよく、様々な実施例の範囲内で、他のタイプの領域も使用することができる。いくつかの実施例では、空間ハッシングは、ロケーション、並びにレンダリング中に利用可能な場合は方向についての、ボクセル識別子又はメモリ内のロケーションの決定を可能にする。この環境では、複数の光源に対して光線(たとえば、影光線)を投じることができる。ボクセルごとに、これらの光線からの平均光寄与を計算することができる508。これは、少なくともいくつかの実施例では、方向性の考慮を含むことができる。このシーンのためにレンダリングすべきシーケンス内の現在のフレームについて、これらの平均値を使用して、光選択用の累積分布関数(CDF)を構築することができる。次いで、このCDFを使用して、現在のフレームのレンダリング中にサンプリングする光を選択することができる512。次いで、これらの選択された光をサンプリングすることができ514、これらのサンプリングされた光からの光情報、並びに、少なくとも一実施例では前のフレーム又はサンプリングからのキャッシュされた光情報を使用して、現在のフレームをレンダリングすることができる516。このシーケンスに対してレンダリングすべきフレームがこれ以上ない場合を除いて、次のフレームを選択することができ518、プロセスは、更新されたCDFを用いて別のサンプリングを続行することができる。
【0034】
少なくとも一実施例では、コンテンツのフレームのレンダリング及び提示の態様は、他のそうした選択肢のなかでもとりわけ、クライアント・デバイス上、サード・パーティ・プロバイダーによって、又はクラウド内など、様々なロケーションで実行することができる。図6は、様々な実施例による、そうしたコンテンツを生成、提供、及び提示するために使用されることが可能な例示的な構成要素600を示す。少なくとも一実施例では、クライアント・デバイス602は、クライアント・デバイス602上のコンテンツ・アプリケーション604の構成要素と、そのクライアント・デバイス上にローカルに記憶されたデータとを使用して、ゲーム・セッション又はビデオ視聴セッションなどのセッション用のコンテンツを生成することができる。少なくとも一実施例では、コンテンツ・サーバ620上で実行するコンテンツ・アプリケーション624(たとえば、ゲーミング又はストリーミング・メディア・アプリケーション)は、セッション・マネージャ、及びユーザ・データベース634に記憶されたユーザ・データを利用することができる少なくともクライアント・デバイス602に関連付けられたセッションを開始することができ、コンテンツ・マネージャ626によってコンテンツ632を決定し、このタイプのコンテンツ又はプラットフォームに必要な場合、レンダリング・エンジン628を使用してコンテンツ632をレンダリングし、ダウンロード、ストリーミング、又は別のこうした送信チャネルによって送るのに適した送信マネージャ622を使用して、コンテンツ632をクライアント・デバイス602に送信することができる。少なくとも一実施例では、このコンテンツを受信するクライアント・デバイス602は、このコンテンツを、対応するコンテンツ・アプリケーション604に提供することができ、このコンテンツ・アプリケーション604は、追加的に又は代替的に、ディスプレイ606を介したビデオ・コンテンツ、並びに、スピーカ若しくはヘッドフォンなどの少なくとも1つのオーディオ再生デバイスを介した音声及び音楽などのオーディオなど、クライアント・デバイス602を介した提示用にこのコンテンツの少なくとも一部をレンダリングするためのレンダリング・エンジン608を含んでもよい。少なくとも一実施例では、コンテンツが以前にダウンロードされているか、ハード・ドライブ又は光ディスク上にローカルに記憶されている可能性がある場合などに、コンテンツの少なくともその部分についてはネットワーク640を介した送信が必要とされないように、このコンテンツの少なくとも一部は、すでにクライアント・デバイス602上に記憶されているか、クライアント・デバイス602上にレンダリングされているか、又はクライアント・デバイス602にとってアクセス可能であってもよい。少なくとも一実施例では、データ・ストリーミングなどの送信機構を使用して、このコンテンツを、サーバ620又はコンテンツ・データベース634からクライアント・デバイス602に転送することができる。少なくとも一実施例では、コンテンツを生成又は提供するためのコンテンツ・アプリケーション652も含み得るサード・パーティ・コンテンツ・サービス650などの別のソースから、このコンテンツの少なくとも一部を取得又はストリーミングすることができる。少なくとも一実施例では、この機能の一部は、複数のコンピューティング・デバイス、又はCPUとGPUの組合せを含み得る、1つ又は複数のコンピューティング・デバイス内の複数のプロセッサを使用して実行することができる。
【0035】
少なくとも一実施例では、コンテンツ・アプリケーション624は、コンテンツがクライアント・デバイス602に送信される前にこのコンテンツを決定又は分析することができるコンテンツ・マネージャ626を含む。少なくとも一実施例では、コンテンツ・マネージャ626はまた、提供すべきコンテンツを生成、修正、又は強化することが可能な他の構成要素を含むか、又はそれとともに機能することができる。少なくとも一実施例では、これは、第1の解像度でエイリアスされたコンテンツなどのコンテンツをレンダリングするためのレンダリング・エンジン628を含むことができる。少なくとも一実施例では、アップサンプリング又はスケーリング・コンポーネント630は、この画像の少なくとも1つの追加のバージョンを、より高い又はより低い異なる解像度で生成することができ、アンチエイリアシングなどの少なくともいくつかの処理を実行することができる。少なくとも一実施例では、少なくとも1つのニューラル・ネットワークを含み得るブレンディング・コンポーネント632は、本明細書に記載するように、1つ又は複数の前の画像に関して、それらの画像の1つ以上に対してブレンディングを実行することができる。少なくとも一実施例では、コンテンツ・マネージャ626は、次いで、クライアント・デバイス602に送るのに適した解像度の画像又はビデオ・フレームを選択することができる。少なくとも一実施例では、クライアント・デバイス602上のコンテンツ・アプリケーション604はまた、この機能のいずれか又はすべてが、クライアント・デバイス602上で追加的又は代替的に実行され得るように、レンダリング・エンジン608などの構成要素を含んでもよい。少なくとも一実施例では、サード・パーティ・コンテンツ・サービス・システム650上のコンテンツ・アプリケーション652もまた、こうした機能を含むことができる。少なくとも一実施例では、この機能の少なくとも一部が実行されるロケーションは、構成可能であるか、又は、他のそうした要因のなかでもとりわけ、クライアント・デバイス602のタイプ若しくは適切な帯域幅を有するネットワーク接続の可用性などの要因に依存してもよい。少なくとも一実施例では、アップサンプリング・モジュール630又はブレンディング・モジュール632は、この機能を実行又は支援するための1つ又は複数のニューラル・ネットワークを含んでもよく、これらのニューラル・ネットワーク(又は、少なくともそれらのネットワークのネットワーク・パラメータ)は、コンテンツ・サーバ620又はサード・パーティ・システム650によって提供されることが可能である。少なくとも一実施例では、コンテンツ生成のためのシステムは、1つ又は複数のロケーションにハードウェアとソフトウェアの任意の適切な組合せを含むことができる。少なくとも一実施例では、1つ又は複数の解像度の生成された画像又はビデオ・コンテンツは、その画像又はビデオ・コンテンツのコピーを記憶しているメディア・ソースからのダウンロード又はストリーミングなどのために、他のクライアント・デバイス660に提供されるか、又は他のクライアント・デバイス660にとって利用可能とすることもできる。少なくとも一実施例では、これは、マルチプレーヤ・ゲーム用のゲーム・コンテンツの画像を送信することを含んでもよく、異なるクライアント・デバイスが、1つ又は複数の超解像度を含む異なる解像度でそのコンテンツを表示してもよい。
【0036】
データ・センタ
図7は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ700を示す。少なくとも一実施例では、データ・センタ700は、データ・センタ・インフラストラクチャ層710、フレームワーク層720、ソフトウェア層730、及びアプリケーション層740を含む。
【0037】
図7に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層710は、リソース・オーケストレータ712と、グループ化済みコンピューティング・リソース714と、ノード・コンピューティング・リソース(「ノードC.R.」)716(1)~716(N)とを含んでもよく、ここで「N」は任意の正の整数を表す。少なくとも一実施例では、ノードC.R.716(1)~716(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.716(1)~716(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
【0038】
少なくとも一実施例では、グループ化済みコンピューティング・リソース714は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース714内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0039】
少なくとも一実施例では、リソース・オーケストレータ712は、1つ又は複数のノードC.R.716(1)~716(N)及び/若しくはグループ化済みコンピューティング・リソース714を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ712は、データ・センタ700用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0040】
図7に示す少なくとも一実施例では、フレームワーク層720は、ジョブ・スケジューラ722、構成マネージャ724、リソース・マネージャ726、及び分配ファイル・システム728を含む。少なくとも一実施例では、フレームワーク層720は、ソフトウェア層730のソフトウェア732、及び/又はアプリケーション層740の1つ若しくは複数のアプリケーション742をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア732又はアプリケーション742はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層720は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム728を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ722は、データ・センタ700の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ724は、ソフトウェア層730、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム728を含むフレームワーク層720などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ726は、分配ファイル・システム728及びジョブ・スケジューラ722をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層710にあるグループ化済みコンピューティング・リソース714を含んでもよい。少なくとも一実施例では、リソース・マネージャ726は、リソース・オーケストレータ712と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0041】
少なくとも一実施例では、ソフトウェア層730に含まれるソフトウェア732は、ノードC.R.716(1)~716(N)、グループ化済みコンピューティング・リソース714、及び/又はフレームワーク層720の分配ファイル・システム728のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0042】
少なくとも一実施例では、アプリケーション層740に含まれるアプリケーション742は、ノードC.R.716(1)~716(N)、グループ化済みコンピューティング・リソース714、及び/又はフレームワーク層720の分配ファイル・システム728のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【0043】
少なくとも一実施例では、構成マネージャ724、リソース・マネージャ726、及びリソース・オーケストレータ712のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ700のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【0044】
少なくとも一実施例では、データ・センタ700は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ700に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ700に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【0045】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【0046】
こうした構成要素を使用して、光重要度情報をキャッシュし、その情報を使用して画像又はビデオ・フレームについてサンプリングする光線を決定することにより、画像生成中の画像品質を向上させることができる。
【0047】
コンピュータ・システム
図8は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれら800の何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム800は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ802などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム800は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム800は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【0048】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【0049】
少なくとも一実施例では、コンピュータ・システム800は、限定することなくプロセッサ802を含んでもよく、このプロセッサ802は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット808を含んでもよい。少なくとも一実施例では、コンピュータ・システム800は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム800はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ802は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ802は、プロセッサ・バス810に結合されてもよく、このプロセッサ・バスは、プロセッサ802とコンピュータ・システム800内の他の構成要素との間でデータ信号を送信してもよい。
【0050】
少なくとも一実施例では、プロセッサ802は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)804を含んでもよい。少なくとも一実施例では、プロセッサ802は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ802の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル806は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
【0051】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット808も、プロセッサ802にある。少なくとも一実施例では、プロセッサ802は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット808は、パック命令セット809に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット809を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ802のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0052】
少なくとも一実施例では、実行ユニット808はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム800は、限定することなくメモリ820を含んでもよい。少なくとも一実施例では、メモリ820は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。少なくとも一実施例では、メモリ820は、プロセッサ802によって実行されてもよいデータ信号によって表される命令819、及び/又はデータ821を記憶してもよい。
【0053】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス810及びメモリ820に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)816を含んでもよく、プロセッサ802は、プロセッサ・バス810を介してMCH816と通信してもよい。少なくとも一実施例では、MCH816は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路818をメモリ820に提供してもよい。少なくとも一実施例では、MCH816は、プロセッサ802と、メモリ820と、コンピュータ・システム800の他の構成要素との間でデータ信号を導き、プロセッサ・バス810と、メモリ820と、システムI/Oインターフェース822との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH816は、高帯域幅メモリ経路818を介してメモリ820に結合されてもよく、グラフィックス/ビデオカード812は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続814を介してMCH816に結合されてもよい。
【0054】
少なくとも一実施例では、コンピュータ・システム800は、MCH816をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)830に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O822を使用してもよい。少なくとも一実施例では、ICH830は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ820、チップセット、及びプロセッサ802に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ829、ファームウェア・ハブ(「フラッシュBIOS」)828、ワイヤレス・トランシーバ826、データ・ストレージ824、ユーザ入力及びキーボードのインターフェース825を含むレガシーI/Oコントローラ823、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート827、及びネットワーク・コントローラ834が、限定することなく含まれてもよい。データ・ストレージ824は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【0055】
少なくとも一実施例では、図8は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図8は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム800の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
【0056】
こうした構成要素を使用して、光重要度情報をキャッシュし、その情報を使用して画像又はビデオ・フレームについてサンプリングする光線を決定することにより、画像生成中の画像品質を向上させることができる。
【0057】
図9は、少なくとも一実施例による、プロセッサ910を利用するための電子デバイス900を示すブロック図である。少なくとも一実施例では、電子デバイス900は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0058】
少なくとも一実施例では、システム900は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ910を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ910は、I°Cバス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図9は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図9は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図9に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図9の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
【0059】
少なくとも一実施例では、図9は、ディスプレイ924、タッチ画面925、タッチ・パッド930、近距離無線通信ユニット(「NFC」:Near Field Communications unit)945、センサ・ハブ940、熱センサ946、エクスプレス・チップセット(「EC」:Express Chipset)935、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)938、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)922、DSP960、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ920、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)950、Bluetoothユニット952、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)956、全地球測位システム(GPS:Global Positioning System)ユニット955、USB3.0カメラなどのカメラ(「USB3.0カメラ」)954、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)915を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【0060】
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ910に通信可能に結合されてもよい。少なくとも一実施例では、加速度計941、周囲光センサ(「ALS」:Ambient Light Sensor)942、コンパス943、及びジャイロスコープ944が、センサ・ハブ940に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ939、ファン937、キーボード946、及びタッチ・パッド930が、EC935に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ963、ヘッドフォン964、及びマイクロフォン(「mic」)965が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)962に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP960に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット964は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)957は、WWANユニット956に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット950及びBluetoothユニット952などの構成要素、並びにWWAN956は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
【0061】
こうした構成要素を使用して、光重要度情報をキャッシュし、その情報を使用して画像又はビデオ・フレームについてサンプリングする光線を決定することにより、画像生成中の画像品質を向上させることができる。
【0062】
図10は、少なくとも一実例による処理システムのブロック図である。少なくとも一実施例では、システム1000は、1つ又は複数のプロセッサ1002、及び1つ又は複数のグラフィックス・プロセッサ1008を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ1002若しくはプロセッサ・コア1007を有するサーバ・システムであってもよい。少なくとも一実施例では、システム1000は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0063】
少なくとも一実施例では、システム1000は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム1000は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム1000はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム1000は、1つ又は複数のプロセッサ1002と、1つ又は複数のグラフィックス・プロセッサ1008によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0064】
少なくとも一実施例では、1つ又は複数のプロセッサ1002はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア1007を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア1007のそれぞれは、特定の命令セット1009を処理するように構成される。少なくとも一実施例では、命令セット1009は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア1007はそれぞれ、異なる命令セット1009を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア1007はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
【0065】
少なくとも一実施例では、プロセッサ1002はキャッシュ・メモリ1004を含む。少なくとも一実施例では、プロセッサ1002は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1002の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ1002はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア1007間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル1006がプロセッサ1002に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル1006は、汎用レジスタ又は他のレジスタを含んでもよい。
【0066】
少なくとも一実施例では、1つ又は複数のプロセッサ1002は、1つ又は複数のインターフェース・バス1010に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ1002とシステム1000内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス1010は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース1010は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ1002は、統合メモリ・コントローラ1016、及びプラットフォーム・コントローラ・ハブ1030を含む。少なくとも一実施例では、メモリ・コントローラ1016は、メモリ・デバイスとシステム1000の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)1030は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0067】
少なくとも一実施例では、メモリ・デバイス1020は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス1020は、システム1000のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ1002がアプリケーション若しくはプロセスを実行するときに使用するためのデータ1022及び命令1021を記憶することができる。少なくとも一実施例では、メモリ・コントローラ1016はまた、任意選択の外部グラフィックス・プロセッサ1012と結合しており、このグラフィックス・プロセッサは、プロセッサ1002内の1つ又は複数のグラフィックス・プロセッサ1008と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス1011は、プロセッサ1002に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス1011は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス1011は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
【0068】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ1030は、周辺装置が高速I/Oバスを介してメモリ・デバイス1020及びプロセッサ1002に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ1046、ネットワーク・コントローラ1034、ファームウェア・インターフェース1028、ワイヤレス・トランシーバ1026、タッチ・センサ1025、データ・ストレージ・デバイス1024(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス1024は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ1025は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ1026は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース1028は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ1034は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス1010と結合する。少なくとも一実施例では、オーディオ・コントローラ1046は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム1000は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ1040を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ1030は、キーボードとマウス1043の組合せ、カメラ1044、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ1042の接続入力デバイスにも接続することができる。
【0069】
少なくとも一実施例では、メモリ・コントローラ1016及びプラットフォーム・コントローラ・ハブ1030のインスタンスは、外部グラフィックス・プロセッサ1012などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ1030及び/又はメモリ・コントローラ1016は、1つ又は複数のプロセッサ1002の外部にあってもよい。たとえば、少なくとも一実施例では、システム1000は、外部のメモリ・コントローラ1016及びプラットフォーム・コントローラ・ハブ1030を含むことができ、これらは、プロセッサ1002と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0070】
こうした構成要素を使用して、光重要度情報をキャッシュし、その情報を使用して画像又はビデオ・フレームについてサンプリングする光線を決定することにより、画像生成中の画像品質を向上させることができる。
【0071】
図11は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア1102A~1102N、統合メモリ・コントローラ1114、及び統合グラフィックス・プロセッサ1108を有するプロセッサ1100のブロック図である。少なくとも一実施例では、プロセッサ1100は、破線の四角によって表される追加コア1102Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア1102A~1102Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット1104A~1104Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット1106にアクセスできる。
【0072】
少なくとも一実施例では、内部キャッシュ・ユニット1104A~1104N、及び共有キャッシュ・ユニット1106は、プロセッサ1100内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット1104A~1104Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット1106及び1104A~1104N間でコヒーレンスを維持する。
【0073】
少なくとも一実施例では、プロセッサ1100はまた、1つ又は複数のバス・コントローラ・ユニット1116とシステム・エージェント・コア1110のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット1116は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア1110は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア1110は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ1114を含む。
【0074】
少なくとも一実施例では、プロセッサ・コア1102A~1102Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア1110は、マルチスレッドの処理中にコア1102A~1102Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア1110はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア1102A~1102N及びグラフィックス・プロセッサ1108の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
【0075】
少なくとも一実施例では、プロセッサ1100はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ1108を含む。少なくとも一実施例では、グラフィックス・プロセッサ1108は、共有キャッシュ・ユニット1106と、1つ又は複数の統合メモリ・コントローラ1114を含むシステム・エージェント・コア1110とに結合する。少なくとも一実施例では、システム・エージェント・コア1110はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ1111を含む。少なくとも一実施例では、ディスプレイ・コントローラ1111はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ1108に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ1108内に一体化されていてもよい。
【0076】
少なくとも一実施例では、プロセッサ1100の内部構成要素を結合するために、リング・ベースの相互接続ユニット1112が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ1108は、I/Oリンク1113を介してリング相互接続1112と結合する。
【0077】
少なくとも一実施例では、I/Oリンク1113は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール1118との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア1102A~1102Nのそれぞれ及びグラフィックス・プロセッサ1108は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール1118を使用する。
【0078】
少なくとも一実施例では、プロセッサ・コア1102A~1102Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア1102A~1102Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア1102A~1102Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア1102A~1102Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア1102A~1102Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ1100は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
【0079】
こうした構成要素を使用して、光重要度情報をキャッシュし、その情報を使用して画像又はビデオ・フレームについてサンプリングする光線を決定することにより、画像生成中の画像品質を向上させることができる。
【0080】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【0081】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【0082】
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数とは、少なくとも2つの項目であるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0083】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0084】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【0085】
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0086】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0087】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0088】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
【0089】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0090】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力することは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0091】
上の議論は、説明した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0092】
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
図1A
図1B
図1C
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
【外国語明細書】