様々な実施形態は、概ね、スクリーン画像の複数のスクリーンピクセルより粗い複数のシェーディングピクセルによるシェーディングを通じて、2Dスクリーン画像を3Dモデルからレンダリングするときに複数の可視プリミティブをシェーディングする処理要求を減らしつつ、視覚的アーティファクトも最小化する複数の技術を対象にする。ラスタライズの後に、個別の複数のシェーディングピクセルによりカバーされる領域と複数の可視プリミティブとの交点を表す複数のポリゴンを画定するべく、複数の可視プリミティブのクリッピングは、シェーディングピクセルの各々の内側で実行される。複数の可視プリミティブの頂点におけるアトリビュートは、複数のポリゴンの頂点に対して補間され、次に、ピクセルシェーディングは、複数のポリゴンの頂点におけるアトリビュートを用いて実行され、複数のポリゴンの頂点における複数の色を派生させる。次に、複数のポリゴンの頂点における複数の色は、複数のスクリーンピクセルの色を派生させるべく補間される。
いくつかの実施形態において、ラスタライズは、スクリーン画像の各スクリーン画像ピクセルに割り当てられた1つのサンプル(例えば、各スクリーン画像ピクセルの中央の1つのサンプル)のみを使用して、複数のスクリーン画像ピクセルの位置でスクリーン画像の視点から可視の3Dモデルのプリミティブの複数の部分を識別し得る。複数の他の実施形態において、ラスタライズは、スーパーサンプリング、確率的サンプリング、マルチサンプリング等を含む、可視の3Dモデルの複数のプリミティブの複数の部分をそのように識別するべく、スクリーン画像の各スクリーン画像ピクセルに割り当てられた複数のスクリーン画像サンプルが存在する様々な複数のタイプのサンプリングのいずれかを使用し得る。ラスタライズの前に、頂点シェーディングは、複数のプリミティブの各々の複数の頂点の各々に対する複数のアトリビュートを派生させるように実行され得る。当業者には既知であるように、3Dモデルの複数のオブジェクトが生成される態様に応じて、プリミティブは全て、三角形であってもよく、または異なる複数のタイプのポリゴンの組み合わせであってもよい。しかし、各プリミティブの形状に関係なく、各プリミティブの全ての部分は、単一平面内に存在しなければならない。複数の相対位置を含むプリミティブの複数の頂点のアトリビュートは、当該プリミティブおよびそれが存在する平面を画定し得る。
複数のシェーディングピクセルが複数のスクリーンピクセルより粗く、従って各シェーディングピクセルが各スクリーンピクセルより大きな領域をカバーする複数のシェーディングピクセルのグリッドは、スクリーン画像の複数のスクリーンピクセルのグリッドと一致し得る。いくつかの実施形態において、複数のシェーディングピクセルは、それらの境界がスクリーンピクセルの境界と一致し、従って各シェーディングピクセルがスクリーンピクセルの整数倍に対応する(例えば、各シェーディングピクセルは、複数のスクリーンピクセルうちの4つに対応し得る)ように画定され得る。ラスタライズの後に、クリッピングは、各シェーディングピクセルの領域と、当該シェーディングピクセル内で可視のプリミティブの一部によりカバーされる各シェーディングピクセル内の領域との交点を表す各シェーディングピクセル内で、1または複数のポリゴンを派生させるべく使用され得る。要するに、各可視プリミティブは、シェーディングピクセル内のそのような交点を各々表す1または複数のポリゴンに分割される。
クリッピングの後に、各可視プリミティブの複数の頂点のアトリビュートは、複数のポリゴンの各々の頂点に対して補間され、当該プリミティブは、これらのポリゴンに分割されており、それらのポリゴンの頂点における複数のアトリビュートを派生させる。次に、ピクセルシェーディングは、複数のポリゴンの各々の複数の頂点の各々において実行され、複数のポリゴンの各々の頂点に対する複数の色値を派生させる。
複数のポリゴンの複数の頂点におけるピクセルシェーディングの後に、複数のポリゴンの頂点における複数の色値は、複数のスクリーンピクセルに対する色値を派生させるように補間される。いくつかの実施形態において、どの頂点がどのスクリーンピクセルに対して色値を補間するときに使用されるかは、複数のポリゴンの境界に対する各スクリーンピクセルの中心の位置に基づき得る。異なる述べ方をすれば、特定のスクリーンピクセルの中心が特定のポリゴンの複数の境界内に収まる場合、当該特定のポリゴンの複数の頂点における色値は、当該特定のスクリーンピクセルの色値を派生させるように補間される。しかし、複数の他の実施形態において、各ポリゴンの複数の頂点における色値は、当該ポリゴン内に収まるスクリーン画像の各サンプルの色値を派生させるように補間され、各スクリーンピクセル内に収まる複数のサンプルの色値は、当該スクリーンピクセルの色を派生させるように平均される。複数のポリゴンの頂点からの複数の色値の補間が複数のスクリーンピクセルの中心に対するものか、または、次に平均するスクリーン画像の複数のサンプルに対するものか否かに関係なく、複数のポリゴンの頂点における他のアトリビュートもそのように補間され得る。
本明細書において用いられる複数の表記および用語を一般的に参照することにより、以下の詳細な説明の複数の部分は、コンピュータまたは複数のコンピュータのネットワーク上で実行されるプログラム手順の観点から提示される場合がある。これらの手順上の説明および表現は、当業者により、その作業の本質を他の当業者に最も効率的に伝えるべく用いられるものである。ここにおいて、また一般に、手順は、所望の結果をもたらす首尾一貫した一連の動作であると考えられる。これらの動作は、物理的量の物理的操作を必要とするものである。必ずしもではないが通常、これらの量は、格納され、転送され、組み合わされ、比較され、そうでなければ操作されることができる電気、磁気または光信号の形態を取る。主に共通に使用するという理由から、これらの信号をビット、値、要素、記号、文字、用語、数字等として言及することが好都合であると判明する場合がある。しかし、これらおよび類似の用語の全ては、適切な複数の物理的量に関連し、それらの量に適用される単に便宜的な符号であることに留意されたい。
更に、これらの操作は多くの場合、追加または比較等の用語において言及され、これらは通常、ヒューマンオペレータにより実行される頭脳上の動作に関連する。
しかし、1または複数の実施形態の一部を形成する本明細書において説明される複数の動作のいずれにおいて、ほとんどの場合に、ヒューマンオペレータのそのような能力は必要とされないか、または所望でない。むしろ、これらの動作は、機械的動作である。様々な実施形態の複数の動作を実行するための有用な複数の機械は、本明細書の教示に従って書き込まれる内部に格納されたコンピュータプログラムにより選択的にアクティブ化または構成されるような汎用デジタルコンピュータを含み、および/または要求される目的のために特別に構築される装置を含む。また、様々な実施形態は、これらの動作を実行するための複数の装置またはシステムに関する。これらの装置は、要求される目的のために特別に構築され得、または汎用コンピュータを含み得る。これらの様々な機械に必要とされる構造は、提供される説明から明らかになるであろう。
ここで図面を参照する。同一の符号は、全体を通して同一の要素を指すべく用いられる。本明細書の以下において、説明を目的として、多数の具体的な詳細は、その完全な理解を提供するべく記載される。しかし、新規な複数の実施形態は、これらの具体的な詳細を用いることなく実施され得ることが明らかな場合がある。他の複数の例において、周知の複数の構造体およびデバイスは、その説明を容易にするべくブロック図の形態で示される。この意図は、特許請求の範囲内の全ての修正形態、均等物、および代替形態を包含することである。
図1は、ソースデバイス300、コンピューティングデバイス500、および表示デバイス700のうちの1または複数を組み込むグラフィックスレンダリングシステム1000の一実施形態のブロック図を図示する。コンピューティングデバイス500は、スクリーン画像880の2D平面上に投影される3次元(3D)モデル280の2次元(2D)スクリーン画像880を生成する。コンピューティングデバイス500は、ソースデバイス300から、画定される3D空間内の1または複数のオブジェクトの3Dモデル280を表す3Dモデルデータ330を受信し得る。3Dモデルデータ330は、モデル280の1または複数のオブジェクトを構成するプリミティブ、および/またはそれらのプリミティブのアトリビュートを直接に指定し得るか、またはそれらのプリミティブおよび/またはそれらのアトリビュートの派生を可能にするのに十分な情報を含み得るかのいずれかである。
スクリーン画像880の生成後に、コンピューティングデバイス500は、ディスプレイ580上にスクリーン画像880を提示し、および/またはスクリーン画像880を表すスクリーン画像データ730を、ディスプレイ780上に提示される表示デバイス700に送信し得る。スクリーン画像データ730は、スクリーン画像880における各ピクセルの色が様々なフォーマットのいずれかでエンコードされ得るスクリーン画像880のビットマップを含み得る。いくつかの実施形態において、スクリーン画像880のピクセル解像度は、ディスプレイ580および/またはディスプレイ780のピクセル解像度に一致するように選択され得る。現に、いくつかの実施形態において、表示デバイス700は、ディスプレイ780のピクセル解像度の表示をコンピューティングデバイス500に提供し、スクリーン画像880のピクセル解像度がディスプレイ780のピクセル解像度に一致するように設定されることを可能にし得る。
これらのコンピューティングデバイスの各々は、デスクトップコンピュータシステム、データエントリ端末、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、ハンドヘルド携帯情報端末、スマートフォン、スマートグラス、スマートリストウォッチ、デジタルカメラ、衣類に組み込まれる身体着用コンピューティングデバイス、車両(例えば、自動車、自転車、車椅子等)に統合されるコンピューティングデバイス、サーバ、サーバのクラスタ、サーバファーム等を含むが、これらに限定されない様々なタイプのコンピューティングデバイスのいずれかであり得る。
図示されるように、これらのコンピューティングデバイス300、500、および700は、ネットワーク999を介して3Dモデルおよび/または2Dスクリーン画像を表すデータを搬送する複数の信号を交換する。しかし、これらのコンピューティングデバイスのうちの1または複数は、ネットワーク999を介して、3Dモデルから2D画像をレンダリングすることに全く無関係の他のデータを、互いにおよび/または更に他の複数のコンピューティングデバイス(図示せず)と交換し得る。様々な実施形態において、ネットワークは、場合によっては単一の建物または他の比較的限定された領域内に広がることに限定された単一のネットワーク、場合によっては相当な距離にわたって広がる接続ネットワークの組み合わせであってもよく、および/またはインターネットを含み得る。従って、ネットワーク999は、電気的および/または光学的に伝導性のケーブル配線を使用する複数の有線技術、および赤外線、無線周波数、または他の複数の形態の無線送信を使用する複数の無線技術を含むが、これらに限定されない、信号が交換され得る様々な通信技術(または組み合わせ)のいずれかに基づいてもよい。
様々な実施形態において、コンピューティングデバイス500は、プロセッサコンポーネント550、ストレージ560、ディスプレイ580、コントローラ600、およびコンピューティングデバイス500をネットワーク999に結合するインターフェース590のうちの1または複数を組み込む。ストレージ560は、制御ルーチン540、3Dモデルデータ330、および制御データ335のうちの1または複数を格納する。コントローラ600は、プロセッサコンポーネント650およびストレージ660のうちの1または複数を組み込む。ストレージ660は、制御ルーチン640、可視プリミティブデータ632、ポリゴンデータ633、シェーディングされたポリゴンデータ635、アトリビュート付きポリゴンデータ636、サンプルカラーデータ637、およびスクリーン画像データ730のうちの1または複数を格納する。
制御ルーチン540は、コンピューティングデバイス500のメインプロセッサコンポーネントとして様々な機能を実行するロジックを実装するという役割に、プロセッサコンポーネント550上で動作可能な複数の命令のシーケンスを組み込む。制御ルーチン540を実行するときに、プロセッサコンポーネント550は、ネットワーク999を介して3Dモデルデータ330をソースデバイス300から受信し得、3Dモデル280の少なくとも一部を表す3Dモデルデータ330の少なくとも一部をストレージ560に格納し得る。3Dモデルデータ330は、複数の2D画像の生成または送信を含む、いずれかの使用が行われる前に、相当な期間、ストレージ560に格納されてもよいことに留意されたい。スクリーン画像880を表すスクリーン画像データ730の生成後に、プロセッサコンポーネント550は、表示用のディスプレイ580上に画像880を視覚的に提示し、および/またはスクリーン画像880が表示用のディスプレイ780上に提示されることを可能にするべく、スクリーン画像データ730を表示デバイス700に送信し得る。
いくつかの実施形態において、プロセッサコンポーネント550は、スクリーン画像880を3Dモデル280から生成するときに使用するための様々な構成パラメータの複数の表示を受信し得る。例えば、スクリーン画像880がディスプレイ780上に提示するための表示デバイス700に送信される複数の実施形態において、ディスプレイ780のピクセル解像度、カラーデプス、フレームレート、および/または他の複数のパラメータの複数の表示は、表示デバイス700から(例えば、ネットワーク999を介して)受信され得る。別の例として、3Dモデル280に対するスクリーン画像880の平面および/または境界の位置および/または向きの複数の表示は、ネットワーク999を介して表示デバイス700から、および/または更に別のデバイス(図示せず)から受信され得る。プロセッサコンポーネント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は、スクリーン画像880を表すスクリーン画像データ730を、3Dモデル280を表す3Dモデルデータ330からそのように生成する例示的な実施形態を図示する。図示されるように、制御ルーチン640は、ラスタライズコンポーネント642、シェーディング・クリッピング・コンポーネント643、アトリビュート補間コンポーネント645、ピクセルシェーディングコンポーネント646、色補間コンポーネント647、および平均コンポーネント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は、サイズ、形状、位置、および/または向き等、3Dモデル280のプリミティブ282の様々な特性の複数の表示を含むプリミティブデータ332を組み込み得る。既に検討されたように、各プリミティブ282は、様々なタイプのポリゴンのいずれかであり得、それらの各々は、単一平面内に延在する。しかし、やはり既に検討されたように、典型的3Dモデルの複数のプリミティブの(全てではないにしても)大部分は、三角形である。
3Dモデル280のどのプリミティブ282が、スクリーン画像880において少なくとも部分的に可視の可視プリミティブ882でもあるかを判断するラスタライズを実行するときに、ラスタライズコンポーネント642は、スクリーン画像880のスクリーン画像ピクセル885毎に、多数のスクリーン画像サンプル888(視覚的に見やすくするためにそれらのうちの1つのみが図示される)を3Dモデル280に向かって投影し得る。スクリーン画像サンプル888をそのように投影するときに、様々なサンプリング技術のいずれかが、1スクリーン画像ピクセル885当たりのスクリーン画像サンプル888の数量を選択するとき、および各スクリーン画像ピクセル885によりカバーされる領域内の複数のスクリーン画像サンプル888の位置を選択するときに用いられ得る。そのような複数の技術としては、スーパーサンプリング、マルチサンプリング、および/または確率的サンプリングが挙げられるが、これらに限定されない。各スクリーン画像サンプル888が(スクリーン画像880の平面から、これに鉛直に延在する線のように)3Dモデル280に向かって投影されると、各スクリーン画像サンプル888が対面する3Dモデル280の第1のプリミティブ282は、スクリーン画像880において少なくとも部分的に可視の可視プリミティブ882になる。
どの可視プリミティブ882がラスタライズにより識別されるかの複数の表示は、可視プリミティブデータ632の一部として格納され得る。図示されるように、そのように格納される複数の可視プリミティブ882に関する情報の中で、様々なアトリビュートの複数の表示は、可視プリミティブ882の各々における複数の頂点883の各々に関連付けられ得る。格納された複数のアトリビュートとしては、複数の頂点の位置、鉛直のベクトル、複数のマテリアルの仕様、スクリーン画像880の平面に対する複数のデプス等のうちの1または複数が挙げられ得るが、これらに限定されない。いくつかの実施形態において、可視プリミティブデータ632は、「ジオメトリバッファ」(Gバッファ)と称され得る。
図3に戻ると、ラスタライズコンポーネント642により実行されるラスタライズの後に、シェーディング・クリッピング・コンポーネント643は、可視プリミティブ882の各々を、各々が可視プリミティブ882とシェーディングピクセルとの交点を表す1または複数のポリゴンに分割して、後続のピクセルシェーディングにおいて使用するための複数の頂点を派生させ得る。図5は、例示的な可視プリミティブ882のそのような分割の複数の態様をより詳細に図示する。より具体的には、後続のピクセルシェーディング中に使用される複数のシェーディングピクセル685のより粗いグリッドは、ラスタライズ中に使用される複数のスクリーンピクセル885のグリッド上にスーパーインポーズされる。図示されるように、複数のシェーディングピクセル685の各々は、複数のスクリーンピクセル885より大きな領域をカバーし得る。また、複数のシェーディングピクセル685の境界は、複数のスクリーンピクセル885の境界の少なくとも1つのサブセットと位置合わせされ得、従って、複数のシェーディングピクセル685のうちの1つによりカバーされる領域は、複数のスクリーンピクセル885の整数倍によりカバーされる領域と重なり合う(例えば、図示されるように、各シェーディングピクセル685は、複数のスクリーンピクセル885のうちの4つの領域に対応し、これをカバーする)。複数のシェーディングピクセル685とスクリーンピクセル885との間の位置および領域における対応関係の特定の態様のそのような図示にも関わらず、複数の境界が位置合わせされず、および/またはシェーディングピクセル685によりカバーされる領域がスクリーンピクセル885によりカバーされる領域の整数倍でない複数の他の実施形態が可能であることに留意されたい。
いくつかの実施形態において、ピクセル685および885によりカバーされる複数の境界および/または領域が対応する態様は、構成データ335内に格納された表示(例えば、図示されるように、各シェーディングピクセル685が複数のスクリーンピクセル885のうちの4つの領域をカバーすることを示す表示)により判断され得、当該表示は、シェーディング・クリッピング・コンポーネント643により構成データ335から取得され得る。複数の他の実施形態において、シェーディング・クリッピング・コンポーネント643は、可視プリミティブ882の1または複数の特性の分析に基づいて(例えば、複数の可視プリミティブ882によりカバーされる平均領域のような統計値に基づいて)、複数のシェーディングピクセル685によりカバーされる複数の境界および/または領域を決定するべく、シェーディングピクセル解像度コンポーネント6435を含み得る。
複数のスクリーンピクセル885に対する複数のシェーディングピクセル685のサイズおよび/または境界が決定される態様に関係なく、シェーディング・クリッピング・コンポーネント643は、複数のシェーディングピクセル685の各々の内側に収まる複数の可視プリミティブ882の複数の部分のクリッピングを実行して、各々がシェーディングピクセル685によりカバーされる領域と当該シェーディングピクセル685内に収まる可視プリミティブ882の一部との交点を表す複数のポリゴン682を派生させ得る。より具体的には、図示されるように、ラスタライズコンポーネント642により先に識別された例示的な可視プリミティブ882は、色値が求められる例示的なスクリーンピクセル885(強調表示される)に対応する例示的なシェーディングピクセル685(やはり強調表示される)を含む複数のシェーディングピクセル685のグリッドとオーバーレイされる。例示的なシェーディングピクセル685内で、例示的な可視プリミティブ882のクリッピングは、例示的なシェーディングピクセル685の複数のコーナー部のうちの2つの近傍で実行され、例示的なシェーディングピクセル685によりカバーされる複数の領域と例示的なシェーディングピクセル685内に収まる例示的な可視プリミティブ882の一部との交点により画定される形状を有する例示的なポリゴン682(やはり強調表示される)を画定する。
いくつかの実施形態において、シェーディング・クリッピング・コンポーネント643は、クリッピングを制御するべく、各可視プリミティブ882上に重心座標系を生成し得る。当業者に既知であるように、重心座標系は、複数の頂点の相対的位置、複数の頂点の間に延在する各セグメントの中心、および/またはポリゴンの重心に基づいている。更に、少なくとも複数の凸多角形内において、重心座標系は、専ら非負の座標値を有する全ポイントをポリゴンのエッジまたはポリゴン内のいずれかにあるとして規定し、任意の負の座標値を有する全ポイントをポリゴン外部にあるものとして規定する。従って、シェーディング・クリッピング・コンポーネント643が可視プリミティブ882毎に重心座標系を生成する複数の実施形態において、シェーディング・クリッピング・コンポーネント643は次に、シェーディングピクセル685内における可視プリミティブ882のエッジの複数の位置を識別することの一部として、任意の負の座標値に対して制限を課し、クリッピングが当該シェーディングピクセル685内のどこで行われるべきかを決定し得る。
クリッピングをどこで実行して各ポリゴン682を生成するかについての決定が行われる態様に関係なく、シェーディング・クリッピング・コンポーネント643は、そのようなクリッピングによりシェーディングピクセル685の各々の内側に画定され得る各ポリゴン682によりカバーされる複数の領域の表示を、ポリゴンデータ633の一部として格納し得る。いくつかの実施形態において、そのような各ポリゴン682の複数のジオメトリは、それらの頂点の位置の表示によりポリゴンデータ633内に記載され得る。
図3に戻ると、クリッピングコンポーネント643により実行されるクリッピングの後に、アトリビュート補間コンポーネント645は、各可視プリミティブ882の複数の頂点における1または複数のアトリビュートを、複数のポリゴン682の頂点に対して補間し得る。複数の可視プリミティブ882は、クリッピングの結果として複数のポリゴン682に分割されている。図6は、例示的なプリミティブ882の複数の頂点からの複数のアトリビュートを、図5における例示的なポリゴン682の複数の頂点に対してそのように補間する一例の態様をより詳細に図示する。より具体的に図6における図示を参照すると、アトリビュート補間コンポーネント645は、例示的な可視プリミティブ882の複数の頂点883の各々の1または複数のアトリビュートを、例示的なポリゴン682の複数の頂点683の各々に対して補間する。これを行うときに、アトリビュート補間コンポーネント645は、例示的な可視プリミティブ882の複数の頂点883のアトリビュートの表示を可視プリミティブデータ632から取得してもよく、例示的なポリゴン682の複数の頂点682の位置の表示をポリゴンデータ633から取得してもよい。
アトリビュート補間コンポーネント645によって例示的な可視プリミティブ882の複数の頂点883の各々における1または複数のアトリビュートから例示的なポリゴン682の複数の頂点683へと補間を実行することにより、複数の頂点883からの補間が例示的な可視プリミティブ882の外側の1または複数の位置に対して行われる外挿の複数の例を回避する。プリミティブの複数の頂点の各々から当該プリミティブの外側の位置へと複数のアトリビュートを補間することは、論理的に一貫性がないと考えられ得る。なぜなら、当該プリミティブの複数のアトリビュートが何も存在し得ないか、または全く異なる複数のアトリビュートを有する別のプリミティブが存在し得る位置であり得るものに対する任意の適用可能性を有するという固有の前提に対する根拠が存在し得ないからである。例として、例示的な可視プリミティブ882の複数の頂点883における複数の色値から例示的な可視プリミティブ882の外側の位置へと補間することは、意味がない可能性がある。なぜなら、色値を与えられる位置に何も存在しない場合があり、または当該位置に全く異なる色を有する異なるプリミティブが存在する場合があるからである。
例示的なポリゴン682の複数の頂点683は、例示的な可視プリミティブ882の外部ではなく、例示的な可視プリミティブ882内に存在し、または例示的な可視プリミティブ882の複数のエッジのうちの1または複数に沿って存在するかのいずれかであると知られている複数の位置のセットを提供する。結果として、アトリビュート補間コンポーネント645による複数の補間は、それらの補間のうちの1または複数が外挿であるリスクなしに、例示的な可視プリミティブ882の複数の頂点883から例示的なポリゴン682の複数の頂点683の各々へと実行することができる。これは、そのような補間が例示的な可視プリミティブ882の複数の頂点883から、例示的なポリゴン682が形成されるシェーディングピクセル685のコーナー部または当該シェーディングピクセル685および1または複数の隣接シェーディングピクセル685の中心のいずれかへと実行される他の既知の技術とは対照的である。それらの他の既知の技術の複数のそのような補間は各々、(図5を参照することにより見られ得る)複数の外挿をもたらす。アトリビュート補間コンポーネント645は、アトリビュート付きポリゴンデータ635の一部として、例示的なポリゴン682の複数の頂点683の各々について派生する複数のアトリビュートの表示を格納し得る。いくつかの実施形態において、アトリビュート付きポリゴンデータ635は、複数の頂点683の各々の位置の表示も含み得る。
図3に戻ると、アトリビュート補間コンポーネント645により実行される複数のポリゴン682の各々の複数の頂点683における複数のアトリビュートを派生させるための補間の後に、ピクセルシェーディングコンポーネント646は、各ポリゴン682の頂点683毎に複数の色値を派生させるべく、各ポリゴン682の各頂点683においてピクセルシェーディングを実行することに対する複数の入力として、各ポリゴン682の各頂点683において複数のアトリビュートを使用し得る。例えば、例示的なポリゴン682の各頂点683において、ピクセルシェーディングコンポーネント646は、当該頂点683において1または複数のアトリビュートを使用して、当該頂点683において色を指定する色値を派生させ得る。これを行うときに、ピクセルシェーディングコンポーネント646は、例示的なポリゴン682の頂点683毎に1または複数のアトリビュートの複数の表示を、アトリビュート付きポリゴンデータ635から取得し得る。次に、ピクセルシェーディングコンポーネント646は、例示的なポリゴン682の複数の頂点683の各々において色を指定する複数の色値の表示を、シェーディングされたポリゴンデータ636の一部として格納し得る。いくつかの実施形態において、シェーディングされたポリゴンデータ636は、複数の頂点683の各々の位置の表示および/または複数の頂点683の各々の複数のアトリビュートも含み得る。
ピクセルシェーディングコンポーネント646により実行される複数のポリゴン682の各々の複数の頂点683においてシェーディングした後、色補間コンポーネント647は、各ポリゴン682の各頂点において複数の色値を補間して、複数のスクリーンピクセル885の色値を派生させ得る。図7は、図5および図6の例示的なポリゴン682と一致する例示的なスクリーンピクセル885の色値を派生させるためのそのような補間の一例の複数の態様をより詳細に図示する。
色補間コンポーネント647により実行される補間は、複数のポリゴン682の対応するものの複数の頂点683についてピクセルシェーディングコンポーネント646により派生した複数の色値から、スクリーン画像880のスクリーンピクセル885毎に色を指定する色値を少なくとも補間することを含むことに留意されたい。しかし、色補間コンポーネント647により実行される補間は、アトリビュート補間コンポーネント645によって複数のポリゴン682の対応するものの複数の頂点683について派生したそれらのアトリビュートを同様に補間することにより、スクリーンピクセル885毎に1または複数の他のアトリビュートを派生させることも含み得る。これを行うときに、色補間コンポーネント647は、シェーディングされたポリゴンデータ636から、複数のポリゴン682の複数の頂点683の各々において複数の色値および/またはアトリビュートの複数の値の表示を取得し得る。次に、色補間コンポーネント647は、スクリーンピクセル885について補間により派生した複数の色値および/またはアトリビュートの複数の値を、スクリーン画像データ730の一部として格納し得る。各スクリーン画像ピクセル885の値は、スクリーン画像データ730に格納され、スクリーン画像データ730は、スクリーン画像880の表現になり得る。
従って、色補間コンポーネント647は、ピクセルシェーディングコンポーネント646により例示的なポリゴン682の複数の頂点683の各々について派生した複数の色値を補間して、例示的なスクリーンピクセル885について色を指定する色値を派生し得る。同様に、色補間コンポーネント647は、ピクセルシェーディングコンポーネント646により例示的なポリゴン682の複数の頂点683の各々について派生した1または複数の他のアトリビュートの複数の値を更に補間して、例示的なスクリーンピクセル885についてそれらの1または複数の他のアトリビュートに対する値を派生させ得る。色補間コンポーネント647により実行されるこれらの補間が対象とし得る位置は、例示的なスクリーンピクセル885の中心であり得る。更に、例示的なスクリーンピクセル885は、例示的なスクリーンピクセル885の中心が例示的なポリゴン682内に収まることの結果として、例示的なポリゴン682に対応するものとみなされ得、例示的なポリゴン682へのこの形式の対応関係により、例示的なスクリーンピクセル885について派生する複数のアトリビュート(色値を含む)が例示的なポリゴン682の複数の頂点683から補間されることを決定し得る。
ちょうど説明されたように、色補間コンポーネント647によるポリゴン682の複数の頂点683からの複数のスクリーンピクセル885の各々の中心に対するそのような補間は、スクリーンピクセル885毎に1つのサンプルが存在する複数の実施形態(またはスクリーンピクセル885毎の複数の色値の派生がピクセル毎にいくつのサンプルが存在し得るかに関係なく、ピクセル毎のサンプルの数量に基づかない複数の実施形態)において実行され得る。しかし、スクリーンピクセル885毎の複数のサンプルがラスタライズ中に使用される複数の実施形態において、色補間コンポーネント647は、複数のポリゴンの複数の頂点683からそれらのサンプルの各々へと補間し得る。図8は、各スクリーンピクセル885の各サンプルに対するそのような補間の一例をより詳細に図示する。
具体的には、図示されるように、例示的なスクリーンピクセル885内に収まる4つのサンプル888が存在し得、従って色補間コンポーネント647は、例示的なポリゴン682の複数の頂点683における色値および/または複数の他のアトリビュートの値を、例示的なスクリーンピクセル885の複数のサンプル888の各々に対して補間し得る。これを行うときに、色補間コンポーネント647は、サンプル888毎にそのように派生するそれらの値の表示を、サンプルカラーデータ637の一部として格納し得る。次に、平均コンポーネント648は、例示的なスクリーンピクセル885の複数のサンプル888の各々について補間によりちょうど派生した複数の色値を平均して、例示的なスクリーンピクセル885の色値を派生させ得る。平均コンポーネント648は、例示的なスクリーンピクセル885の複数のサンプル888の各々について、やはり補間によりちょうど派生した1または複数の他のアトリビュートの複数の値を更に平均して、例示的なスクリーンピクセル885の1または複数の他のアトリビュートの値を派生させ得る。これを行うときに、平均コンポーネント648は、例示的なスクリーンピクセル885の色値および/または1もしくは複数の他のアトリビュートの値を、スクリーン画像データ730の一部として格納し得る。
2Dスクリーン画像880をレンダリングすることの一部として、3Dモデル280からスクリーンピクセル885に対する少なくとも複数の色値を派生させることについての明確な検討を可能にするべく、図5〜図8における単一の例示的なポリゴン682を形成および使用する例示は、本明細書において提示される比較的単純な例であることを意図することに留意されたい。しかし、当業者には認識可能であるように、複数のシェーディングピクセル685のうちの少なくともいくつかの内側に2つ以上の可視プリミティブ882の複数の部分を有することは全く普通であり得、従って2つ以上のポリゴン682は、それらのシェーディングピクセル685の各々の内側に形成される。図9Aおよび9Bは共に、隣接する可視プリミティブ882aおよび882bのペアの複数の部分が代替の例示的なシェーディングピクセル685内に収まることの結果として、代替の例示的なシェーディングピクセル685内に隣接ポリゴンのペア682aおよび682bを形成する態様を図示する。
より具体的に図9Aを参照すると、図示されるように、2つの隣接する可視プリミティブ882aおよび882bは、代替の例示的なシェーディングピクセル685を通って延在し、代替の例示的なシェーディングピクセル685の一部と一致する代替の例示的なスクリーンピクセル885を通って延在する共通の複数の頂点883を有する共通のエッジを形成するように接する。また、共有される2つの頂点883を含む、隣接する可視プリミティブ882aおよび882bの各々の複数の頂点883の相対的位置が図示される。
より具体的に図9Bを参照すると、シェーディング・クリッピング・コンポーネント643は、代替の例示的なシェーディングピクセル685内で隣接する可視プリミティブ882aおよび882bの各々のクリッピングを実行して、その中に隣接ポリゴンのペア682aおよび682bを形成する。図示されるように、隣接のポリゴン682aおよび682bは、隣接のポリゴン682aおよび682bの間の共通のエッジとして、隣接する可視プリミティブ882aおよび882bの間で共通のエッジの一部を共有する。また、共有される2つの頂点683を含む、隣接のポリゴン682aおよび682bの各々の複数の頂点683の相対的位置が図示される。共有される2つの頂点683は、シェーディング・クリッピング・コンポーネント643により実行されるクリッピングの結果として、代替の例示的なシェーディングピクセル685の複数の境界に沿って画定される。
隣接する可視プリミティブ882aおよび882bが同一オブジェクトの同一面における複数の部分を画定する複数の可視プリミティブのセットの一部である複数の実施形態において、代替の例示的なシェーディングピクセル685の複数の境界に沿った共通位置を共有する隣接のポリゴン682aおよび682bの各々の複数の頂点683について派生した複数の色値は、実質的に類似する可能性がある。結果として、隣接する可視プリミティブ882aおよび882bにより画定される当該表面の複数の部分の間で生じているものとして、スムーズな移行が認められ得る。現に、図9Bは、本明細書において説明されるような可視プリミティブの1または複数のポリゴンへの分割が複数の共通位置を共有する複数の隣接する可視プリミティブと関連付けられる複数のポリゴン頂点の形成を生じさせる可能性があり、これは、次いで複数の隣接する可視プリミティブ間にそのような類似の色値をもたらす可能性があることを図示する。
図1に戻ると、スクリーン画像880を表すスクリーン画像データ730の生成後に、説明されたように、処理コンポーネント550は、ディスプレイ580上に画像880を提示し得る。あるいは、または更に、プロセッサコンポーネント550は、スクリーン画像データ730を表示デバイス700のような別のデバイスに送信して、ディスプレイ780のような別のディスプレイ上に画像880を提示することを可能にするようにインターフェース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をレンダリングした後に、スクリーン画像880を表すスクリーン画像データ730を、コンピューティングデバイス500から受信するようにインターフェース790を動作させ得る。次に、プロセッサコンポーネント750は、モーションスクリーン画像880をディスプレイ780上に視覚的に提示し得る。
図2は、コンピューティングデバイス500の代替的な実施形態を含むグラフィックスレンダリングシステム1000の代替的な実施形態のブロック図を図示する。図2におけるグラフィックスレンダリングシステム1000の代替的な実施形態は、多くの点で図1における実施形態に類似し、従って同一の符号は、全体を通じて同一の要素を指すように用いられている。しかし、図1のコンピューティングデバイス500と異なり、図2のコンピューティングデバイス500は、コントローラ600を組み込まない。従って、図1のコンピューティングデバイス500と異なり、図2のコンピューティングデバイス500においては、それを行うために存在する別個のプロセッサコンポーネント650に代えて、プロセッサコンポーネント550が、制御ルーチン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)メモリ、磁気もしくは光カード、1もしくは複数の個別の強磁性ディスクドライブ、または1もしくは複数のアレイに組織化された複数のストレージデバイス(例えば、独立ディスク冗長アレイによるアレイ、すなわちRAIDアレイに組織化された複数の強磁性ディスクドライブ)を含むが、これらに限定されない多種多様なタイプのストレージデバイス(または複数のタイプの組み合わせ)のいずれかを含み得る。これらのストレージの各々は、単一のブロックとして図示されるが、これらのうちの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)、エボリューション・データオンリ/オプティマイズド(Ev−DO)、エボリューション・フォー・データ・アンド・ボイス(EV−DV)、高速ダウンリンクパケットアクセス(HSDPA)、高速アップリンクパケットアクセス(HSUPA)、4G LTE等のようなセルラー無線電話サービスを含むが、これらに限定されない様々な業界標準のいずれかに適合するシグナリングおよび/または複数のプロトコルを使用し得る。
図10は、ロジックフロー2100の一実施形態を図示する。ロジックフロー2100は、本明細書に説明される1または複数の実施形態により実行される複数の動作のいくつかまたは全てを表し得る。より具体的には、ロジックフロー2100は、少なくとも制御ルーチン640を実行するときにプロセッサコンポーネント550および/または650により実行される動作、および/またはコンピューティングデバイス500の他のコンポーネントにより実行される動作を図示し得る。
2110において、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550および/または650)は、3Dモデルからレンダリングされる2Dスクリーン画像(例えば、スクリーン画像880)の平面の視点から、3Dモデル(例えば、3Dモデル280のプリミティブ282)の全てのグラフィックスプリミティブのラスタライズを実行する。これを行うときに、プロセッサコンポーネントは、2Dスクリーン画像の視点から可視の3Dモデルの複数のプリミティブ(例えば、可視プリミティブ882)の全てを識別して、それらの可視プリミティブの各々の複数の頂点に関連付けられた様々なアトリビュートを得る。検討されたように、そのような平面の位置および/または向き、ならびに当該平面内のスクリーン画像の複数の境界は、別のコンピューティングデバイス(例えば、表示デバイス700)から受信され得る。
2120において、プロセッサコンポーネントは、可視プリミティブの少なくとも一部が収まる複数のシェーディングピクセルの各々の内側における複数の可視プリミティブのクリッピングを実行して、各々が、複数のシェーディングピクセルの複数の領域と、複数のシェーディングピクセル内に収まる複数の可視プリミティブの複数の部分との交点を表す複数のポリゴンを派生させる。既に検討されたように、複数のシェーディングピクセルは各々、2Dスクリーン画像を構成する複数のスクリーンピクセルの各々より大きな領域を含むように画定され得、従って複数のシェーディングピクセルのグリッドは、複数のスクリーンピクセルのグリッドより粗くなり得る。やはり既に検討されたように、複数のシェーディングピクセルは、複数のスクリーンピクセルの複数の境界の少なくとも1つのサブセットと位置合わせする複数の境界で画定され得、従って、各シェーディングピクセルは、複数のスクリーンピクセル(例えば、本明細書に図示されているように、4つのスクリーンピクセルに対応する各シェーディングピクセル)の整数倍と一致するように画定され得る。
2130において、プロセッサコンポーネントは、複数の可視プリミティブのうちの関連付けられた複数のものの複数の頂点から複数のポリゴンの複数の頂点に対して補間された複数のアトリビュートから、複数のポリゴンの複数の頂点における色値を派生させるべく、ピクセルシェーディングを実行する。2140において、プロセッサコンポーネントは、複数のポリゴンの複数の頂点からの複数の色値を複数のスクリーンピクセルの複数の中心に対して補間し、複数のスクリーンピクセルの複数の色値を派生させ得る。既に検討されたように、複数のポリゴンに対する複数のスクリーンピクセルの各々の中心の位置は、どのポリゴンの頂点が補間される色値を提供するべく使用されるかを判断するように使用され得る。
図11は、ロジックフロー2200の一実施形態を図示する。ロジックフロー2200は、本明細書に説明される1または複数の実施形態により実行される複数の動作のいくつかまたは全てを表し得る。より具体的には、ロジックフロー2200は、少なくとも制御ルーチン640を実行するときにプロセッサコンポーネント550および/もしくは650により実行される動作、ならびに/またはコンピューティングデバイス500の他のコンポーネントにより実行される動作を図示し得る。
2210において、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550および/または650)は、2Dスクリーン画像の視点から可視の3Dモデルの複数のプリミティブ(例えば、可視プリミティブ882)の全てを識別するべく、3Dモデルからレンダリングされる2Dスクリーン画像(例えば、スクリーン画像880)の平面の視点から、3Dモデル(例えば、3Dモデル280のプリミティブ282)の全てのグラフィックスプリミティブのラスタライズを実行する。検討されたように、そのような平面の位置および/または向き、ならびに当該平面内のスクリーン画像の複数の境界は、別のコンピューティングデバイス(例えば、表示デバイス700)から受信され得る。
2220において、プロセッサコンポーネントは、可視プリミティブの少なくとも一部が収まるシェーディングピクセルの各々の内側における複数の可視プリミティブのクリッピングを実行して、各々が、複数のシェーディングピクセルの複数の領域と、複数のシェーディングピクセル内に収まる複数の可視プリミティブの複数の部分との交点を表す複数のポリゴンを派生させる。既に検討されたように、複数のシェーディングピクセルは各々、2Dスクリーン画像を構成する複数のスクリーンピクセルの各々より大きな領域を含むように画定され得、従って複数のシェーディングピクセルのグリッドは、複数のスクリーンピクセルのグリッドより粗くなり得る。
やはり既に検討されたように、複数のシェーディングピクセルは、複数のスクリーンピクセルの複数の境界の少なくとも1つのサブセットと位置合わせする複数の境界で画定され得、従って、各シェーディングピクセルは、複数のスクリーンピクセル(例えば、本明細書に図示されているように、4つのスクリーンピクセルに対応する各シェーディングピクセル)の整数倍と一致するように画定され得る。
2230において、プロセッサコンポーネントは、複数の可視プリミティブのうちの関連付けられた複数のものの複数の頂点における複数のアトリビュートから補間することにより、複数のポリゴンの複数の頂点における複数のアトリビュートを派生するための補間を実行する。2240において、プロセッサコンポーネントは、複数のポリゴンの複数の頂点における複数のアトリビュートから複数のポリゴンの複数の頂点における色値を派生させるべく、ピクセルシェーディングを実行する。
2250において、プロセッサコンポーネントは、複数のポリゴンの複数の頂点からの少なくとも複数の色値を、複数のポリゴンの各々の内側に収まる複数のサンプルに対して補間し得る。2260において、プロセッサコンポーネントは、各スクリーンピクセル内に収まる複数のサンプルにおける少なくとも複数の色値を平均して、複数のスクリーンピクセルの複数の色値を派生させる。説明されたように、複数の他のアトリビュートの値も、複数のポリゴンの複数の頂点から複数のサンプルに対して補間され、次に、各スクリーンピクセルに対するそれらのアトリビュートの値を派生させるべく、複数のサンプルから平均され得る。
図12は、上記の様々な実施形態を実装するのに好適な例示的な処理アーキテクチャ3000の実施形態を図示する。より具体的には、処理アーキテクチャ3000(またはその変形)は、コンピューティングデバイス300、500、もしくは700のうちの1または複数の一部として、ならびに/またはコントローラ600の一部として実装され得る。処理アーキテクチャ3000の複数のコンポーネントには、最後の2桁が先に図示された複数のコンポーネントのうちの少なくともいくつかの符号の最後の2桁に対応する複数の符号が与えられ、コンピューティングデバイス300、500、および700、ならびにコントローラ600の一部として説明されることに留意されたい。これは、各々の相関する複数のコンポーネントに対する補助として行われている。
処理アーキテクチャ3000は、1または複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力/出力(I/O)コンポーネント、電源等を含むが、これらに限定されない、デジタル処理において通常使用される様々な要素を含む。本願において用いられるように、「システム」および「コンポーネント」という用語は、デジタル処理が実行されるコンピューティングデバイスのエンティティを指すことを意図し、当該エンティティは、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアであり、これらの例は、図示されるこの例示的な処理アーキテクチャにより提供される。例えば、コンポーネントは、プロセッサコンポーネント上で実行される処理、プロセッサコンポーネント自体、光および/もしくは磁気ストレージ媒体を使用し得るストレージデバイス(例えば、ハードディスクドライブ、アレイにおける複数のストレージドライブ等)、ソフトウェアオブジェクト、実行可能な複数の命令のシーケンス、実行スレッド、プログラム、および/またはコンピューティングデバイス全体(例えば、コンピュータ全体)であり得るが、これらに限定されない図示として、サーバ上で実行されるアプリケーションおよびサーバの双方が、コンポーネントであり得る。1または複数のコンポーネントは、処理および/または実行スレッド内に存在し得、コンポーネントは、1つのコンピューティングデバイス上に局部化され、および/または2つまたはそれより多くのコンピューティングデバイスの間に分散され得る。更に、複数のコンポーネントは、複数の動作を調整するための様々なタイプの通信媒体により互いに通信可能に結合され得る。調整は、情報の一方向または双方向の交換を含み得る。例えば、複数のコンポーネントは、通信媒体を介して通信される複数の信号の形態で情報を通信し得る。情報は、1または複数の信号線に割り当てられた複数の信号として実装され得る。(コマンド、ステータス、アドレス、またはデータのメッセージを含む)メッセージは、複数のそのような信号のうちの1つであってもよく、または複数のそのような信号であってもよく、様々な接続および/またはインターフェースのいずれかを介してシリアルもしくは実質的にパラレルのいずれかで送信されてもよい。
図示されるように、処理アーキテクチャ3000を実装するときに、コンピューティングデバイスは、少なくともプロセッサコンポーネント950、ストレージ960、複数の他のデバイスへのインターフェース990、およびカップリング959を含む。説明されるように、そのようなコンピューティングデバイスは、意図される使用および/または使用の条件を含む、処理アーキテクチャ3000を実装するコンピューティングデバイスの様々な態様に応じて、ディスプレイインターフェース985のような追加の複数のコンポーネントを更に含み得るが、これらに限定されない。
カップリング959は、少なくともプロセッサコンポーネント950をストレージ960に通信可能に結合する1または複数のバス、ポイントツーポイント相互接続、トランシーバ、バッファ、クロスポイントスイッチ、および/または他の複数の導体、および/またはロジックを含む。カップリング959は、インターフェース990、オーディオサブシステム970、およびディスプレイインターフェース985(これらおよび/または更に他の複数のコンポーネントのどれかが示されるかに応じて)のうちの1または複数に、プロセッサコンポーネント950を更に結合し得る。プロセッサコンポーネント950は、そのようにカップリング959により結合されるので、前述の複数のコンピューティングデバイスのいずれが処理アーキテクチャ3000を実装するにしても、プロセッサコンポーネント950は、縷々上記した複数のタスクの様々なものを実行することができる。カップリング959は、複数の信号が光学的および/または電気的に搬送される様々な複数の技術または複数の技術の組み合わせのいずれかを用いて実装され得る。更に、カップリング959の少なくとも複数の部分は、アクセラレーティッドグラフィックスポート(AGP)、CardBus、拡張業界標準アーキテクチャ(E−ISA)、マイクロチャネルアーキテクチャ(MCA)、NuBus、周辺構成要素相互接続(拡張)(PCI−X)、PCIエクスプレス(PCI−E)、パーソナルコンピュータメモリカード国際協会(PCMCIA)バス、ハイパートランスポート(登録商標)、QuickPath等を含むが、これらに限定されない多種多様な業界標準のいずれかに適合する複数のタイミングおよび/またはプロトコルを使用し得る。
既に検討されたように、(プロセッサコンポーネント550、650、および750に対応する)プロセッサコンポーネント950は、多種多様な技術のいずれかを使用して、いくつかの態様のいずれかで物理的に組み合わされた1または複数のコアと共に実装される多種多様な商業的に入手可能なプロセッサのいずれかを含み得る。
既に検討されたように、(ストレージ560、660、および760に対応する)ストレージ960は、多種多様な技術のいずれか、または複数の技術の組み合わせに基づく1または複数の別個のストレージデバイスから構成され得る。より具体的には、図示されるように、ストレージ960は、揮発性ストレージ961(例えば、RAMテクノロジーの1または複数の形態に基づくソリッドステートストレージ)、不揮発性ストレージ962(例えば、コンテンツを保持するべく電力の恒常的プロビジョニングを必要としないソリッドステートストレージ、強磁性ストレージ、もしくは他のストレージ)、およびリムーバブルメディアストレージ963(例えば、複数のコンピューティングデバイス間で情報が搬送され得るリムーバブルディスクもしくはソリッドステートメモリカードストレージ)のうちの1または複数を含み得る。場合によって複数の別個のタイプのストレージを含むものとしてストレージ960をこのように図示することにより、あるタイプが比較的高速の読み取りおよび書き込み機能を提供し、プロセッサコンポーネント950によりデータのより迅速な操作を可能にし、(しかし、場合によっては電力を絶えず必要とする「揮発性」技術を用いる)が、別のタイプが比較的高密度の不揮発性ストレージを提供する(しかし、比較的低速の読み取りおよび書き込み機能を提供する可能性がある)2つ以上のタイプのストレージデバイスがコンピューティングデバイスにおいて通常使用されることが認識される。
異なる複数の技術を使用する異なるストレージデバイスのしばしば異なる特性を考慮すると、そのような複数の異なるストレージデバイスが、異なる複数のインターフェースを介して異なる複数のストレージデバイスに結合される異なる複数のストレージコントローラを介して、コンピューティングデバイスの他の複数の部分に結合されることもよく見られる。揮発性ストレージ961が提示され、RAMテクノロジーに基づく例としては、揮発性ストレージ961は、場合によって行および列のアドレス指定を使用する揮発性ストレージ961に適切なインターフェースを提供するストレージコントローラ965aを介して、カップリング959に通信可能に結合され得、ストレージコントローラ965aは、揮発性ストレージ961内に格納された情報を保持する助けとなるように、行リフレッシュおよび/または他の複数のメンテナンスタスクを実行し得る。不揮発性ストレージ962が存在し、1または複数の強磁性および/またはソリッドステートディスクドライブを含む別の例として、不揮発性ストレージ962は、ストレージコントローラ965bを介してカップリング959に通信可能に結合され、場合によっては情報の複数のブロックおよび/または複数のシリンダおよびセクタのアドレス指定を使用する不揮発性ストレージ962に、適切なインターフェースを提供し得る。リムーバブルメディアストレージ963が存在し、1または複数個の機械可読ストレージ媒体969を使用する1または複数の光および/またはソリッドステートディスクドライブを含む更に別の例として、リムーバブルメディアストレージ963は、ストレージコントローラ965cを介してカップリング959に通信可能に結合され、場合によって情報の複数のブロックのアドレス指定を使用するリムーバブルメディアストレージ963に、適切なインターフェースを提供し得、ストレージコントローラ965cは、機械可読ストレージ媒体969の耐用年数を伸ばすことに固有の態様で読み取り、消去、書き込みの動作を調整し得る。
各々が基づく技術に応じて、揮発性ストレージ961または不揮発性ストレージ962のうちの一方または他方は、プロセッサコンポーネント950により実行可能な複数の命令のシーケンスを含むルーチンが格納され得る機械可読ストレージ媒体の形態の製造物品を含み得る。不揮発性ストレージ962が強磁性ベースのディスクドライブ(例えば、いわゆる「ハードドライブ」)を含む例としては、各々のそのようなディスクドライブは通常、磁気応答性粒子のコーティングが堆積され、様々なパターンに磁気的に方向付けられる1または複数の回転プラッタを使用して、フロッピー(登録商標)ディスケットのようなストレージ媒体に類似の態様で複数の命令のシーケンス等の情報を格納する。別の例として、不揮発性ストレージ962は、ソリッドステートストレージデバイスの複数のバンクで構成され、コンパクトフラッシュ(登録商標)カードに類似の態様で複数の命令の複数のシーケンス等の情報を格納し得る。更に、実行可能なルーチンおよび/またはデータを格納するべく、コンピューティングデバイスにおいて異なる時点に異なる複数のタイプのストレージデバイスを使用することは、よく見られる。
従って、プロセッサコンポーネント950により実行される複数の命令のシーケンスを含むルーチンは、最初に機械可読ストレージ媒体969上に格納され得、次に、リムーバブルメディアストレージ963は、機械可読ストレージ媒体969の継続的存在を必要としないより長い期間の格納のための不揮発性ストレージ962、および/または当該ルーチンが実行されるときに、プロセッサコンポーネント950によるより高速のアクセスを可能にする揮発性ストレージ961に当該ルーチンをコピーする際に使用され得る。
既に検討されたように、(場合によってはインターフェース590または790に対応する)インターフェース990は、コンピューティングデバイスを1または複数の他のデバイスに通信可能に結合するべく使用され得る様々な通信技術のいずれかに対応する様々なシグナリング技術のいずれかを使用し得る。更に、様々な形態の有線または無線シグナリングの一方または双方は、場合によってはネットワーク(例えば、ネットワーク999)または相互接続された複数のネットワークのセットを介して、プロセッサコンポーネント950が複数の入力/出力デバイス(例えば、図示された例示的キーボード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は、コンテンツサービスデバイス4900cもしくはコンテンツ配信デバイス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、および/または図12のプロセッサコンポーネント950のうちの1または複数と同一であるか、類似し得る。
メモリユニット4969は、データを格納することができる任意の機械可読またはコンピュータ可読媒体を用いて実装され得、図12のストレージ媒体969と同一であるか、または類似し得る。
トランシーバ4995は、様々な好適の無線通信技術を用いて複数の信号を送受信できる1または複数の無線機を含み得、図12のトランシーバ995bと同一であるか、または類似し得る。
ディスプレイ4980は、任意のテレビタイプのモニタまたはディスプレイを含み得、ディスプレイ580および780、ならびに/または図12のディスプレイ980のうちの1または複数と同一であるか、または類似し得る。
ストレージ4962は、不揮発性ストレージデバイスとして実装され得、図12の不揮発性ストレージ962と同一であるか、または類似し得る。
グラフィックスサブシステム4985は、表示のために静止画像または動画のような複数の画像の処理を実行し得る。グラフィックスサブシステム4985は、例えば、グラフィックス処理ユニット(GPU)またはビジュアルプロセッシングユニット(VPU)であってもよい。アナログまたはデジタルインターフェースは、グラフィックスサブシステム4985およびディスプレイ4980を通信可能に結合するように用いられてもよい。例えば、インターフェースは、高細精度マルチメディアインターフェース、DisplayPort、無線HDMI(登録商標)、および/または無線HDに準拠する技術のいずれかであってもよい。グラフィックスサブシステム4985は、プロセッサ回路4950またはチップセット4955に集積され得る。グラフィックスサブシステム4985は、チップセット4955に通信可能に結合されたスタンドアロンカードであり得る。
本明細書に説明されるグラフィックスおよび/または動画処理技術は、様々なハードウェアアーキテクチャで実装され得る。例えば、グラフィックスおよび/または動画機能は、チップセット内に集積され得る。あるいは、別個のグラフィックスおよび/またはビデオプロセッサが用いられてもよい。なおも別の実施形態として、グラフィックスおよび/または複数のビデオ機能は、マルチコアプロセッサを含む汎用プロセッサにより実装され得る。更なる実施形態において、これらの機能は、家庭用電子デバイスに実装され得る。
複数の実施形態において、コンテンツサービスデバイス4900bは、任意の国家的、国際的、および/または独立系サービスによりホストされ、従って例えばインターネットを介してプラットフォーム4900aにアクセス可能であり得る。コンテンツサービスデバイス4900bは、プラットフォーム4900aおよび/またはディスプレイ4980に結合され得る。プラットフォーム4900aおよび/またはコンテンツサービスデバイス4900bは、ネットワーク4999に、およびネットワーク4999からメディア情報を通信する(例えば送信し、および/または受信する)べくネットワーク4999に結合され得る。コンテンツ配信デバイス4900cは、プラットフォーム4900aおよび/またはディスプレイ4980にも結合され得る。
複数の実施形態において、コンテンツサービスデバイス4900bは、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネットが可能なデバイス、もしくはデジタル情報および/またはコンテンツを提供することができる電気機器、およびネットワーク4999を介し、または直接に複数のコンテンツプロバイダと、プラットフォーム4900aと、ディスプレイ4980との間で一方向または双方向にコンテンツを通信することができるその他の類似のデバイスを含み得る。コンテンツは、ネットワーク4999を介してシステム4000における複数のコンポーネントのうちのいずれか1つおよびコンテンツプロバイダに、およびこれらから一方向および/または双方向に通信され得ることが理解されよう。コンテンツの複数の例としては、例えば、動画、音楽、医療およびゲーム情報等を含む任意のメディア情報が挙げられ得る。
コンテンツサービスデバイス4900bは、メディア情報、デジタル情報、および/または他のコンテンツを含むケーブルテレビ番組等のコンテンツを受信する。コンテンツプロバイダの複数の例としては、任意のケーブルもしくは衛星テレビ、またはラジオもしくはインターネットコンテンツプロバイダが挙げられ得る。提供される複数の例は、適用可能な実施形態を限定することを意図しない。
複数の実施形態において、プラットフォーム4900aは、1または複数のナビゲーション機能を有するナビゲーションコントローラ4920から複数の制御信号を受信し得る。ナビゲーションコントローラ4920の複数のナビゲーション機能は、例えば、ユーザインターフェース4880とインタラクトするように用いられ得る。複数の実施形態において、ナビゲーションコントローラ4920は、ユーザが空間(例えば、連続した多次元の)データをコンピュータに入力することを可能にする、コンピュータハードウェアコンポーネント(具体的にはヒューマンインターフェースデバイス)であり得るポインティングデバイスであってもよい。グラフィカルユーザインターフェース(GUI)等の多くのシステム、ならびに複数のテレビおよびモニタは、ユーザが物理的なジェスチャを用いてコンピュータまたはテレビを制御し、これらにデータを提供することを可能にする。
ナビゲーションコントローラ4920におけるナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、または他の複数の視覚インジケータの動きにより、ディスプレイ(例えば、ディスプレイ4980)上に反映され得る。例えば、ソフトウェアアプリケーション4940の制御下で、ナビゲーションコントローラ4920上に位置する複数のナビゲーション機能は、ユーザインターフェース4880上に表示される複数の仮想ナビゲーション機能にマッピングされ得る。複数の実施形態において、ナビゲーションコントローラ4920は、別個のコンポーネントではなく、プラットフォーム4900aおよび/またはディスプレイ4980に統合されてもよい。しかし、実施形態は、本明細書に示され、または説明される要素または文脈に限定されない。
複数の実施形態において、複数のドライバ(図示せず)は、例えば、有効にされると、初期ブートアップ後にユーザがボタンに触れることによりテレビ等のプラットフォーム4900aを即座にオンおよびオフにすることを可能にする技術を備え得る。プラットフォームが「オフ」にされると、プログラムロジックは、プラットフォーム4900aがコンテンツをメディアアダプタもしくは他のコンテンツサービスデバイス4900b、またはコンテンツ配信デバイス4900cにストリーミングすることを可能にし得る。更に、チップセット4955は、例えば、5.1サラウンドサウンドオーディオおよび/またはハイデフィニション7.1サラウンドサウンドオーディオに対するハードウェアおよび/またはソフトウェアのサポートを備え得る。複数のドライバは、複数の統合グラフィックスプラットフォームためのグラフィックスドライバを含み得る。複数の実施形態において、複数のグラフィックスドライバは、周辺構成要素相互接続(PCI)エクスプレスグラフィックスカードを備え得る。
様々な実施形態において、システム4000において示される複数のコンポーネントのうちの任意の1または複数が統合され得る。例えば、プラットフォーム4900aおよびコンテンツサービスデバイス4900bが統合されてもよく、またはプラットフォーム4900aおよびコンテンツ配信デバイス4900cが統合されてもよく、または例えば、プラットフォーム4900a、コンテンツサービスデバイス4900b、およびコンテンツ配信デバイス4900cが統合されてもよい。様々な実施形態において、プラットフォーム4900aおよびディスプレイ4980は、統合されたユニットであってもよい。例えば、ディスプレイ4980およびコンテンツサービスデバイス4900bが統合されてもよく、またはディスプレイ4980およびコンテンツ配信デバイス4900cが統合されてもよい。これらの例は、実施形態を限定することを意図しない。
様々な実施形態において、システム4000は、無線システム、有線システム、または双方の組み合わせとして実装され得る。無線システムとして実装される場合、システム4000は、1または複数のアンテナ、トランスミッタ、レシーバ、トランシーバ、増幅器、フィルタ、制御ロジック等のような無線共有媒体を介して通信するのに好適な複数のコンポーネントおよびインターフェースを含み得る。無線共有媒体の例としては、RFスペクトル等のような無線スペクトルの複数の部分が挙げられ得る。有線システムとして実装される場合、システム4000は、I/Oアダプタ、対応する有線通信媒体とI/Oアダプタを接続する物理コネクタ、ネットワークインターフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のような有線通信媒体を介して通信するのに好適な複数のコンポーネントおよびインターフェースを含み得る。有線通信媒体の複数の例としては、ワイヤ、ケーブル、金属リード線、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバ等が挙げられ得る。
プラットフォーム4900aは、情報を通信するべく1または複数の論理または物理チャネルを確立し得る。情報は、メディア情報および制御情報を含み得る。メディア情報は、ユーザ向けのコンテンツを表す任意のデータを指し得る。コンテンツの複数の例としては、例えば、音声会話、ビデオ会議、ストリーミング動画、電子メール(「eメール」)メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、画像、ビデオ、テキスト等からのデータが挙げられ得る。音声会話からのデータは、例えば、発言情報、無音期間、バックグラウンドノイズ、コンフォートノイズ、トーン等であり得る。制御情報は、自動システム向けの複数のコマンド、命令、または制御ワードを表す任意のデータを指し得る。例えば、制御情報は、システムを通じてメディア情報をルーティングし、または予め定められたようにメディア情報を処理するようノードに指示するべく用いられ得る。しかし、実施形態は、図13に示され、または説明される要素または文脈に限定されない。
上記のように、システム4000は、異なる物理的スタイルまたはフォームファクタで実施され得る。図14は、システム4000が実施され得る小さいフォームファクタデバイス5000の複数の実施形態を図示する。例えば複数の実施形態において、デバイス5000は、無線機能を有するモバイルコンピューティングデバイスとして実装され得る。例えば、モバイルコンピューティングデバイスは、処理システム、および1または複数のバッテリ等、モバイル電源または電力供給を有する任意のデバイスを指し得る。
上記のように、モバイルコンピューティングデバイスの複数の例としては、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等が挙げられ得る。
モバイルコンピューティングデバイスの複数の例としては、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シューズコンピュータ(shoe computer)、衣類コンピュータ(clothing computer)、および他のウェアラブルコンピュータ等、人により着用されるように構成された複数のコンピュータも挙げられ得る。例えば複数の実施形態において、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーション、ならびに音声通信および/またはデータ通信を実行することができるスマートフォンとして実装され得る。いくつかの実施形態は、例として、スマートフォンとして実装されるモバイルコンピューティングデバイスと共に説明され得るが、他の複数の無線モバイルコンピューティングデバイスを同様に用いる複数の他の実施形態が実装され得ることが理解され得る。これらの実施形態は、この文脈において限定されない。
図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)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、記号、またはこれらの任意の組み合わせが挙げられ得る。しかし、所与の実装に所望されるように、実施形態がハードウェア要素および/またはソフトウェア要素を用いて実装されるか否かの判断は、所望の計算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバスの速度、および他の設計または性能の制約等、任意の数の要因に応じて変わり得る。
いくつかの実施形態は、「一実施形態」または「実施形態」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、実施形態に関連して説明される特定の機能、構造、または特性が少なくとも一実施形態に含まれることを意味する。本明細書の様々な箇所において「一実施形態において」という文言が現われても、全てが同一の実施形態を必ずしも指すわけではない。更に、いくつかの実施形態は、「結合される」および「接続される」という表現を、それらの派生語と共に用いて説明され得る。これらの用語は、互いに同義語として必ずしも意図されるものではない。例えば、いくつかの実施形態は、2またはそれより多い要素が互いに直に物理的または電気的に接触することを示すべく、「接続される」および/または「結合される」という用語を用いて説明される場合がある。しかし、「結合される」という用語は、2またはそれより多い要素が互いに直に接触しないが、それでも互いに協働または相互作用することも意味する場合がある。更に、異なる複数の実施形態の複数の態様または要素が組み合わされ得る。
本開示の要約は、読者が技術的開示の本質を速やかに確認することを可能にするべく提供されていることが強調される。本開示は、特許請求の範囲または意味を解釈または限定するべく用いられるものではないとの理解に従うものと考えられる。更に、上述の詳細な説明において、様々な機能は、本開示を効率的なものにする目的で単一の実施形態に互いにグループ化されることを見て取ることができる。開示のこの方法は、特許請求される実施形態が各請求項において明示的に列挙されるものより多くの機能を必要とするとの意図を反映すると解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、開示される単一の実施形態の全ての機能よりは少ないものに存する。従って、以下の特許請求の範囲は、本明細書の詳細な説明に組み込まれ、各請求項は、別個の実施形態として独立している。添付の特許請求の範囲において、「含む」および「その中で(in which)という用語は、「備える」および「そこで(wherein)」という各用語と同等の平易な英語のとして各々用いられる。更に、「第1の」、「第2の」、「第3の」等の用語は、単に符号として用いられ、その対象に数値的要求を課することを意図しない。
上記された事柄は、開示されるアーキテクチャの複数の例を含む。勿論、複数のコンポーネントおよび/または方法論の考えられる各組み合わせを記載することは可能ではないが、当業者は、多くの更なる組み合わせおよび変形が可能であることを認識し得る。従って、新規なアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内に包含される全てのそのような変更形態、修正形態、および変形形態を含むことを意図する。ここで、詳細な本開示は、更なる実施形態に関する複数の例の提供に取り掛かる。以下に提供される複数の例は、限定的であることを意図しない。
例1において、2Dイメージを3Dモデルデータからレンダリングするためのデバイスは、シェーディングピクセルによりカバーされる2Dスクリーン画像の第1の領域内の3Dモデルから派生したスクリーン画像の第1の可視プリミティブをクリッピングして、第1の領域と第1の可視プリミティブとの交点を表す第1のポリゴンを形成するクリッピングコンポーネントと、第1の可視プリミティブの複数の頂点の少なくとも1つのアトリビュートを、第1のポリゴンの各頂点に対して補間するための第1の補間コンポーネントと、第1のポリゴンの複数の頂点の複数の色値を、スクリーン画像のスクリーンピクセルによりカバーされる第2の領域内のポイントに対して補間するための第2の補間コンポーネントとを備え、第2の領域は、第1の領域より小さく、第1の領域と少なくとも部分的に一致する。
例1の主題を含む例2において、デバイスは、2Dスクリーン画像の多数の可視プリミティブの特性に基づいて第1の領域のサイズを決定するピクセル解像度コンポーネントを備え得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例1〜2のいずれかの主題を含む例3において、ポイントは、スクリーンピクセルの中心に位置し得、シェーディングコンポーネントは、多数のポリゴンの各ポリゴンの複数の境界に対するポイントの位置に基づいて、クリッピングコンポーネントにより形成される多数のポリゴンの複数の頂点から第1のポリゴンの複数の頂点を選択し、少なくとも1つのアトリビュートを、第1のポリゴンの複数の頂点から補間し、多数のポリゴンは、第1のポリゴンを含む。
例1〜3のいずれかの主題を含む例4において、ポイントは、スクリーンピクセル内に収まるサンプルの位置と一致し得、サンプルは、第1の可視プリミティブのラスタライズにおいて使用される。
例1〜4のいずれかの主題を含む例5において、デバイスは、第1のポリゴンの複数の頂点の複数の色値を、第1のポリゴンの複数の頂点に対して補間される少なくとも1つのアトリビュートから派生させるためのシェーディングコンポーネントを備え得る。
例1〜5のいずれかの主題を含む例6において、クリッピングコンポーネントは、第1の領域内の2Dスクリーン画像の第2の可視プリミティブをクリッピングして、第1の領域と第2の可視プリミティブとの交点を表す第2のポリゴンを形成し得、第2のポリゴンは、第1のポリゴンとエッジの少なくとも一部を共有する。
例1〜6のいずれかの主題を含む例7において、第1のポリゴンの頂点は、シェーディングピクセルの境界に沿った位置を第2のポリゴンの頂点と共有し得る。
例1〜7のいずれかの主題を含む例8において、デバイスは、3Dモデルの複数のプリミティブをラスタライズして、2Dスクリーン画像において可視の多数の可視プリミティブを識別するためのラスタライズコンポーネントを備え得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例1〜8のいずれかの主題を含む例9において、ラスタライズコンポーネントは、スクリーン画像のピクセル解像度をディスプレイのピクセル解像度に設定し得る。
例1〜9のいずれかの主題を含む例10において、デバイスは、スクリーン画像を提示するためのディスプレイを備え得る。
例1〜10のいずれかの主題を含む例11において、デバイスは、スクリーン画像を表すスクリーン画像データを別のデバイスに送信するためのインターフェースを備え得る。
例12において、2Dイメージを3Dモデルデータからレンダリングするためのデバイスは、シェーディングピクセルによりカバーされる2Dスクリーン画像の領域内で3Dモデルから派生したスクリーン画像の第1の可視プリミティブおよび第2の可視プリミティブをクリッピングして、シェーディングピクセルによりカバーされる領域と第1の可視プリミティブとの交点を表す第1のポリゴンを形成し、シェーディングピクセルによりカバーされる領域と第2の可視プリミティブとの交点を表す第2のポリゴンを形成するためのクリッピングコンポーネントと、第1の可視プリミティブの複数の頂点の少なくとも1つのアトリビュートを第1のポリゴンの各頂点に対して補間し、第2の可視プリミティブの複数の頂点の少なくとも1つのアトリビュートを第2のポリゴンの各頂点に対して補間する第1の補間コンポーネントと、第1のポリゴンの複数の頂点の複数の色値をスクリーン画像の第1のスクリーンピクセルによりカバーされる領域内の第1のポイントに対して補間し、第2のポリゴンの複数の頂点の複数の色値をスクリーン画像の第2のスクリーンピクセルによりカバーされる領域内の第2のポイントに対して補間する第2の補間コンポーネントとを備え、第1のスクリーンピクセルおよび第2のスクリーンピクセルによりカバーされる複数の領域の各々は、シェーディングピクセルによりカバーされる領域と一致する。
例12の主題を含む例13において、第1のポイントは、第1のスクリーンピクセルの中心に位置し得、第2のポイントは、第2のスクリーンピクセルの中心に位置し得、第2の補間コンポーネントは、多数のポリゴンの各ポリゴンの複数の境界に対する第1のポイントの位置に基づいて、クリッピングコンポーネントにより形成される多数のポリゴンの複数の頂点から第1のポリゴンの複数の頂点を選択し、少なくとも1つのアトリビュートを、第1のポリゴンの複数の頂点から第1のポイントに対して補間し得、多数のポリゴンの各ポリゴンの複数の境界に対する第2のポイントの位置に基づいて、第2のポリゴンの複数の頂点から第2のポリゴンの複数の頂点を選択し、少なくとも1つのアトリビュートを、多数のポリゴンの複数の頂点のうちの第2のポイントに対して補間し得、多数のポリゴンは、第1のポリゴンおよび第2のポリゴンを含む。
例12〜13のいずれかの主題を含む例14において、第2の可視プリミティブは、エッジの少なくとも第1の部分を第1の可視プリミティブと共有し得る。
例12〜14のいずれかの主題を含む例15において、クリッピングコンポーネントは、第1のポリゴンおよび第2のポリゴンがエッジの少なくとも第2の部分を共有することを可能にするように、第1の可視プリミティブおよび第2の可視プリミティブをクリッピングし得る。
例12〜15のいずれかの主題を含む例16において、クリッピングコンポーネントは、第1のポリゴンの頂点がシェーディングピクセルの境界に沿った位置を第2のポリゴンの頂点と共有することを可能にするように、第1の可視プリミティブおよび第2の可視プリミティブをクリッピングし得る。
例12〜16のいずれかの主題を含む例17において、デバイスは、スクリーン画像を提示するためのディスプレイを備え得る。
例12〜17のいずれかの主題を含む例18において、デバイスは、スクリーン画像のピクセル解像度をディスプレイのピクセル解像度に設定するためのラスタライズコンポーネントを備え得る。
例12〜18のいずれかの主題を含む例19において、デバイスは、スクリーン画像を表すスクリーン画像データを別のデバイスに送信するためのインターフェースを備え得る。
例12〜19のいずれかの主題を含む例20において、デバイスは、スクリーン画像の平面の向きの表示を他のデバイスから受信するためのラスタライズコンポーネントを備え得る。
例21において、2Dイメージを3Dモデルデータからレンダリングするためのコンピュータ実装方法は、シェーディングピクセルによりカバーされる2Dスクリーン画像の第1の領域内の3Dモデルから派生したスクリーン画像の第1の可視プリミティブをクリッピングして、第1の領域と第1の可視プリミティブとの交点を表す第1のポリゴンを形成する段階と、第1の可視プリミティブの複数の頂点の少なくとも1つのアトリビュートを、第1のポリゴンの各頂点に対して補間する段階と、第1のポリゴンの複数の頂点の複数の色値を、スクリーン画像のスクリーンピクセルによりカバーされる第2の領域内のポイントに対して補間する段階とを備え、第2の領域は、第1の領域より小さく、第1の領域と少なくとも部分的に一致する。
例21の主題を含む例22において、方法は、2Dスクリーン画像の多数の可視プリミティブの特性に基づいて第1の領域のサイズを決定する段階を備え得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例21〜22のいずれかの主題を含む例23において、ポイントは、スクリーンピクセルの中心に位置し得、方法は、多数のポリゴンの各ポリゴンの複数の境界に対するポイントの位置に基づいて、クリッピングコンポーネントにより形成される多数のポリゴンの複数の頂点から第1のポリゴンの複数の頂点を選択し、少なくとも1つのアトリビュートを、第1のポリゴンの複数の頂点から補間する段階を備え得、多数のポリゴンは、第1のポリゴンを含む。
例21〜23のいずれかの主題を含む例24において、ポイントは、スクリーンピクセル内に収まるサンプルの位置と一致し得、サンプルは、第1の可視プリミティブのラスタライズにおいて使用される。
例21〜24のいずれかの主題を含む例25において、方法は、第1のポリゴンの複数の頂点の複数の色値を、第1のポリゴンの複数の頂点に対して補間される少なくとも1つのアトリビュートから派生させる段階を備え得る。
例21〜25のいずれかの主題を含む例26において、方法は、第1の領域内の2Dスクリーン画像の第2の可視プリミティブをクリッピングして、第1の領域と第2の可視プリミティブとの交点を表す第2のポリゴンを形成する段階を備え得、第2のポリゴンは、第1のポリゴンとエッジの少なくとも一部を共有する。
例21〜26のいずれかの主題を含む例27において、第1のポリゴンの頂点は、シェーディングピクセルの境界に沿った位置を第2のポリゴンの頂点と共有し得る。
例21〜27のいずれかの主題を含む例28において、方法は、ディスプレイ上にスクリーン画像を提示する段階を備え得る。
例21〜28のいずれかの主題を含む例29において、方法は、スクリーン画像を表すスクリーン画像データを別のデバイスに送信する段階を備え得る。
例21〜29のいずれかの主題を含む例30において、方法は、3Dモデルの複数のプリミティブをラスタライズして、2Dスクリーン画像において可視の多数の可視プリミティブを識別する段階を備え得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例31において、少なくとも1つの機械可読ストレージ媒体は、コンピューティングデバイスにより実行されると、コンピューティングデバイスに、シェーディングピクセルによりカバーされる2Dスクリーン画像の第1の領域内の3Dモデルから派生したスクリーン画像の第1の可視プリミティブをクリッピングして、第1の領域と第1の可視プリミティブとの交点を表す第1のポリゴンを形成し、第1の可視プリミティブの複数の頂点の少なくとも1つのアトリビュートを、第1のポリゴンの各頂点に対して補間し、第1のポリゴンの複数の頂点の複数の色値を、スクリーン画像のスクリーンピクセルによりカバーされる第2の領域内のポイントに対して補間する複数の命令を備え、第2の領域は、第1の領域より小さく、第1の領域と少なくとも部分的に一致する。
例31の主題を含む例32において、コンピューティングデバイスは、2Dスクリーン画像の多数の可視プリミティブの特性に基づいて第1の領域のサイズを決定するようにされ得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例31〜32のいずれかの主題を含む例33において、ポイントは、スクリーンピクセルの中心に位置し得、コンピューティングデバイスは、多数のポリゴンの各ポリゴンの複数の境界に対するポイントの位置に基づいて、クリッピングコンポーネントにより形成される多数のポリゴンの複数の頂点から第1のポリゴンの複数の頂点を選択し、少なくとも1つのアトリビュートを、第1のポリゴンの複数の頂点から補間するようにされ、多数のポリゴンは、第1のポリゴンを含む。
例31〜33のいずれかの主題を含む例34において、ポイントは、スクリーンピクセル内に収まるサンプルの位置と一致し得、サンプルは、第1の可視プリミティブのラスタライズにおいて使用される。
例31〜34のいずれかの主題を含む例35において、コンピューティングデバイスは、第1のポリゴンの複数の頂点の複数の色値を、第1のポリゴンの複数の頂点に対して補間される少なくとも1つのアトリビュートから派生させるようにされ得る。
例31〜35のいずれかの主題を含む例36において、コンピューティングデバイスは、第1の領域内の2Dスクリーン画像の第2の可視プリミティブをクリッピングして、第1の領域と第2の可視プリミティブとの交点を表す第2のポリゴンを形成するようにされ得、第2のポリゴンは、第1のポリゴンとエッジの少なくとも一部を共有する。
例31〜36のいずれかの主題を含む例37において、第1のポリゴンの頂点は、シェーディングピクセルの境界に沿った位置を第2のポリゴンの頂点と共有し得る。
例31〜37のいずれかの主題を含む例38において、コンピューティングデバイスは、ディスプレイ上にスクリーン画像を提示するようにされ得る。
例31〜38のいずれかの主題を含む例39において、コンピューティングデバイスは、スクリーン画像を表すスクリーン画像データを別のデバイスに送信するようにされ得る。
例31〜39のいずれかの主題を含む例40において、コンピューティングデバイスは、スクリーン画像のピクセル解像度をディスプレイのピクセル解像度に設定するようにされ得る。
例31〜40のいずれかの主題を含む例41において、コンピューティングデバイスは、3Dモデルの複数のプリミティブをラスタライズして、2Dスクリーン画像において可視の多数の可視プリミティブを識別するようにさせられ得、多数の可視プリミティブは、第1の可視プリミティブを含む。
例42において、少なくとも1つの機械可読ストレージ媒体は、コンピューティングデバイスにより実行されると、コンピューティングデバイスに上記のいずれかを実行させる複数の命令を備え得る。
例43において、2Dイメージを3Dモデルデータからレンダリングするためのデバイスは、上記のいずれかを実行するための手段を備え得る。