様々な実施形態は、概して、スクリーン空間における効果の適用及びラスタ化することからシェーディングを分離すること(decoupling)、シェーディングの実行をシェーディング空間において後の段階に遅延させること、及び、シェーディングをサポートするGバッファ及び/又は他の複雑なデータ構造の使用を回避することを含む、3Dモデルから2Dスクリーン画像をレンダリングすることにおいてプリミティブをシェーディングする処理要求を低減させるための技術を対象とする。細かいラスタ化(fine rasterization)が、スクリーン画像のスクリーン画像画素において可視である、3Dモデルのプリミティブのジオメトリを識別して、シェーディングがそのような可視ジオメトリに制限されることを可能にするために使用される。次いで、粗いラスタ化(coarse rasterization)が、スクリーン画像に対応するシェーディング画像の各シェーディング画像画素におけるシェーディングのための候補であり得る、3Dモデルの全てのプリミティブを識別するために使用される。シェーディングは、閲覧のためにスクリーン画像が生成されるスクリーン空間から分離されているシェーディング空間においてシェーディング画像に対して実行され、シェーディングの複雑さを低減させるために、スクリーン画像の画素解像度とは異なり得る、シェーディング画像の画素解像度でシェーディングが実行されることが可能になる。次いで、シェーディング画像画素について導出された色値が、スクリーン画像の画素に転換される。モーションブラー効果及び/又は被写界深度効果が、細かいラスタ化中に、又は、スクリーン画像への色値の転換の後に、適用され得る。
細かいラスタ化は、スクリーン画像の各スクリーン画像画素に複数のスクリーン画像サンプルが割り当てられる、確率的サンプリング、マルチサンプリング、レイトレーシング等を含む多様なタイプのサンプリングのうちの任意のサンプリングを使用して、スクリーン画像画素の位置においてスクリーン画像の視点から可視である、3Dモデルのプリミティブの一部を識別することができる。そのような可視プリミティブがこのように識別されたとき、各スクリーン画像サンプルを、可視プリミティブに対応付けるとともに、シェーディング画像のシェーディング画像画素に対応付けるデータ構造が生成され得る。このデータ構造は、シェーディング点識別子(SPID:shading point identifier)から構成され得、SPIDの各々は、各プリミティブに一意に割り当てられている識別子を参照することにより、1つのスクリーン画像サンプルを可視プリミティブに対応付ける。SPIDの各々はまた、シェーディング画像内のシェーディング画像画素の座標を参照することにより、1つのスクリーン画像サンプルをシェーディング画像画素に対応付けることができる。
SPIDの生成の後、SPIDを解析して、各シェーディング画像画素につき1つのリストであるリストから構成されるデータ構造を生成することができる。各リストは、その関連付けられているシェーディング画像画素によりカバーされる領域に属するスクリーン画像サンプルにより識別された可視プリミティブの識別子を含み得る。各リストはまた、その関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションを含み得る。いくつかの実施形態において、SPIDの各々が解析されたとき、各シェーディング画像画素について、当該シェーディング画像画素によりカバーされる領域内のスクリーン画像サンプルにより識別された可視プリミティブの間で見出された深度のうちの最大深度を示す別のデータ構造が生成され得る。代替的又は追加的に、各スクリーン画像サンプルを、シェーディング画像画素内の当該スクリーン画像サンプルに関連付けられている可視プリミティブをシェーディングすることから導出された色値が記憶されるアドレス位置であって、当該スクリーン画像サンプルの色値をシェーディング後に割り当てることができる元であるアドレス位置に対応付けるさらに別のデータ構造が生成されてもよい。
SPIDの生成及び解析の後、粗いラスタ化及びシェーディングが、各シェーディング画像画素内の1つの可視プリミティブにつき1回、一緒に実行され得る。粗いラスタ化において、各シェーディング画像画素は、当該シェーディング画像画素によりカバーされる領域内に存在する、その一部を有する3Dモデルの全てのプリミティブを識別するために、相対的に広く鈍い(blunt)サンプルとして効果的に扱われる。当業者には認識可能なように、広く鈍いサンプルとして各シェーディング画像画素をそのように使用することは、粗いラスタ化を実行する際に、外側コンサバティブラスタ化(outer conservative rasterization)を使用することにより実現され得る。このサンプリングは、細かいラスタ化の一部として先に実行されたサンプリングと同じ視点から実行される。シェーディング画像画素の領域内に存在すると見出された各プリミティブについて、SPIDからこの画素について先に生成された可視プリミティブのリストをチェックして、当該プリミティブが、そのシェーディング画像画素に属するスクリーン画像サンプルのうちの1つのスクリーン画像サンプルにより、スクリーン画像内の可視プリミティブとして識別されたとしてこのリストにあるかどうかを判定する。リストにある場合、シェーディングを実行して、そのシェーディング画像画素によりカバーされる領域内の当該プリミティブの色を導出し、その色を記憶する。リストにない場合、そのシェーディング画像画素によりカバーされる領域内の当該プリミティブについてはシェーディングが実行されない。いくつかの実施形態において、そのような各リストにおいて識別される可視プリミティブの間の最大深度を示す先に生成されたデータ構造を使用して、当該プリミティブがそのリストにおいて識別されているかどうかに関する判定が行われる効率性を上げることができる。
シェーディング画像の全ての画素にわたる可視プリミティブの全てについてシェーディングが実行された後、各シェーディング画像画素内の各可視プリミティブについて導出された色の色値が、スクリーン画像画素に転換される。前述したように、各SPIDは、スクリーン画像サンプルのうちの1つのスクリーン画像サンプルを、可視プリミティブに対応付けているとともに、シェーディング画像画素に対応付けており、これらの対応付けを用いて、シェーディング中に各可視プリミティブについて導出された色値を、各SPIDに関連付けられているスクリーン画像サンプルに割り当てることができる。代替的又は追加的に、各スクリーン画像サンプルを、シェーディング画像画素内のスクリーン画像サンプルに関連付けられている可視プリミティブをシェーディングすることから導出された色値が記憶されているアドレス位置に対応付けている先に生成されたデータ構造を使用することにより、各スクリーン画像サンプルに色が割り当てられる効率性を上げてもよい。
各スクリーン画像サンプルに、シェーディング中に導出された色が割り当てられる正確な方法にかかわらず、スクリーン画像サンプルを用いて、シェーディング中に導出された色をスクリーン画像画素に転換する。したがって、各スクリーン画像画素について、そのスクリーン画像サンプルの色値を、多様な方法のうちの任意の方法で平均化及び/又は合成して、当該スクリーン画像画素について1つの色値を導出することができる。以下でより詳細に説明するように、スクリーン画像画素及びシェーディング画像画素のサイズ及び/又は境界は、一致することもあるし一致しないこともある。より詳細には、いくつかの実施形態において、これらの間には、1対1の対応関係が存在し得る。しかしながら、他の実施形態において、シェーディング画像画素は、スクリーン画像画素より大きい且つ/又は小さいことがあり、且つ/又は、スクリーン画像の境界とシェーディング画像画素の境界とは整合しないことがある。結果として、スクリーン画像画素は、2以上のシェーディング画像画素からのサンプルを含む、スクリーン画像の領域をカバーすることがあり、したがって、各スクリーン画像画素に属するスクリーン画像サンプルの平均化は、複数のシェーディング画像画素からの色値を合成するように機能し得る。
スクリーン画像がモーションブラー効果及び/又は被写界深度効果を描写するよう意図される実施形態において、モーションブラー効果及び/又は被写界深度効果を適用することの一部として、スクリーン画像サンプルの色値を平均化することに加えて、又はこれに代えて、フィルタが使用されてもよい。いくつかの実施形態において、フィルタ自体が、モーションブラー効果及び/又は被写界深度効果を適用できる。しかしながら、他の実施形態において、モーションブラー効果及び/又は被写界深度効果は、スクリーン画像画素とSPIDとの対応付けにノイズを意図的に導入するために、SPIDの生成中に適用され得る。当業者には認識可能なように、ノイズのそのような導入は、細かいラスタ化の実行中に、時間ディメンジョン(time dimension)及び/又はレンズディメンジョン(lens dimension)にわたる確率的サンプリングを含むがこれに限定されるものではない多様な技術のうちの任意の技術を使用することにより実現され得る。そのような他の実施形態において、各スクリーン画像画素についての1つの色値の導出中に使用されるフィルタは、そのようなノイズを導入する望ましくない影響を低減させるために、隣接スクリーン画像画素からの画素色値を含めることができる。
本明細書で使用される表記及び用語を一般的に参照しながら、以下の詳細な説明の諸部分が、コンピュータ上又はコンピュータのネットワーク上で実行されるプログラムプロシージャの観点で提示され得る。このようなプロシージャ的な記載及び表現は、当業者が、自身の研究の内容を他の当業者に最も効果的に伝えるために、当業者により使用される。プロシージャは、ここでは概して、所望の結果をもたらす自己矛盾のない一連の動作と考えられる。これらの動作は、物理量の物理的操作を必要とするものである。通常、必ずではないが、これらの物理量は、記憶、転送、合成、比較、及び他の操作が可能な電気信号、磁気信号、又は光信号の形態をとる。ありふれた使用を主とした理由として、これらの信号を、ビット、値、要素、記号、文字、用語、数等として指すことが、折に触れて便宜的であることが分かる。しかしながら、これらの用語及び同様の用語の全てが、適切な物理量に関連付けられ、これらの物理量に付与される単に便宜的なラベルに過ぎないことを理解されたい。
さらに、これらの操作は、人間のオペレータにより行われる知的活動に通常関連付けられる、追加する又は比較する等の観点でしばしば参照される。しかしながら、人間のオペレータのそのような能力は、1以上の実施形態の一部を形成する、本明細書に記載の動作のいずれにおいても、多くの場合、必要でないし望まれない。むしろ、これらの動作は、マシンの動作である。様々な実施形態の動作を実行する有用なマシンは、本明細書における教示に従って記述された記憶されているコンピュータプログラムにより選択的にアクティブ化又は構成される汎用デジタルコンピュータを含む、且つ/又は、必要とされる目的のために特別に構成される装置を含む。様々な実施形態はまた、これらの動作を実行する装置又はシステムにも関連する。これらの装置は、必要とされる目的のために特別に構成されてもよいし、汎用コンピュータを含んでもよい。これらの多様なマシンのために必要とされる構造は、以下で提供される説明から明らかになるであろう。
本明細書において図面が参照される。図面において、同様の参照符号は、全体を通じて同様の要素を指すために使用される。以下の説明において、説明の目的で、多数の具体的な詳細が、その完全な理解を提供するために記載されている。しかしながら、新規な実施形態は、これらの具体的な詳細がなくても実施できることが明らかであろう。他の例において、周知の構造及びデバイスが、その説明を容易にするために、ブロック図の形態で示されている。意図は、請求項の範囲内にある全ての変更形態、均等形態、及び代替形態を網羅することにある。
図1は、ソースデバイス300、コンピューティングデバイス500、及び閲覧デバイス(viewing device)700のうちの1以上を組み込むグラフィックスレンダリングシステム1000の一実施形態のブロック図を示している。コンピューティングデバイス500は、2次元(2D)スクリーン画像880の2D平面に投影された3次元(3D)モデル280の2Dスクリーン画像880を生成する。コンピューティングデバイス500は、ソースデバイス300から、規定された3D空間内の1以上のオブジェクトの3Dモデル280を表す3Dモデルデータ330を受信することができる。3Dモデルデータ330は、モデル280の1以上のオブジェクトを構成するプリミティブを直接的に指定することもあるし、これらのプリミティブの導出を可能にするのに十分な情報を含むこともある。
スクリーン画像880の生成の後、コンピューティングデバイス500は、ディスプレイ580上にスクリーン画像880を提示することができる、且つ/又は、スクリーン画像880を表すスクリーン画像データ730を、閲覧デバイス700のディスプレイ780上で提示されるように、閲覧デバイス700に送信することができる。スクリーン画像データ730は、スクリーン画像880の各画素の色が多様なフォーマットのうちのいずれかのフォーマットで符号化され得る、スクリーン画像880のビットマップを含み得る。いくつかの実施形態において、スクリーン画像880の画素解像度は、ディスプレイ580及び/又はディスプレイ780の画素解像度に一致するように選択され得る。実際、いくつかの実施形態において、閲覧デバイス700は、スクリーン画像880の画素解像度がディスプレイ780の画素解像度に一致するように設定されることを可能にするために、ディスプレイ780の画素解像度のインジケーションを、コンピューティングデバイス500に提供することができる。
これらのコンピューティングデバイスの各々は、多様なタイプのコンピューティングデバイスのうちの任意のコンピューティングデバイスとすることができる。このようなコンピューティングデバイスは、デスクトップコンピュータシステム、データ入力端末、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、ハンドヘルドパーソナルデータアシスタント、スマートフォン、スマート眼鏡、スマート腕時計、デジタルカメラ、衣類に組み込まれる身体装着型コンピューティングデバイス、乗り物(例えば、自動車、自転車、車椅子等)に統合されるコンピューティングデバイス、サーバ、サーバのクラスタ、サーバファーム等を含むが、これらに限定されるものではない。
図示されるように、これらのコンピューティングデバイス300、500、及び700は、ネットワーク999を介して、3Dモデル及び/又は2Dスクリーン画像を表すデータを伝達する信号を交換する。しかしながら、これらのコンピューティングデバイスのうちの1以上は、ネットワーク999を介して互いに且つ/又はさらに他のコンピューティングデバイス(図示せず)と、3Dモデルから2D画像をレンダリングすることに何ら関連しない他のデータを交換することもある。様々な実施形態において、ネットワークは、1つの建物又は他の比較的制限されたエリア内に延びるように可能であれば制限された1つのネットワークであってもよいし、相当な距離だけ可能であれば延びる接続ネットワークの組合せであってもよいし、且つ/又は、インターネットを含んでもよい。したがって、ネットワーク999は、信号を交換することができる多様な通信技術のうちの任意の通信技術(又は、そのような通信技術の組合せ)に基づき得る。そのようなネットワークは、電気伝導性ケーブリング及び/又は光伝導性ケーブリングを用いる有線技術と、赤外線、無線周波数、又は他の形態の無線伝送を用いる無線技術と、を含むが、これらに限定されるものではない。
様々な実施形態において、コンピューティングデバイス500は、プロセッサコンポーネント550、ストレージ560、ディスプレイ580、コントローラ600、及び、コンピューティングデバイス500をネットワーク999に結合するインタフェース590のうちの1以上を組み込む。ストレージ560は、制御ルーチン540、3Dモデルデータ330、及び制御データ335のうちの1以上を記憶する。コントローラ600は、プロセッサコンポーネント650及びストレージ660のうちの1以上を組み込む。ストレージ660は、評価ルーチン640、SPIDデータ632、プリミティブリストデータ633、最大深度データ634、シェーディングアドレスデータ635、シェーディング色データ637、及びスクリーン画像データ730のうちの1以上を記憶する。
制御ルーチン540は、様々な機能を実行するロジックを実装するために、コンピューティングデバイス500のメインプロセッサコンポーネントとしての役割を果たすプロセッサコンポーネント550上で動作可能な一連の命令を組み込む。制御ルーチン540を実行するにあたり、プロセッサコンポーネント550は、ソースデバイス300から、ネットワーク999を介して、3Dモデルデータ330を受信することができ、3Dモデル280の少なくとも一部を表す、3Dモデルデータ330の少なくとも一部を、ストレージ560に記憶することができる。3Dモデルデータ330は、その2D画像を生成又は送信することを含む使用の前に、かなりの時間の間ストレージ560に記憶され得ることに留意されたい。いくつかの実施形態において、プロセッサコンポーネント550は、3Dモデルデータ330を解析して、1以上のオブジェクトの3Dモデル280を構成するプリミティブの少なくともサブセットを導出することができる。他の実施形態において、3Dモデルデータ330は、これらのプリミティブの詳細をより直接的に指定することができ、プロセッサコンポーネント550による上記解析を不要にする。スクリーン画像880を表すスクリーン画像データ730の生成の後、プロセッサコンポーネント550は、閲覧のために、ディスプレイ580上に画像880を視覚的に提示することができる、且つ/又は、スクリーン画像880が閲覧のためにディスプレイ780上に提示されることを可能にするために、スクリーン画像データ730を閲覧デバイス700に送信することができる。
いくつかの実施形態において、プロセッサコンポーネント550は、3Dモデル280からスクリーン画像880を生成する際に使用する様々な構成パラメータのインジケーションを受信することができる。例えば、スクリーン画像880がディスプレイ780上での提示のために閲覧デバイス700に送信される実施形態において、ディスプレイ780の画素解像度、色深度、フレームレート、及び/又は他のパラメータのインジケーションが、閲覧デバイス700から(例えばネットワーク999を介して)受信され得る。別の例として、3Dモデル280に対するスクリーン画像880の平面及び/又は境界の位置及び/又は向きのインジケーションが、閲覧デバイス700及び/又はさらに別のデバイス(図示せず)からネットワーク999を介して受信され得る。プロセッサコンポーネント550は、スクリーン画像880を生成する際のプロセッサコンポーネント650による使用のために、このようなパラメータのインジケーションを、制御データ335の一部として記憶することができる。代替的又は追加的に、画素解像度のインジケーションは、ディスプレイ780ではなく、ディスプレイ580のものであってもよい。
制御ルーチン640は、様々な機能を実行するロジックを実装するために、コンピューティングデバイス500のコントローラ600のコントローラプロセッサコンポーネントとしての役割を果たすプロセッサコンポーネント650上で動作可能な一連の命令を組み込む。評価ルーチン640を実行する際、プロセッサコンポーネント650は、3Dモデル280を表す3Dモデルデータ330から、スクリーン画像880を表すスクリーン画像データ730を生成する。より正確には、プロセッサコンポーネント650は、スクリーン画像880の平面への3Dモデル280の2D投影として、スクリーン画像880をレンダリングする。
図3は、3Dモデル280を表す3Dモデルデータ330からの、スクリーン画像880を表すスクリーン画像データ730の上記生成の例示的な実施形態を示している。図示されるように、制御ルーチン640は、細かいラスタ化コンポーネント642、シェーディング制約コンポーネント643、シェーディングアドレスコンポーネント645、粗いラスタ化コンポーネント646、シェーディングコンポーネント647、及び転換コンポーネント(resolving component)648のうちの1以上を組み込むことができる。制御ルーチン640を実行する際、プロセッサコンポーネント650は、制御ルーチン640のコンポーネント642、643、645、646、647、及び648のうちの1以上を実行することができる。
細かいラスタ化コンポーネント642は、制御データ335から、3Dモデル280の1以上のオブジェクトに対する、スクリーン画像880の平面の位置及び向きのインジケーション、並びに、その平面内のスクリーン画像データ880の境界の位置及び向きのインジケーションを取得することができる。細かいラスタ化コンポーネント642は、次いで、スクリーン画像880の各画素について複数のサンプルを使用して3Dモデル280の1以上のオブジェクトのグラフィックスプリミティブをラスタ化する際に上記インジケーションを使用して、これらのプリミティブのうちのどのプリミティブが、スクリーン画像880内で少なくとも部分的に可視である可視プリミティブであるかを判定することができる。図4は、この細かいラスタ化の一例の態様をより詳細に示している。図示されるように、3Dモデルデータ330は、サイズ、形状、位置、及び/又は向き等の、プリミティブ282の様々な特性のインジケーションを含むプリミティブデータ332を組み込むことができる。当業者に知られているように、各プリミティブ282は、多様なタイプのポリゴンのうちの任意のポリゴンであり得る。このようなポリゴンの各々は、1つの平面内で延びるものであるが、典型的な3Dモデルにおけるプリミティブの大多数(必ずしも全てではない)は、三角形である。
細かいラスタ化を実行して、3Dモデル280のどのプリミティブ282が、スクリーン画像880内で少なくとも部分的に可視である可視プリミティブ882でもあるかを判定する際、細かいラスタ化コンポーネント642は、3Dモデル280に向けて(towards)、スクリーン画像880の各スクリーン画像画素885について多数のスクリーン画像サンプル888を投影することができる(多数のスクリーン画像サンプル888のうちの1つのスクリーン画像サンプルのみが、視覚的な明瞭さのために図示されている)。スクリーン画像画素888をこのように投影するにあたり、1つのスクリーン画像画素885当たりのスクリーン画像サンプル888の数を選択する際、及び、各スクリーン画像画素885によりカバーされる領域内のスクリーン画像サンプル888の位置を選択する際、多様なサンプリング技術のうちの任意のサンプリング技術を使用することができる。そのような技術は、スーパーサンプリング、マルチサンプリング、確率的サンプリング(モーションブラー効果及び/又は被写界深度効果を与えるための、時間ディメンジョン及び/又はレンズディメンジョンにわたる確率的サンプリングを含む)、及び/又はレイトレーシングを含むが、これらに限定されるものではない。各スクリーン画像サンプル888が、3Dモデル280に向けて(スクリーン画像880の平面から延び該平面に垂直である直線状に)投影されたとき、各スクリーン画像サンプル888によって遭遇される(encountered)、3Dモデル280の最初のプリミティブ282が、スクリーン画像880内で少なくとも部分的に可視である可視プリミティブ882になる。
上述したように、スクリーン画像880は、コンピューティングデバイス500のディスプレイ580又は閲覧デバイス700のディスプレイ780等のディスプレイ上に視覚的に提示されるように生成される。したがって、当業者に知られているように、スクリーン画像880及びスクリーン画像880を表すスクリーン画像データ730は、「スクリーン空間」において生成されると考えられている。なぜならば、画像データ730は、閲覧されることになる画像を表すからである。当業者に知られているように、シェーディングは、通常、スクリーン空間における画像を表す画像データの少なくとも一部を直接的に導出するためにラスタ化とともに実行され、したがって、シェーディングは、通常、「スクリーン空間において」実行されると考えられている。しかしながら、制御ルーチン640を実行する際、シェーディングは、スクリーン空間において実行される細かいラスタ化から分離され、スクリーン空間において細かいラスタ化とともに実行されないように、後の段階に遅延される。代わりに、プロセッサコンポーネント650は、制御ルーチン640を実行する際、スクリーン画像880に対応するがスクリーン画像880とは別の異なるシェーディング画像680であって閲覧されるようには意図されないシェーディング画像680を生成するシェーディングを実行する。より詳細には、分離され遅延されるシェーディングが、「シェーディング空間」においてシェーディング画像680を生成するために、粗いラスタ化とともに実行される。
シェーディング空間におけるシェーディング画像680のコンテンツの少なくともサブセットが、スクリーン空間におけるスクリーン画像880のコンテンツに匹敵する(parallel)。より詳細には、可視プリミティブ882の相対位置とスクリーン画像サンプル888の相対位置とが、スクリーン画像880とシェーディング画像680との間で対応する。さらに、画像880と画像680との両方のエッジを規定する境界が、これらの境界に対する可視プリミティブ882の位置とスクリーン画像サンプル888の位置とが対応し得るように、対応し得る。さらに、いくつかの実施形態において、スクリーン画像880のスクリーン画像画素885は、シェーディング画像680のシェーディング画像画素685と1対1の対応関係を有し得る。しかしながら、他の実施形態において、図4に示されるように、画素885と画素685とは、サイズの点で、且つ/又は各々がカバーする領域の境界のアライメント(alignment)の点で、対応し得ない。
図5A及び図5Bは、スクリーン画像画素885のサイズ及び/又はスクリーン画像画素885の境界のアライメントが、シェーディング画像画素685のサイズ及び/又はシェーディング画像画素685の境界のアライメントに対応し得ない様々なやり方の例を示している。図5Aを参照すると、スクリーン画像画素885の間で16個のスクリーン画像サンプル888a〜888pの不規則的な割り当て(例えば、グリッド状ではない割り当て)により示されるように、確率的サンプリングが、細かいラスタ化コンポーネント642による細かいラスタ化の実行において使用されている。確認できるように、スクリーン画像サンプルのうちの4つのスクリーン画像サンプル888f、888g、888j、及び888kが、スクリーン画像画素885のうちの1つのスクリーン画像画素によりカバーされる領域内で大部分に配置されている。しかしながら、図示されるように、スクリーン画像サンプルのうちの9つのスクリーン画像サンプル888a、888b、888c、888e、888f、888g、888i、888j、及び888kが、シェーディング画像画素685のうちの少なくとも1つのシェーディング画像画素によりカバーされるより大きな領域内で大部分に配置されるように、シェーディング画像画素685のうちの少なくとも1つのシェーディング画像画素が、より大きな領域をカバーしている。
図5Bを参照すると、いくつかの実施形態において、シェーディング画像画素685のうちのいくつかのシェーディング画像画素が、シェーディング画像画素685のうちの他のシェーディング画像画素よりも、シェーディング画像680の領域のうちのより多くをカバーするように、シェーディング画像画素685のうちの異なるシェーディング画像画素は、異なるサイズであり得る。さらに、異なるサイズのシェーディング画像画素685のいずれも、スクリーン画像画素885のサイズと同じサイズでないことがあり得る。例えば、必要とされる処理リソースを低減させ、これに対応して、必要とされる電力リソースを低減させるためのアプローチとして、シェーディングされるシェーディング画像画素685の数全体を低減させようとする努力において、シェーディング画像680内の異なる位置において異なるサイズのシェーディング画像画素685を使用することが望ましいと考えられることがあり得る。詳細には、図示されるように、可視プリミティブ882の実質的に途切れのない広がりに一致する、シェーディング画像画素685のうちのより小さなサイズのシェーディング画像画素が、結合され得る。この結合は、1つの色のみを導出するための機会が提供されるように、このように結合されるシェーディング画像画素685の全てについて導出されることになる色が、実質的に類似することになるという想定に基づき得る。代替的又は追加的に、可視プリミティブ882のエッジに一致する、シェーディング画像画素685のうちのより大きなサイズのシェーディング画像画素が、シェーディング画像画素685のより多くの数のより小さなサイズのシェーディング画像画素に細分割され得る。この細分割は、エッジのいずれかのサイドの色が異なる傾向にあり、シェーディング画像画素685のうちの1以上のシェーディング画像画素のこのような細分割が、これらの色のより明瞭な描写を可能にすることにより、エッジが視覚的により明瞭にされることを可能にすることになるという想定に基づき得る。
図4に戻ると、細かいラスタ化コンポーネント642が、細かいラスタ化を実行して、可視プリミティブ882を識別するとき、細かいラスタ化コンポーネント642は、各スクリーン画像サンプル888についてシェーディング点識別子(SPID)を生成し、SPIDデータ632の一部として、SPIDを記憶することができる。各SPIDが、1つのスクリーン画像サンプル888のみに対応するように、SPIDとスクリーン画像サンプル888との間には、1対1の対応関係が存在する。各SPIDは、スクリーン画像サンプル888により識別された可視プリミティブ882についての識別子kと、スクリーン画像サンプル888が属する、シェーディング画像680内の領域をカバーするシェーディング画像画素685の座標sx,syと、このシェーディング画像画素685におけるこの可視プリミティブ882の深度szのインジケーションと、を含み得る。したがって、SPIDは、スクリーン画像サンプル888を介して、スクリーン空間におけるスクリーン画像880のスクリーン画像画素885を、シェーディング空間におけるシェーディング画像680のシェーディング画像画素685に対応付けるメカニズムを提供する。以下でより詳細に説明するように、この対応付けを用いて、シェーディング画像680のシェーディングの後に、シェーディング画像680からスクリーン画像880に色値を転換する。
いくつかの実施形態において、細かいラスタ化コンポーネント642は、シェーディング画素規定コンポーネント6422を含み得る。シェーディング画素規定コンポーネント6422は、各スクリーン画像画素885内で可視であると見出された可視プリミティブ882の数を解析し、スクリーン画像画素885に対する、シェーディング画像画素685のうちの1以上のシェーディング画像画素685のサイズを変えて、この1以上のシェーディング画像画素685の各シェーディング画像画素内で可視である可視プリミティブ882の数を制御する。より正確には、シェーディング画素規定コンポーネント6422は、スクリーン画像画素885のサイズよりも大きい又は小さいものであり得る、シェーディング画像画素685の全てについての1つの共通サイズを決定することができる。代替的又は追加的に、シェーディング画素規定コンポーネント6422は、シェーディング画像画素685が可変サイズであり得るように、図5Bに示されているように、シェーディング画像画素685のうちの1以上のシェーディング画像画素685を結合及び/又は細分割してもよい。図5を参照して説明したように、シェーディング画像画素685の少なくともサブセットによりカバーされる、シェーディング画像680の領域を変えることは、実行されるシェーディングの処理要件(したがって電力要件)を低減させることができる。
いくつかの実施形態において、細かいラスタ化コンポーネント642は、効果コンポーネント6423を含み得る。効果コンポーネント6423は、モーションブラー効果及び/又は被写界深度効果を与えるように、SPIDが生成される方式を変更する。例えば、3Dモデル280に向けてスクリーン画像サンプル888を投影してスクリーン画像880内の可視プリミティブ882を識別するために、細かいラスタ化コンポーネント642により確率的サンプリングが使用される場合、効果コンポーネントは、スクリーン画像サンプル888のうちの少なくとも一部に時間ディメンジョン(temporal dimension)を与えて、画像880内で描写される動きに応じてスクリーン画像サンプル888のうちの少なくとも一部を時系列に配置することにより、モーションブラーを導入することができる。より詳細には、スクリーン画像サンプル888のうちの少なくとも一部の識別子kが、これらのスクリーン画像サンプル888に関連するある程度のノイズを可視プリミティブ882に導入するように、これらの間で再配分(redistributed)され得、これによりブラーを生じさせる。識別子kのこのような再配分は、適用されるモーションブラーの程度に応じて、複数のスクリーン画像画素885のスクリーン画像サンプル888の間で実行されることもあるし、又は、1つのスクリーン画像画素885内のスクリーン画像サンプル888の間で実行されることに制限されることもある。別の例として、確率的サンプリングが、再度、細かいラスタ化コンポーネント642により使用される場合、効果コンポーネント6423は、スクリーン画像サンプル888のうちの少なくとも一部にレンズ座標を与えて、レンズパラメータに応じてスクリーン画像サンプル888のうちの少なくとも一部を配置することにより、被写界深度効果を導入することができる。
図3に戻ると、細かいラスタ化コンポーネント642によるSPIDデータ632のSPIDの生成の後、シェーディング制約コンポーネント643は、SPIDデータ632の各SPIDを取得及び解析して、各シェーディング画像画素685内で可視であるとして、スクリーン画像サンプル888により検出された可視プリミティブ882のリストを導出する。図6は、そのような画素ごとのリストを生成する一例の態様をより詳細に示している。より詳細には、各シェーディング画像画素685について、シェーディング制約コンポーネント643は、(スクリーン画像サンプル888により検出された、)当該画素685によりカバーされる、シェーディング画像680の領域内で可視である可視プリミティブ882の全てを含むリストを生成し、プリミティブリストデータ633の一部として、当該シェーディング画像画素685についてのこのリストを記憶する。図示されるように、各シェーディング画像画素685についてのこのようなリストは、当該シェーディング画像画素685内で可視である可視プリミティブ882を識別する識別子ka,kb,...から構成され得る。プリミティブリストデータ633のリストを生成するために、シェーディング制約コンポーネント643は、各SPIDから座標sx,syを取得して、SPIDがどのシェーディング画像画素685に関連付けられているかを識別し、次いで、SPIDが関連付けられている可視プリミティブ882の識別子kを取得し、次いで、取得した座標sx,syにより識別されるこのシェーディング画像画素685についての、プリミティブリストデータ633内のリストに、取得した識別子kを追加することができる。
プリミティブリストデータ633内のそのような各リストは、対応するシェーディング画像画素685内で可視である各可視プリミティブ882が、この対応するシェーディング画像画素685に関連付けられているSPIDのうちのどれだけの数のSPIDがこの同じ可視プリミティブ882を参照するかにかかわらず、プリミティブリストデータ633内で1回のみリストされるコンパクトなリストであり得る。いくつかの実施形態において、シェーディング制約コンポーネント643は、重複する識別子を追加することを回避するために、SPIDにおいて指定されている識別子kがプリミティブリストデータ633内のリストにまだリストされていないかどうかを、プリミティブリストデータ633内のリストに、SPIDにおいて指定されている識別子kを追加することの条件とすることができる。他の実施形態において、シェーディング制約コンポーネント643は、識別子kがプリミティブリストデータ633内のリストに既にリストされているかどうかにかかわらず、シェーディング制約コンポーネント643がSPIDデータ632のSPIDの全てを反復処理するときに、プリミティブリストデータ633内のリストに識別子kを追加することができ、次いで、重複する識別子を除去するために、プリミティブリストデータ633内のリストの全てを後で反復処理することができる。
SPIDデータ632が生成される前に、各シェーディング画像画素685に属するスクリーン画像サンプル888の数が既知であり得るが、シェーディング画像画素685のうちのあらゆるシェーディング画像画素685内で可視である可視プリミティブ882の数は、SPIDが解析されるまで、認識することができない。したがって、プリミティブリストデータ633内の各リストは、多様なタイプのデータ構造のうちの任意のデータ構造を使用して実装され得るが、連結リストデータ構造等の、各リストを実装するために全体サイズが可変であるデータ構造を使用することが望ましいと考えられることがあり得る。代替的に、各配列のサイズが、シェーディング画像画素685のうちの1つのシェーディング画像画素内で可視である可能性が高いと考えられ得る、最大可能数の可視プリミティブ882を収容するのに十分大きいように選択される、多様な配列型データ構造のうちの任意の配列型データ構造が使用されてもよい。いくつかの実施形態において、シェーディング制約コンポーネント643が、SPIDデータ632のSPIDを解析するとき、シェーディング制約コンポーネント643はまた、各シェーディング画像画素685について、当該シェーディング画像画素685に属するスクリーン画像サンプル888により当該シェーディング画像画素685内で可視であるとして検出された可視プリミティブ882のうちのいずれかにより到達される(スクリーン画像880の平面の視点からの)最深深度Zmaxのインジケーションを、最大深度データ634に記憶することができる。
いくつかの実施形態において、SPIDデータ632のSPIDはまた、SPIDデータ632において指定されている各シェーディング画像画素685内で可視である各可視プリミティブ882についてシェーディング中に導出されることになる色を示す色値が記憶される、ストレージ660内の位置を指定するアドレスを導出するために、シェーディングアドレスコンポーネント645により取得及び解析され得る。シェーディングアドレスコンポーネント645は、1つのSPID当たり1つのインジケーションであるこれらのアドレスのインジケーションを、シェーディングアドレスデータ635として記憶することができる。前述したように、サンプル888とSPIDデータ632のSPIDとの間には、1対1の対応関係が存在する。したがって、各SPIDについてこれらのアドレスのうちの1つのアドレスを導出する際、シェーディングアドレスコンポーネント645は、各サンプル888について、シェーディング画像680のシェーディングの後に当該サンプル888についての色を示す色値を取得することができる取得元である、ストレージ660内のアドレスを原則的に導出する。
図3に戻ると、最大深度データ634及び/又はシェーディングアドレスデータ635が生成されないとしても、少なくともプリミティブリストデータ633の生成の後、粗いラスタ化コンポーネント646は、スクリーン画像880の同じ平面の同じ視点から、3Dモデル280の別のラスタ化を実行するが、シェーディング画像680がその視点に代用される。1つのシェーディング画像画素685につき1つのシェーディング画像サンプル688しか使用されず、各シェーディング画像画素685における1つのシェーディング画像サンプル688が、その関連付けられているシェーディング画像画素685によりカバーされる、シェーディング画像680の領域全体をカバーするように実効的に広げられるという理由のため、このラスタ化は、粗いラスタ化である。粗いラスタ化コンポーネント646のこの粗いラスタ化において、各シェーディング画像画素685の1つのより広いシェーディング画像サンプル688が、3Dモデル280に至るまで幅広く投影されるこのシェーディング画像サンプル688のパスに沿って存在する、3Dモデル280の全てのプリミティブ282を、これらのプリミティブ282が可視であるか否かにかかわらず、検出するために使用される。シェーディング画像サンプル688のパスとスクリーン画像サンプル888のパスとが、互いに平行に投影されるように、このより粗いシェーディング画像サンプル688は、より細かいスクリーン画像サンプル888と同じ平面に垂直に投影されることに留意されたい。各シェーディング画像サンプル688のパスに沿ったプリミティブの全てが識別されるとともに、このパスに沿った各プリミティブ282の平面の向きに関する他のデータ、このパスに沿った各プリミティブ282の深度、及び/又はシェーディングに関連するさらに他の情報が、当該シェーディング画像サンプル688を使用して取得される。
したがって、細かいラスタ化コンポーネント642により実行される細かいラスタ化及び粗いラスタ化コンポーネント646により実行される粗いラスタ化はそれぞれ、性質において非常に異なり、非常に異なる機能を提供する。上述したように、細かいラスタ化コンポーネント642の細かいラスタ化は、1つのスクリーン画像画素885につき、はるかに狭いスクリーン画像サンプル888のうちの複数のスクリーン画像サンプルを使用して、3Dモデル280のプリミティブ282のうちのどのプリミティブが可視プリミティブ882であるかを識別する。また、複数のより狭いスクリーン画像サンプル888のそのような使用は、各スクリーン画像画素885内で可視である各可視プリミティブ882によりカバーされる、各スクリーン画像画素885の領域の相対的割合のインジケーションを提供する。反対に、粗いラスタ化コンポーネント646の粗いラスタ化は、1つのシェーディング画像画素685につき、より広いシェーディング画像サンプル688を1つのみ使用して、そのシェーディング画像サンプル688のパスに沿って存在する全てのプリミティブ282を識別し、シェーディングを可能にすることに関連する、そのパスに沿ったプリミティブ228ごとのさらなる情報を取得する。
細かいラスタ化コンポーネント642の細かいラスタ化のスクリーン画像サンプル888は、可視プリミティブ882をシェーディングすることに関連するさらなる情報を取得するために使用され得るものではあるが、シェーディング空間においてシェーディングが別個に実行されるという事実は、一般的に「Gバッファ」と呼ばれる比較的大きなデータ構造に、スクリーン画像サンプル888の全てについてシェーディングすることに関連するそのような情報を記憶することを必要とするであろう。典型的なグラフィックスレンダリングシステムのためのハードウェアアーキテクチャの分野における当業者に知られているように、1つのスクリーン画像サンプル888につき非常に多くの異なる情報を記憶するためのそのような大きく複雑なデータ構造の生成は、ストレージ560の効率的な使用を行う形でそのようにするのはしばしば不可能である。より詳細には、そのようなデータ構造のエントリを埋めることは、効率的にキャッシュするのが難しい、又は、グラフィックスレンダリングシステムの記憶位置の典型的な行−列編成の効率的な使用を行うように編成するのが難しい、連続したアクセス動作をしばしば必要とする。実際、粗いラスタ化コンポーネント646の粗いラスタ化等の第2の異なるラスタ化プロセスを実行して、シェーディングに関連する情報を、該情報を記憶するよう試みる代わりに、このシェーディングが実行されるときに取得することが、実により効率的であり得る。
したがって、粗いラスタ化コンポーネント646が、各プリミティブ282及び各シェーディング画像サンプル688を進むときに、粗いラスタ化コンポーネント646は、当該シェーディング画像サンプル688のパスに沿った全てのプリミティブ282に関する情報とともに、これらのプリミティブ282に関する、シェーディングに関連する情報を、当該シェーディング画像サンプル688に関連付けられているシェーディング画像画素685内でシェーディングを実行する際の使用のために、シェーディングコンポーネント647に提供する。
図7は、シェーディング画像680をシェーディングする一例の態様をより詳細に示している。各シェーディング画像画素685について、シェーディングコンポーネント647は、当該シェーディング画像画素685から生じたシェーディング画像サンプル688のパスに沿って検出された各プリミティブ282を、1つずつ、プリミティブがそのように検出された順番で、条件付きでシェーディングすることができる。シェーディングコンポーネント647により課せられる条件は、シェーディング画像サンプル688により検出された各プリミティブ282が、関連付けられているシェーディング画像画素685内で可視であると、細かいラスタ化において以前に判定されていたか否かということであり得る。すなわち、シェーディング画像サンプル688のパスに沿って検出された各プリミティブ282について、シェーディングコンポーネント647は、そのシェーディング画像サンプル688に関連付けられているシェーディング画像画素685についての、プリミティブリストデータ633内のリストをチェックして、当該検出されたプリミティブ282が、そのシェーディング画像画素685内の可視プリミティブ882としてリストされているか否かを判定することができる。そのシェーディング画像画素685について、シェーディングコンポーネント647は、次いで、そのシェーディング画像サンプル688のパスに沿って検出されたプリミティブ882であって、且つ、そのリストにリストされているプリミティブ882のみをシェーディングすることができ、そのシェーディング画像画素685についてそのようなシェーディングにより導出された色のインジケーションを、シェーディング色データ637として記憶する。
より正確には、各シェーディング画像画素685について、シェーディングコンポーネント647は、当該シェーディング画像画素685に関連付けられているシェーディング画像サンプル688のパスに沿って検出された各プリミティブ282の識別子kを受信することができる。シェーディングコンポーネント647は、次いで、当該シェーディング画像画素685についての、プリミティブリストデータ633内の可視プリミティブの識別子ka,kb,...のリストをチェックして、そのパスに沿って検出されたプリミティブ282のうちのどのプリミティブが、そのリスト内で合致する識別子を有するかを識別することができる。プリミティブリストデータ733内のそのリストにおける合致により、そのパスに沿って検出されたプリミティブ282のうちの1つのプリミティブが、当該シェーディング画像画素685内で可視である可視プリミティブ882として識別される。シェーディングコンポーネント647は、次いで、そのパスに沿って検出されたプリミティブ282であって、且つそのリストにおいて合致が存在するプリミティブ282の各々のシェーディングを実行し、それらのシェーディングされたプリミティブ282の各々について導出された色値を、シェーディング色データ637に記憶する。
前述したように、シェーディング画像画素685のうちの1つのシェーディング画像画素685についての、プリミティブリストデータ633の各リストは、その1つのシェーディング画像画素685のより小さな部分内でも可視である各可視プリミティブ882についての識別子を含む。当業者に知られているように、各画素685内の特定の可視プリミティブ882のシェーディングの、その特定の可視プリミティブ882の識別子kが当該画素685についてのリストにあるかどうかの条件付けは、シェーディングコンポーネント647により実行されるシェーディングが、画素ごとの形式の外側コンサバティブシェーディング(outer conservative shading)として分類され得ることを意味する。より詳細には、可視プリミティブ882の一部であるように可視である、3Dモデル280のプリミティブ282についてのみシェーディングが実行されるという意味で、このシェーディングは、「コンサバティブ」である。しかしながら、各可視プリミティブ882の小さな部分のみが画素内685内で可視であるとしても、各可視プリミティブ882が画素685内でシェーディングされるという理由のため、このシェーディングは、各可視プリミティブ882の境界の「外側」限界を含む。
最大深度データ634が生成される実施形態において、シェーディングコンポーネント647が、シェーディング画像サンプル688のパスに沿って検出されたプリミティブ282をシェーディングするかどうかを判定する速さは、シェーディングコンポーネント647が、そのような検出された各プリミティブ282の深度を、そのシェーディング画像サンプル688に関連付けられているシェーディング画像画素685についての、最大深度データ635において示される最大深度Zmaxに対してチェックすることにより、増大され得る。そのシェーディング画像サンプル688のパスに沿って検出されたプリミティブ282の深度が、関連付けられているシェーディング画像画素685についての最大深度Zmaxより大きい場合、当該検出されたプリミティブ282は、そのシェーディング画像画素685内で可視でなく、当該検出されたプリミティブ282の識別子を、そのシェーディング画像画素685についての、プリミティブリストデータ633内のリストにおける1以上の識別子に対してチェックする際にさらなる処理リソースを使用する必要がない。一方、当該検出されたプリミティブ282の深度が、そのシェーディング画像画素685についての最大深度Zmax以下である場合、当該検出されたプリミティブ282は、そのシェーディング画像画素685内で可視である可能性があるので、シェーディングコンポーネント647は、当該検出されたプリミティブ282の識別子を、そのリストにおける識別子と比較して、当該検出されたプリミティブ282が、そのシェーディング画像画素685内で可視であるかどうかを判定し得る。
シェーディングコンポーネント647により実行されるシェーディングが、1つのシェーディング画像画素685ごとに1つの可視プリミティブ882当たり1つの色を導出することを所与とすると、各シェーディング画像画素685についてシェーディングコンポーネント647により2以上の色が導出され得る。より正確には、各シェーディング画像画素685について導出される色の数は、当該シェーディング画像画素685内で可視である可視プリミティブ882の数に等しい。したがって、例えば、特定のシェーディング画像画素685内で可視である3つの可視プリミティブ882が存在する場合、シェーディングコンポーネント647は、この画素について3回シェーディングを実行し(この画素内で可視である3つの可視プリミティブ882の各々につき1回ずつ)、3つの色値(この画素内で可視である3つの可視プリミティブ882の各々につき1つの色値)が、この特定のシェーディング画像画素685について、シェーディング色データ637に記憶される。
各シェーディング画像画素685内で可視である可視プリミティブ882の数と各シェーディング画像画素685についてシェーディングコンポーネント647により導出される色の数との間のこの1対1の対応関係の結果として、シェーディング色データ637は、プリミティブリストデータ633内の画素ごとの識別子のリストとは異なり、色値のリストであって、画素685ごとに1つのリストが生成されるリストから構成され得る。実際、シェーディング色データ637は、1つのシェーディング画像画素685ごとに1つのリストが存在する、色のリスト(例えば、図示されるような、色a,色b,...)から構成され得、これらのリストは、プリミティブリストデータ633内の可視プリミティブ882の識別子のリスト(例えば、図示されるような、ka,kb,...)(例えば、シェーディング画像画素685ごとの連結リスト)を実装する際に使用されるタイプと類似するタイプのデータ構造を使用して実装される。いくつかの実施形態において、プリミティブリストデータ633とシェーディング色データ637とは、各リストにおける可視プリミティブ882の各識別子kに、シェーディングコンポーネント647によりシェーディングが実行された結果としての対応する色値が付随し得るように、結合され得る。
図3に戻ると、シェーディングコンポーネント647によるシェーディングの実行の後、転換コンポーネント648は、スクリーン画像サンプル888を用いて、シェーディング画像画素685の色から、スクリーン画像画素885の色を導出する。そうする際、転換コンポーネント648はまた、スクリーン画像880がモーションブラー効果及び/又は被写界深度効果を描写する実施形態において前述したように、1以上のフィルタを実装して、モーションブラー効果を与える、被写界深度効果を与える、且つ/又は、SPIDの生成中に、モーションブラー効果及び/又は被写界深度効果の実装からノイズ成分を除去することができる。図8は、シェーディング画像画素685からスクリーン画像画素885に画素色値を転換する一例の態様をより詳細に示している。
前述したように、スクリーン画像サンプル888は、互いに対する対応する位置と、スクリーン画像880及びシェーディング画像680の各画像内の可視プリミティブ882の位置に対する対応する位置と、を有し、それにより、シェーディング画像画素685の1以上の色値をスクリーン画像画素885に転換するためにスクリーン画像サンプル888が使用されることを可能にする。前述したように、各スクリーン画像サンプル888は、関連付けられているスクリーン画像サンプル888により検出された可視プリミティブ882の識別子を含むSPIDに関連付けられている。さらに前述したように、各シェーディング画像画素685についてシェーディング画像のシェーディングにより2以上の色値が導出され得、具体的には、当該シェーディング画像画素685内で可視である1つの可視プリミティブ882につき1つの色値が存在する。したがって、スクリーン画像画素885への転換のためにシェーディング画像画素685から各スクリーン画像サンプル888に割り当てられる色値は、当該スクリーン画像サンプル888に関連付けられているSPIDにおいて識別された可視プリミティブ882についてこのシェーディング画像画素685内で導出された色値である。
シェーディングアドレスデータ635がシェーディングアドレスコンポーネント645により先に生成されている実施形態において、スクリーン画像サンプル888への色値の割り当てを実施するために、転換コンポーネント648は、シェーディングアドレスデータ635から、各スクリーン画像サンプル888についての色値を取得することができる取得元のアドレスを取得する。再度、各スクリーン画像サンプル888について、シェーディングアドレスデータ635内のその関連付けられているアドレスは、当該スクリーン画像サンプル888が属するシェーディング画像画素685内で当該スクリーン画像サンプル888により検出された可視プリミティブ882について導出された色値を取得することができる位置を示す。転換コンポーネント648は、次いで、これらのアドレスを使用して、スクリーン画像画素885の各スクリーン画像画素内に属するスクリーン画像サンプル888についての色値を取得する。
しかしながら、シェーディングアドレスデータ635がシェーディングアドレスコンポーネント645により先に生成されていない実施形態において(例えば、シェーディングアドレスコンポーネント645を含まない実施形態において)、スクリーン画像サンプル888への色値の割り当ては、転換コンポーネント648が、SPIDデータ632から、各スクリーン画像サンプル888に関連付けられているSPIDを取得することにより実施され得る。転換コンポーネント648は、各スクリーン画像サンプル888に関連付けられているSPIDから、当該スクリーン画像サンプル888が属するシェーディング画像画素685の座標sx,syと、細かいラスタ化コンポーネント642により実行された細かいラスタ化中に当該スクリーン画像サンプル888により検出された可視プリミティブ882の識別子kと、を取得する。転換コンポーネント648は、各スクリーン画像サンプル888について取得された座標sx,syと識別子kとを使用して、当該スクリーン画像サンプル888に割り当てられる色値を取得することができる取得元のアドレスを導出する。
スクリーン画像サンプル888に、シェーディング画像680の先のシェーディングにより導出された色値が割り当てられる正確な方法にかかわらず、モーションブラー効果又は被写界深度効果が画像880内で描写されない実施形態において、転換コンポーネント648は、各スクリーン画像画素885に属するスクリーン画像サンプル888の画素色値を平均化するサンプル平均化コンポーネント6487を組み込んで、当該スクリーン画像画素885についての色値を導出することができる。しかしながら、モーションブラー効果又は被写界深度効果が画像880内で描写される実施形態においては、転換コンポーネント648は、フィルタを適用して、各スクリーン画像画素885の色値を、当該スクリーン画像画素885に属するスクリーン画像サンプル888と当該スクリーン画像画素885に隣接するスクリーン画像画素885に属するスクリーン画像サンプル888との組合せとすることができるものから、導出することができる。
一例としてより詳細には、細かいラスタ化コンポーネント642が、SPIDデータ632のSPIDの生成中にモーションブラーを導入する効果コンポーネント6423を含む実施形態において、転換コンポーネント648は、SPIDの間で可視プリミティブ882の識別子kを再配分する際に、効果コンポーネント6423により導入されるノイズから生じる望ましくないアーチファクトを低減させるフィルタリングコンポーネント6488を組み込むことができる。そのようなフィルタリングを実行する際、フィルタリングコンポーネント6488は、各スクリーン画像画素885の色値を、当該スクリーン画像画素885に属するスクリーン画像サンプル888から導出するときに、重み付き平均を用いて、選択された程度に、隣接スクリーン画像画素885のスクリーン画像サンプル888の色値を含めることができる。
各スクリーン画像画素885の色値を導出する際に平均化及び/又はフィルタリングが使用されるかどうかにかかわらず、転換コンポーネント648は、スクリーン画像データ730の一部として、スクリーン画像画素885の各々についての色値を記憶する。スクリーン画像データ730に記憶された、各スクリーン画像画素885の値を用いると、スクリーン画像データ730は、スクリーン画像880の表現になる。図1に戻ると、前述したようにスクリーン画像880を表現するスクリーン画像データ730の生成の後、プロセッサコンポーネント550は、ディスプレイ580上に画像880を提示することができる。代替的又は追加的に、プロセッサコンポーネント550は、ディスプレイ780等の別のディスプレイ上での画像880の提示を可能にするために、閲覧デバイス700等の別のデバイスにスクリーン画像データ730を送信するようにインタフェース590を動作させてもよい。
様々な実施形態において、閲覧デバイス700は、プロセッサコンポーネント750、ストレージ760、ディスプレイ780、及び、閲覧デバイス700をネットワーク999に結合するインタフェース790のうちの1以上を組み込む。ストレージ760は、制御ルーチン740及びスクリーン画像データ730のうちの1以上を記憶する。制御ルーチン740は、様々な機能を実行するロジックを実装するために、閲覧デバイス700のメインプロセッサコンポーネントとしての役割を果たすプロセッサコンポーネント750上で動作可能な一連の命令を組み込む。いくつかの実施形態において、制御ルーチン740を実行する際、プロセッサコンポーネント750は、ディスプレイ780の画素解像度のインジケーションをコンピューティングデバイス500に送信するように、インタフェース790を動作させることができる。前述したように、そのようなインジケーションは、制御データ335の一部として、コンピューティングデバイス500に記憶され得、スクリーン画像880をレンダリングする1以上の態様で(例えば、スクリーン画像800の画素解像度を設定するために)後で使用される。代替的又は追加的に、プロセッサコンポーネント750は、コンピューティングデバイス500が、上述したように、スクリーン画像880をレンダリングした後、コンピューティングデバイス500から、スクリーン画像880を表すスクリーン画像データ730を受信するように、インタフェース790を動作させてもよい。プロセッサコンポーネント750は、次いで、ディスプレイ780上にモーションスクリーン画像880を視覚的に提示することができる。
図2は、コンピューティングデバイス500の代替実施形態を含むグラフィックスレンダリングシステム1000の代替実施形態のブロック図を示している。図2のグラフィックスレンダリングシステム1000の代替実施形態は、多くの点で図1の実施形態に類似しているので、同様の参照符号が、全体を通じて同様の要素を指すために使用されている。しかしながら、図1のコンピューティングデバイス500とは異なり、図2のコンピューティングデバイス500は、コントローラ600を組み込んでいない。したがって、図1のコンピューティングデバイス500とは異なり、図2のコンピューティングデバイス500においては、プロセッサコンポーネント550が、制御ルーチン640を実行する別のプロセッサコンポーネント650が存在する代わりに、制御ルーチン640を実行する。したがって、図2のグラフィックスレンダリングシステム1000の代替実施形態において、プロセッサコンポーネント550が、プロセッサコンポーネント650による制御ルーチン640の実行に関して上述したのと類似する方法で、ラスタ化、シェーディング、及び色値の転換を含む、スクリーン画像880のレンダリングを実行する。
様々な実施形態において、プロセッサコンポーネント550及び650の各々は、多種多様な商用利用可能なプロセッサのうちの任意のプロセッサを含み得る。また、これらのプロセッサコンポーネントのうちの1以上は、複数のプロセッサ、マルチスレッドプロセッサ、マルチコアプロセッサ(複数のコアが同じ又は異なるダイ上に共存する)、及び/又は、複数の物理的に別個のプロセッサが何らかの方法でリンクされる何らかの他の種類のマルチプロセッサアーキテクチャを含み得る。また、プロセッサコンポーネント550及び650の各々は、多様なタイプのプロセッサのうちの任意のプロセッサを含み得るが、(存在する場合には)コントローラ600のプロセッサコンポーネント650は、グラフィックス及び/又はビデオに関連するタスクを実行するようにいくらか特殊化及び/又は最適化され得ることが想定されている。より広義には、コントローラ600は、プロセッサコンポーネント650とは別の異なるコンポーネントと、そのより密接に関連するコンポーネントと、を使用して、グラフィックスレンダリング、ビデオ圧縮、画像再スケーリング等に関連するタスクの実行を可能にするための、コンピューティングデバイス500のグラフィックスサブシステムを具現化することが想定されている。
様々な実施形態において、ストレージ560、660、及び760の各々は、可能であれば、電力の途切れない供給を必要とする揮発性技術を含み、可能であれば、着脱可能であっても着脱不可能であってもよいマシン読み取り可能な記憶媒体の使用を伴う技術を含む多種多様な情報記憶技術のうちの任意の情報記憶技術に基づき得る。したがって、これらのストレージの各々は、多種多様なタイプの記憶デバイスのうちの任意の記憶デバイス(又は、多種多様なタイプの記憶デバイスの組合せ)を含み得る。そのような記憶デバイスは、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDR−DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラム可能なROM(PROM)、消去可能なプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)、フラッシュメモリ、高分子メモリ(例えば、強誘電体高分子メモリ)、オボニックメモリ、相変化メモリ、強誘電体メモリ、SONOS(silicon-oxide-nitride-oxide-silicon)メモリ、磁気カード、光カード、1以上の個別の強磁性ディスクドライブ、又は、1以上のアレイに編成された複数の記憶デバイス(例えば、RAID(redundant array of independent disks)アレイに編成された複数の強磁性ディスクドライブ)を含むが、これらに限定されるものではない。これらのストレージの各々が、1つのブロックとして図示されているが、これらのストレージのうちの1以上は、異なるストレージ技術に基づき得る複数の記憶デバイスを含み得ることに留意されたい。したがって、例えば、これらの図示されるストレージのうちの1以上は、プログラム及び/又はデータを何らかの形態のマシン読み取り可能な記憶媒体に記憶しては伝達することができるフラッシュメモリカードリーダ若しくは光ドライブと、比較的長い期間の間プログラム及び/又はデータを局所的に記憶する強磁性ディスクドライブと、プログラム及び/又はデータへの比較的迅速なアクセスを可能にする1以上の揮発性ソリッドステートメモリデバイス(例えば、SRAM又はDRAM)と、の組合せを表すこともある。これらのストレージの各々は、同一のストレージ技術に基づく複数のストレージコンポーネントから構成され得るが、使用の際の特殊化の結果として別々に維持され得る(例えば、いくつかのDRAMデバイスはメインストレージとして使用されるのに対し、他のDRAMデバイスはグラフィックスコントローラの別個のフレームバッファとして使用される)ことにも留意されたい。
様々な実施形態において、インタフェース590及び790は、上述したように、これらのコンピューティングデバイスが他のデバイスに結合されることを可能にする多種多様なシグナリング技術のうちの任意のシグナリング技術を使用することができる。これらのインタフェースの各々は、そのような結合を可能にする必須の機能のうちの少なくとも一部を提供する回路を含む。しかしながら、これらのインタフェースの各々はまた、(例えば、プロトコルスタック又は他の機能を実装するために)プロセッサコンポーネントのうちの対応するプロセッサコンポーネントにより実行される一連の命令で少なくとも部分的に実装され得る。電気伝導性ケーブリング及び/又は光伝導性ケーブリングが使用される場合、これらのインタフェースは、RS−232C、RS−422、USB、Ethernet(登録商標)(IEEE−802.3)、又はIEEE−1394を含むがこれらに限定されるものではない多様な業界標準のうちの任意の業界標準に準拠するシグナリング及び/又はプロトコルを使用することができる。無線信号伝送の使用が想定される場合、これらのインタフェースは、IEEE802.11a、802.11b、802.11g、802.16、802.20(一般的に「モバイルブロードバンド無線アクセス」と呼ばれる);Bluetooth(登録商標);ZigBee(登録商標);又は、汎用パケット無線サービスを伴うGSM(登録商標)(GSM(登録商標)/GPRS)、CDMA/1xRTT、EDGE(enhanced data rates for global evolution)、EV−DO(evolution data only/optimized)、EV−DV(evolution for data and voice)、高速下りリンクパケットアクセス(HSDPA)、高速上りリンクパケットアクセス(HSUPA)、4G LTE等といったセルラ無線電話サービスを含むがこれらに限定されるものではない多様な業界標準のうちの任意の業界標準に準拠するシグナリング及び/又はプロトコルを使用することができる。
図9は、論理フロー2100の一実施形態を示している。論理フロー2100は、本明細書に記載の1以上の実施形態により実行される動作の一部又は全てを表し得る。より詳細には、論理フロー2100は、少なくとも制御ルーチン640を実行する際にプロセッサコンポーネント550及び/又は650により実行される動作、及び/又は、コンピューティングデバイス500の1以上の他のコンポーネントにより実行される動作を示し得る。
2110において、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550及び/又は650)は、3Dモデル(例えば、3Dモデル280)からレンダリングされる2Dスクリーン画像(例えば、スクリーン画像880)の平面の視点から、3Dモデルの全てのグラフィックスプリミティブ(例えば、3Dモデル280のプリミティブ282)の細かいラスタ化を実行して、その視点から可視である、3Dモデルのプリミティブ(例えば、可視プリミティブ882)の全てを識別する。上述したように、そのような平面の位置及び/又は向き、並びに、そのような平面内のスクリーン画像の境界の位置及び/又は向きが、別のコンピューティングデバイス(例えば、閲覧デバイス700)から受信され得る。
2120において、細かいラスタ化の各スクリーン画像サンプル(例えば、各スクリーン画像サンプル888)を解析して、スクリーン画像サンプルを、スクリーン画像サンプルにより、スクリーン画像の視点から可視プリミティブであると見出された、3Dモデルのプリミティブに対応付けるとともに、スクリーン画像サンプルを、スクリーン画像に対応するシェーディング画像のシェーディング画像画素(例えば、シェーディング画像680のシェーディング画像画素685)に対応付けるSPIDを生成する。SPIDは、SPIDの配列等のより大きなデータ構造の一部として記憶され得る。上述したように、スクリーン画像とシェーディング画像とは、少なくとも可視プリミティブの相対位置とスクリーン画像サンプルの相対位置とが一致する程度に関連している。しかしながら、シェーディング画像画素は、サイズの点で、スクリーン画像画素(例えば、スクリーン画像画素885)と異なることがあり、且つ/又は、スクリーン画像画素の境界とシェーディング画像画素の境界とが整合しないことがある。さらに、各SPIDはまた、当該SPIDがその関連付けられているスクリーン画像サンプルを対応付けているシェーディング画像画素における可視プリミティブの深度のインジケーションを含み得る。
2130において、プロセッサコンポーネントは、2Dスクリーン画像の同じ平面の視点から、3Dモデルの全てのグラフィックスプリミティブの粗いラスタ化を実行するが、シェーディング画像を代用して、各シェーディング画像サンプル(例えば、シェーディング画像サンプル688)のパスに沿って存在する、3Dモデルのプリミティブの全てを識別する。上述したように、そのような各パスに沿った各プリミティブが識別されるとともに、シェーディングが粗いラスタ化とともに実行されることを可能にする、これらのプリミティブをシェーディングすることに関連する他の情報が、取得される。
2140において、シェーディング画像サンプルのパスに沿って識別された各プリミティブであって、且つ、シェーディング画像の各画素について可視プリミティブとして識別された各プリミティブに対して、外側コンサバティブシェーディングを実行して、当該シェーディング画像画素内のそのような各プリミティブについて色値を導出する。2150において、各シェーディング画像画素内の各プリミティブの色値を、当該シェーディング画像画素に属するスクリーン画像サンプルのうちの1以上のスクリーン画像サンプルに割り当てる。上述したように、可視プリミティブを識別するために細かいラスタ化中に使用されたスクリーン画像サンプルをここで使用して、これらの色値をスクリーン画像画素に転換する。しかしながら、上述したように、シェーディング画像画素とスクリーン画像画素との間にはサイズ及び/又は境界のアライメントの1対1の対応関係が存在しないことがあることを所与として、1つのスクリーン画像画素に属するスクリーン画像サンプルが、複数のシェーディング画像画素に属することもあるので、複数のシェーディング画像画素からの色値が、スクリーン画像画素の少なくともサブセットに転換される。これに対処するために、2160において、各スクリーン画像画素に属する全てのスクリーン画像サンプルの色値を平均化して、当該スクリーン画像画素の1つの色値を導出する。
図10は、論理フロー2200の一実施形態を示している。論理フロー2200は、本明細書に記載の1以上の実施形態により実行される動作の一部又は全てを表し得る。より詳細には、論理フロー2200は、少なくとも制御ルーチン640を実行する際にプロセッサコンポーネント550及び/又は650により実行される動作、及び/又は、コンピューティングデバイス500の1以上の他のコンポーネントにより実行される動作を示し得る。
2210において、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550及び/又は650)は、確率的サンプリングを用いて、2Dスクリーン画像(例えば、スクリーン画像880)の平面の視点から、3Dモデルの全てのグラフィックスプリミティブ(例えば、3Dモデル280のプリミティブ282)の細かいラスタ化を実行して、その視点から可視である、3Dモデルのプリミティブ(例えば、可視プリミティブ882)の全てを識別する。
2220において、細かいラスタ化の各スクリーン画像サンプル(例えば、各スクリーン画像サンプル888)を解析して、スクリーン画像サンプルを、スクリーン画像サンプルにより、スクリーン画像の視点から可視プリミティブであると見出された、3Dモデルのプリミティブに対応付けるとともに、スクリーン画像サンプルを、スクリーン画像に対応するシェーディング画像のシェーディング画像画素(例えば、シェーディング画像680のシェーディング画像画素685)に対応付けるSPIDを生成する。上述したように、各SPIDはまた、当該SPIDがその関連付けられているスクリーン画像サンプルを対応付けているシェーディング画像画素における可視プリミティブの深度のインジケーションを含み得る。
2230において、各SPIDを解析して、各シェーディング画像画素について、当該シェーディング画像画素によりカバーされる、シェーディング画像の領域内で可視である可視プリミティブのリストを生成する。再度、シェーディング画像画素の全てについてのリストは、(各々を実装するためにどのデータ構造が使用されるかにかかわらず、)連結リストの配列等といった1つのより大きなデータ構造に結合され得る。また、各SPIDを解析して、いずれの可視プリミティブが各シェーディング画像画素内で見出される最深深度(例えば、最大距離)のインジケーションを生成して記憶することができる。2240において、各SPIDをさらに解析して、シェーディング画像画素内でシェーディングされたプリミティブについて色値が記憶されることになるアドレスであって、シェーディングが実行された後にスクリーン画像サンプルについての色値が割り当てられることになる元であるアドレス(1つのスクリーン画像サンプルにつき1つのアドレス)を導出して記憶することができる。
2250において、プロセッサコンポーネントは、2Dスクリーン画像の同じ平面の視点から、3Dモデルの全てのグラフィックスプリミティブの粗いラスタ化を実行するが、シェーディング画像を代用して、各シェーディング画像サンプル(例えば、シェーディング画像サンプル688)のパスに沿って存在する、3Dモデルのプリミティブの全てを識別する。上述したように、そのような各パスに沿った各プリミティブが識別されるとともに、シェーディングが粗いラスタ化とともに実行されることを可能にする、これらのプリミティブをシェーディングすることに関連する他の情報が、取得される。
2260において、各シェーディング画像画素内の可視プリミティブにより到達される最深深度のインジケーションを使用して、外側コンサバティブシェーディングの実行を制御することの一部として、シェーディング画像サンプルのパスに沿って識別されたプリミティブであって、且つ、シェーディング画像の各画素について可視でもあるプリミティブをより効率的に識別して、当該シェーディング画像画素内のそのような各プリミティブの色値を導出する。2270において、2260におけるシェーディング中に各シェーディング画像画素について導出された色を、スクリーン画像サンプルを用いてスクリーン画像画素に転換することの一部として、2240において導出されて記憶されたアドレスを使用して、色値を各スクリーン画像サンプルに割り当てることができる。
2280において、フィルタを使用して、モーションブラー効果及び/又は被写界深度効果を与えるように、各スクリーン画像画素の色値を、当該スクリーン画像画素に属するスクリーン画像サンプルの色値から導出する。上述したように、いくつかのフィルタは、色値が決定されるスクリーン画像画素に属するスクリーン画像サンプルの色値とともに、隣接画素に属するスクリーン画像サンプルの色値を含めることができる。
図11は、論理フロー2300の一実施形態を示している。論理フロー2300は、本明細書に記載の1以上の実施形態により実行される動作の一部又は全てを表し得る。より詳細には、論理フロー2300は、少なくとも制御ルーチン640を実行する際にプロセッサコンポーネント550及び/又は650により実行される動作、及び/又は、コンピューティングデバイス500の1以上の他のコンポーネントにより実行される動作を示し得る。
2310において、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550及び/又は650)は、確率的サンプリングを用いて、2Dスクリーン画像(例えば、スクリーン画像880)の平面の視点から、3Dモデルの全てのグラフィックスプリミティブ(例えば、3Dモデル280のプリミティブ282)の細かいラスタ化を実行して、その視点から可視である、3Dモデルのプリミティブ(例えば、可視プリミティブ882)の全てを識別する。
2320において、細かいラスタ化の各スクリーン画像サンプル(例えば、各スクリーン画像サンプル888)を解析して、スクリーン画像サンプルを、スクリーン画像サンプルにより、スクリーン画像の視点から可視プリミティブであると見出された、3Dモデルのプリミティブに対応付けるとともに、スクリーン画像サンプルを、スクリーン画像に対応するシェーディング画像のシェーディング画像画素(例えば、シェーディング画像680のシェーディング画像画素685)に対応付けるSPIDを生成する。上述したように、各SPIDはまた、当該SPIDがその関連付けられているスクリーン画像サンプルを対応付けているシェーディング画像画素における可視プリミティブの深度のインジケーションを含み得る。
2330において、モーションブラー効果及び/又は被写界深度効果を与えるように、SPIDの少なくともサブセットの間で、可視プリミティブの識別子を再配分することができる。上述したように、そのような再配分は、1つのスクリーン画像画素に属するスクリーン画像サンプルのみに関連付けられているSPIDの間で実行されることに制限されることもあるし、又は、複数の隣接スクリーン画像画素に属するスクリーン画像サンプルに関連付けられているSPIDの間で実行されることもある。
2340において、各SPIDを解析して、各シェーディング画像画素について、当該シェーディング画像画素によりカバーされる、シェーディング画像の領域内で可視である可視プリミティブのリストを生成する。再度、シェーディング画像画素の全てについてのリストは、(各々を実装するためにどのデータ構造が使用されるかにかかわらず、)連結リストの配列等といった1つのより大きなデータ構造に結合され得る。また、各SPIDを解析して、いずれの可視プリミティブが各シェーディング画像画素内で見出される最深深度(例えば、最大距離)のインジケーションを生成して記憶することができる。2350において、各SPIDをさらに解析して、シェーディング画像画素内でシェーディングされたプリミティブについて色値が記憶されることになるアドレスであって、シェーディングが実行された後にスクリーン画像サンプルについての色値が割り当てられることになる元であるアドレス(1つのスクリーン画像サンプルにつき1つのアドレス)を導出して記憶することができる。
2360において、プロセッサコンポーネントは、2Dスクリーン画像の同じ平面の視点から、3Dモデルの全てのグラフィックスプリミティブの粗いラスタ化を実行するが、シェーディング画像を代用して、各シェーディング画像サンプル(例えば、シェーディング画像サンプル688)のパスに沿って存在する、3Dモデルのプリミティブの全てを識別する。上述したように、そのような各パスに沿った各プリミティブが識別されるとともに、シェーディングが粗いラスタ化とともに実行されることを可能にする、これらのプリミティブをシェーディングすることに関連する他の情報が、取得される。
2370において、各シェーディング画像画素内の可視プリミティブにより到達される最深深度のインジケーションを使用して、外側コンサバティブシェーディングの実行を制御することの一部として、シェーディング画像サンプルのパスに沿って識別されたプリミティブであって、且つ、シェーディング画像の各画素について可視でもあるプリミティブをより効率的に識別して、当該シェーディング画像画素内のそのような各プリミティブの色値を導出する。2380において、2370におけるシェーディング中に各シェーディング画像画素について導出された色を、スクリーン画像サンプルを用いてスクリーン画像画素に転換することの一部として、2350において導出されて記憶されたアドレスを使用して、色値を各スクリーン画像サンプルに割り当てることができる。
2390において、フィルタを使用して、SPIDの生成中にモーションブラー効果及び/又は被写界深度効果を与えたことからの視覚的アーチファクトを低減させる。上述したように、いくつかのフィルタは、色値が決定されるスクリーン画像画素に属するスクリーン画像サンプルの色値とともに、隣接画素に属するスクリーン画像サンプルの色値を含めることができる。
図12は、前述した様々な実施形態を実装するのに適した例示的な処理アーキテクチャ3000の一実施形態を示している。より詳細には、処理アーキテクチャ3000(又はその変形形態)は、コンピューティングデバイス300、500、及び700のうちの1以上の一部として、且つ/又は、コントローラ600の一部として、実装され得る。処理アーキテクチャ3000のコンポーネントには、コンピューティングデバイス300、500、及び700、並びにコントローラ600の一部として先に示し説明したコンポーネントのうちの少なくとも一部の参照符号の最後の2つの数字に対応する最後の2つの数字を有する参照符号が付与されていることに留意されたい。これは、各々のコンポーネントを対応付ける助けとしてなされている。
処理アーキテクチャ3000は、1以上のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺デバイス、インタフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力/出力(I/O)コンポーネント、電源等を含むがこれらに限定されない、デジタル処理において一般的に使用される様々な要素を含む。本出願において使用されるとき、「システム」及び「コンポーネント」という用語は、デジタル処理が実行されるコンピューティングデバイスのエンティティであって、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、又は実行中のソフトウェアであるエンティティを指すことが意図されており、それらの例が、この図示される例示的な処理アーキテクチャにより提供されている。例えば、コンポーネントは、プロセッサコンポーネント上で実行されるプロセス、プロセッサコンポーネント自体、光記憶媒体及び/又は磁気記憶媒体を利用することができる記憶デバイス(例えば、ハードディスクドライブ、アレイ内の複数の記憶ドライブ等)、ソフトウェアオブジェクト、実行可能な一連の命令、実行のスレッド、プログラム、及び/又はコンピューティングデバイス全体(例えば、コンピュータ全体)であり得るが、これらに限定されるものではない。例えば、サーバ上で実行されるアプリケーション及びサーバの両方が、コンポーネントであり得る。1以上のコンポーネントは、プロセス及び/又は実行のスレッド内に存在することもあり、コンポーネントは、1つのコンピューティングデバイス上に局在することもあるし、且つ/又は、2以上のコンピューティングデバイスの間で分散されることもある。さらに、コンポーネントは、動作を連携させるために、様々なタイプの通信媒体を介して、互いに通信可能に結合され得る。この連携は、情報の単方向交換又は双方向交換を伴い得る。例えば、コンポーネントは、通信媒体を介して通信される信号の形態で、情報を通信することができる。情報は、1以上の信号回線に割り当てられる信号として実装され得る。(コマンドメッセージ、ステータスメッセージ、アドレスメッセージ、又はデータメッセージを含む)メッセージは、そのような信号のうちの1つであることもあるし、複数のそのような信号であることもあり、多様な接続及び/又はインタフェースのうちのいずれかを介して、シリアルに又は実質的にパラレルに、伝送され得る。
図示されるように、処理アーキテクチャ3000の実装において、コンピューティングデバイスは、少なくとも、プロセッサコンポーネント950、ストレージ960、他のデバイスへのインタフェース990、及び結合(coupling)959を含む。以下で説明するように、意図される使用及び/又は使用の条件を含め、処理アーキテクチャ3000を実装するコンピューティングデバイスの様々な態様に応じて、そのようなコンピューティングデバイスは、ディスプレイインタフェース985等を含むがこれに限定されるものではないさらなるコンポーネントをさらに含み得る。
結合959は、少なくともプロセッサコンポーネント950をストレージ960に通信可能に結合する、1以上のバス、ポイントツーポイントインターコネクト、トランシーバ、バッファ、クロスポイントスイッチ、及び/若しくは他の導体、並びに/又はロジックを含む。結合959は、プロセッサコンポーネント950を、インタフェース990、オーディオサブシステム970、及びディスプレイインタフェース985のうちの1以上に、(これらのコンポーネント及び/又は他のコンポーネントのうちのどれが存在するかに応じて)さらに結合し得る。プロセッサコンポーネント950が結合959を介してこのように結合されることにより、プロセッサコンポーネント950は、処理アーキテクチャ3000を実装する前述したコンピューティングデバイスのうちのどのコンピューティングデバイスに関しても、上記で詳細に説明したタスクのうちの様々なタスクを実行することができる。結合959は、信号が光学的及び/又は電気的に伝達される多様な技術のうちの任意の技術又はそのような技術の組合せを用いて実装することができる。さらに、結合959の少なくとも一部は、アクセラレーテッドグラフィックスポート(AGP)、CardBus、拡張インダストリスタンダードアーキテクチャ(E−ISA)、マイクロチャネルアーキテクチャ(MCA)、NuBus、周辺コンポーネント相互接続(拡張)(PCI−X)、PCIエクスプレス(PCI−E)、パーソナルコンピュータメモリカード国際協会(PCMCIA)バス、HyperTransport、QuickPath等を含むがこれらに限定されるものではない多種多様な業界標準のうちの任意の業界標準に準拠するタイミング及び/又はプロトコルを用いることができる。
前述したように、(プロセッサコンポーネント550、650、及び750に対応する)プロセッサコンポーネント950は、多種多様な技術のうちの任意の技術を用い、複数の方法のうちの任意の方法で物理的に組み合わせられる1以上のコアを用いて実装される多種多様な商用利用可能なプロセッサのうちの任意のプロセッサを含み得る。
前述したように、(ストレージ560、660、及び760に対応する)ストレージ960は、多種多様な技術のうちの任意の技術又はそのような技術の組合せに基づく1以上の別個の記憶デバイスから構成され得る。より詳細には、図示されるように、ストレージ960は、揮発性ストレージ961(例えば、1以上の形態のRAM技術に基づくソリッドステートストレージ)、不揮発性ストレージ962(例えば、コンテンツを保存するために電力の一定の供給を必要としないソリッドステートストレージ、強磁性ストレージ、又は他のストレージ)、及び着脱可能な媒体ストレージ963(例えば、コンピューティングデバイス間で情報を伝達することができる着脱可能なディスクストレージ又はソリッドステートメモリカードストレージ)のうちの1以上を含み得る。可能であれば複数の異なるタイプのストレージを含むストレージ960のこの図示は、1つのタイプの記憶デバイスが、プロセッサコンポーネント950によるデータのより迅速な操作を可能にする相対的に迅速な読み取り能力及び書き込み能力を提供する(が、おそらくは電力を定常的に必要とする「揮発性」技術を使用する)のに対し、別のタイプの記憶デバイスが、比較的高密度の不揮発性記憶を提供する(が、相対的に遅い読み取り能力及び書き込み能力を提供する可能性が高い)、2以上のタイプの記憶デバイスがコンピューティングデバイスにおいて一般的に使用されることが認められることによるものである。
異なる技術を用いる異なる記憶デバイスのしばしば異なる特性を所与として、そのような異なる記憶デバイスが、異なるインタフェースを介して異なる記憶デバイスに結合される異なるストレージコントローラを介してコンピューティングデバイスの他の部分に結合されることも一般的である。一例として、揮発性ストレージ961が存在しRAM技術に基づく場合、揮発性ストレージ961は、行及び列のアドレス指定を用いるであろう揮発性ストレージ961への適切なインタフェースを提供するストレージコントローラ965aを介して結合959に通信可能に結合され得、ストレージコントローラ965aは、揮発性ストレージ961に記憶される情報を保つのを支援するために、行リフレッシュ動作及び/又は他の維持タスクを実行することができる。別の例として、不揮発性ストレージ962が存在し、1以上の強磁性ディスクドライブ及び/又はソリッドステートディスクドライブを含む場合、不揮発性ストレージ962は、情報の且つ/又はシリンダ及びセクタのブロックのアドレス指定を用いるであろう不揮発性ストレージ962への適切なインタフェースを提供するストレージコントローラ965bを介して結合959に通信可能に結合され得る。さらに別の例として、着脱可能な媒体ストレージ963が存在し、マシン読み取り可能な記憶媒体969の1以上の部分を用いる1以上の光ディスクドライブ及び/又はソリッドステートディスクドライブを含む場合、着脱可能な媒体ストレージ963は、情報のブロックのアドレス指定を用いるであろう着脱可能な媒体ストレージ963への適切なインタフェースを提供するストレージコントローラ965cを介して結合959に通信可能に結合され得、ストレージコントローラ965cは、マシン読み取り可能な記憶媒体969のライフスパンを延ばす固有の方式で、読み取り操作、消去操作、及び書き込み操作を調整することができる。
揮発性ストレージ961及び不揮発性ストレージ962のうちの一方又は他方は、各々が基づく技術に応じて、プロセッサコンポーネント950により実行可能な一連の命令を含むルーチンが記憶され得るマシン読み取り可能な記憶媒体の形態の製品を含み得る。一例として、不揮発性ストレージ962が、強磁性ベースのディスクドライブ(例えば、いわゆる「ハードドライブ」)を含む場合、そのような各ディスクドライブは、典型的には、フロッピー(登録商標)ディスケット等の記憶媒体と同様に、一連の命令等の情報を記憶するために磁気反応性粒子のコーティングが様々なパターンで付着及び磁気配向される1以上の回転プラッタを用いる。別の例として、不揮発性ストレージ962は、コンパクトフラッシュ(登録商標)カードと同様に、一連の命令等の情報を記憶するためにソリッドステート記憶デバイスのバンクから構成され得る。再度、実行可能なルーチン及び/又はデータを記憶するために、異なる時間にコンピューティングデバイスにおいて異なるタイプの記憶デバイスを使用することが一般的である。
したがって、プロセッサコンポーネント950により実行される一連の命令を含むルーチンは、初期には、マシン読み取り可能な記憶媒体969に記憶され得、マシン読み取り可能な記憶媒体969の引き続きの存在を要さないより長期間の記憶のためにそのルーチンを不揮発性ストレージ962にコピーする際に、且つ/又は、そのルーチンが実行されるときにプロセッサコンポーネント950によるより迅速なアクセスを可能にする揮発性ストレージ961にそのルーチンをコピーする際に、着脱可能な媒体ストレージ963がその後に使用され得る。
前述したように、(インタフェース590又は790に対応し得る)インタフェース990は、コンピューティングデバイスを1以上の他のデバイスに通信可能に結合するために使用され得る多様な通信技術のうちの任意の通信技術に対応する、多様なシグナリング技術のうちの任意のシグナリング技術を用いることができる。再度、様々な形態の有線シグナリング及び無線シグナリングのうちの一方又は両方を使用して、プロセッサコンポーネント950が、おそらくはネットワーク(例えば、ネットワーク999)又はネットワークの相互接続されたセットを介して、入力/出力デバイス(例えば、図示される例示的なキーボード920又はプリンタ925)及び/又は他のコンピューティングデバイスとインタラクトすることを可能にし得る。いずれか1つのコンピューティングデバイスによりしばしばサポートされなければならない複数のタイプのシグナリング及び/又はプロトコルのしばしば非常に異なる性質が認められるため、インタフェース990は、複数の異なるインタフェースコントローラ995a、995b、及び995cを含むものとして図示されている。インタフェースコントローラ995aは、多様なタイプの有線デジタルシリアルインタフェース又は無線周波数無線インタフェースのうちの任意のインタフェースを使用して、図示されるキーボード920等のユーザ入力デバイスから、シリアル送信されたメッセージを受信することができる。インタフェースコントローラ995bは、多様なケーブリングベースの又は無線のシグナリング、タイミング、及び/又はプロトコルのうちの任意のものを使用して、図示されるネットワーク999(ネットワークは、1以上のリンク若しくはより小さなネットワークから構成されることもあるし、又はインターネットであることもある)を介して他のコンピューティングデバイスにアクセスすることができる。インタフェースコントローラ995cは、シリアル信号伝送又はパラレル信号伝送のいずれかの使用を可能にする多様な電気伝導性ケーブリングのうちの任意の電気伝導性ケーブリングを使用して、図示されるプリンタ925にデータを伝達することができる。インタフェース990の1以上のインタフェースコントローラを介して通信可能に結合され得るデバイスの他の例は、人の音をモニタリングして、そのような人が発生させ得る音声又は他の音を介してそのような人により伝達されたコマンド及び/又はデータを受け入れるマイクロフォン、リモートコントロール、スタイラスペン、カードリーダ、指紋リーダ、仮想現実インタラクショングローブ、グラフィカル入力タブレット、ジョイスティック、他のキーボード、網膜スキャナ、タッチスクリーンのタッチ入力コンポーネント、トラックボール、様々なセンサ、人の動きをモニタリングして、ジェスチャ及び/又は顔の表現を介してそのような人により伝達されたコマンド及び/又はデータを受け入れるカメラ又はカメラアレイ、レーザプリンタ、インクジェットプリンタ、機械式ロボット、ミリングマシン等を含むが、これらに限定されるものではない。
コンピューティングデバイスが、ディスプレイ(例えば、図示される例示的なディスプレイ980)に通信可能に接続される場合(又は、実際にはそのようなディスプレイを組み込んでいるかもしれない場合)、処理アーキテクチャ3000を実装するそのようなコンピューティングデバイスはまた、ディスプレイインタフェース985を含み得る。より一般化されたタイプのインタフェースが、ディスプレイに通信可能に結合するのに使用され得るが、ディスプレイ上に様々な形態のコンテンツを視覚的に表示する際にしばしば必要とされるいくらか特殊化されたさらなる処理、及び、いくらか特殊化された性質のケーブリングベースの使用されるインタフェースは、しばしば、異なるディスプレイインタフェースの提供を望ましいものにする。ディスプレイ980の通信可能な結合においてディスプレイインタフェース985により使用され得る有線シグナリング技術及び/又は無線シグナリング技術は、多様なアナログビデオインタフェース、デジタルビデオインタフェース(DVI)、DisplayPort等のうちの任意のものを含むがこれらに限定されるものではない多様な業界標準のうちの任意の業界標準に準拠するシグナリング及び/又はプロトコルを利用することができる。
図13は、システム4000の一実施形態を示している。様々な実施形態において、システム4000は、グラフィックスレンダリングシステム1000;コンピューティングデバイス300、500、及び700のうちの1以上;及び/又は、論理フロー2100及び2200のうちの1以上等の本明細書に記載の1以上の実施形態とともに使用するのに適したシステム又はアーキテクチャを表し得る。実施形態は、この点において限定されるものではない。
図示されるように、システム4000は、複数の要素を含み得る。1以上の要素は、設計制約又は性能制約の所与のセットに関して必要に応じて、1以上の回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール、又はこれらの任意の組合せを使用して実装することができる。図13は、一例として、所定のトポロジにおける限られた数の要素を示しているが、任意の適切なトポロジにおけるより多くの又はより少ない要素が、所与の実装に関して必要に応じて、システム4000において使用される得ることが理解できるであろう。実施形態は、このコンテキストにおいて限定されるものではない。
実施形態において、システム4000は、メディアシステムであり得るが、システム4000は、このコンテキストに限定されるものではない。例えば、システム4000は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、セルラ電話機、セルラ電話機/PDAの組合せ、テレビジョン、スマートデバイス(例えば、スマートフォン、スマートタブレット、又はスマートテレビジョン)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等に組み込まれ得る。
実施形態において、システム4000は、ディスプレイ4980に結合されるプラットフォーム4900aを含む。プラットフォーム4900aは、1以上のコンテンツサービスデバイス4900c若しくは1以上のコンテンツ配信デバイス4900d又は他の同様のコンテンツソース等のコンテンツデバイスから、コンテンツを受信することができる。1以上のナビゲーション特徴を含むナビゲーションコントローラ4920を使用して、例えば、プラットフォーム4900a及び/又はディスプレイ4980とインタラクトすることができる。これらのコンポーネントの各々が、以下でより詳細に説明される。
実施形態において、プラットフォーム4900aは、プロセッサコンポーネント4950、チップセット4955、メモリユニット4969、トランシーバ4995、ストレージ4962、アプリケーション4940、及び/又はグラフィックスサブシステム4985の任意の組合せを含み得る。チップセット4955は、プロセッサ回路4950、メモリユニット4969、トランシーバ4995、ストレージ4962、アプリケーション4940、及び/又はグラフィックスサブシステム4985の間で相互通信を提供することができる。例えば、チップセット4955は、ストレージ4962との相互通信を提供することができるストレージアダプタ(図示せず)を含み得る。
プロセッサコンポーネント4950は、任意のプロセッサ又はロジックデバイスを使用して実装することができ、プロセッサコンポーネント550、650、及び750のうちの1以上、並びに/又は図12のプロセッサコンポーネント950と同じであってもよいし類似するものであってもよい。
メモリユニット4969は、データを記憶することができる任意のマシン読み取り可能な媒体又はコンピュータ読み取り可能な媒体を使用して実装することができ、図12の記憶媒体969と同じであってもよいし類似するものであってもよい。
トランシーバ4995は、種々の適切な無線通信技術を使用して信号を送信及び受信することができる1以上の無線機を含み得、図12のトランシーバ995bと同じであってもよいし類似するものであってもよい。
ディスプレイ4980は、任意のテレビジョンタイプのモニタ又はディスプレイを含み得、ディスプレイ580及び780のうちの1以上、並びに/又は図12のディスプレイ980と同じであってもよいし類似するものであってもよい。
ストレージ4962は、不揮発性記憶デバイスとして実装することができ、図12の不揮発性ストレージ962と同じであってもよいし類似するものであってもよい。
グラフィックスサブシステム4985は、表示のために、静止画像又はビデオ等の画像の処理を実行することができる。グラフィックスサブシステム4985は、例えば、グラフィックス処理装置(GPU)又はビジュアル処理装置(VPU)であり得る。アナログインタフェース又はデジタルインタフェースを使用して、グラフィックスサブシステム4985とディスプレイ4980とを通信可能に結合することができる。例えば、このようなインタフェースは、高精細度マルチメディアインタフェース(HDMI(登録商標))、DisplayPort、ワイヤレスHDMI(登録商標)、及び/又はワイヤレスHD準拠技術のうちの任意のものであり得る。グラフィックスサブシステム4985は、プロセッサ回路4950又はチップセット4955に組み込まれることもある。グラフィックスサブシステム4985は、チップセット4955に通信可能に結合されるスタンドアロンカードであることもある。
本明細書に記載のグラフィックス処理技術及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャにおいて実装され得る。例えば、グラフィックス機能及び/又はビデオ機能は、チップセット内に統合され得る。代替的に、別個のグラフィックスプロセッサ及び/又はビデオプロセッサが使用されてもよい。さらに別の実施形態として、グラフィックス機能及び/又はビデオ機能は、マルチコアプロセッサを含む汎用プロセッサにより実装されてもよい。さらなる実施形態において、これらの機能は、コンシューマ電子デバイス内に実装されてもよい。
実施形態において、1以上のコンテンツサービスデバイス4900bは、任意の国内サービス、国際サービス、及び/又は独立サービスによりホストされ得、したがって、例えば、インターネットを介してプラットフォーム4900aにアクセス可能である。1以上のコンテンツサービスデバイス4900bは、プラットフォーム4900a及び/又はディスプレイ4980に結合され得る。プラットフォーム4900a及び/又は1以上のコンテンツサービスデバイス4900bは、ネットワーク4999との間でメディア情報を通信する(例えば、送信及び/又は受信する)ために、ネットワーク4999に結合され得る。1以上のコンテンツ配信デバイス4900cも、プラットフォーム4900a及び/又はディスプレイ4980に結合され得る。
実施形態において、1以上のコンテンツサービスデバイス4900bは、ケーブルテレビジョンボックス、パーソナルコンピュータ、ネットワーク、電話機、デジタル情報及び/又はコンテンツを配信することができるインターネット対応デバイス又は機器、及び、コンテンツプロバイダとプラットフォーム4900a及び/又はディスプレイ4980との間でネットワーク4999を介して又は直接的にコンテンツを単方向又は双方向に通信することができる任意の他の同様のデバイスを含み得る。コンテンツは、システム4000内のコンポーネントのうちの任意の1つのコンポーネントとコンテンツプロバイダとの間でネットワーク4999を介して単方向且つ/又は双方向に通信され得る。コンテンツの例は、例えば、ビデオ、音楽、医療情報、ゲーム情報等を含む任意のメディア情報を含み得る。
1以上のコンテンツサービスデバイス4900bは、メディア情報、デジタル情報、及び/又は他のコンテンツを含むケーブルテレビジョン番組等のコンテンツを受信する。コンテンツプロバイダの例は、任意のケーブルテレビジョンプロバイダ、衛星テレビジョンプロバイダ、ケーブルラジオプロバイダ、衛星ラジオプロバイダ、又はインターネットコンテンツプロバイダを含み得る。提供した例は、実施形態を限定するよう意図されるものではない。
実施形態において、プラットフォーム4900aは、1以上のナビゲーション特徴を有するナビゲーションコントローラ4920から、制御信号を受信することができる。ナビゲーションコントローラのナビゲーション特徴を使用して、例えば、ユーザインタフェース4880とインタラクトすることができる。実施形態において、ナビゲーションコントローラ4920は、ユーザが空間データ(例えば、連続的な多次元のデータ)をコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント(詳細にはヒューマンインタフェースデバイス)であり得るポインティングデバイスであり得る。グラフィカルユーザインタフェース(GUI)等の多くのシステム、テレビジョン、及びモニタは、ユーザが、身体のジェスチャを用いてコンピュータ又はテレビジョンを制御すること及び身体のジェスチャを用いてコンピュータ又はテレビジョンにデータを提供することを可能にする。
ナビゲーションコントローラ4920のナビゲーション特徴の動きは、ディスプレイ(例えば、ディスプレイ4980)上に表示されるポインタ、カーソル、フォーカスリング、又は他の視覚的インジケータの動きにより、ディスプレイ上でそのまま繰り返され得る。例えば、ソフトウェアアプリケーション4940の制御の下、ナビゲーションコントローラ4920上に配置されたナビゲーション特徴は、ユーザインタフェース4880上に表示される仮想ナビゲーション特徴にマッピングされ得る。実施形態において、ナビゲーションコントローラ4920は、別個のコンポーネントではなく、プラットフォーム4900a及び/又はディスプレイ4980に統合されることもある。しかしながら、実施形態は、図示されるコンテキストにおける要素又は本明細書に記載の要素に限定されるものではない。
実施形態において、ドライバ(図示せず)は、例えば、有効にされたときに初期起動後のボタンのタッチによるテレビジョンのように、ユーザが、プラットフォーム4900aを瞬時的にオン及びオフすることを可能にする技術を含み得る。プログラムロジックは、プラットフォーム4900aが、プラットフォームが「オフ」にされるときに、メディアアダプタ、又は、他の1以上のコンテンツサービスデバイス4900b若しくは1以上のコンテンツ配信デバイス4900cにコンテンツをストリーミングすることを可能にし得る。さらに、チップセット4955は、例えば、5.1サラウンドサウンドオーディオ及び/又は高精細7.1サラウンドサウンドオーディオのためのハードウェアサポート及び/又はソフトウェアサポートを含み得る。ドライバは、統合されたグラフィックスプラットフォームのためのグラフィックスドライバを含み得る。実施形態において、グラフィックスドライバは、周辺コンポーネント相互接続(PCI)エクスプレスグラフィックスカードを含み得る。
様々な実施形態において、システム4000内に図示されるコンポーネントのうちの任意の1以上のコンポーネントが統合され得る。例えば、プラットフォーム4900a及び1以上のコンテンツサービスデバイス4900bが統合されることもあるし、プラットフォーム4900a及び1以上のコンテンツ配信スデバイス4900cが統合されることもあるし、プラットフォーム4900a、1以上のコンテンツサービスデバイス4900b、及び1以上のコンテンツ配信デバイス4900cが統合されることもある。様々な実施形態において、プラットフォーム4900a及びディスプレイ4980が、統合されたユニットであることもある。例えば、ディスプレイ4980及び1以上のコンテンツサービスデバイス4900bが統合されることもあるし、ディスプレイ4980及び1以上のコンテンツ配信デバイス4900cが統合されることもある。これらの例は、実施形態を限定するよう意図されるものではない。
様々な実施形態において、システム4000は、無線システム、有線システム、又はこれらの組合せとして実装することができる。無線システムとして実装される場合、システム4000は、1以上のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、制御ロジック等の、無線共用媒体を介して通信するのに適したコンポーネント及びインタフェースを含み得る。無線共用媒体の例は、RFスペクトル等といった無線スペクトルの一部を含み得る。有線システムとして実装される場合、システム4000は、I/Oアダプタ、I/Oアダプタを対応する有線通信媒体に接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等といった、有線通信媒体を介して通信するのに適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例は、ワイヤ、ケーブル、メタルリード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、ファイバオプティックス等を含み得る。
プラットフォーム4900aは、情報を通信するための1以上の論理チャネル又は物理チャネルを確立することができる。この情報は、メディア情報及び制御情報を含み得る。メディア情報は、ユーザのために意図されるコンテンツを表す任意のデータを指し得る。コンテンツの例は、例えば、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(「email」)メッセージ、音声メールメッセージ、英数字記号、グラフィックス、画像、ビデオ、テキスト等を含み得る。音声会話からのデータは、例えば、発話情報、無音期間、背景雑音、快適雑音、トーン等であり得る。制御情報は、自動化システムのために意図されるコマンド、命令、又は制御語を表す任意のデータを指し得る。例えば、制御情報を使用して、システムを介してメディア情報をルーティングすることができる、又は、予め定められた方式でメディア情報を処理するようにノードに命令することができる。しかしながら、実施形態は、図13に示されるコンテキストにおける要素又は説明した要素に限定されるものではない。
上述したように、システム4000は、可変の物理的スタイル又はフォームファクタで具現化され得る。図14は、システム4000を具現化することができるスモールフォームファクタデバイス5000の実施形態を示している。実施形態において、例えば、デバイス5000は、無線能力を有するモバイルコンピューティングデバイスとして実装することができる。モバイルコンピューティングデバイスは、例えば、処理システムと、1以上のバッテリ等のモバイル電源と、を有する任意のデバイスを指し得る。
上述したように、モバイルコンピューティングデバイスの例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、セルラ電話機、セルラ電話機/PDAの組合せ、テレビジョン、スマートデバイス(例えば、スマートフォン、スマートタブレット、又はスマートテレビジョン)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等を含み得る。
モバイルコンピューティングデバイスの例はまた、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シューコンピュータ、クロージングコンピュータ、及び他のウェアラブルコンピュータ等の、人により装着されるよう構成されるコンピュータを含み得る。実施形態において、例えば、モバイルコンピューティングデバイスは、コンピュータアプリケーションに加えて、音声通信及び/又はデータ通信を実行することができるスマートフォンとして実装することができる。いくつかの実施形態が、一例としてのスマートフォンとして実装されるモバイルコンピューティングデバイスを使用するものとして説明され得るが、他の実施形態は、他の無線モバイルコンピューティングデバイスを使用して実装されてもよいことが理解できるであろう。実施形態は、このコンテキストにおいて限定されるものではない。
図14に示されるように、デバイス5000は、ディスプレイ5980、ナビゲーションコントローラ5920a、ユーザインタフェース5880、ハウジング5905、I/Oデバイス5920b、及びアンテナ5998を含み得る。ディスプレイ5980は、モバイルコンピューティングデバイスに適切な情報を表示するための任意の適切なディスプレイユニットを含み得、図13のディスプレイ4980と同じであってもよいし類似するものであってもよい。ナビゲーションコントローラ5920aは、ユーザインタフェース5880とインタラクトするために使用することができる1以上のナビゲーション特徴を含み得、図13のナビゲーションコントローラ4920と同じであってもよいし類似するものであってもよい。I/Oデバイス5920bは、モバイルコンピューティングデバイスに情報を入力するための任意の適切なI/Oデバイスを含み得る。I/Oデバイス5920bの例は、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス及びソフトウェア等を含み得る。情報はまた、マイクロフォンを介してデバイス5000に入力され得る。そのような情報は、音声認識デバイスによりデジタル化され得る。実施形態は、このコンテキストにおいて限定されるものではない。
より一般的に、本明細書に記載し図示したコンピューティングデバイスの様々な要素は、様々なハードウェア要素、ソフトウェア要素、又はこれらの組合せを含み得る。ハードウェア要素の例は、デバイス、ロジックデバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサコンポーネント、回路素子(例えば、トランジスタ、レジスタ、キャパシタ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらの任意の組合せを含み得る。しかしながら、実施形態が、ハードウェア要素及び/又はソフトウェア要素を使用して実装されるかの決定は、所与の実装に関して必要に応じて、所望の計算速度、電力レベル、熱耐性、処理サイクルバジェット、入力データ速度、出力データ速度、メモリリソース、データバス速度、及び他の設計制約又は性能制約等の任意の数のファクタに応じて変わり得る。
いくつかの実施形態が、「一実施形態」又は「1つの実施形態」という表現、及びこれらの派生形の表現を使用して説明され得る。これらの用語は、その実施形態に関連して説明される特定の特徴、構造、又は特性が、少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な箇所における「一実施形態において」という語句の出現は、必ずしも全て同じ実施形態を指しているわけではない。さらに、いくつかの実施形態が、「結合された、結合されている」及び「接続された、接続されている」という表現、及びこれらの派生形の表現を使用して説明され得る。これらの用語は、互いに対する同義語として必ずしも意図されているわけではない。例えば、2以上の要素が、互いとの直接的な物理的又は電気的な接触状態にあることを示すために、いくつかの実施形態が、「結合された、結合されている」及び/又は「接続された、接続されている」という用語を使用して説明され得る。しかしながら、「結合された、結合されている」という用語はまた、2以上の要素が、互いとの直接的な接触状態にはないが、それでもなお互いと協働又はインタラクトすることを意味することもある。さらに、異なる実施形態からの態様又は要素が組み合されることもある。
読者が技術的な開示内容の本質を迅速に確認できるようにする、本開示の要約が提供されていることを強調しておく。請求項の範囲又は意味を解釈又は限定するためには使用されないという理解の下で、要約は提出されている。さらに、上記の詳細な説明において、様々な特徴が、本開示を簡素化するために、単一の実施形態に一緒にグループ化されていることが確認できよう。このような方式の開示は、特許請求される実施形態が、各請求項において明示的に記載されるものよりも多くの特徴を必要とするという意図を示すものとして解釈されるべきではない。そうではなく、請求項が示すように、創造的な主題は、単一の開示される実施形態の全ての特徴よりも少ない特徴を含む。したがって、請求項は、詳細な説明に組み込まれ、各請求項は、それ自身、別々の実施形態として独立している。請求項において、「含む、備える、有する(including)」及び「ここにおいて(in which)」という用語は、「含む、備える、有する(comprising)」及び「ここにおいて(wherein)」というそれぞれの用語の分かりやすい英語の同等な表現として使用される。さらに、「第1の」、「第2の」、「第3の」等といった用語は、単にラベルとして使用されているに過ぎず、それらの用語の対象に数値的な要件を課すよう意図されるものではない。
上述したものは、開示したアーキテクチャの例を含む。もちろん、コンポーネント及び/又は方法の全ての考えられる組合せを説明することは不可能であるが、当業者であれば、多くのさらなる組合せ及び置換が可能であることが認識できよう。したがって、新規なアーキテクチャは、請求項の主旨及び範囲に属する全てのそのような変化形態、変更形態、及び変形形態を包含することが意図されている。次いで、詳細な開示は、さらなる実施形態に関連する例を提供することに移る。以下に提供される例は、限定的であるよう意図されるものではない。
例1において、3次元(3D)モデルデータから2次元(2D)画像をレンダリングするデバイスは、スクリーン画像の1つのスクリーン画像画素につき複数のスクリーン画像サンプルを使用して、3Dモデルの細かいラスタ化を実行して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別する細かいラスタ化コンポーネントと、スクリーン画像に対応するシェーディング画像の1つのシェーディング画像画素につき1つのシェーディング画像サンプルを使用して、スクリーン画像の視点から3Dモデルの粗いラスタ化を実行して、シェーディング画像画素のパスに沿った少なくとも1つのプリミティブを識別する粗いラスタ化コンポーネントと、シェーディング画像画素内で可視であるとして、第1のスクリーン画像画素のスクリーン画像サンプルにより識別されたプリミティブであって、且つ、シェーディング画像画素に関連付けられているシェーディング画像サンプルのパスに沿ったものとして識別されたプリミティブをシェーディングして、第1の色値を導出するシェーディングコンポーネントと、を含む。
例1の主題を含む例2において、デバイスは、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てる転換コンポーネントと、第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するサンプル平均化コンポーネントであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、サンプル平均化コンポーネントと、を含んでもよい。
例1〜2のうちのいずれかの主題を含む例3において、細かいラスタ化コンポーネントは、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成してもよく、複数のSPIDの各SPIDは、複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける。
例1〜3のうちのいずれかの主題を含む例4において、複数のSPIDの各SPIDは、可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例1〜4のうちのいずれかの主題を含む例5において、細かいラスタ化コンポーネントは、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分してもよい。
例1〜5のうちのいずれかの主題を含む例6において、デバイスは、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するシェーディング制約コンポーネントであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、シェーディング制約コンポーネントを含んでもよい。
例1〜6のうちのいずれかの主題を含む例7において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例1〜7のうちのいずれかの主題を含む例8において、シェーディングコンポーネントは、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定してもよい。
例1〜8のうちのいずれかの主題を含む例9において、シェーディング制約コンポーネントは、複数のSPIDから、複数のシェーディング画像画素の各シェーディング画像画素内で可視である、可視プリミティブのセットのうちのいずれの可視プリミティブにより到達される最大深度を決定してもよい。
例1〜9のうちのいずれかの主題を含む例10において、シェーディングコンポーネントは、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定してもよい。
例1〜10のうちのいずれかの主題を含む例11において、デバイスは、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるフィルタリングコンポーネントを含んでもよい。
例1〜11のうちのいずれかの主題を含む例12において、細かいラスタ化コンポーネントは、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用してもよい。
例1〜12のうちのいずれかの主題を含む例13において、デバイスは、スクリーン画像を提示するディスプレイを含んでもよい。
例1〜13のうちのいずれかの主題を含む例14において、デバイスは、スクリーン画像を表すスクリーン画像データを、別のデバイスに送信するためのインタフェースを含んでもよい。
例1〜14のうちのいずれかの主題を含む例15において、細かいラスタ化コンポーネントは、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定してもよい。
例16において、3次元(3D)モデルデータから2次元(2D)画像をレンダリングするデバイスは、スクリーン画像に対応するシェーディング画像のシェーディング画像画素内で可視であるプリミティブをシェーディングして、シェーディング画像画素の第1の色値を決定するシェーディングコンポーネントと、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てる転換コンポーネントと、スクリーン画像の第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するサンプル平均化コンポーネントであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、サンプル平均化コンポーネントと、を含む。
例16の主題を含む例17において、デバイスは、複数のスクリーン画像サンプルを使用して、3Dモデルをラスタ化して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別し、複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成する細かいラスタ化コンポーネントであって、複数のSPIDの各SPIDは、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける、細かいラスタ化コンポーネントを含んでもよい。
例16〜17のうちのいずれかの主題を含む例18において、複数のSPIDの各SPIDは、記可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例16〜18のうちのいずれかの主題を含む例19において、細かいラスタ化コンポーネントは、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分してもよい。
例16〜19のうちのいずれかの主題を含む例20において、デバイスは、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するシェーディング制約コンポーネントであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、シェーディング制約コンポーネントを含んでもよい。
例16〜20のうちのいずれかの主題を含む例21において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例16〜21のうちのいずれかの主題を含む例22において、デバイスは、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別する粗いシェーディングコンポーネントを含んでもよく、シェーディングコンポーネントは、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定する。
例16〜22のうちのいずれかの主題を含む例23において、シェーディング制約コンポーネントは、複数のSPIDから、複数のシェーディング画像画素の各シェーディング画像画素内で可視である、可視プリミティブのセットのうちのいずれの可視プリミティブにより到達される最大深度を決定してもよい。
例16〜23のうちのいずれかの主題を含む例24において、デバイスは、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別する粗いシェーディングコンポーネントを含んでもよく、シェーディングコンポーネントは、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定する。
例16〜24のうちのいずれかの主題を含む例25において、デバイスは、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるフィルタリングコンポーネントを含んでもよい。
例16〜25のうちのいずれかの主題を含む例26において、細かいラスタ化コンポーネントは、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用してもよい。
例16〜26のうちのいずれかの主題を含む例27において、デバイスは、スクリーン画像を提示するディスプレイを含んでもよく、細かいラスタ化コンポーネントは、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定する。
例16〜27のうちのいずれかの主題を含む例28において、デバイスは、スクリーン画像を提示するディスプレイを含んでもよい。
例16〜28のうちのいずれかの主題を含む例29において、デバイスは、スクリーン画像を表すスクリーン画像データを、別のデバイスに送信するためのインタフェースを含んでもよい。
例16〜29のうちのいずれかの主題を含む例30において、デバイスは、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定する細かいラスタ化コンポーネントを含んでもよい。
例31において、3次元(3D)モデルデータから2次元(2D)画像をレンダリングするための、コンピュータにより実施される方法は、スクリーン画像の1つのスクリーン画像画素につき複数のスクリーン画像サンプルを使用して、3Dモデルの細かいラスタ化を実行して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別するステップと、スクリーン画像に対応するシェーディング画像の1つのシェーディング画像画素につき1つのシェーディング画像サンプルを使用して、スクリーン画像の視点から3Dモデルの粗いラスタ化を実行して、シェーディング画像画素のパスに沿った少なくとも1つのプリミティブを識別するステップと、シェーディング画像画素内で可視であるとして、第1のスクリーン画像画素のスクリーン画像サンプルにより識別されたプリミティブであって、且つ、シェーディング画像画素に関連付けられているシェーディング画像サンプルのパスに沿ったものとして識別されたプリミティブをシェーディングして、第1の色値を導出するステップと、を含む。
例31の主題を含む例32において、方法は、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てるステップと、第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するステップであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、ステップと、を含んでもよい。
例31〜32のうちのいずれかの主題を含む例33において、方法は、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成するステップであって、複数のSPIDの各SPIDは、複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける、ステップを含んでもよい。
例31〜33のうちのいずれかの主題を含む例34において、複数のSPIDの各SPIDは、可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例31〜34のうちのいずれかの主題を含む例35において、方法は、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分するステップを含んでもよい。
例31〜35のうちのいずれかの主題を含む例36において、方法は、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するステップであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、ステップを含んでもよい。
例31〜36のうちのいずれかの主題を含む例37において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例31〜37のうちのいずれかの主題を含む例38において、方法は、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップを含んでもよい。
例31〜38のうちのいずれかの主題を含む例39において、方法は、複数のSPIDから、複数のシェーディング画像画素の各シェーディング画像画素内で可視である、可視プリミティブのセットのうちのいずれの可視プリミティブにより到達される最大深度を決定するステップを含んでもよい。
例31〜39のうちのいずれかの主題を含む例40において、方法は、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップを含んでもよい。
例31〜40のうちのいずれかの主題を含む例41において、方法は、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるステップを含んでもよい。
例31〜41のうちのいずれかの主題を含む例42において、方法は、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用するステップを含んでもよい。
例31〜42のうちのいずれかの主題を含む例43において、方法は、ディスプレイ上にスクリーン画像を提示するステップを含んでもよい。
例31〜43のうちのいずれかの主題を含む例44において、方法は、スクリーン画像を表すスクリーン画像データを、別のデバイスに送信するステップを含んでもよい。
例31〜44のうちのいずれかの主題を含む例45において、方法は、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定するステップを含んでもよい。
例46において、3次元(3D)モデルデータから2次元(2D)画像をレンダリングするための、コンピュータにより実施される方法は、スクリーン画像に対応するシェーディング画像のシェーディング画像画素内で可視であるプリミティブをシェーディングして、シェーディング画像画素の第1の色値を決定するステップと、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てるステップと、スクリーン画像の第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するステップであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、ステップと、を含む。
例46の主題を含む例47において、方法は、複数のスクリーン画像サンプルを使用して、3Dモデルをラスタ化して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別し、複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成するステップであって、複数のSPIDの各SPIDは、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける、ステップを含んでもよい。
例46〜47のうちのいずれかの主題を含む例48において、複数のSPIDの各SPIDは、記可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例46〜48のうちのいずれかの主題を含む例49において、方法は、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分するステップを含んでもよい。
例46〜49のうちのいずれかの主題を含む例50において、方法は、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するステップであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、ステップを含んでもよい。
例46〜50のうちのいずれかの主題を含む例51において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例46〜51のうちのいずれかの主題を含む例52において、方法は、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別するステップと、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップと、を含んでもよい。
例46〜52のうちのいずれかの主題を含む例53において、方法は、複数のSPIDから、複数のシェーディング画像画素の各シェーディング画像画素内で可視である、可視プリミティブのセットのうちのいずれの可視プリミティブにより到達される最大深度を決定するステップを含んでもよい。
例46〜53のうちのいずれかの主題を含む例54において、方法は、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別するステップと、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップと、を含んでもよい。
例46〜54のうちのいずれかの主題を含む例55において、方法は、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるステップを含んでもよい。
例46〜55のうちのいずれかの主題を含む例56において、方法は、複数のスクリーン画像サンプルを使用して、3Dモデルをラスタ化するために、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用するステップを含んでもよい。
例46〜56のうちのいずれかの主題を含む例57において、方法は、ディスプレイ上にスクリーン画像を提示するステップを含んでもよい。
例46〜57のうちのいずれかの主題を含む例58において、方法は、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定するステップを含んでもよい。
例46〜58のうちのいずれかの主題を含む例59において、方法は、スクリーン画像を表すスクリーン画像データを、別のデバイスに送信するステップを含んでもよい。
例46〜59のうちのいずれかの主題を含む例60において、方法は、スクリーン画像の画素解像度を、別のデバイスのディスプレイの画素解像度に設定するステップを含んでもよい。
例61において、少なくとも1つのマシン読み取り可能な記憶媒体は、命令を含み、命令がコンピューティングデバイスにより実行されたときに、命令は、コンピューティングデバイスに、スクリーン画像の1つのスクリーン画像画素につき複数のスクリーン画像サンプルを使用して、3Dモデルの細かいラスタ化を実行して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別するステップと、スクリーン画像に対応するシェーディング画像の1つのシェーディング画像画素につき1つのシェーディング画像サンプルを使用して、スクリーン画像の視点から3Dモデルの粗いラスタ化を実行して、シェーディング画像画素のパスに沿った少なくとも1つのプリミティブを識別するステップと、シェーディング画像画素内で可視であるとして、第1のスクリーン画像画素のスクリーン画像サンプルにより識別されたプリミティブであって、且つ、シェーディング画像画素に関連付けられているシェーディング画像サンプルのパスに沿ったものとして識別されたプリミティブをシェーディングして、第1の色値を導出するステップと、を実行させる。
例61の主題を含む例62において、命令は、コンピューティングデバイスに、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てるステップと、第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するステップであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、ステップと、を実行させてもよい。
例61〜62のうちのいずれかの主題を含む例63において、命令は、コンピューティングデバイスに、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成するステップであって、複数のSPIDの各SPIDは、複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける、ステップを実行させてもよい。
例61〜63のうちのいずれかの主題を含む例64において、複数のSPIDの各SPIDは、可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例61〜64のうちのいずれかの主題を含む例65において、命令は、コンピューティングデバイスに、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分するステップを実行させてもよい。
例61〜65のうちのいずれかの主題を含む例66において、命令は、コンピューティングデバイスに、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するステップであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、ステップを実行させてもよい。
例61〜66のうちのいずれかの主題を含む例67において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例61〜67のうちのいずれかの主題を含む例68において、命令は、コンピューティングデバイスに、
例61〜68のうちのいずれかの主題を含む例69において、命令は、コンピューティングデバイスに、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップを実行させてもよい。
例61〜69のうちのいずれかの主題を含む例70において、命令は、コンピューティングデバイスに、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップを実行させてもよい。
例61〜70のうちのいずれかの主題を含む例71において、命令は、コンピューティングデバイスに、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるステップを実行させてもよい。
例61〜71のうちのいずれかの主題を含む例72において、命令は、コンピューティングデバイスに、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用するステップを実行させてもよい。
例61〜72のうちのいずれかの主題を含む例73において、命令は、コンピューティングデバイスに、ディスプレイ上にスクリーン画像を提示するステップを実行させてもよい。
例61〜73のうちのいずれかの主題を含む例74において、命令は、コンピューティングデバイスに、スクリーン画像を表すスクリーン画像データを、別のデバイスに送信するステップを実行させてもよい。
例61〜74のうちのいずれかの主題を含む例75において、命令は、コンピューティングデバイスに、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定するステップを実行させてもよい。
例76において、少なくとも1つのマシン読み取り可能な記憶媒体は、命令を含み、命令がコンピューティングデバイスにより実行されたときに、命令は、コンピューティングデバイスに、スクリーン画像に対応するシェーディング画像のシェーディング画像画素内で可視であるプリミティブをシェーディングして、シェーディング画像画素の第1の色値を決定するステップと、シェーディング画像画素に属する、3Dモデルの第1のセットのスクリーン画像サンプルの各スクリーン画像サンプルに、第1の色値を割り当てるステップと、スクリーン画像の第1のスクリーン画像画素の第2の色値を決定するために、第1のスクリーン画像画素に属する、3Dモデルの第2のセットのスクリーン画像サンプルの色値を平均化するステップであって、第1のスクリーン画像画素は、シェーディング画像画素に少なくとも部分的に一致し、第2のセットのスクリーン画像サンプルは、第1のセットのスクリーン画像サンプルとは異なり、第1のセットのスクリーン画像サンプルと、少なくとも1つのスクリーン画像サンプルを共有する、ステップと、を実行させる。
例76の主題を含む例77において、命令は、コンピューティングデバイスに、複数のスクリーン画像サンプルを使用して、3Dモデルをラスタ化して、スクリーン画像の視点から可視である、3Dモデルの可視プリミティブのセットを識別し、複数のスクリーン画像サンプルを、シェーディング画像の複数のシェーディング画像画素に対応付ける複数のシェーディング点識別子(SPID)を生成するステップであって、複数のSPIDの各SPIDは、第1のセットのスクリーン画像サンプル及び第2のセットのスクリーン画像サンプルを含む複数のスクリーン画像サンプルのうちのスクリーン画像サンプルに関連付けられ、各SPIDは、可視プリミティブのセットのうちの可視プリミティブを、複数のシェーディング画像画素のうちのシェーディング画像画素に対応付ける、ステップを実行させてもよい。
例76〜77のうちのいずれかの主題を含む例78において、複数のSPIDの各SPIDは、記可視プリミティブのセットのうちの可視プリミティブに割り当てられる識別子と、SPIDに関連付けられているスクリーン画像サンプルが属する、複数のシェーディング画像画素のうちのシェーディング画像画素の座標と、座標に関連付けられているシェーディング画像画素内の可視プリミティブの深度のインジケーションと、を含んでもよい。
例76〜78のうちのいずれかの主題を含む例79において、命令は、コンピューティングデバイスに、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを与えるように、複数のSPIDのうちのSPIDの少なくともサブセットの間で識別子を再配分するステップを実行させてもよい。
例76〜79のうちのいずれかの主題を含む例80において、命令は、コンピューティングデバイスに、複数のSPIDから、可視プリミティブのセットのうちの可視プリミティブのリストのセットを生成するステップであって、リストのセットの各リストは、複数のシェーディング画像画素のうちのシェーディング画像画素に関連付けられ、各リストは、リストに関連付けられているシェーディング画像画素内で可視である、可視プリミティブのセットのうちの少なくとも1つの可視プリミティブの少なくとも1つの識別子と、シェーディング画像画素内の少なくとも1つの可視プリミティブの深度のインジケーションと、を含む、ステップを実行させてもよい。
例76〜80のうちのいずれかの主題を含む例81において、リストのセットの各リストは、連結リストを含んでもよく、リストのセットは、リストの配列を含む。
例76〜81のうちのいずれかの主題を含む例82において、命令は、コンピューティングデバイスに、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別するステップと、少なくとも1つのプリミティブの識別子を、1つのシェーディング画像画素に関連付けられている、リストのセットのうちのリストの少なくとも1つの識別子と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップと、を実行させてもよい。
例76〜82のうちのいずれかの主題を含む例83において、命令は、コンピューティングデバイスに、複数のSPIDから、複数のシェーディング画像画素の各シェーディング画像画素内で可視である、可視プリミティブのセットのうちのいずれの可視プリミティブにより到達される最大深度を決定するステップを実行させてもよい。
例76〜83のうちのいずれかの主題を含む例84において、命令は、コンピューティングデバイスに、複数のシェーディング画像画素のうちの1つのシェーディング画像画素に関連付けられている1つのシェーディング画像サンプルを使用して、3Dモデルに至る、1つのシェーディング画像サンプルのパスに沿って存在する、3Dモデルの少なくとも1つのプリミティブを識別するステップと、少なくとも1つのプリミティブの深度を、1つのシェーディング画像画素内で可視であるいずれの可視プリミティブにより到達される最大深度と比較して、1つのシェーディング画像画素内の少なくとも1つのプリミティブをシェーディングするかどうかを判定するステップと、を実行させてもよい。
例76〜84のうちのいずれかの主題を含む例85において、命令は、コンピューティングデバイスに、モーションブラー効果及び被写界深度効果のうちの少なくとも1つを、スクリーン画像内に描写される少なくとも1つのオブジェクトに与えるように、第2の色値を決定する際に、スクリーン画像内の第1のスクリーン画像画素に隣接する第2のスクリーン画像画素に関連付けられている色値を含めるステップを実行させてもよい。
例76〜85のうちのいずれかの主題を含む例86において、複数のスクリーン画像サンプルを使用して、3Dモデルをラスタ化するために、命令は、コンピューティングデバイスに、スーパーサンプリング、マルチサンプリング、確率的サンプリング、時間ディメンジョンにわたる確率的サンプリング、レンズディメンジョンにわたる確率的サンプリング、及びレイトレーシングのうちの1以上を使用するステップを実行させてもよい。
例76〜86のうちのいずれかの主題を含む例87において、命令は、コンピューティングデバイスに、コンピューティングデバイスのディスプレイ上にスクリーン画像を提示するステップを実行させてもよい。
例76〜87のうちのいずれかの主題を含む例88において、命令は、コンピューティングデバイスに、スクリーン画像の画素解像度を、ディスプレイの画素解像度に設定するステップを実行させてもよい。
例76〜88のうちのいずれかの主題を含む例89において、命令は、コンピューティングデバイスに、スクリーン画像を表すスクリーン画像データを、コンピューティングデバイスに結合されているネットワークを介して別のデバイスに送信するステップを実行させてもよい。
例76〜89のうちのいずれかの主題を含む例90において、命令は、コンピューティングデバイスに、スクリーン画像の画素解像度を、別のデバイスのディスプレイの画素解像度に設定するステップを実行させてもよい。