(57)【要約】  グラフィックオブジェクトのレンダリングに関する技法が開示される。いくつかの実施形態では、グラフィックスユニットは、第２の空間の異なる部分についての異なる変換パラメータに従って、仮想空間から第２の空間にグラフィックオブジェクトを変換するように構成される。これにより、異なるサンプリングレートで仮想空間の異なる部分のサンプリングをもたらすことができ、それにより、レンダリングプロセスの様々な段階で必要とされるサンプリング数を低減することができる。開示する技法では、変換はラスタ化及びシェーディング前に起こってもよく、これにより、グラフィックスユニットにおける計算及び電力消費を更に低減でき、ユーザに表示される画像品質を改善でき、かつ／又はネットワーク上の映像コンテンツの帯域幅使用若しくは待ち時間を減らすことができる。いくつかの実施形態では、変換された画像を、歪曲補償レンズを通して閲覧してもよいし、表示前にリサンプリングしてもよい。【選択図】図５
2020535521.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス回路を備え、
仮想空間内のプリミティブの座標を含むプリミティブデータを受信し、
１つ以上の座標変換に関連付けられた変換パラメータを受信し、
前記受信した変換パラメータを記憶し、
前記プリミティブのラスタ化の前に、第２の空間の異なる部分には異なる変換パラメータを用いることを含めて、前記仮想空間内のプリミティブの座標を、前記記憶された変換パラメータに基づいて前記第２の空間内のプリミティブの座標に変換し、
前記第２の空間内の前記プリミティブの座標に基づいて前記プリミティブをラスタ化してフラグメントデータを生成し、前記変換中の前記異なる変換パラメータの使用により前記仮想空間の異なる部分は異なるサンプルレートでサンプリングされ、
前記フラグメントデータの少なくとも一部を処理して、画素属性を決定する、
ように構成されたグラフィックス回路を備える、装置。
【請求項２】
前記第２の空間の前記異なる部分について前記異なる変換パラメータを指定するように、グラフィックスプログラムによってプログラム可能なレジスタ回路を更に備える、請求項１に記載の装置。
【請求項３】
前記第２の空間の前記異なる部分には異なるリサンプリングレートを用いて、表示空間内に表示するための前記フラグメントデータをリサンプリングするように構成されたリサンプリング回路を更に備える、請求項１に記載の装置。
【請求項４】
前記仮想空間内の前記プリミティブの座標を前記第２の空間内の前記プリミティブの座標に変換することにより導入された歪曲を除去するように構成された１つ以上のレンズを更に備える、請求項１に記載の装置。
【請求項５】
前記異なる変換パラメータは、１つ以上の倍率及び１つ以上のオフセットを含む、請求項１に記載の装置。
【請求項６】
前記変換パラメータは、前記仮想空間内の座標のセットを前記第２の空間内のそれぞれの座標のセットに変換する関数への入力を指定する、請求項１に記載の装置。
【請求項７】
視線方向を受信し、
前記受信した視線方向に少なくとも部分的に基づいて、１つ以上の変換パラメータを決定するように構成されたグラフィックス回路を更に備える、請求項１に記載の装置。
【請求項８】
グラフィックス回路が閲覧可能領域の外側に位置するプリミティブデータに対してフラグメントデータを生成しないように、前記第２の空間内のプリミティブデータを間引くように構成されたグラフィックス回路を更に備える、請求項１に記載の装置。
【請求項９】
前記仮想空間内の１つ以上のプリミティブのためのバウンディングボックスを決定し、
前記仮想空間内の前記バウンディングボックスの座標を前記第２の空間内の変換されたバウンディングボックスの座標に変換し、
前記第２の空間の前記１つ以上の部分のうちのどれが前記変換されたバウンディングボックスと交わるかを判定するように構成されたグラフィックス回路を更に備え、
前記プリミティブのうちの少なくとも１つは、その変換されたバウンディングボックスが交わる前記第２の空間の部分に対してのみ処理される、請求項１に記載の装置。
【請求項１０】
前記仮想空間内の１つ以上のシャドウマップの座標を、前記第２の空間内の１つ以上のシャドウマップの座標に変換するように構成され、前記変換は、前記仮想空間内の前記１つ以上のシャドウマップの異なる部分が異なるサンプルレートを有するように、前記第２の空間内の前記１つ以上のシャドウマップの異なる部分に対して異なる変換パラメータを使用するグラフィックス回路を更に備える、請求項１に記載の装置。
【請求項１１】
１つ以上のグラフィックスフレームに対する変換パラメータの１つ以上のセットを指定するように構成されたグラフィックス回路を更に備える、請求項１に記載の装置。
【請求項１２】
前記第２の空間の単一の部分に対する変換パラメータの１つ以上のセットを指定し、異なるセットは異なる次元に対応するように構成されたグラフィックス回路を更に備える、請求項１に記載の装置。
【請求項１３】
仮想空間内のプリミティブの座標を含むプリミティブデータを受信することと、
１つ以上の座標変換に関連付けられた変換パラメータを受信することと、
前記受信した変換パラメータを記憶することと、
前記プリミティブのラスタ化の前に、第２の空間の異なる部分には異なる変換パラメータを用いて、前記仮想空間内のプリミティブの座標を、前記記憶された変換パラメータに基づいて前記第２の空間内のプリミティブの座標に変換することと、
前記第２の空間内の前記プリミティブの座標に基づいて前記プリミティブをラスタ化してフラグメントデータを生成し、前記変換中の前記異なる変換パラメータの使用により前記仮想空間の異なる部分は異なるサンプルレートでサンプリングされ、
前記フラグメントデータの少なくとも一部を処理して、画素属性を決定することと、を含む、方法。
【請求項１４】
前記第２の空間の前記異なる部分には異なるリサンプリングレートを使用して、表示空間内に表示するために前記フラグメントデータをリサンプリングすることを更に含む、請求項１３に記載の方法。
【請求項１５】
視線方向を受信することと、
前記受信した視線方向に少なくとも部分的に基づいて、１つ以上の変換パラメータを決定することと、を更に含む、請求項１３に記載の方法。
【請求項１６】
前記変換パラメータとして使用するための１つ以上の倍率及び１つ以上のオフセットを指定することを更に含む、請求項１３に記載の方法。
【請求項１７】
前記変換パラメータは、前記仮想空間内の座標のセットを前記第２の空間内のそれぞれの座標のセットに変換する関数への入力を指定する、請求項１３に記載の方法。
【請求項１８】
ハードウェア統合回路の少なくとも一部分の設計を指定する設計情報が半導体製造システムに認識されるフォーマットで記憶された非一時的コンピュータ可読記憶媒体であって、前記設計情報を使用して前記設計に従った回路を製造するために仮想空間内のプリミティブの座標を含むプリミティブデータを受信し、
グラフィックス回路を含み、
１つ以上の座標変換に関連付けられた変換パラメータを受信し、
前記受信した変換パラメータを記憶し、前記プリミティブのラスタ化の前に、
第２の空間の異なる部分には異なる変換パラメータを用いて、前記仮想空間内のプリミティブの座標を、前記記憶された変換パラメータに基づいて前記第２の空間内のプリミティブの座標に変換し、
前記第２の空間内の前記プリミティブの座標に基づいて前記プリミティブをラスタ化してフラグメントデータを生成し、前記変換中の前記異なる変換パラメータの使用により前記仮想空間の異なる部分は異なるサンプルレートでサンプリングされ、
前記フラグメントデータの少なくとも一部を処理して画素属性を決定するように構成されたグラフィックス回路を含む、非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記異なる変換パラメータは１つ以上の回転係数を含む、請求項１８に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記設計情報は、前記回路が、表示空間内に表示するための前記フラグメントデータをリサンプリングするように構成されたリサンプリング回路を更に備えることを指定する、請求項１８に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概してグラフィックスプロセッサに関し、より具体的には、グラフィックスオブジェクトをレンダリングする技法に関する。
【背景技術】
【０００２】
グラフィックスプロセッサ（ＧＰＵ）は、多くの場合、セルラー電話、ウェアラブルデバイスなどのモバイルデバイスに含まれるので、電力消費及びプロセッサ領域は重要な設計上の懸念である。最新のグラフィックスプロセッサは、より高速、より少ない電力消費、及び／又はより少ない処理ハードウェアによるグラフィックスオブジェクトのレンダリングを促進する多数の技法を採用している。一例として、グラフィックス処理は、多くの場合、異なるグラフィック要素（例えば、画素又は頂点）に対して並行して同じ命令を実行することを含む。更に、グラフィックス命令の同じグループは、多くの場合、（例えば、異なるグラフィックス要素に対して、又は異なる回で同じグラフィックス要素に対して、特定の機能を実行するために）複数回実行されるため、処理されるグラフィック要素の数は、グラフィックスプロセッサ内の計算時間、電力消費、及びハードウェアの要求を押し上げる。
【０００３】
一般的に、頂点タスク及び画素タスクがグラフィックス処理のかなりの部分を占める。頂点処理は、画像を表現するためのポリゴンの使用を伴い、頂点はポリゴンを規定する。頂点処理の出力は、典型的にはラスタ化され、画素／フラグメントシェーダによって操作されるフラグメント情報を生成して、ディスプレイに出力するための画素データを生成する。処理された頂点及び／又は画素データの量を低減することにより、典型的には、グラフィックスユニットの性能を向上させ、かつ／又は電力消費を減らす。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態に係る、異なる空間の間のグラフィックスプリミティブの例示的な変換を示すブロック図である。
【図２Ａ】例示的なグラフィックス処理フローを示すブロック図である。
【図２Ｂ】グラフィックスユニットの一実施形態を示すブロック図である。
【図３】いくつかの実施形態に係る変換及びラスタ化段階を含む例示的なパイプラインを示すブロック図である。
【図４】いくつかの実施形態に係る、仮想空間内の座標の第２の空間内の座標への例示的な変換を示す図である。
【図５】いくつかの実施形態に係る、変換パラメータを記憶するように構成された例示的なデータ構造を示す図である。
【図６】いくつかの実施形態に係る、変換により仮想空間の異なる部分の異なるサンプリングレートをもたらす例示的な状況を示す図である。
【図７】いくつかの実施形態に係る、第２の空間への変換、並びに第２の空間を表示空間にリサンプリングすることによってもたらされる例示的な歪みを示す図である。
【図８Ａ】いくつかの実施形態に係る、簡略化したバウンディングボックスを含む仮想空間内の例示的な画像を示す。
【図８Ｂ】いくつかの実施形態に係る、簡略化したバウンディングボックスを含む、第２の空間への変換後の第２の空間内の例示的な画像を示す。
【図９Ａ】いくつかの実施形態に係る、例示的な等角度レンダリング技法を図式的に示す。
【図９Ｂ】いくつかの実施形態に係る、例示的な等角度レンダリング技法を図式的に示す。
【図９Ｃ】いくつかの実施形態に係る、例示的な等角度レンダリング技法を図式的に示す。
【図９Ｄ】いくつかの実施形態に係る、例示的な等角度レンダリング技法を図式的に示す。
【図１０】いくつかの実施形態に係る、マルチ空間レンダリングのための例示的な方法を示すフロー図である。
【図１１】グラフィックスユニットを含むデバイスの一実施形態を示すブロック図である。
【図１２】いくつかの実施形態に係る、例示的なコンピュータ可読媒体を示すブロック図である。
【０００５】
本開示が特定の一実施態様を指すことを意図しておらず、むしろ、添付の請求項を含む、本開示の趣旨内に入る幅広い実施形態を指すことを意図していることを示すために、本明細書は様々な実施形態への言及を含む。特定の機能、構造、又は特性は、本開示と一貫したいずれかの適切な方式で組み合わされてもよい。
【０００６】
本開示内で、（「ユニット」、「回路」、他の構成要素などと様々に呼ばれることがある）様々な実在物は、１つ以上のタスク又は動作を実施するように「構成されている（configured）」ものとして記述又は主張されることがある。［１つ以上のタスクを実施する］ように構成されている［実在物］というこの表現は、本明細書では構造（すなわち、電子回路など、物理的なもの）を指すために使用される。より具体的には、この表現は、この構造が動作中に１つ以上のタスクを実施するように配置されたことを示すために使用される。構造は、構造が現在動作していない場合でも、何らかのタスクを実施する「ように構成されている」と述べられることがある。「フラグメントデータを処理するように構成されたシェーダ回路」は、例えば、当該回路が現在のところ使用されていない（例えば、回路に電源が接続されていない）場合であっても、動作している間、この機能を実行する回路に及ぶことを意図している。このように、何らかのタスクを実施する「ように構成されている」ものとして記述又は説明される実在物は、デバイス、回路、タスクを実現するように実行可能なプログラム命令を記憶したメモリなど、物理的なものを指す。この句は、本明細書では無形のものを指すためには使用されない。
【０００７】
「〜ように構成されている」という用語は、「〜ように構成可能な」を意味することを意図していない。例えば、プログラムされていないＦＰＧＡは、何らかの特定の機能を実行する「ように構成可能」であり得るが、機能を実行する「ように構成されている」とは見なされないであろう。適切なプログラミングの後に、ＦＰＧＡは、その時には機能を実行するように構成され得る。
【０００８】
添付の請求項において、ある構造が１つ以上のタスクを実行する「ように構成されている」と説明することは、請求項要素について米国特許法第１１２条（ｆ）を援用しないことを明示的に意図している。したがって、出願された本出願中の請求項のいずれも、ミーンズプラスファンクション要素を有するものとして解釈されることを意図していない。出願人が審査過程中に１１２条（ｆ）を援用することを望む場合、それは、［機能を実行する］「ための手段」という構成体を使用して請求項要素を説明することになる。
【０００９】
本明細書で使用する「〜に基づいて」という用語は、判定に影響を及ぼす１つ以上の要因を記述するために使用される。この用語は、追加の要因が判定に影響を及ぼすことがある可能性を除外しない。すなわち、判定は、指定された要因のみに基づくか、又は、指定された要因並びに他の指定されていない要因に基づき得る。「Ｂに基づいてＡを判定する」という語句を検討する。この語句により、Ｂは、Ａを判定するために使用されるか、又はＡの判定に影響を及ぼす要因であることが特定される。この語句は、Ａの判定が、Ｃなど、何らかの他の要因にも基づき得ることを除外しない。この句は、ＡがＢのみに基づいて決定される実施形態をも網羅することを意図している。本明細書で使用する「〜に基づいて」という句は、「〜に少なくとも部分的に基づいて」という句と同義である。
【００１０】
更に、本明細書で用いる場合、用語「第１」、「第２」、「第３」などには必ずしも要素間の順序付け（例えば、時間）の意味が含まれているわけではない。例えば、「第１」のグラフィックス動作及び「第２」のグラフィックス動作への言及には、これらの動作の間の時間関係を制約する言い回しがない限り、グラフィックス動作の順序付けの意味は含まれない。簡単に言えば、「第１」、「第２」などの言及は説明及び添付の請求項における言及を簡単にするための標示として用いる。
【発明を実施するための形態】
【００１１】
グラフィックスプリミティブの変換
【００１２】
図１は、グラフィックスユニットによって利用される異なる空間の間におけるグラフィックスプリミティブの変換を示す図である。本明細書で使用するとき、用語「空間」は、座標系（例えば、デカルト、円筒、球面）に従って画定される１つ以上の次元を指す。例えば、仮想シーン空間は３次元であってもよいが、シーンの視点に基づいて、表示のために２次元スクリーン空間にマッピングされてもよい。本明細書で使用するとき、用語「プリミティブ」は、グラフィックスユニットが取り扱うように構成されている、例えば、線、三角形、他の種類のポリゴン、曲線など、シンプルな幾何学的オブジェクトを指す。本明細書において、三角形が様々な実施例で論じられるが、他の実施形態で使用されるプリミティブの形状を制限することを意図するものではない。
【００１３】
いくつかの実施形態では、仮想空間１１０は、グラフィックスプリミティブを含む１つ以上の次元のシーンに対応する。いくつかの実施形態では、仮想空間１１０を使用して、例えば、シェーダの外部のプログラム又はプロセスからグラフィックシェーダが受信する、プリミティブの座標に基づいて、プリミティブデータを整理することができる。仮想空間１１０は、グラフィックスディスプレイにレンダリングするための任意の数のグラフィックスプリミティブを含んでもよい。いくつかの実施形態では、プリミティブデータ又は頂点データを操作する特定の種類のグラフィックス処理動作は、仮想空間１１０の座標を用いて、実行される（例えば、テッセレーション、照明など）。仮想空間１１０内のグラフィックスプリミティブは、仮想空間１１０内の空間座標、並びにプリミティブに関連付けられた追加のデータ（例えば、プリミティブの不透明度、プリミティブに関連付けられた１つ以上のテクスチャなど）に基づいて画定されてもよい。
【００１４】
図１に示す実施形態では、グラフィックスユニットは、仮想空間１１０内のプリミティブの座標を第２の空間１２０内のプリミティブの座標に変換する。いくつかの実施形態では、変換（平行移動と呼ばれる場合もある）は、シーンを「ワープ」するので、仮想空間の異なる部分は異なるサンプリングレートでサンプリングされる。したがって、第２の空間は、ワープ空間と呼ばれることがある。これにより、必要とされるシェーダ処理を仮想空間のアンダーサンプリング部分について低減することができ、これにより、性能を向上させ、かつ／又は電力消費を低減させることができる。いくつかの実施形態では、グラフィックスユニットは、第２の空間の異なる部分に対して異なる変換パラメータを使用してもよい。例えば、第２の空間１２０の１つの部分において、プリミティブを、（仮想空間１１０に対して）ｘ次元で３ｘだけ縮小でき、第２の空間１２０の別の部分では、プリミティブを、ｙ次元において２ｘだけ縮小できる。いくつかの実施形態では、仮想空間１１０から第２の空間１２０への画像の変換により、画像の一部又は全部が歪むことがある（例えば、画像内の様々なプリミティブの相対サイズは、変換により変化する）。
【００１５】
いくつかの実施形態では、グラフィックスユニットは、プリミティブをラスタ化し、第２の空間１２０内でラスタ化により（すなわち、変換後に）得られるフラグメントデータをシェードする。変換後に均一なサンプルレートで第２の空間１２０をラスタ化することにより、異なるレートで仮想空間１１０の異なる部分を効果的にサンプリングすることができ、仮想空間内の異なるサンプリングレートは、異なる変換パラメータに対応する。ラスタ化は、第２の空間内のプリミティブの座標に基づいて、フラグメントデータを生成することができる。例えば、正方形のプリミティブは、仮想空間１１０内の座標（０，０）、（０，２）、（２，２）、（２，０）から第２の空間１２０内の座標（０，０）、（０，１）、（１，１）、（１，０）への変換であってもよく、整数座標当たりの画素を適用するラスタ化は、第２の空間１２０の正方形の４つの角のそれぞれに対して１つのフラグメントを生成し得る（仮想空間座標が使用されていた場合には正方形を覆う９つのフラグメントを生成するのに対して）。本例では、グラフィックスユニットは、仮想空間１１０内の９つのフラグメントではなく、第２の空間１２０内の４つのフラグメントをシェーディングして、同じプリミティブを表すことになる。以下に、図６及び図７を参照して、この概念のより詳細な例を論じる。
【００１６】
いくつかの実施形態では、表示空間１３０は、レンダリングされたグラフィックス画像がユーザに表示される（又は表示のために送信される）空間である（例えば、表示するために画面に送信されるグラフィックスフレーム）。表示空間１３０の他の例としては、ホログラフィック及び立体ディスプレイなどの３Ｄディスプレイが挙げられる。従来より、グラフィックスプロセッサは、仮想空間１１０内のプリミティブをラスタ化することによって、表示空間１３０に表示するための画像を作成してもよい。図１に示す実施形態では、対照的に、第２の空間１２０内の画像のラスタ化及びシェーディングは、第２の空間１２０で発生する）。いくつかの実施形態では、第２の空間１２０内の画像は、修正せずに表示されてもよい（すなわち、第２の空間１２０と表示空間１３０は同一である）。他の実施形態では、リサンプリング又はレンズ歪曲は、第２の空間１２０内の画像を表示空間１３０に変換することができる。例えば、レンズを通して第２の空間１２０内の画像を閲覧すると、第２の空間への変換によって導入された歪みが補正され得るので、ユーザは表示空間１３０内で歪んでいない画像を閲覧できる。（例えば、フレームバッファに記憶された）レンダリングされた画像は、一部の実施形態では、更なる処理のために、ＧＰＵパイプラインにフィードバックされてもよく、それは、他の空間への変換を含み得ることに留意されたい。
【００１７】
本開示における様々な実施形態は、１Ｄ空間、２Ｄ空間、及び３Ｄ空間に関して仮想空間、第２の空間、及び表示空間を説明するが、仮想空間１１０、第２の空間１２０及び表示空間１３０は、グラフィックスプリミティブと、グラフィックスプリミティブの特性を記述する関連データ（例えば、テクスチャ、深さ、照明、不透明度など）を含む任意の数の次元を含んでもよい。第２の空間内で様々なグラフィックスレンダリングプロセスを実行することは、性能を向上させ、グラフィックスユニットの電力消費を低減し、ユーザに表示される画像品質を改善し、かつ／又はネットワーク上のビデオコンテンツの帯域幅使用若しくは待ち時間を低減する、という利点を有することができる。図２Ａ〜図２Ｂは、より一般的な文脈でグラフィックスレンダリングプロセス及び例示的なグラフィックスユニットの概要を紹介し、残りの図は、例示的なワープ空間のレンダリング技法に関する更なる詳細を提供する。
グラフィックス処理の概要
【００１８】
図２Ａを参照すると、グラフィックスデータを処理するための例示的な処理フロー２００を説明するフロー図が示されている。一実施形態では、変換及び照明工程２１０は、規定された光源位置、反射率などに基づいて、アプリケーションから受信した頂点の照明情報を処理すること、頂点をポリゴン（例えば、三角形）に組み立てること、及び／又はポリゴンを、３次元空間内の位置に基づいた正しい大きさ及び向きに変換することを伴い得る。クリップ工程２１５は、閲覧可能領域の外側にあるポリゴン又は頂点を廃棄することを伴い得る。ラスタ化工程２２０は、各ポリゴン内にフラグメントを規定し、例えば、ポリゴンの頂点のテクスチャ座標に基づいて、各フラグメントに対して初期色値を割り当てることを伴い得る。フラグメントは、フラグメントが重なり合う画素の属性を指定することができるが、実際の画素属性は、（例えば、フレームバッファ内の）複数のフラグメントを組み合わせること、及び／又は１つ以上のフラグメントを無視すること（例えば、フラグメントが他のオブジェクトによって覆われている場合）に基づいて決定されてもよい。シェード工程２３０は、照明、影、バンプマッピング、半透明性などに基づいて画素構成要素を変更することを伴い得る。シェーディングされた画素は、フレームバッファ２３５内で組み立てられてもよい。最新のＧＰＵは、典型的には、アプリケーション開発者によるシェーディング工程及び他の処理工程のカスタマイズを可能にするプログラム可能なシェーダを含む。したがって、様々な実施形態において、図２Ａの例示的な工程は、様々な順序で実行されてもよいし、並行して実行されてもよいし、省略されてもよい。追加の処理工程もまた実施されてもよい。図２Ａに示していないが、本明細書において様々な実施形態に関して論じる変換工程は、ラスタ化前の処理フロー２００に含まれてもよい。変換工程は、頂点座標を新たな座標系に変換することと、ラスタ化工程２２０でラスタ化されたフラグメント量を減少させるように頂点データを修正することを伴い得る。
【００１９】
ここで図２Ｂを参照すると、グラフィックスユニット２５０の一実施形態を説明する簡略化したブロック図が示されている。図示した実施形態では、グラフィックスユニット２５０は、プログラム可能なシェーダ２６０、頂点パイプ２８５、フラグメントパイプ２７５、テクスチャ処理ユニット（ＴＰＵ）２６５、画像書き込みユニット２７０、及びメモリインタフェース２８０を含む。いくつかの実施形態では、グラフィックスユニット２５０は、複数の実行パイプライン又はインスタンスを用いてグラフィックスデータを並行して処理するように構成され得る、プログラム可能なシェーダ２６０を用いて、頂点データ及びフラグメントデータの両方を処理するように構成される。
【００２０】
図示する実施形態において、頂点パイプ２８５は、頂点データを処理するように構成された様々な固定機能ハードウェアを含み得る。頂点パイプ２８５は、頂点処理を調整するために、プログラム可能なシェーダ２６０と通信するように構成されてもよい。図示した実施形態では、頂点パイプ２８５は、更なる処理のために、処理されたデータを、フラグメントパイプ２７５及び／又はプログラム可能なシェーダ２６０に送信するように構成されている。
【００２１】
図示する実施形態におけるフラグメントパイプ２７５は、画素データを処理するように構成された様々な固定機能ハードウェアを含み得る。フラグメントパイプ２７５は、フラグメント処理を調整するために、プログラム可能なシェーダ２６０と通信するように構成されてもよい。フラグメントパイプ２７５は、頂点パイプ２８５及び／又はプログラム可能なシェーダ２６０からのポリゴンにラスタ化を実行して、フラグメントデータを生成するように構成されてもよい。頂点パイプ２８５及び／又はフラグメントパイプ２７５は、グラフィックスデータにアクセスするために、メモリインタフェース２８０に連結されてもよい（連結は図示されていない）。
【００２２】
図示する実施形態において、プログラム可能なシェーダ２６０は、頂点パイプ２８５から頂点データを受信し、フラグメントパイプ２７５及び／又はＴＰＵ２６５からフラグメントデータを受信するように構成されている。プログラム可能なシェーダ２６０は、頂点データの様々な変換及び／又は調整を含み得る、頂点データに対する頂点処理タスクを実行するように構成されてもよい。図示した実施形態におけるプログラム可能なシェーダ２６０は、また、例えば、テクスチャリング及びシェーディングなどの画素データに対するフラグメント処理タスクを実行するように構成される。プログラム可能なシェーダ２６０は、データを並行して処理するために複数の実行インスタンスを含んでもよい。
【００２３】
図示する実施形態において、ＴＰＵ２６５は、プログラム可能なシェーダ２６０からのフラグメント処理タスクをスケジュールするように構成されている。いくつかの実施形態では、ＴＰＵ２６５は、テクスチャデータを事前にフェッチし、（例えば、メモリインタフェース２８０を介して）プログラム可能なシェーダ２６０による更なる処理のために初期の色をフラグメントに割り当てるように構成される。ＴＰＵ２６５は、例えば、正規化された整数形式又は浮動小数点形式のフラグメント構成要素を提供するように構成されてもよい。いくつかの実施形態では、ＴＰＵ２６５は、プログラム可能なシェーダ２６０内の４つの実行パイプラインのグループによって処理されるように２×２フォーマットの４つのグループ（「フラグメントクワッド」）のフラグメントを提供するように構成される。
【００２４】
いくつかの実施形態において、画像書き込みユニット（ＩＷＵ）２７０は、画像の処理済みタイルを記憶するように構成され、レンダリングされた画像に対して、表示のために又は記憶のためのメモリに転送される前に動作を実行することができる。いくつかの実施形態では、グラフィックスユニット２５０は、タイルベースのレンダリングを実行するように構成される。タイルベースのレンダリングでは、スクリーン空間の異なる部分（例えば、画素の正方形又は矩形）を、別々に処理することができる。メモリインタフェース２８０は、様々な実施形態において、様々なメモリ階層のうちの１つ以上との通信を容易にすることができる。
【００２５】
様々な実施形態では、プログラム可能なシェーダ２６０などのプログラム可能なシェーダは、様々な適切な構成のいずれかで、グラフィックスユニット内の他のプログラム可能な要素及び／又は固定機能要素に連結されてもよい。図２Ｂの例示的な実施形態は、例示の目的のためのグラフィックスユニット２５０の１つの可能な構成を示す。
フラグメントパイプの概要
【００２６】
図３は、いくつかの実施形態に係る、例示的なフラグメントパイプ２７５を示すブロック図である。図示する実施形態では、フラグメントパイプ２７５は、パラメータフェッチ回路３１０、変換回路３２０、スキャンコンバータ３３０、ソート回路３４０及び画素データマスタ３５０を含む。図示する実施形態では、フラグメントパイプ２７５の様々な要素は、プログラム可能なシェーダ２６０と通信するように構成されている。
【００２７】
図示する実施形態において、パラメータフェッチ回路３１０は、タイル及び処理されている現在のタイルの頂点データ３０５を受信するように構成されている。これは、例えば、様々なキャッシュレベル、共有メモリ構造などを含み得る、例えば、グラフィックスメモリ階層の１つ以上の要素を介して取得されてもよい。頂点データは、処理されているタイルと交わるプリミティブのリスト内の各プリミティブの頂点の座標を指定することができる。グラフィックスプリミティブの頂点データは、プリミティブの視覚的特性又は他の特性（例えば、テクスチャ、照明、不透明度など）を記述するデータを含んでもよい。データ３０５はまた、頂点情報を処理されているタイルと関連付ける、かつ／又は処理されるタイルを記述する様々な情報を含んでもよい。
【００２８】
図示する実施形態において、変換回路３２０は、頂点データを仮想空間から第２の空間に変換するように構成されている。頂点データは、頂点の座標を指定することができ、そして、変換回路３２０における処理後、第２の空間内の頂点の座標は、仮想空間内の頂点の座標とは異なり得る。いくつかの実施形態では、変換回路３２０は、グラフィックスユニット２５０内の他の位置（例えば、頂点パイプ２８５）に実装されてもよく、その場合、フラグメントパイプ２７５内のパラメータフェッチ回路３１０は、第２の空間に関連付けられた（すなわち、変換された）タイル及び頂点データ３０５を受信することになる。いくつかの実施形態では、変換回路３２０は、スキャンコンバータ３３０が頂点データをラスタ化し、フラグメントデータを生成する前に（例えば、図２Ａのラスタ化工程２２０の前に）頂点データを変換する。これにより、本来、仮想空間内でオーバーサンプリングされていた可能性があるタイルの処理の複雑さ（例えば、ラスタ化された画素数）を低減することによって、性能を向上させることができる。
【００２９】
いくつかの実施形態では、変換回路３２０は、異なるタイルに対しては異なる変換パラメータを使用するように構成され、パラメータは、グラフィックスプログラムによって、又はデフォルト値を用いて、タイル毎に指定されてもよい。
【００３０】
図示する実施形態において、スキャンコンバータ３３０は、ラスタ化を実行し、頂点データに基づいてフラグメントデータを生成するように構成されている。用語「フラグメント」は、十分に理解された意味に従って解釈されるように意図されており、フラグメントデータは、所与のプリミティブに基づいて、画素をシェーディングするのに必要なデータ（例えば、フラグメントのためにプログラム可能なシェーダ２６０によって実行される１つ以上のシェーダプログラムの参照、フラグメントの座標など）と、フラグメントが、対応する画素の属性に寄与するように生き残るかどうかを試験するために必要なデータ（深さ、α、ステンシル、ハサミ、窓ＩＤなど）、を指定することができる。いくつかのレンダリングモードでは、フラグメントデータは、フラグメント／画素当たりの複数のサンプルに対するデータを含んでもよい。フラグメントデータは、様々なレベルの粒度（granularity）のうちの１つ以上で指定されてもよい（例えば、フラグメントデータは、サンプル毎に記憶されてもよいし、フラグメント毎、オブジェクト毎に、タイル毎などに集約されてもよい）。いくつかの実施形態では、複数のフラグメントからのデータを使用して、例えば、１つのフラグメントが部分的に透明である場合に、特定の画素の属性を決定することができる。
【００３１】
図示する実施形態におけるソート回路３４０は、１つ以上のタイルバッファ（単数又は複数）３３５を含み、現在視認可能なフラグメントをシェーディングされるまで追跡するように構成される。例えば、レンダリングされているシーン内のスクリーンに近い不透明オブジェクトによって覆われているフラグメントのデータが、視認可能ではないと判定されて、タイルバッファ３３５から廃棄されてもよい。これらのオクルージョン技法は、様々な実施形態において、プログラム可能なシェーダ１６０によって必要とされる処理を減らすことができる。いくつかの実施形態では、ソート回路３４０は、処理されているタイル毎に別個のタイルバッファを含み、これにより、複数のタイルのレンダリングを並行して行うことを可能にし得る。更に、フラグメントパイプ２７５の複数のインスタンスが所与のグラフィックスユニット内に含まれてもよく、並列処理のためのリソースを更に増加させることができる。本明細書で使用するとき、フラグメントデータの「オクルージョン」とは、フラグメントデータがグラフィックスデータのフレーム内の画素属性に実際に寄与しないと判定される状況を指す。例えば、フラグメントデータが、レンダリングされているシーン内の別のオブジェクトの後ろにあるオブジェクトのためのものであり、他方のオブジェクトが不透明であるときにオクルージョンが生じる。
【００３２】
図示する実施形態における画素データマスタ３５０は、例えば、タイルバッファ（単数又は複数）３３５のコンテンツをシェーディングするために、シェーダ作業をプログラム可能なシェーダ２６０に送信するように構成されている。画素データマスタ３４０は、いくつかの実施形態では、様々なイベントに応じて、シェーディングのためにタイルバッファ３３５のコンテンツの全部又は一部分をフラッシュするように構成され得る。いくつかの実施形態では、グラフィックスユニット２５０は複数のデータマスタを含み、それらは、頂点作業をプログラム可能なシェーダ２６０に送信するように構成された頂点データマスタと、計算作業をプログラム可能なシェーダ２６０に送信するように構成された計算データマスタと、を含み得る。いくつかの実施形態では、プログラム可能なシェーダ２６０は、プログラム可能なシェーダ２６０内のハードウェアリソースを、様々なデータマスタからの作業に割り当てるように構成されたスケジューリング回路を含む。
仮想空間から第２の空間への例示的な変換
【００３３】
図４は、いくつかの実施形態に係る、仮想空間画像の第２の空間画像への例示的な１−Ｄ変換を示す図である。図４は、第２の空間の異なる部分に対して異なる変換パラメータを使用することが有用であり得る例示的なシナリオを表す。しかし、開示する技法は、そのようなシナリオに限定されるものではなく、様々な実施形態において様々な種類の変換機能が実装されてもよい。
【００３４】
いくつかの実施形態では、仮想空間１１０は、頂点変換後空間（post-vertex-transform space）である。例えば、仮想空間１１０は、プログラム又はプロセスからグラフィックスユニットが受信した３Ｄモデルから導出される頂点データを含んでもよい。図示した実施形態では、異なる変換パラメータが、第２の空間の異なる部分に使用される。例えば、仮想０から仮想２の部分を３対１の倍率で部分ワープ０に変換し、仮想７の一部及び仮想８の一部を１対１の倍率でワープ４に変換するので、ワープ０内の仮想部分当たりのフラグメント／画素は、ワープ４内の仮想部分当たりのフラグメント／画素の３分の１である。
【００３５】
図示した実施形態では、画像全体のサイズは、１次元で２分の１に縮小される（仮想空間４１０は、ラスタ化後で５１２個の画素からなる画像を含み、第２の空間４２０は、ラスタ化後で２５６個の画素からなる画像を含む）。いくつかの実施形態では、仮想空間内のプリミティブの座標の第２の空間内のプリミティブの座標への変換は、ラスタ化の前に発生してもよく、変換により、その後にラスタ化されるプリミティブの頂点座標を変化させる。
【００３６】
いくつかの実施形態では、仮想空間の複数の部分又は一部が、第２の空間の単一の部分に変換されてもよい。一例として、図示した実施形態では、複数の仮想空間部分（仮想０から仮想２）が単一の第２の部分（ワープ０）に変換され、異なる仮想空間部分（仮想７及び仮想８）の一部が単一の第２の部分（ワープ４）に変換される。
【００３７】
いくつかの実施形態では、仮想空間部分を分離する境界にわたって位置するプリミティブは、全体が第２の空間の単一の部分内に収まることができる（例えば、図４の仮想１及び仮想２の境界にわたって位置するプリミティブは、全体がワープ０内に収まる）。いくつかの実施形態では、仮想空間の単一の部分に全体が収まっているプリミティブが、変換後は第２の空間部分間を分離する境界を越えてもよい（例えば、図４の仮想５内に収まるプリミティブは、変換後にワープ１とワープ２との間の境界を越えてもよい）。
【００３８】
いくつかの実施形態では、仮想空間４１０の全ての部分が、又は仮想空間４１０内の全てのプリミティブが、第２の空間４２０内に変換されるとは限らない。図示した実施形態では、グラフィックスユニットは、部分仮想１５内の境界４１５の外側に位置するプリミティブをワープ７内に変換しない。同様に、プリミティブの一部しか第２の空間４２０に変換されない場合がある（例えば、境界４１５の両側に頂点を含むプリミティブの場合）。いくつかの実施形態では、グラフィックスレンダリングプロセスは、第２の空間４２０への変換後、間引く又はクリップする工程を含んでもよい。本明細書で使用するとき、「間引く（cull）」は、当該技術分野において十分に理解された意味に従って使用され、それは、グラフィックス処理工程からプリミティブを除外することを含む。本明細書で使用するとき、「クリップ」は、当該技術分野において十分に理解された意味に従って使用され、これは、データを除去又はプリミティブから再配列し、新しいプリミティブを作成することを含む。いくつかの実施形態では、グラフィックスユニットは、（閲覧可能領域の外側にあるプリミティブを間引くことに加えて）変換後にスモールオブジェクトの間引きを実行してもよく、それにより、変換された十分に小さいプリミティブをシーンから除去する。プリミティブの不必要な変換を回避するために、グラフィックスユニットは、頂点データを仮想空間４１０から第２の空間４２０に変換する前にプリミティブを間引くことができる。グラフィックスユニットは、頂点データを仮想空間４１０から第２の空間４２０に変換する前又は後に、プリミティブをクリップすることができる。
変換パラメータを記憶するための例示的なデータ構造
【００３９】
図５は、いくつかの実施形態に係る、第２の空間の異なる部分に対する異なる変換パラメータを含むデータ構造を示す図である。いくつかの実施形態では、これらのデータ構造は、専用ハードウェアレジスタを用いて実装される。図示した実施形態では、データ構造５００は、表５１０Ａ〜５１０Ｚを含む。図示した実施形態における表５１０Ａ〜５１０Ｚは、変換パラメータを含む。図示のように、表５１０Ａは、第２の空間（例えば、ワープ空間）の第１の部分（例えば、タイル）に関連付けられた変換パラメータの第１のセットを含み、表５１０Ｚは、第２の空間の第２の部分に関連付けられた変換パラメータの第２のセットを含む。
【００４０】
いくつかの実施形態では、変換パラメータは、仮想空間内の座標のセットを第２の空間内の座標のそれぞれのセットに変換する関数への入力（例えば、式の係数）を指定することができる。いくつかの実施形態では、変換パラメータは、仮想空間内の座標のセットを第２の空間内の座標のそれぞれのセットに変換する関数の種類（例えば、線形又は二次関数）を指定することができる。グラフィックスユニットは、いくつかの実施形態では、異なる関数を指定するために任意の数の変換パラメータを使用してもよい。変換パラメータの別の例は回転値であり、それは、いくつかの実施形態において、完全な射影変換を促進し得る。より一般的には、射影変換は、マトリックス、例えば、２次元射影変換のための３×３行列を利用することができる。別の例としては、仮想空間内のプリミティブが拡大縮小されるだけでなく、第２の空間への変換中にミラーリングされるように、負の倍率を適用してもよい。別の例として、グラフィックスユニットは、射影変換を用いて、仮想空間の一部分内の個々のサンプル／画素／クワッド（quad）を、第２の空間内の異なる場所にマッピングすることができる。様々な実施形態では、第２の空間の部分の変換パラメータはプログラム可能であってもよい。いくつかの実施形態では、変換パラメータは、変換パラメータを直接指定するグラフィックスプログラムにおけるユーザ入力又は命令に基づいて直接プログラムされてもよい。いくつかの実施形態では、変換パラメータは、ユーザ又はグラフィックスプログラムが指定する、より一般的な基準に基づいてプログラムされてもよい。
【００４１】
様々な実施形態では、異なる表５１０Ａ〜５１０Ｚは、第２の空間の異なる部分に対して変換パラメータを別々に指定するために使用される。いくつかの実施形態では、データ構造５００は、固有の変換を必要とする第２の空間内の部分の数に基づく変換パラメータを含む、多かれ少なかれ固有の表を利用することができる。いくつかの実施形態では、第２の空間の部分は同じ大きさであってもよい。例えば、第２の空間の各部分は、３２画素×３２画素の正方形タイルであってもよい。他の実施形態では、第２の空間の異なる部分は、異なる大きさであってもよい。例えば、画像の中心付近の部分は、８画素×８画素を含んでもよく、画像の縁部付近の部分は、６４画素×６４画素を含んでもよい。いくつかの実施形態では、部分は様々な非正方形形状であってもよい。例えば、第２の空間の１つ以上の部分は、１６画素×３２画素を含んでもよい。異なる部分の大きさ及び／又は形状が、異なる実施形態で使用されてもよい。第２の空間の部分は、多数のグラフィックス処理命名法に従ってラベル付けされてもよい（例えば、タイル、スライス、ブロック、サブタイル、サブスライス、サブブロック）。
【００４２】
いくつかの実施形態では、１つ以上の表は、第２の空間の２つ以上の部分と関連付けられてもよい。例えば、６４個の正方形タイルに分割された第２の空間では、表５１０Ａの１セットの変換パラメータが１６個のタイルに適用されてもよく、表５１０Ｚの別の異なるセットの変換パラメータが４個のタイルに適用されてもよい。いくつかの実施形態では、１つ以上の表は、第２の空間の単一の部分に関連付けられてもよい。いくつかの実施形態では、グラフィックスユニット１５０は、どの表（単数又は複数）がどのタイル（単数又は複数）の変換パラメータを記憶するかを示すメタデータを記憶するように構成される。
【００４３】
図示した実施形態では、データ構造５００は、変換パラメータとして使用するための倍率及びオフセットを含む。例えば、図示した実施形態では、表５１０Ａのｘ１次元は、倍率２とオフセット０．５を指定する。図示した実施形態では、倍率２は、（変換前のサンプリングに対して）仮想空間のサンプリングレートの半減をもたらすことができ、オフセット０．５は、仮想空間におけるサンプリングを開始する場所を示すことができる。いくつかの実施形態では、変換パラメータは、第２の空間の複数の部分にわたる区分的に連続な関数を達成するためのオフセットを含んでもよい。いくつかの実施形態では、第２の空間の様々な部分のオフセットは、共通基準点を参照して定義されてもよい。いくつかの実施形態では、倍率及びオフセット（又は変換パラメータとして使用される任意の他の関数）は、ラスタ化後の画素コンテンツを参照して定義されてもよい。他の実施形態では、倍率及びオフセット（又は変換パラメータとして使用される任意の他の関数）は、座標系を参照して定義されてもよい。いくつかの実施形態では、座標系は、様々なプリミティブの頂点の座標を定義する同じ座標系であってもよい。
【００４４】
データ構造５００は、いくつかの実施形態では、第２の空間の異なる次元に対する変換パラメータの異なるセットを含んでもよい。一例として、データ構造５００は、ユーザの左眼及び右眼に対する異なる変換パラメータを指定することができる。図示した実施形態では、表５１０Ａは、第２の空間の一部分におけるｘ１，ｘ２及びｙ次元のそれぞれについての異なる倍率及びオフセットを含む。ｘ１次元に対する変換パラメータは左眼に適用してもよく、ｘ２次元に対する変換パラメータは右目に適用してもよい。異なる次元の異なる変換パラメータを指定する技法は、立体的若しくは層状レンダリングにおいて、又は複数のレンダリングパスの実行において一般的に優位性を提供することができ、レンダリングされたグラフィックスフレームにおいて一定の効果を達成することができる。いくつかの実施形態では、データ構造５００は、（例えば、頂点座標以外の）第２の空間に関連付けられた異なるデータに対する異なる変換パラメータを含んでもよい。例えば、変換パラメータを使用して、異なるタイルに対して不透明度又はテクスチャデータを異なるように処理することができる。
【００４５】
いくつかの実施形態では、データ構造５００は、第２の空間内の複数の画像又はフレームに使用される変換パラメータを含んでもよい。グラフィックスユニットがデータ構造５００内の変換パラメータを更新せずに、映像コンテンツを第２の空間に変換できるように、例えば、データ構造５００は、第２の空間内の複数のフレームに対する変換パラメータを含んでもよい。他の実施形態では、データ構造５００は、第２の空間内の画像又はフレームの単一のインスタンスに対する変換パラメータを含んでもよい（例えば、パラメータは、映像データの処理中の異なるフレーム間で更新されてもよい）。いくつかの実施形態では、１つ以上のプロセッサは、使用条件（例えば、ユーザ位置、ディスプレイの種類）又はシーンのコンテンツ若しくは特性（例えば、カメラ又は光位置）に基づいて変換パラメータを更新するために、データ構造５００に書き込むことができる。例えば、第２の空間がユーザから最も注目を受ける画像の領域において高解像度を維持するように、グラフィックスユニットは、ユーザの視線方向に関する情報を受信する際に、データ構造５００内の変換パラメータを更新することができる。いくつかの実施形態では、グラフィックスユニットは、シーン内容が変化する際に、第２の空間の特定の領域においてより高い又はより低い解像度を達成するために、データ構造５００内の変換パラメータを更新してもよい。別の例として、シーン内のカメラ位置が変化する際に、画像の異なる部分がカメラから近くなる、又は遠くになるように、グラフィックスユニットは、データ構造５００内の変換パラメータを更新してもよい。
【００４６】
いくつかの実施形態では、第２の空間の異なる部分に対して異なる変換パラメータを指定するために、データ構造５００は、グラフィックスプログラムによってプログラム可能であってもよい。いくつかの実施形態では、データ構造５００は、様々なキャッシュレベル、共有メモリ構造などを含み得るグラフィックスメモリ階層の１つ以上の要素として実装されてもよい。
サンプリングレートに対する変換の例示的な効果
【００４７】
図６は、いくつかの実施形態に係る、第２の空間の異なる部分に対して異なる変換パラメータによって生じ得る仮想空間の異なる部分に対する異なるサンプリングレートを示す図である。図示した実施形態において、例示的な同一のプリミティブ６０５及び６１５は、仮想空間内で同じサイズを有するが、平行移動後、第２の空間の異なる部分（それぞれＡ及びＢ）に配置される。仮想空間から第２の空間への平行移動中、図示する実施形態では、グラフィックスユニットは、プリミティブ６０５及びプリミティブ６１５に、それらが第２の空間の異なる部分にマッピングされていることに基づいて、異なる平行移動パラメータを適用する。図示するように、平行移動によりプリミティブ６０５は、２倍縮小され、プリミティブ６１５は、２．５倍縮小される。
【００４８】
図示した実施形態では、第２の空間に示されるフラグメント座標は、仮想空間内に示されるサンプル座標に対応する（したがって、仮想空間におけるサンプル位置の座標は、第２の空間内のフラグメントの座標に変換される）。図示する実施形態では、プリミティブ６０５は、その適用された平行移動パラメータがより小さい倍率を使用するため、プリミティブ６１５よりも高い解像度でサンプリングされる。別の言い方をすれば、仮想空間の面積当たりの第２の空間内のフラグメントの数は、２．５：１平行移動の場合よりも２：１平行移動の場合のほうが大きい。図６に示すように、異なるサンプルレートを用いて仮想空間の部分をサンプリングするために、仮想空間内の同じ大きさを有するプリミティブは、第２の空間内で異なるサイズを有する場合があり、これによって画像の部分がワープして見える場合がある。図示した実施形態では、フラグメントデータは、平行移動によってもたらされる異なるサンプリングレートを反映する。いくつかの実施形態では、平行移動したプリミティブがラスタ化された時点で、仮想空間の異なる部分のフラグメントデータにおける異なるサンプルレートが平行移動によってもたらされ得る。
【００４９】
いくつかの実施形態では、プリミティブ６０５及び６１５は、ディスプレイ上で同じサイズとなるが、異なる解像度を有する。いくつかの実施形態では、第２の空間内の画像は、平行移動によって導入された歪曲を除去するように、画像の異なる部分に異なる拡大率を適用するレンズを通して閲覧されてもよい。いくつかの実施形態では、平行移動パラメータは、画像の表示を閲覧するために使用されるレンズに基づいてプログラムされてもよい（例えば、広視野仮想現実ディスプレイは既知の種類のレンズを使用する）。いくつかの実施形態では、ユーザが閲覧する画像に歪曲がほとんど、あるいは全く含まれないよう、平行移動パラメータは、レンズによって導入された歪みを打ち消す歪みを導入するようにプログラムされてもよい。
【００５０】
いくつかの実施形態では、第２の空間の部分は、例えば、第２の空間への平行移動によって生じる歪曲を低減又は排除するために、表示前にリサンプリングされてもよい。いくつかの実施形態では、第２の空間の表示空間へのリサンプリングは、第２の空間の異なる部分に対して異なるリサンプリングレートを使用してもよい。いくつかの実施形態では、第２の空間の異なる部分についての異なるリサンプリングレートは、第２の空間の異なる部分についての異なる平行移動パラメータに基づいてもよい。第２の空間内の画像のリサンプリングにより、いくつかの実施形態では、（例えば、図６のプリミティブ６０５及び６１５が平行移動及びリサンプリング後に同じ大きさになるように）画像を仮想空間から第２の空間に平行移動することにより、導入される拡大縮小又は歪曲を除去することができる。いくつかの実施形態では、リサンプリングされた画像は、画像全体にわたって均一なサンプリングレートを有してもよい。他の実施形態では、リサンプリングされた画像は、異なる部分において異なるサンプリングレートを有してもよい。いくつかの実施形態では、ワープ平行移動後に第２の空間内でより少ない画素をラスタ化し、シェーディングすることによるパフォーマンス上の利点は、表示のために第２の空間をリサンプリングすることによるパフォーマンス上のいかなる不利益にも勝っている場合がある。リサンプリングによれば、仮想空間画像と同じ解像度で同じシーン内容を有する画像を表示しつつ、第２の空間の画像を従来のレンダリング方法（例えば、図２Ａで論じるもの）及びグラフィックスハードウェア（例えば、図２Ｂで論じるもの）を用いてレンダリングすることが可能となり得る一方、グラフィックスプロセッサによる計算、待ち時間、及び／又は電力消費を減らすことができる。換言すれば、ラスタ化前にワープ平行移動を実行することにより、シェーダプログラムをワープ技法を考慮せずに書くことを可能となり、実際に実行されるシェーディングを考慮する必要なしに、平行移動、リサンプリング、及び／又はレンズパラメータの選択を行うことができる。
変換及び歪曲
【００５１】
図７は、いくつかの実施形態による、変換からもたらされる歪み及び例示的な（例えば、シェーディング後の）補正リサンプリングを示す図である。図示した実施形態において、同一のプリミティブ７０５及び７１５は、仮想空間内で同じ大きさを有している。第２の空間への変換中、図示した実施形態では、グラフィックスユニットは、プリミティブ７０５にｙ次元の倍率２（及びｘ次元の倍率１）を適用し、プリミティブ７１５にはｘ次元の倍率２（及びｙ次元の倍率１）を適用する。両方の場合においてｘ次元とｙ次元に異なる倍率が適用されたため、第２の空間内のプリミティブの画像は、仮想空間内の元のプリミティブに対して歪曲されている。
【００５２】
図示するように、仮想空間内のプリミティブの座標を第２の空間内のプリミティブの座標に平行移動することにより、仮想空間内の画像に対して第２の空間内の画像に歪曲が導入され得る。図７に示す実施形態は、線形歪曲を示しているが、歪曲は、様々な他の非線形関数のいずれかによっても導入され得る。上記に論じたように、いくつかの実施形態では、平行移動された画像にレンズを適用して表示前に歪曲を除去してもよい。
【００５３】
いくつかの実施形態では、異なる次元に対して異なる平行移動パラメータを使用すると、異なる次元に対する仮想空間において異なるサンプリングレートがもたらされ得る。図７に示すように、ｙ次元において倍率２で平行移動したプリミティブ７０５は、仮想空間のｘ次元においてより高い密度でサンプリングされ、ｘ次元において倍率２で平行移動したプリミティブ７１５は、仮想空間のｙ次元においてより高い密度でサンプリングされる。図６に関して上記に論じたように、平行移動したプリミティブは、表示前にリサンプリングされてもよい。図７に示す実施形態では、例えば、平行移動したプリミティブ７０５は、ｙ次元において２ｘのレートでリサンプリングされてもよく、プリミティブ７１５は、ｘ次元において２ｘのレートでリサンプリングされてもよい。図示した実施形態では、平行移動され、リサンプリングされたプリミティブ７０５及び７１５は、平行移動後のリサンプリングされたプリミティブが仮想空間内におけるときと同じ大きさになるように、同じ解像度で表示されてもよい。
【００５４】
図８Ａ〜図８Ｂはそれぞれ、いくつかの実施形態に係る、仮想空間における、及びワープ平行移動後の第２の空間における例示的な画像を示す。図示するように、仮想空間画像８０５は、全て同じ大きさである１５×２０個の正方形部分を含む。図示した実施形態における第２の空間画像８１５は同様に、１５×２０個の正方形部分を含む。図示する実施形態では、シーン内容は仮想空間から第２の空間への平行移動中にシフトし得る。例えば、仮想空間８０５内の行１０の上部付近に位置する水平線は、第２の空間画像８１５内の行１１の上部にシフトすることに留意されたい。同様に、仮想空間画像８０５内の行６〜１０及び列Ｇ〜Ｍに含まれる「ＯｐｅｎＧＬ」記号は、第２の空間画像８１５内の行５〜１１及び列Ｅ〜Ｏまで拡張する。第２の空間画像８０５の全画像サイズは、仮想空間画像８１５の全画像サイズよりも小さくなり得る。いくつかの実施形態では、平行移動パラメータ（例えば、オフセット及び倍率）を使用して、どのプリミティブが第２の空間内のどのタイルと重複するかを決定することができる（したがって、これらのタイルのシェーディングについて考慮すべきである）。
【００５５】
いくつかの実施形態では、グラフィックスユニット１５０は、部分（例えば、タイル、その場合、プリミティブは、タイルに対して処理される必要がない）と交わらないことが分かっているプリミティブを大まかに除くための「バウンディングボックス」技法を使用するように構成される。例えば、三角形のプリミティブの場合、矩形バウンディングボックスを使用して、Ｘ及びＹ次元におけるプリミティブの最も遠い点を線で描くことができる。バウンディングボックスを使用して、タイル毎にどのプリミティブを考慮すべきかを決定することができ、次いで、それは平行移動後にタイルに対してラスタ化される。異なるタイルに対して異なる平行移動パラメータを有するいくつかの実施形態では、バウンディングボックスをプリミティブと同様に平行移動する必要があり得る。
【００５６】
図８Ａ〜図８Ｂはまた、プリミティブバウンディングボックスの概念を示す。なお、「ＯｐｅｎＧＬ」記号を用いたこれらの図は、実際にはプリミティブではないとしても（むしろ、多くのプリミティブを用いて表される）、例示目的の一例であることに留意されたい。図示した実施形態では、仮想空間画像８０５内の「ＯｐｅｎＧＬ」記号は、バウンディングボックス８１０内に含まれ、第２の空間８１５内の「ＯｐｅｎＧＬ」記号は、平行移動したバウンディングボックス８２０内に含まれる。図示するように、平行移動パラメータをバウンディングボックス８１０に適用すると、平行移動したバウンディングボックス８２０が得られる。いくつかの実施形態では、グラフィックスユニット１５０は、バウンディングボックスの平行移動に対する平行移動パラメータとプリミティブの平行移動に対する平行移動パラメータを別々に記憶するように構成される。
【００５７】
したがって、いくつかの実施形態では、グラフィックスユニットは、仮想空間内の１つ以上のプリミティブに対するバウンディングボックスを決定し、次いで、バウンディングボックスの座標を第２の空間に平行移動することができる。バウンディングボックスは、（例えば、あたかも図８Ａ〜図８Ｂの「ＯｐｅｎＧＬ」記号が単一のプリミティブであり、又は「Ｏｐｅｎ  ＧＬ」記号内の全てのプリミティブが共通グループに割り当てられたかのように）１つのプリミティブ又は１グループのプリミティブをバウンドすることができる。いくつかの実施形態では、グラフィックスユニットは、平行移動したバウンディングボックスを第２の空間の１つ以上の部分と比較して、第２の空間のどの部分が平行移動したバウンディングボックスと交わるかを判定することができる。グラフィックスユニットは、平行移動されたバウンディングボックスと交わる第２の空間の部分のみに対して、バウンディングボックス内に含まれる１つ以上のプリミティブを処理（例えば、ラスタ化又は平行移動）することができる。いくつかの実施形態では、所与のプリミティブを、第２の空間の２つ以上の部分に対する異なる平行移動パラメータを用いて平行移動してもよい。例えば、グラフィックスユニットは、シーン内容を仮想画像８０５から行５〜１１及び列Ｅ〜Ｏの外側に位置する第２の空間画像８１５の部分に平行移動する場合は、バウンディングボックス８２０に含まれるプリミティブを考慮しないが、シーン内容を行５〜１１及び列Ｅ〜Ｏ内に位置する第２の空間画像８１５の部分に平行移動する場合は、これらのプリミティブを考慮するであろう。これは、有利なことに、第２の空間内の部分のそれぞれについて処理される頂点データの量を制限することによって計算を低減することができる。
タイル毎の変換パラメータを用いた例示的なシャドウマッピング
【００５８】
いくつかの実施形態では、開示したワープ変換技法を、様々な他の例示的なアプリケーションの中で、シャドウマッピングに適用してもよい。本明細書で使用するとき、用語「シャドウマッピング」は、当該技術分野における十分に理解された意味に従って使用され、それは、（例えば、物体が光源を遮蔽し、光源からの光の影をもたらす領域とは対照的に）光源と相互作用したシーンはどの部分かを決定する技法を含む。いくつかの実施形態では、異なる変換パラメータをシャドウマップの異なる部分に適用することにより、シャドウマップの異なる部分に対して異なる解像度を使用することができる。いくつかの実施形態では、変換パラメータは、異なる解像度で仮想空間内のシャドウマップの異なる部分をサンプリングするようにプログラム可能であってもよい。例えば、ライトビューを仮想スクリーン空間にレンダリングすることができ、カメラにより近い影は、高解像度でワープ空間に変換することができるが、カメラから遠い影は、低解像度でワープ空間に変換することができる（カメラの位置に加えて又はその代わりに、ワープ空間の異なる部分に対して変換パラメータを決定する様々な技法を使用することができる）。これにより、複数のシャドウマップの必要性を取り除き、かつ／又は影のアイリアシングを更に低減するなど、従来のシャドウマッピング方法（例えば、投射シャドウマップ、カスケードシャドウマップ、光空間投射シャドウマップなど）を超える利益、又は従来のシャドウマッピング方法と併せての改良を提供することができる。いくつかの実施形態では、異なる変換パラメータを異なる光源に対して使用することができる。
追加の等角度レンダリングの例
【００５９】
図９Ａ〜図９Ｄは、いくつかの実施形態に係る等角度レンダリングを図式的に示す。特に、図９Ａ及び図９Ｂは従来の直線レンダリングを示し、図９Ｃ及び図９Ｄは等角度レンダリングを示す。
【００６０】
図９Ａは、従来の直線投影法を用いたフレーム９００をサンプリングするための視点からの発射光線を示す。直線投影法において、光線は、視点から３Ｄ仮想空間内に等距離ｄで発射されてフレーム９００をサンプリングする。次いで、サンプリングされたフレームをレンダリングアプリケーションによってレンダリングして、表示のための画像を生成する。図９Ｂに示すように、直線投影法は、ディスプレイ９０２にわたって同じ解像度９０４を有する画像を生成する。ユーザがディスプレイ９０２の中心を見ているときに良好なディテールを提供するように距離ｄを選択することができる。しかし、人間の眼９９２は、特定の角度分解能９９４でしかディテールを分解できない。図９Ｂに見られるように、ユーザがディスプレイ９０２の縁部に向かって見ているとき、画像解像度は、眼の角度解像度９９４よりも高い。したがって、直線投影法は、画像の縁部に向かってオーバーサンプリングする傾向がある。このことは特にワイドＦＯＶディスプレイに当てはまる。
【００６１】
図９Ｃは、等角投影法を用いて第２の空間フレーム９１０をサンプリングするための視点からの発射光線を示す。等角投影法において、仮想空間フレーム９００は、第２の空間フレーム９１０内に平行移動され、光線は、第２の空間フレーム９１０をサンプリングするために等しい角度Ａで視点から３Ｄ空間内に発射される。いくつかの実施形態では、仮想空間フレーム９００内のプリミティブの座標の第２の空間フレーム９１０への平行移動は、ラスタ化又はサンプリングの前に起こり得る。これは、（例えば、処理された画素又はフラグメントの数を低減することによって、かつ／又はラスタ化プロセスを遅らせることでリサンプリングの必要性を取り除くことによって）計算を低減し、レンダリング速度を増加させ、かつ／又は電力消費を低減するという利点を有し得る。
【００６２】
いくつかの実施形態では、第２の空間フレーム９１０は、ディスプレイ９０２上で閲覧するための表示空間内に平行移動される。いくつかの実施形態では、表示空間への平行移動は、ラスタ化の前に起こり得る。これは、有利なことに、ラスタ化されたフラグメント又は画素の数を低減することで計算を低減することができる。光線は、表示空間フレームをサンプリングするために、等しい角度Ａで視点から３Ｄ空間内に発射されてもよく、又は他の実施形態では、表示空間フレームは、均一な直線的なサンプリングレートでサンプリングされてもよい。次いで、サンプリングされたフレームをレンダリングアプリケーションによってレンダリングして、表示のための画像を生成する。図９Ｄに示すように、等角投影法は、ディスプレイ９０２の中心でより高い解像度を有し、ディスプレイ９０２の縁部に向かってより低い解像度を有する画像を生成する。図９Ｄに見られるように、ユーザがディスプレイ９０２の縁部に向かって見ているとき、ディスプレイ９０２の縁部は、ディスプレイの中心よりも眼９９２の瞳孔から遠いため、縁部におけるより低い画像解像度は、ディスプレイ９０２の中心において提供されるものと同様の解像度を提供し、直線投影法のように眼の角度解像度９９４に対してオーバーサンプリングされない。
【００６３】
等角度レンダリング方法は、解像度を低減し、それによってフレームをレンダリングするのに要する時間を低減し、これにより、待ち時間を低減し、またネットワーク又は他の通信リンクを介して送信されるフレームに対して送信される必要のあるビット数も低減し、これにより、帯域幅使用及び待ち時間を低減する。等角度レンダリング技法は、本明細書で論じるワープ平行移動技法の一つの非限定的使用例である。以下に更に詳細に説明するように、ユーザの視線の方向などの追跡に基づいて、同様の技法を複数の次元で使用することができる。
例示的なフォービエイテッドレンダリング技法
【００６４】
いくつかの実施形態で使用され得る別の技法は、フォービエイテッド（foveated）レンダリングと呼ばれる場合があり、ユーザからより少ない注目しか受けない領域内のフレームの解像度を低減するために使用することができ、それにより、計算、電力消費、帯域幅使用及び待ち時間を低減する。フォービエイテッドレンダリング方法では、グラフィックスユニットは、視線追跡カメラからの（例えば、１つ以上の画像内でキャプチャされた）視線追跡情報を使用して、ユーザが現在見ている方向（視線方向と呼ばれる）を特定することができる。人間の眼は、網膜の周辺領域よりも、中心窩（fovea）において高い解像度を知覚することができる。中心窩に対応するフレームの領域（フォービエイテッド領域と呼ばれる）は、決定された視線方向及び既知のパラメータ（例えば、眼のパラメータ及び眼からディスプレイまでの距離）から推定することができる。フォービエイテッド領域は、より高い解像度でレンダリングされてもよいが、フォービエイテッド領域の外側のフレーム（周辺領域と呼ばれる）は、より低い解像度でレンダリングされてもよい。いくつかの実施形態では、フレームは、異なるサンプリングレートでフォービエイテッド領域と周辺領域をレンダリングするために、第２の空間に変換され得る。いくつかの実施形態では、異なる変換パラメータが、フォービエイテッド領域と周辺領域に適用されてもよく、それにより、２つの領域が異なるレートでサンプリングされる（例えば、フォービエイテッド領域と周辺領域は、図５に関して上記に論じたものなど、異なる変換パラメータを使用するスクリーンの異なる部分を含む）。他の実施形態では、周辺領域は、より高い解像度でレンダリングされ、その後に、例えば、周辺領域にフィルタ（例えば帯域通過フィルタ）を適用することによって、より低い解像度に変換されてもよい。いくつかの実施形態では、フォービエイテッドレンダリング方法は、レンダリングされた画像内の画素数を低減し、これにより、フレームデータを送信する無線又は他のネットワークリンクを介して送信される必要のあるビット数を低減するので、帯域幅使用及び待ち時間を低減する。
【００６５】
いくつかの実施形態では、開示するワープ空間レンダリング技法は、シェーダプログラムを変更せずに、フォービエイテッドレンダリングを実行することを可能にし得る。例えば、ＧＰＵドライバは、視線追跡情報を受信し、シェーダプログラムに対して透明な方式で、視線追跡情報に基づいて、異なるフレームに対する変換パラメータを実装することができる。これにより、グラフィックス開発者のプログラミング負担を増加させずに性能を向上させることができる。
例示的な方法
【００６６】
図１０は、いくつかの実施形態に係るマルチ空間レンダリングのための例示的な方法１０００を示すフロー図である。図１０に示す方法は、デバイスの内でもとりわけ、本明細書で開示するコンピュータシステム、デバイス、要素又は構成要素のいずれかと共に使用することができる。様々な実施形態では、図示の方法要素の一部は、同時に実行してもよく、図示のものとは異なる順序で実行してもよく、又は省略してもよい。要望に応じて、追加の方法要素も実行されてもよい。
【００６７】
１０１０において、図示する実施形態では、グラフィックス回路（例えば、グラフィックスユニット２５０）は、仮想空間内のプリミティブの座標を含むプリミティブデータを受信する。いくつかの実施形態では、グラフィックス回路は、グラフィックス回路の外部のプログラム又はプロセスからプリミティブデータを受信する。いくつかの実施形態では、グラフィックス回路は、メモリからプリミティブデータを読み出す。いくつかの実施形態では、仮想空間内のプリミティブの座標を使用して、プリミティブが表示されたシーン内でレンダリングされる場所を決定する。
【００６８】
図示する実施形態では、１０２０において、グラフィックス回路は、１つ以上の座標変換に関連付けられた変換パラメータを受信する。いくつかの実施形態では、変換パラメータは、仮想空間内の座標のセットを第２の空間内のそれぞれの座標のセットに変換する関数を指定することができる。いくつかの実施形態では、グラフィックス回路は、第２の空間の異なる部分に対する異なる変換パラメータを受信する。いくつかの実施形態では、変換パラメータは、座標変換で使用するための倍率及びオフセットを指定することができる。いくつかの実施形態では、受信した変換パラメータは、特定の基準（例えば、ファイルサイズ、画像解像度、性能基準など）を達成するように指定されてもよい。
【００６９】
図示する実施形態では、１０３０において、グラフィックス回路は、受信した変換パラメータを記憶する。例えば、グラフィックスユニットは、データ構造５００内に変換パラメータを記憶し、メモリインタフェース２８０を介してレンダリングする際に使用する変換パラメータを読み出すことができる。いくつかの実施形態では、グラフィックス回路は、第２の空間の異なる部分に対する異なる変換パラメータを記憶してもよい。いくつかの実施形態では、グラフィックス回路は、第２の空間の異なる次元に対する変換パラメータの異なるセットを記憶してもよい。いくつかの実施形態では、グラフィックス回路は、異なるグラフィックスフレームに対する変換パラメータの異なるセットを記憶してもよい。いくつかの実施形態では、グラフィックス回路は、使用環境又はレンダリングされているグラフィックスデータの変化に応じて、記憶された変換パラメータを更新してもよい。例えば、グラフィックス回路は、シーン内のカメラビューの変化に基づいて、又は映像コンテンツを閲覧するユーザの視線方向の変化に基づいて、変換パラメータを更新することができる。記憶された変換パラメータは、いくつかの実施形態では、グラフィックス回路が、外部プログラム又はプロセスからの情報の受信に応じて、記憶された変換パラメータを更新するように、プログラム可能であってもよい。
【００７０】
１０４０において、図示した実施形態では、グラフィックス回路（例えば、変換回路３２０）は、プリミティブのラスタ化前に、第２の空間の異なる部分に対する異なる変換パラメータを用いて、仮想空間内のプリミティブの座標を第２の空間内のプリミティブの座標に変換する。仮想空間及び第２の空間の異なる部分は、１つ以上のサイズ及び形状であってもよい。第２の空間へのプリミティブの変換は、仮想空間画像との比較において、第２の空間画像に歪曲を導入し得る（例えば、変換中に、プリミティブの相対的なサイズが変化し得る）。仮想空間内のプリミティブの座標を第２の空間内のプリミティブの座標に変換することは、いくつかの実施形態では、１つ以上のプリミティブに対して頂点座標を含む頂点データを更新することを含んでもよい。いくつかの実施形態では、変換により、仮想空間画像とは（画素又は座標で表される）異なる大きさの第２の空間画像が得られる場合がある。
【００７１】
１０５０において、図示した実施形態では、グラフィックス回路（例えば、スキャンコンバータ３３０）は、第２の空間内のプリミティブの座標に基づいてプリミティブをラスタ化して、フラグメントデータを生成し、変換中に異なる変換パラメータを使用することにより、仮想空間の異なる部分を異なるサンプリングレートでサンプリングさせる。仮想から第２の空間への変換中に異なる変換パラメータ（例えば、拡大縮小パラメータ）を使用することにより、ラスタ化中における、仮想空間の異なる部分の異なるサンプリングレートによるサンプリングをもたらすことができる。例えば、同じサンプリングレートを、第２の空間の２つの部分（仮想空間から拡大縮小されていない第１の部分とサイズが２分の１に縮小された第２の部分）に適用することにより、仮想空間の１つの部分には仮想空間の別の部分の２倍のサンプリングをもたらすことができる。
【００７２】
図示した実施形態では、１０６０において、グラフィックス回路（例えば、プログラム可能なシェーダ２６０）は、フラグメントデータの少なくとも一部を処理して、画素属性を決定する。画素／フラグメントシェーダは、ラスタ化されたデータ上の操作により、画素属性（例えば、色、テクスチャなど）を決定することができる。
例示的なデバイス
【００７３】
次に図１１を参照すると、デバイス１１００の例示的な実施形態を示すブロック図が示されている。いくつかの実施形態では、デバイス１１００の要素は、システムオンチップ内に含まれてもよい。いくつかの実施形態では、デバイス１１００は、バッテリ駆動され得るモバイルデバイスに含まれてもよい。したがって、デバイス１１００による電力消費は重要な設計考慮事項であり得る。図示した実施形態では、デバイス１１００は、ファブリック１１１０、コンピュートコンプレックス１１２０、入力／出力（Ｉ／Ｏ）ブリッジ１１５０、キャッシュ／メモリコントローラ１１４５、グラフィックスユニット２５０、及びディスプレイユニット１１６５を含む。いくつかの実施形態では、デバイス１１００は、ビデオプロセッサエンコーダ及びデコーダ、画像処理要素又は認識要素、コンピュータビジョン要素などの図示した構成要素に加え、かつ／又はその代わりに、他の構成要素（図示せず）を含んでもよい。
【００７４】
ファブリック１１１０は、様々な相互接続、バス、ＭＵＸ、コントローラなどを含んでもよく、デバイス１１００の様々な要素間の通信を容易にするように構成されてもよい。いくつかの実施形態では、ファブリック１１１０の部分は、様々な異なる通信プロトコルを実装するように構成されてもよい。他の実施形態では、ファブリック１１１０は単一の通信プロトコルを実装してもよく、ファブリック１１１０に連結される要素は単一の通信プロトコルからその他の通信プロトコルに内部で変換してもよい。
【００７５】
図示する実施形態では、コンピュートコンプレックス１１２０は、バスインタフェースユニット（ＢＩＵ）１１２５、キャッシュ１１３０、並びにコア１１３５及びコア１１４０を含む。様々な実施形態では、コンピュートコンプレックス１１２０は、様々な数のプロセッサ、プロセッサコア及び／又はキャッシュを含んでもよい。例えば、コンピュートコンプレックス１１２０は、１、２又は４個のプロセッサコア、又は任意の他の好適な数を含んでもよい。一実施形態では、キャッシュ１１３０は、セットアソシエイティブＬ２キャッシュである。いくつかの実施形態では、コア１１３５及び／又は１１４０は、内部命令及び／又はデータキャッシュを含み得る。いくつかの実施形態では、ファブリック１１１０、キャッシュ１１３０、又はデバイス１１００内の他の場所のコヒーレンシユニット（図示せず）は、デバイス１１００の様々なキャッシュ間のコヒーレンシを維持するように構成されてもよい。ＢＩＵ１１２５は、コンピュートコンプレックス１１２０とデバイス１１００の他の要素との間の通信を管理するように構成されてもよい。コア１１３５及びコア１１４０などのプロセッサコアは、オペレーティングシステム命令及びユーザアプリケーション命令を含み得る特定の命令セットアーキテクチャ（ＩＳＡ）の命令を実行するように構成されてもよい。
【００７６】
キャッシュ／メモリコントローラ１１４５は、ファブリック１１１０と１つ以上のキャッシュ及び／又はメモリとの間のデータの転送を管理するように構成されてもよい。例えば、キャッシュ／メモリコントローラ１１４５は、Ｌ３キャッシュに連結されてもよく、これは次にシステムメモリに連結されてもよい。他の実施形態では、キャッシュ／メモリコントローラ１１４５は、メモリに直接連結されてもよい。いくつかの実施形態では、キャッシュ／メモリコントローラ１１４５は、１つ以上の内部キャッシュを含み得る。
【００７７】
本明細書で使用するとき、用語「連結された」は、要素間の１つ以上の接続を示すことができ、連結は介在要素を含んでもよい。例えば、図１１では、グラフィックスユニット２５０は、ファブリック１１１０及びキャッシュ／メモリコントローラ１１４５を介してメモリに「連結されている」と記載されてもよい。対照的に、図１１の図示する実施形態では、介在要素が存在しないため、グラフィックスユニット２５０はファブリック１１１０に「直接結合されている」。
【００７８】
グラフィックスユニット２５０は、１つ以上のプロセッサ及び／又は１つ以上のグラフィックスプロセッシングユニット（ＧＰＵ）を含んでもよい。グラフィックスユニット２５０は、例えば、ＯＰＥＮＧＬ（登録商標）、Ｍｅｔａｌ、又はＤＩＲＥＣＴ３Ｄ（登録商標）命令などの、グラフィック指向の命令を受信することができる。グラフィックスユニット２５０は、専用のＧＰＵ命令を実行してもよいし、受信したグラフィックス指向の命令に基づいて他の動作を実行してもよい。グラフィックスユニット２５０は一般的に、大ブロックのデータを並行して処理するように構成されてもよく、ディスプレイに出力するためにフレームバッファに画像を構築してもよい。グラフィックスユニット２５０は、１つ以上のグラフィックス処理パイプラインに変換、照明、三角形、及び／又はレンダリングのエンジンを含んでもよい。グラフィックスユニット２５０は、表示画像のための画素情報を出力することができる。いくつかの実施形態では、グラフィックスユニット２５０は、メモリ整合性、中間レンダリング計算、ローカル画像ブロック、及び／又は画素リソース同期技法の１つ以上を実行するように構成される。
【００７９】
ディスプレイユニット１１６５は、フレームバッファからデータを読み取り、表示のための画素値のストリームを提供するように構成されてもよい。ディスプレイユニット１１６５は、いくつかの実施形態では、ディスプレイパイプラインとして構成することができる。更に、ディスプレイユニット１１６５は、出力フレームを生成するように複数のフレームをブレンドするように構成されてもよい。更に、ディスプレイユニット１１６５は、ユーザディスプレイ（例えば、タッチスクリーン又は外部ディスプレイ）に連結するための１つ以上のインタフェース（例えば、ＭＩＰＩ（登録商標）又は埋込みディスプレイポート（ｅＤＰ））を含んでもよい。
【００８０】
Ｉ／Ｏブリッジ１１５０は、例えば、ユニバーサルシリアルバス（ＵＳＢ）通信、セキュリティ、オーディオ、及び／又は低電力常時オン機能を実装するように構成された様々な要素を含み得る。Ｉ／Ｏブリッジ１１５０はまた、例えば、パルス幅変調（ＰＷＭ）、汎用入出力（ＧＰＩＯ）、シリアル周辺インタフェース（ＳＰＩ）、及び／又はインターインテグレーテッドサーキット（Ｉ２Ｃ）などのインタフェースを含んでもよい。様々な種類の周辺機器及びデバイスは、Ｉ／Ｏブリッジ１１５０を介してデバイス１１００に連結されてもよい。
【００８１】
いくつかの実施形態では、デバイス１１００の様々な要素は、クロックツリーの異なる部分にクロック信号を配信するように連結された様々な一連のＤＥＴクロックゲータを含む、階層的に配置されたクロックゲータを含み得る。開示する技法は、デバイス１１００内のスイッチング電力消費を低減し、デバイス１１００の異なる部分へのクロック遅延を均衡させ、デバイス１１００のエラーを減らし、より高い周波数を達成し、より低い電源電圧で必要な周波数を達成し、サイクル当たり（又は、例えば１タスクあたり、１画素当たり、又は１バイト当たりの）の消散エネルギーの低減などを行うことができる。
例示的なコンピュータ可読媒体
【００８２】
本開示は、様々な例示的な回路について上記により詳細に説明した。本開示は、そのような回路を含む実施形態だけでなく、そのような回路を指定する設計情報を含むコンピュータ可読記憶媒体もまた網羅することが意図される。したがって、本開示は、開示された回路を含む装置だけでなく、開示された回路を含むハードウェア（例えば、集積回路）を製造するように構成された作製システムによって認識されるフォーマットで回路を指定する記憶媒体も網羅する特許請求の範囲を支持することを意図する。そのような記憶媒体に対する特許請求の範囲は、例えば、回路設計物を生成するが、それ自体は設計物を作製しない実在物を網羅することを意図する。
【００８３】
図１２は、いくつかの実施形態に係る、回路設計情報を記憶する例示的な非一時的コンピュータ可読記憶媒体を示すブロック図である。図示した実施形態では、半導体製造システム１２２０は、非一時的コンピュータ可読媒体１２１０に記憶された設計情報１２１５を処理し、設計情報１２１５に基づいて集積回路１２３０を製造するように構成されている。
【００８４】
非一時的コンピュータ可読媒体１２１０は、様々な適切な種類のメモリデバイス又は記憶装置のいずれかを含んでもよい。媒体１２１０は、インストール媒体、例えば、ＣＤ−ＲＯＭ、フロッピーディスク又はテープデバイス、ＤＲＡＭ、ＤＤＲ  ＲＡＭ、ＳＲＡＭ、ＥＤＯ  ＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭなどの、コンピュータシステムメモリ又はランダムアクセスメモリ、フラッシュ、磁気媒体、例えばハードドライブ、又は光記憶装置などの、不揮発性メモリ、レジスタ、又はその他の同様の種類のメモリ要素などであってもよい。媒体１２１０は、他の種類の非一時的メモリ、又はそれらの組合せも含んでもよい。媒体１２１０は、異なる場所、例えば、ネットワークを通じて接続された異なるコンピュータシステムに存在し得る２つ以上の記憶媒体を含んでもよい。
【００８５】
設計情報１２１５は、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、ＳｙｓｔｅｍＣ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ、ＲＨＤＬ、Ｍ、ＭｙＨＤＬなど（これらに限定されない）のハードウェア記述言語を含む様々な適切なコンピュータ言語のいずれかを用いて指定され得る。設計情報１２１５は、集積回路１２３０の少なくとも一部分を製造するために半導体製造システム１２２０によって使用可能であり得る。設計情報１２１５のフォーマットは、少なくとも１つの半導体製造システム１２２０によって認識され得る。いくつかの実施形態では、設計情報１２１５はまた、集積回路１２３０の合成及び／又はレイアウトを指定する１つ以上のセルライブラリを含んでもよい。いくつかの実施形態では、設計情報は、セルライブラリ要素及びそれらの接続性を指定するネットリストの形態で、全体的に又は部分的に指定される。設計情報１２１５は、単独で、対応する集積回路の製造に十分な情報を含んでもよいし、含まなくてもよい。例えば、設計情報１２１５は、製造される回路要素を指定してもよいが、それらの物理的レイアウトを指定しなくてもよい。この場合、設計情報１２１５は、指定された回路を実際に製造するためにレイアウト情報と組み合わされる必要があり得る。
【００８６】
半導体製造システム１２２０は、集積回路を製造するように構成された様々な適切な要素のうちのいずれかを含んでもよい。これは、例えば、（例えば、マスキングを含み得るウェハ上に）半導体材料を堆積させるための要素、材料を除去するための要素、堆積された材料の形状を変更するための要素、（例えば、材料をドープする、又は紫外線処理を用いて誘電定数を修正することによって）材料を改質するための要素などを含んでもよい。半導体製造システム１２２０はまた、製造された回路が正しく動作するための様々な試験を実行するように構成されてもよい。
【００８７】
様々な実施形態では、集積回路１２３０は、設計情報１２１５によって指定された回路設計に従って動作するように構成されており、これは、本明細書に記載した機能のいずれかを実行することを含んでもよい。例えば、集積回路１２３０は、図２Ｂ及び／又は図３に示す様々な要素のいずれかを含むことができる。更に、集積回路１２３０は、他の構成要素と併せて本明細書に記載された様々な機能を実行するように構成されてもよい。更に、本明細書に記載された機能は、複数の接続された集積回路によって実行されてもよい。
【００８８】
本明細書で使用する「．．．ように構成された回路の設計を指定する設計情報」という形態の語句は、その要素が満たされるために対象の回路が作製されなければならないことを意味するものではない。むしろ、この語句は、設計情報には、作製されると、示されたアクションを実行するように構成されるか、又は指定された構成要素を含む回路について記載されていることを示す。
【００８９】
本開示は、様々な例示的な方法を上記のように詳細に説明している。本開示は、そのような動作を含む実施形態のみではなく、開示された動作を実行するためにコンピューティングデバイスによって実行可能な命令を含むコンピュータ可読記憶媒体も及ぶことを意図する。いくつかの実施形態では、非一時的コンピュータ可読記憶媒体は、仮想空間内のプリミティブの座標を含むプリミティブデータを受信することと、
１つ以上の座標変換に関連付けられた変換パラメータを受信することと、受信した変換パラメータを記憶することと、
プリミティブのラスタ化の前に、第２の空間の異なる部分には異なる変換パラメータを用いて、仮想空間内のプリミティブの座標を、第２の空間内のプリミティブの座標に変換することと、第２の空間内のプリミティブの座標に基づいてプリミティブをラスタ化してフラグメントデータを生成し、変換中の異なる変換パラメータの使用により、仮想空間の異なる部分は異なるサンプルレートでサンプリングされ、
フラグメントデータの少なくとも一部を処理して、画素属性を決定することと、を含む、動作をコンピューティングデバイスによって実行可能な命令を含む。
【００９０】
特定の実施形態が上記に記載されているが、これらの実施形態により本開示の範囲を限定する意図はなく、これは特定の機能に対して単一の実施形態のみが記載されている場合でも同様である。本開示で提供されている機能の実施例は、別途記載がない限り、例示的な性質のものであって、限定的な目的を意図していない。上記の記載は、本開示による恩恵を受ける当業者には明らかであるような代替物、改変、及び均等物を包含することが意図されている。
【００９１】
本開示の範囲は、本開示において取り組まれている問題の一部又は全てを軽減するかどうかに関係なく、本開示において（明示的又は暗黙的に）開示されている全ての機能若しくはそれら機能の組み合わせ、又はそれらの一般化を含む。したがって、このような機能の組み合わせのいずれに対しても、本願（又は、本願に対する優先権を主張する出願）の手続き中に、新しい特許請求を策定し得る。特に、特許請求の範囲に関しては、従属クレームの機能は独立クレームの機能と組み合わされる場合があり、それぞれの独立クレームの機能は、任意の適切な方法で、かつ、単に添付の特許請求の範囲で列挙されている特定の組み合わせではない形で組み合わされる場合がある。
【図１】
2020535521.tif 000003
【図２Ａ】
2020535521.tif 000004
【図２Ｂ】
2020535521.tif 000005
【図３】
2020535521.tif 000006
【図４】
2020535521.tif 000007
【図５】
2020535521.tif 000008
【図６】
2020535521.tif 000009
【図７】
2020535521.tif 000010
【図８Ａ】
2020535521.tif 000011
【図８Ｂ】
2020535521.tif 000012
【図９Ａ】
2020535521.tif 000013
【図９Ｂ】
2020535521.tif 000014
【図９Ｃ】
2020535521.tif 000015
【図９Ｄ】
2020535521.tif 000016
【図１０】
2020535521.tif 000017
【図１１】
2020535521.tif 000018
【図１２】
2020535521.tif 000019
【国際調査報告】
2020535521.tif 000020
2020535521.tif 000021
2020535521.tif 000022