(57)【要約】ヘッドマウントデバイス（ＨＭＤ）（３００，１２５）などの装置は、ウィンドウ空間（４０５，５１０）内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプライン（１００）を実装するように構成された１つ以上のプロセッサ（３３５）を備える。また、装置は、ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする第１歪み関数（１０９，５２５）を備える。さらに、装置は、第１歪み関数を通してウィンドウ空間内のピクセルをサンプリングするように構成されたスキャンコンバータ（１１０，１２２５）を備える。スキャンコンバータは、ラスタ空間内の均一な間隔のピクセルに基づいて、ユーザに表示される画像を生成するために使用される表示ピクセルをレンダリングするように構成されている。場合によっては、ウィンドウ空間内のピクセルは、視野領域毎のピクセル密度がユーザの視野全体で一定になるようにレンダリングされる。【選択図】図１３
2020515968.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックスパイプライン（１００）において、ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることと、
スキャンコンバータ（１１０，１２２５）を用いて、ウィンドウ空間（４０５，５１０）内のピクセルを、ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする歪み関数（１０９，５１５）を通してサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいて、前記スキャンコンバータによってレンダリングされる表示ピクセルを使用して、ユーザに表示される画像を生成することと、を含む、
方法。
【請求項２】
前記ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることは、視野（subtended）領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
請求項１の方法。
【請求項３】
前記ウィンドウ空間内のピクセルをレンダリングすることは、視野角毎のピクセル密度が、ユーザに関連する中心窩領域（２２５，２４０）で比較的高く、前記ユーザに関連する視覚周辺部（２３０，２５０）で比較的低いように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
請求項２の方法。
【請求項４】
前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることは、ウィンドウ空間内の不均一な間隔のピクセルの第１寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数（６１０）と、ウィンドウ空間内の不均一な間隔のピクセルの第２寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数（６０５）と、を通してウィンドウ空間内のピクセルをサンプリングすることを含む、
請求項１の方法。
【請求項５】
前記垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される、
請求項４の方法。
【請求項６】
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、をさらに含む、
請求項５の方法。
【請求項７】
プリミティブ（１０００）のバウンディングボックス（１１０５）をウィンドウ空間内の不均一な間隔のピクセルの境界と比較することと、
前記比較に基づいて、前記グラフィックスパイプラインを通して前記プリミティブをルーティングすることと、をさらに含む、
請求項１の方法。
【請求項８】
前記プリミティブとウィンドウ空間内の不均一な間隔のピクセルとの交点に基づいて、前記プリミティブのサンプルをビニングすること、をさらに含む、
請求項７の方法。
【請求項９】
ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプラインを実装するように構成された少なくとも１つのプロセッサ（３３５）と、
ウィンドウ空間（４０５，５１０）内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする歪み関数（１０９，５１５）と、
スキャンコンバータ（１１０，１２２５）と、を備え、
前記スキャンコンバータは、
前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいてユーザに表示される画像を生成するために使用される表示ピクセルをレンダリングすることと、
を行うように構成されている、
装置。
【請求項１０】
前記少なくとも１つのプロセッサは、視野領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
請求項９の装置。
【請求項１１】
前記少なくとも１つのプロセッサは、視野角毎のピクセル密度が、ユーザに関連する中心窩領域（２２５，２４０）で比較的高く、前記ユーザに関連する視覚周辺部（２３０，２５０）で比較的低いように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
請求項１０の装置。
【請求項１２】
前記スキャンコンバータは、ウィンドウ空間内の不均一な間隔のピクセルの第１寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数（６１０）と、ウィンドウ空間内の不均一な間隔のピクセルの第２寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数（６０５）と、を通してウィンドウ空間内のピクセルをサンプリングするように構成されている、
請求項９の装置。
【請求項１３】
前記垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される、
請求項１２の装置。
【請求項１４】
前記少なくとも１つのプロセッサは、
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、
を行うように構成されている、
請求項１３の装置。
【請求項１５】
前記少なくとも１つのプロセッサは、
プリミティブ（１０００）のバウンディングボックス（１００５）をウィンドウ空間内の不均一な間隔のピクセルの境界と比較することと、
前記比較に基づいて、前記グラフィックスパイプラインを通して前記プリミティブをルーティングすることと、
を行うように構成されている、
請求項９の装置。
【請求項１６】
前記少なくとも１つのプロセッサは、
前記プリミティブとウィンドウ空間内の不均一な間隔のピクセルとの交点に基づいて、前記プリミティブのサンプルをビニングすること、
を行うように構成されている、
請求項１５の装置。
【請求項１７】
ヘッドマウントデバイス（ＨＭＤ）（３００，１２３５）であって、
前記ＨＭＤを装着しているユーザに画像を提示するディスプレイ（３２０）と、
ウィンドウ空間（４０５，５１０）内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプライン（１００）を実装するように構成された少なくとも１つのプロセッサ（３３５）と、
スキャンコンバータ（１１０，１２２５）と、を備え、
前記スキャンコンバータは、
ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする第１歪み関数（１０９，１０５）を通して、ウィンドウ空間内のピクセルをサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいて、前記ユーザに表示される画像を生成するために、前記ディスプレイに提供される表示ピクセルをレンダリングすることと、
を行うように構成されている、
ＨＭＤ。
【請求項１８】
前記少なくとも１つのプロセッサは、視野領域毎のピクセル密度が前記ユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
請求項１７のＨＭＤ。
【請求項１９】
前記少なくとも１つのプロセッサは、前記ディスプレイに提供される前に前記表示ピクセルに適用される第２歪み関数を実装するように構成されている、
請求項１７のＨＭＤ。
【請求項２０】
前記少なくとも１つのプロセッサは、
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記第１歪み関数を変更することと、
を行うように構成されている、
請求項１７のＨＭＤ。
【発明の詳細な説明】
【背景技術】
【０００１】
グラフィックスプロセッサは、プログラマブルシェーダのシーケンスと固定機能ハードウェアブロックとを用いて、拡張現実（ＡＲ）及び仮想現実（ＶＲ）アプリケーションにおいてヘッドマウントディスプレイ（ＨＭＤ）の画像を生成する。例えば、フレームに表示されるオブジェクトの３Ｄモデルは、ユーザに表示されるピクセルの値を生成するためにグラフィックスパイプラインで処理される三角形、他のポリゴン、パッチ等のプリミティブのセットで表される。ピクセルは、通常、ウィンドウ全体で均一なピクセル間隔でウィンドウ空間にレンダリングされる。その結果、視野角（subtended angle）当たりのピクセル密度は、ＨＭＤにおけるユーザの中心視線方向又はレンズの中心部からのピクセル距離と共に増加する。ピクセルは、スキャンコンバータによって定期的にサンプリングされ、矩形画像が生成される。後処理ステップでは、ユーザがディスプレイレンズのセット通して画像を見る場合（例えば、ユーザがＨＭＤを装着している場合）に画像が規則的に見えるように、矩形画像を歪める。
【０００２】
添付の図面を参照することによって、本発明をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ＤＸ１２アプリケーションプログラミングインタフェース（ＡＰＩ）を実装するグラフィックスパイプラインのブロック図である。
【図２】いくつかの実施形態による、没入型仮想現実（ＶＲ）又は拡張現実（ＡＲ）機能を提供するように構成された電子デバイスを含むディスプレイシステムを示す図である。
【図３】いくつかの実施形態による、電子デバイスを装着しているユーザに対してディスプレイを介してＡＲ又はＶＲ機能を提供するように構成された電子デバイスを含むディスプレイシステムを示す図である。
【図４】いくつかの実施形態による、ウィンドウ空間内の不均一な間隔のピクセルの、ラスタ空間内の均一な間隔のピクセルへのマッピングを示す図である。
【図５】いくつかの実施形態による、ＨＭＤを装着しているユーザの目に表示される表示ピクセルのレンダリングのプロセスを示すブロック図である。
【図６】いくつかの実施形態による、歪み関数を実装するために使用される水平歪み関数及び垂直歪み関数を表すプロットのセットを示す図である。
【図７】いくつかの実施形態による、水平歪み関数又は垂直歪み関数を表す歪み曲線の図である。
【図８】いくつかの実施形態による、滑らかな歪み曲線を形成するために使用される区分曲線の選択を示す図である。
【図９】いくつかの実施形態による、歪み曲線の中心窩修正（fovea modification）を示すプロットのセットを示す図である。
【図１０】いくつかの実施形態による、等間隔のピクセルのラスタ空間及び不均一な間隔のピクセルのウィンドウ空間内のプリミティブの部分を表すタイルのビニングを示す図である。
【図１１】いくつかの実施形態による、プリミティブバウンディングボックスと歪んだラスタビューとの比較に基づくプリミティブの歪み認識ルーティング（distortion-aware routing）を示す図である。
【図１２】いくつかの実施形態による、プリミティブのビニングを示すグラフィックスパイプラインの一部のブロック図である。
【図１３】いくつかの実施形態による、歪み関数を通してウィンドウ空間内のサンプリング不均一ピクセルをレンダリングする方法のフロー図である。
【発明を実施するための形態】
【０００４】
画面の中央部に高品質の画像を生成するのに必要とされる高いピクセル解像度が、ウィンドウ空間内の全てのピクセルをレンダリングするために使用される解像度を決定するので、ウィンドウ空間内の均一な間隔のピクセルをレンダリングする際に、かなりの処理能力が浪費される。しかしながら、視野角が複数のピクセルにマッピングされるので、周辺部の画質は、画面の中央部における画質程高くする必要がない。例えば、高解像度のレンダリングは、中心視線方向（又は、ＨＭＤディスプレイデバイスのレンズの中心部）を囲む高視力領域（high-acuity region）において画像を生成するために必要であるが、視覚周辺の低視力領域又はレンズの周辺領域において十分な品質の画像を生成するのに必要ではない。高視力領域は、通常、中心視線方向の或る角度距離内にある視野の一部を含む。中心視線方向からの角度距離は、偏心度とも呼ばれる。低視力領域は、より大きな偏心度にある視野の部分を含む。例えば、高視力領域は、中心窩と呼ばれる人間の目の網膜領域に投影される視野の一部に対応する、５〜１０°の偏心度内にある視野の一部を含むことができる。
【０００５】
ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることによって、知覚された画像解像度を損なうことなく、ＨＭＤによって表示される画像を生成するのに消費される電力及び計算リソースが低減される。いくつかの実施形態では、不均一なピクセル間隔は、ユーザの視野全体の視野角毎にほぼ一定のピクセル密度に対応する。例えば、視野角毎のピクセル密度は、中心窩領域では比較的高く、視覚周辺部では比較的低くなる。スキャンコンバータは、不均一なピクセルをラスタ空間の均一な間隔のピクセルにマッピングする第１歪み関数を使用して、ウィンドウ空間内のピクセルをサンプリングする。スキャンコンバータは、ラスタ空間内の等間隔のピクセルの値に基づいて表示ピクセルをレンダリングし、表示ピクセルは、ユーザへの表示前に第２歪み関数を通過する。
【０００６】
第１歪み関数のいくつかの実施形態は、不均一なピクセルの第１寸法を均一な間隔のピクセルにマッピングする垂直歪み関数と、不均一なピクセルの第２寸法を均一な間隔のピクセルにマッピングする水平歪み関数と、を含む。第１寸法及び第２寸法は、互いに直交している。垂直及び水平歪み関数のいくつかの実施形態は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される。例えば、垂直及び水平歪み関数の変位のセットは、第１歪み関数を表す滑らかな曲線によって結合される点のセットを定義する。垂直及び水平歪み関数のいくつかの実施形態は、中心窩領域の位置に対応するウィンドウ空間の一部におけるピクセルの解像度を増加するように変更される。
【０００７】
図１は、いくつかの実施形態による、ＤＸ１２アプリケーションプログラミングインタフェース（ＡＰＩ）を実装するグラフィックスパイプライン１００のブロック図である。グラフィックスパイプライン１００は、高次ジオメトリプリミティブを処理し、三次元（３Ｄ）シーンのラスタライズ画像を所定の解像度で生成することができる。グラフィックスパイプライン１００は、バッファを実装し、頂点データ、テクスチャデータ等を記憶するために使用される１つ以上のメモリ又はキャッシュの階層等のストレージリソース１０１にアクセスする。グラフィックスパイプライン１００におけるシェーダのいくつかの実施形態は、複数の頂点が同時に処理されるように、単一命令複数データ（ＳＩＭＤ）処理を実行する。したがって、グラフィックスパイプライン１００は、グラフィックスパイプライン１００に含まれるシェーダが、共有されたＳＩＭＤ計算ユニット上で同じ実行プラットフォームを含むように、統合シェーダモデルの概念を実装する。したがって、シェーダは、１つ以上のプロセッサを含む共通のリソースセットを使用して実装される。本明細書では、共通のリソースセットを、統合シェーダプール１０４と呼ぶ。
【０００８】
典型的なＤＸ１２レンダリングパイプラインにおいて、入力アセンブラ１０２は、シーンのモデルの一部を表すオブジェクトを定義するために使用されるストレージリソース１０１からの情報にアクセスするように構成されている。頂点シェーダ１０３は、いくつかの実施形態では、ソフトウェアで実装され、入力アセンブラ１０２からの入力としてプリミティブの単一の頂点を論理的に受信し、単一の頂点を出力する。ハルシェーダ１０５は、入力パッチを定義するために使用される入力高次パッチ（high-order patches）又は制御点で動作する。ハルシェーダ１０５は、テッセレーション係数及び他のパッチデータを出力する。
【０００９】
ハルシェーダ１０５によって生成されたプリミティブを、オプションでテッセレータ１０６に提供することができる。テッセレータ１０６は、オブジェクト（パッチ等）をハルシェーダ１０５から受信し、例えば、ハルシェーダ１０５によってテッセレータ１０６に提供されたテッセレーション係数に基づいて入力オブジェクトをテッセレーションする等して、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されるプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分化する。
【００１０】
ドメインシェーダ１０７は、ドメインの位置及び（オプションで）他のパッチデータを入力する。ドメインシェーダ１０７は、提供された情報に対して動作し、入力ドメインの位置及び他の情報に基づいて、出力用の単一の頂点を生成する。ジオメトリシェーダ１０８は、入力プリミティブを受信し、入力プリミティブに基づいて、ジオメトリシェーダ１０８によって生成された４つまでのプリミティブを出力する。
【００１１】
次に、プリミティブは、例えばウィンドウビューポート変換（window-to-viewport transformation）を使用して、シーンを含むビューウィンドウから、ユーザに表示される画像を表すピクセルのグリッドにマッピングされる。「ウィンドウ空間」という用語は、処理のこの時点までにグラフィックスパイプライン１００によって生成されるピクセルを指す。本明細書で説明するように、グラフィックスパイプライン１００によって生成されるウィンドウ空間内のピクセルは、不均一に分布し、ピクセル間の間隔が不均一である。いくつかの実施形態では、グラフィックスパイプライン１００は、ユーザの視野全体で視野領域（subtended area）当たりのピクセル密度が一定になるように、ウィンドウ空間内のピクセルをレンダリングする。例えば、ウィンドウ空間内のピクセルは、グラフィックスパイプライン１００を実装するＨＭＤを装着したユーザの中心窩領域において、比較的高いピクセル密度でレンダリングされる。ウィンドウ空間内のピクセルは、視覚周辺部において、比較的低いピクセル密度でレンダリングされる。
【００１２】
歪み関数１０９を使用して、ウィンドウ空間内の不均一な間隔のピクセルを、スキャンコンバータ１１０によって使用されるラスタ空間内の均一な間隔のピクセルに変換する。歪み関数１０９のいくつかの実施形態は、ウィンドウ空間内の不均一な間隔のピクセルの第１寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数と、ウィンドウ空間内の不均一な間隔のピクセルの第２寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数と、を実装する。垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形歪み関数からの変位のセットに基づいて定義される。スキャンコンバータ１１０は、歪み関数１０９を通してウィンドウ空間内のピクセルをサンプリングし、ラスタ空間内の均一な間隔のピクセルを生成する。
【００１３】
ピクセルシェーダ１１１は、スキャンコンバータ１１０からピクセルフローを受信し、入力されたピクセルフローに応じて、０又は他のピクセルフローを出力する。出力マージャブロック１１２は、ピクセルシェーダ１１１から受信したピクセルに対してブレンド、深度、ステンシル又は他の操作を実行する。
【００１４】
図２は、いくつかの実施形態による、没入型ＶＲ又はＡＲ機能を提供するように構成された電子デバイス２０５を含むディスプレイシステム２００を示す図である。電子デバイス２０５は、図１に示すグラフィックスパイプライン１００のいくつかの実施形態から出力されるピクセル値を使用して画像を表示するために使用される。図２に、本開示の少なくとも１つの実施形態による、ＨＭＤフォームファクタにおける電子デバイス２０５の例示的な実装の背面図を示している。他の実施形態では、電子デバイス２０５は、例えば、眼鏡用のフォームファクタ、スマートフォンのフォームファクタ、タブレットのフォームファクタ、医療用撮像デバイスのフォームファクタ、スタンドアロンコンピュータ、システムオンチップ（ＳＯＣ）等の他のフォームファクタに実装され、図示したものと類似の構成を実装する、他のフォームファクタに実装される。背面図で示すように、電子デバイス２０５は、電子デバイス２０５をユーザの顔に（ストラップやハーネスの使用と共に）固定するために、表面２１５上に取り付けられたフェイスガスケット２１０を含むことができる。
【００１５】
電子デバイス２０５は、ユーザに提供されるＶＲ画像又はＡＲ画像等の画像を生成するために使用されるディスプレイ２２０を含む。ディスプレイ２２０は、ユーザの右目に画像を提供する右側部分と、ユーザの左目に画像を提供する左側部分と、の実質的に同一の２つの部分に分割される。他の実施形態では、ディスプレイ２２０は、それぞれの目に専用の２つの異なるディスプレイとして実装される。電子デバイス２０５を装着したユーザの視力は、ユーザの視線中心部からの距離（例えば、偏心度）に依存する。例えば、ユーザの左目の視野は、中心視線方向２３０を囲む高視力領域２２５に細分化される。ユーザの左目の視野は、視覚周辺部に低視力領域２４０を含む。同様に、ユーザの右目の視野は、中心視線方向２５０を囲む高視力領域２４５と、視覚周辺部の低視力領域２６０と、に細分化される。中心視線方向２３０，２５０は、現在の視野の中心に等しく設定されるか、ユーザの両目の中心視線方向を検出する視線追跡測定に基づいて決定される。
【００１６】
本明細書で説明するように、図１に示す歪み関数１０９等の歪み関数を使用して、ウィンドウ空間内の不均一にレンダリングされたピクセルを、ラスタ空間内の均一にレンダリングされたピクセルにマッピングする。したがって、歪み関数を実装するグラフィックスパイプラインは、例えば、ディスプレイによってサポートされる本来の解像度と等しい解像度でピクセルをレンダリングすることによって、高視力領域２２５，２４５内のウィンドウ空間内のピクセルを比較的高い解像度でレンダリングすることができる。グラフィックスパイプラインは、低視力領域２４０，２６０内のウィンドウ空間内のピクセルを低い解像度でレンダリングすることによって、ウィンドウ空間内のピクセルをレンダリングするのに必要な電力及び計算リソースを低減する。その後、ウィンドウ空間内のレンダリングされたピクセルは、スキャンコンバータによって歪み関数を通してサンプリングされ、ラスタ空間内の均一な間隔のピクセルの値を決定する。
【００１７】
図３は、いくつかの実施形態による、電子デバイス３０５を装着しているユーザに対してディスプレイを介してＡＲ又はＶＲ機能を提供するように構成される電子デバイス３０５を含むディスプレイシステム３００を示す図である。電子デバイス３０５は、図２に示す電子デバイス２０５のいくつかの実施形態を実施するために使用される。電子デバイス３０５は、ユーザの頭部３１０に装着されるものとして図３に示されている。図示するように、電子デバイス３０５は、ユーザに提示される画像を生成するディスプレイ３２０を含むハウジング３１５を備える。ディスプレイ３２０は、図２に示すディスプレイ２２０のいくつかの実施形態を使用して実装される。図示した実施形態では、ディスプレイ３２０は、立体画像を対応する左目及び右目に表示するために使用される左側ディスプレイ３２１及び右側ディスプレイ３２２から形成される。しかしながら、他の実施形態では、ディスプレイ３２０は、左目及び右目に表示される別々の立体画像を生成する単一のモノリシックディスプレイ３２０である。また、電子デバイス３０５は、ハウジング３１５のユーザに面する表面３３２の対応する開口又は他の開口部に配置された接眼レンズ３２５，３３０を含む。ディスプレイ３２０は、ハウジング３１５内の接眼レンズ３２５，３３０の遠位に配置される。接眼レンズ３２５は、左目ディスプレイ３２１と位置合わせされており、接眼レンズ３３０は、右目ディスプレイ３２２と位置合わせされている。
【００１８】
立体表示モードでは、画像は、左目ディスプレイ３２１によって表示され、接眼レンズ３２５を介してユーザの左目で見られる。画像は、右目ディスプレイ３２２によって同時に表示され、接眼レンズ３２５を介してユーザの右目で見られる。左目及び右目によって見られる画像は、ユーザの立体視ビューを生成するように構成されている。ディスプレイ３２０，３２１，３２２のいくつかの実施形態は、ディスプレイ３２０，３２１，３２２の外縁部を囲むベゼル（図３には示されていない）を含むように製造される。この場合、レンズ３２５，３３０又は他の光学デバイスを使用して、ディスプレイ３２０，３２１，３２２の周囲のベゼルがユーザに見えないように、ディスプレイ３２０，３２１，３２２によって生成される画像を組み合わせる。代わりに、レンズ３２５，３３０は、ディスプレイ３２０，３２１，３２２間の境界を越えて連続的に見えるように、画像をマージする。
【００１９】
ディスプレイ３２０及び電子デバイス３０５の他のコンポーネントの動作を制御及びサポートするいくつか又は全ての電子コンポーネントは、ハウジング３１５内に実装される。電子デバイス３０５のいくつかの実施形態は、プロセッサ３３５等の処理ユニットと、図１に示すグラフィックスパイプライン１００等のグラフィックスパイプラインの一部又は全てを実装するのに使用可能なメモリ３４０（又は、他のハードウェア、ファームウェア若しくは）と、を備える。いくつかの実施形態では実際の又は仮想の画像を取得し、これらの画像をディスプレイ３２０上に表示するためにレンダリングすることに関連するワークロードは、電子デバイス３０５の外部に実装される外部処理ユニットと共有されてもよい。電子デバイス３０５のいくつかの実施形態は、ユーザの目の動きを追跡し、各目の注視中心部をリアルタイムに決定するアイトラッカー３４５を含む。また、電子デバイス３０５は、１つ以上のモーションセンサ３５０を含む。モーションセンサ３５０の例には、加速度計、ジャイロスコープ方向検出器、又は、電子デバイス３０５の動きを検出することができる他のデバイスが含まれる。
【００２０】
図４は、いくつかの実施形態による、ウィンドウ空間４０５内の不均一な間隔のピクセルの、ラスタ空間４１０内の均一な間隔のピクセルへのマッピング４００を示す図である。マッピング４００は、図１に示すグラフィックスパイプライン１００、図２に示す電子デバイス２０５、及び、図３に示す電子デバイス３０５のいくつかの実施形態で実施される。ウィンドウ空間４０５内のピクセルは、グラフィックスパイプラインのジオメトリ部分によって生成され、スキャンコンバータ（又は、ラスタライザ）は、図１に示す歪み関数１０９のいくつかの実施形態を実施するために使用される歪み関数４１５を通してウィンドウ空間４０５内のピクセルをサンプリングすることによって、ラスタ空間４１０内のピクセルの値を決定する。
【００２１】
不均一な間隔のピクセルは、歪み関数４１５に従って、ウィンドウ空間４０５全体に分布する。図示した実施形態では、歪み関数４１５は、垂直歪み関数及び水平歪み関数を使用して実行される。ウィンドウ空間４０５内のピクセルの水平方向の境界は、ウィンドウ空間４０５の上部からウィンドウ空間４０５の中央部に向かう距離を減少させることによって分離され、その後、ウィンドウ空間４０５の中央部からウィンドウ空間４０５の下部に向かう距離を増加させることによって分離される。ウィンドウ空間４０５内のピクセルの垂直方向の境界は、ウィンドウ空間４０５の左側からウィンドウ空間４０５の中央部に向かう距離を減少させることによって分離され、その後、ウィンドウ空間４０５の中央部からウィンドウ空間４０５の右側に向かう距離を増加させることによって分離される。したがって、最高解像度のピクセルは、ウィンドウ空間４０５の中心部近くにあり、最低解像度のピクセルは、ウィンドウ空間４０５の縁部近くにある。
【００２２】
ウィンドウ空間４０５内の不均一な間隔のピクセルは、歪み関数４１５によってラスタ空間４１０内の均一な間隔のピクセルにマッピングされる。例えば、ラスタ空間４１０内のピクセル４２０は、ウィンドウ空間４０５内のピクセル４２５にマッピングされる。したがって、スキャンコンバータは、レンダリングされたピクセル４２５の比較的密なサンプリングを実行して、ピクセル４２０の値を決定する。別の例では、ラスタ空間４１０内のピクセル４３０をウィンドウ空間４０５内のピクセル４３５にマッピングする。したがって、スキャンコンバータは、レンダリングされたピクセル４３５の比較的粗いサンプリングを実行して、ピクセル４３０の値を決定する。
【００２３】
したがって、歪み関数４１５は、プログラム可能な方法でラスタライズのサンプリング密度を調整することができ、ＨＭＤに実装されたＶＲ及びＡＲ等のアプリケーションの不要なピクセルシェーディングを減らすために使用される。歪み関数４１５のいくつかの実施形態は、ビューポート変換後のジオメトリウィンドウ空間（ウィンドウ空間４０５）と、例えばラスタ空間４１０内のレンダリングされるジオメトリのスキャンコンバータビューと、の間に配置される状態制御された２Ｄ空間歪み変換として実装される。図示した実施形態では、水平及び垂直歪み曲線は、ＨＭＤの光学系の静的特性、及び、ＨＭＤを装着しているユーザの変化する視線等の動的特性を補償する。また、歪み関数４１５は、フレーム毎の画質対性能の動的なトレードオフをサポートする。このトレードオフは、ビューポートウィンドウ、歪み関数４１５に関連するウィンドウ、及び、歪み関数４１５を変更せずに後処理サンプルウィンドウのサイズを変更することによって実行される。また、レンダリングされたジオメトリは、歪み関数４１５を使用して、選択されたレンダリング対象の部分に柔軟にマッピングすることも可能である。
【００２４】
図５は、いくつかの実施形態による、ＨＭＤを装着しているユーザの目５０５に表示される表示ピクセルのレンダリングのプロセス５００を示すブロック図である。プロセス５００は、図１に示すグラフィックスパイプライン１００、図２に示す電子デバイス２０５、及び、図３に示す電子デバイス３０５のいくつかの実施形態で実施される。
【００２５】
ジオメトリパイプラインは、ウィンドウ空間５１０にレンダリングされたピクセルを提供する。ウィンドウ空間５１０の視野は、ＨＭＤの投影マトリクスと光学特性とによって決定される。本明細書で説明するように、ウィンドウ空間５１０内のピクセルは、図１に示す歪み関数１０９及び図４に示す歪み関数４１５等の歪み関数５１５に従って不均一にレンダリングされる。歪み関数５１５のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせで実装される。歪み関数５１５は、以下に説明するように、レジスタ値に基づいて構成可能である。ウィンドウ空間５１０内のピクセルは、ＨＭＤを装着しているユーザの視野全体の視野角毎にほぼ一定のピクセル密度を確立するように分布している。
【００２６】
スキャンコンバータは、歪み関数５１５を通してウィンドウ空間５１０内の不均一なピクセルをサンプリングし、ラスタ空間５２０内の均一な間隔のピクセルの値を生成する。いくつかの実施形態では、後処理は、歪み認識シェーダ（distortion-aware shaders）及び他のフィルタによってラスタ空間５２０において実行される。次に、ラスタ空間５２０内のピクセルの値を使用して、ディスプレイバッファ５２５に提供される表示ピクセルの値を生成する。いくつかの実施形態では、レンダリング又は再構成された画像は、色調整又は他のフィルタリングを実行するために、変更されたメッシュを用いてラスタ空間５２０からサンプリングされる。
【００２７】
ディスプレイバッファ５２５に記憶された表示ピクセルは、ＨＭＤに実装されたディスプレイ５３０に提供される。ディスプレイ５３０は、表示ピクセルの値を使用して、対応する１対のレンズ５３５，５４０の一方を使用して、目５０５に提示される画像を生成する。したがって、歪み関数５１５を実装して、ウィンドウ空間５１０内の不均一な間隔のピクセルのレンダリングをサポートすることによって、過度に高い解像度で視覚周辺部のピクセルをレンダリングするようにジオメトリパイプラインにおいて消費されるリソースを減らし、低解像度での高品質なレンダリングを可能にする。スキャンコンバータは、ウィンドウ空間５１０内のピクセルのほぼ１：１のサンプリングを実行して、ラスタ空間５２０内のピクセルをレンダリングする。ウィンドウ空間５１０及びラスタ空間５２０の解像度を変更することによって、品質と性能との間の動的トレードオフが実現される。
【００２８】
２Ｄビューポート後のウィンドウ空間（ウィンドウ空間５１０等）と２Ｄラスタビュー（ラスタ空間５２０等）との間のジオメトリ変換は、ラスタ空間のＸ、Ｙポイントを、ウィンドウ空間内の歪んだｘ、ｙに一意且つ双方向にマッピングする。マッピングの例は、
（ｘ，ｙ）ｗｓ＝Ｆ［（Ｘ，Ｙ）ｒｓ］及び（Ｘ，Ｙ）ｒｓ＝Ｆ’［（ｘ，ｙ）ｗｓ］
によって与えられ、式中、ｗｓは、ウィンドウ空間を指し、ｒｓは、ラスタ空間を指し、Ｆ（）及びＦ’（）は、２つの２Ｄ画像間の空間変換を定義する。いくつかの実施形態は、歪み関数を垂直歪み関数及び水平歪み関数として表す。例えば、水平成分及び垂直成分の歪みは、
（ｘ）ｗｓ＝Ｆｘ［（Ｘ）ｒｓ］及び（Ｘ）ｒｓ＝Ｆ’ｘ［（ｘ）ｗｓ］＆
（ｙ）ｗｓ＝Ｆｙ［（Ｙ）ｒｓ］及び（Ｙ）ｒｓ＝Ｆ’ｙ［（ｙ）ｗｓ］
として表される。状態テーブル及びロジックを使用して、各プリミティブに使用される歪みマップをサンプリングするためのＦｘ、Ｆ’ｘ、Ｆｙ、Ｆ’ｙを構築する。
【００２９】
各目及び各パイプの水平方向及び垂直方向の状態パラメータを、以下の表に列挙する。歪み曲線を定義する状態を、構成状態として記憶する。有効化状態と、ビニングと連携するための状態とは、「レンダリング状態」と呼ばれる。
【００３０】
いくつかの実施形態では、歪み関数を定義する制御方法は、例えば、ウィンドウ空間５１０内のウィンドウの左上及び右下の座標を使用してウィンドウを定義することを含む。水平方向及び垂直方向の状態パラメータの値は、ルックアップテーブル（ＬＵＴ）のセットからアクセスされる。例えば、システムは、２つのグラフィックスパイプライン、２つの目、及び、２つの方向（水平及び垂直）の各組み合わせに対して１つのＬＵＴを実装して、合計８つのＬＵＴとすることができる。以下に詳細に説明するように、ＬＵＴは、実際の水平及び垂直歪み曲線を生成するために使用されるポイント間のアルファ制御されたＲＣＰ曲線によって８つの領域曲線を定義する。レジスタ状態値を使用して、プリミティブのラスタライズ中の歪みプロセスを制御する。
【表１】
2020515968.tif 000003
【００３１】
図６は、いくつかの実施形態による、歪み関数を実装するために使用される水平歪み関数６０５及び垂直歪み関数６１０を表すプロットのセット６００を示す図である。水平歪み関数６０５及び垂直歪み関数６１０は、図１に示す歪み関数１０９、図２に示す電子デバイス２０５、図３に示す電子デバイス３０５、図４に示す歪み関数４１５、及び、図５に示す歪み関数５１５のいくつかの実施形態で実施される。水平歪み関数６０５及び垂直歪み関数６１０は、１つ以上のレジスタに記憶された状態情報に基づいて構成可能なハードウェアで実装される。
【００３２】
各目について、状態データは、水平歪み関数６０５及び垂直歪み関数６１０を定義し、ラスタ空間の座標Ｘ、Ｙをウィンドウ空間の座標ｘ、ｙにマッピングする。いくつかの実施形態では、垂直方向及び水平方向における光学中心は、ＨＭＤ製造者の仕様又はアプリケーションプログラミングインタフェース（ＡＰＩ）に基づいて決定される。歪み関数は、通常、２Ｄ関数であり、ＡＰＩを介してＨＭＤドライバからクエリされ得る。光学中心は、レンダリング対象においてサンプリングされた２つのピクセル間の距離が最小になる位置に対応している。この中心が見つかると、垂直方向の中心において、水平歪み関数６０５を表す曲線が抽出され、水平方向の中心において、垂直歪み関数６１０を表す曲線が抽出される。歪み曲線が確立されると、システムは、ハードウェアで水平歪み関数６０５及び垂直歪み関数６１０を表すために使用される８セグメントの滑らかな区分関数のパラメータを決定する。
【００３３】
矢印６１５，６２０，６２５，６３０によって示すように、水平歪み関数６０５及び垂直歪み関数６１０は、画像を歪ませる又は歪ませないために使用される。
【００３４】
図７は、いくつかの実施形態による、水平歪み関数又は垂直歪み関数を表す歪み曲線７０５を示す図７００である。歪み曲線７０５は、図１に示す歪み関数１０９、図２に示す電子デバイス２０５、図３に示す電子デバイス３０５、図４に示す歪み関数４１５、及び、図５に示す歪み関数５１５のいくつかの実施形態で実施される。歪み曲線７０５は、１つ以上のレジスタに記憶された状態情報に基づいて構成可能なハードウェアに実装される。歪み曲線７０５は、ウィンドウ空間からラスタ空間に座標をマッピングするために使用される歪み曲線を表す一例を示している。しかしながら、歪み曲線の他の実施形態は、ウィンドウからラスタ空間へのマッピングの他のパラメータ化又は関数的表現を使用して表される。
【００３５】
歪み曲線７０５は、ウィンドウ空間からラスタ空間へ１つの座標のマッピングを表す。ウィンドウ空間の座標は垂直軸で表され、ラスタ空間の座標は水平軸で表される。歪み曲線７０５がＸ座標のマッピングを表す場合、歪み曲線７０５は水平歪み関数を表す。歪み曲線がＹ座標のマッピングを表す場合、歪み曲線７０５は垂直歪み関数を表す。分かり易くするために、以下の説明では、歪み曲線７０５が、ウィンドウ空間からラスタ空間にＸ座標をマッピングする水平歪み関数を表すものと想定している。歪み曲線７０５が対角線７１５上の位置点７１０（明確にするために符号で１つのみを示す）にマッピングされる場合、歪みがなく、ウィンドウ空間のｘはラスタ空間のＸに等しい。
【００３６】
図示した実施形態では、歪み曲線７０５上の点７２０（明確にするために符号で１つのみを示す）の位置決めは、状態データ：ＹＰｏｓｉｔｉｏｎ、ＹＰｏｓｉｔｉｏｎＳｈｉｆｔ、ＸＰｏｓｉｔｉｏｎ、ＸＰｏｓｉｔｉｏｎＳｈｉｆｔによって制御される。点７２０の位置を表す位置の値は、共通のＰｏｓｉｔｉｏｎＳｈｉｆｔが適用された後に、歪みテーブルの対角線７１５上の７つの等間隔の点７１０からの水平及び垂直デルタとして記憶される。しかしながら、上述したように、歪み曲線７０５のいくつかの実施形態は、必ずしも等間隔ではない異なる数の点によって表される。さらに、いくつかの実施形態では、スプライン、多項式又は他のパラメトリック曲線等の連続関数又は区分連続関数を使用して、点７２０の位置を識別する。
【００３７】
ＰｏｓｉｔｉｏｎＳｈｉｆｔ値は、対角線との最大位置差を含む次の２のべき乗の値の指数を見つけることによって決定される。歪みに使用される関数が単調に増加する場合、位置の値は、水平及び垂直の両向で増加する。例えば、点７１０の座標は、ＸＰｏｓｉｔｉｏｎ及びＹＰｏｓｉｔｉｏｎの対応する値によって決定される。次に、歪み曲線７０５上の点７２０の位置は、矢印７２５，７３０によってそれぞれ示されるＹＰｏｓｉｔｉｏｎＳｈｉｆｔ及びＸＰｏｓｉｔｉｏｎＳｈｉｆｔの値によって、点７１０に対して決定される。次に、アルファ値を使用して、曲線が点７２０の所望の位置を通過するように、最も近いＸ、Ｙ位置間の曲線の曲率を変更する。点７２０の位置を決定すると、滑らかな歪み曲線７０５を生成するために、（アルファ値を使用して）区分曲線のセットが選択される。
【００３８】
図８は、いくつかの実施形態による、滑らかな歪み曲線８０５を形成するために使用される区分曲線８００の選択を示す図である。歪み曲線８０５は、図７に示す歪み曲線７０５のいくつかの実施形態を表している。図示した実施形態では、歪み曲線８０５を決定する点のセットは、例えば、対角線上の点の位置、及び、対応するオフセットに基づいて構成されている。プロット８１０は、バウンディングボックス８１５によって識別されるセクションに滑らかな歪み曲線８０５を形成するために使用される区分曲線８００として選択されるのに利用可能な区分曲線の候補のセットを示している。図示した実施形態では、区分曲線８００は、区分曲線の候補のセットから選択されている。
【００３９】
区分曲線の候補の形状は、曲線がバウンディングボックス８１５の左下隅からバウンディングボックス８１５の右上隅まで移動する方法を定義するアルファ値によって決定される。位置の値の配置の選択では、検索空間を使用して、実際の光学曲線とアンダーサンプリングを抑制するための対角線とをカプセル化する滑らかな歪み曲線８０５を生成する区分曲線の最適なセットを見つける。一実施形態では、等しい水平間隔で点が配置され、その後、潜在的な垂直位置及びアルファ値が検索され、水平間隔のシフト及び他の値に対する調整が続き、最適な曲線の一致を見つける。区分曲線８００を表すアルファ値は、サンプリング方法も使用して選択される。例えば、歪み曲線８０５は、セグメントの中間点でサンプリングされ、アルファ値は、歪み曲線８０５のサンプリング点における（ウィンドウ空間内の）ｘ座標値に基づいて決定される。別の例では、歪み曲線８０５上で複数の点がサンプリングされ、ｘ座標値の平均に基づいてアルファ値が決定される。さらに別の例では、歪み曲線８０５上で複数の点がサンプリングされ、サンプリングされたｘ座標値に対して最小二乗誤差和を有するアルファ値が選択される。
【００４０】
図９は、いくつかの実施形態による、歪み曲線９０５の中心窩修正を示すプロットのセット９００を示す図である。グラフ９１０は、歪み曲線９０５と、中心視線方向９２０及び中心視線方向９２０からの偏心度の増加に伴う視力の低下を表す中心窩曲線９１５と、を示している。グラフ９２５は、中心視線方向９２０に対応するＸ、Ｙ位置において、対応するバウンディング領域内で解像度を増加させる、修正された歪み曲線９３０を示している。修正された歪み曲線９３０は、中心窩曲線９１５によって変調され、解像度を所定の減少によって高める。いくつかの実施形態では、歪み曲線９０５の中心窩修正は、中心窩領域内のパッキングを減少させることに対応する量の視覚周辺部の間隔を増加させるため、ピクセルシェーディングのコストを増加させない。場合によっては、中心窩領域にも追加のピクセルレンダリングが追加される。
【００４１】
いくつかの実施形態では、ウィンドウの境界（例えば、ウィンドウの右下及び左上の座標）を示す状態情報を変更して、レンダリングされるピクセルの数を調整する。その場合、オフセットを示す状態情報と同様に、ビューポート変換の幅／高さによって使用される幅及び高さは、ウィンドウのサイズの割合の変化に対応する割合だけ変化する。フルスクリーンビューポートと、ビューポートでレンダリングするミラー又はウィンドウとは、同じ割合を使用する。座標が０〜１の範囲にあり、テクスチャサイズによってのみスケーリングする必要があるので、各色サンプルのバッファをサンプリングする三角形／四角形メッシュ又は計算シェーダは、同じＵＶメッシュを使用する。
【００４２】
図１０は、いくつかの実施形態による、均一な間隔のピクセルのラスタ空間１００５、及び、不均一な間隔のピクセルのウィンドウ空間１０１０内のプリミティブ１０００の部分を表すタイルのビニングを示す図である。図１に示すグラフィックスパイプライン１００のいくつかの実施形態では、ビニングが実行される。図示した実施形態では、ビン１０１５を、複数のより小さなビンに細分化する。本明細書で開示される歪み関数を実装するための最小ビンサイズは、図１に示すスキャンコンバータ１１０等のスキャンコンバータにおけるラスタライゼーションタイルのサイズに対応するため、場合によっては３２×３２である。しかしながら、最小ビンサイズを含むサイズは、設計上の選択事項である。グラフィックスパイプラインのいくつかの実施形態は、ターゲットとなるビニング特性、又は、グラフィックス処理システムの他の特性に応じて、より大きな又は例えば１６×１６までのより小さなビンを生成するビナー（プリミティブバッチビナー又はドローストリームビニングラスタライザ等）を含む。
【００４３】
均一なラスタ空間１００５でのビニングは、ビン１０１５内の均一なピクセル１０２０と、プリミティブ１０００（明確にするために符号によって１つのみを示す）と、の交点を使用して、プリミティブ１０００が接するサブビン１０２５を識別する。
【００４４】
不均一なウィンドウ空間１０１０では、追加のユニット（以下、フレキシブルビンウォーカー、ＦＢＷと呼ばれる）を使用して、より大きなビンを分割し、歪み関数によって決定される目的の解像度で歪みビン境界のクエリを行う。例えば、ビン１０１５は、プリミティブ１０００が接するサブビン１０３５を識別することによって、歪みピクセル１０３０に基づいて細分化される。したがって、ＦＢＷは、ビンサイズが大きくなるように構成されている場合に、歪みジオメトリを３２×３２の解像度で生成することができる。いくつかの実施形態では、複数のビンを単一の歪みビンに組み合わせることによって解像度を変更することもでき、これにより、１６×１６のビン解像度で３２×３２のワープ粒度が可能になる。ＦＢＷのいくつかの実施形態は、Ｘ及びＹに対して別々に、２つの符号付き３ビットレジスタを介して制御される。正の値は、ビン１０１５がワーピングのためにさらに分割されることを示し、負の値は、ビン１０１５がより大きなワープビンに組み合わせられることを示している。３という最大分割カウントは、ビン１０１５が８つの歪みビンに分割されていることを示している。実際には、これは、２５６×２５６のビンサイズが３２×３２のワープビンサイズに分割可能な最大のビンサイズであることを意味する。上述したように、本明細書で説明する特定のビンサイズは例示であり、いくつかの実施形態は、グラフィックス処理システムの特性に応じて、より大きい又はより小さいビンサイズを実装する。
【００４５】
ＦＢＷがより大きなビン１０１５を細分化する場合に、出力は、プリミティブ１０００と交差する各サブビン１０２５，１０３５に対してのみ生成される。クロック周期は、接していないサブビンを維持するために消費されない。各サブプリミティブ出力は、スキャンコンバータによる歪み関数に従って適切に歪む。ビナーのいくつかの実施形態は、各３２×３２領域の歪み関数に基づいて一意の出力歪みをサポートするために、最大２５６×２５６のビンサイズに制限されている。ビナーがより大きなビンサイズを使用する場合、歪み関数の効果は、より粗くなる。ビナー、ＦＢＷ及びスキャンコンバータは、均一なラスタ空間内で動作するが、歪み関数を含めると、図１０に示す不均一なウィンドウ空間１０１０で示すように、ジオメトリのプリミティブ／サブプリミティブ毎の歪みウィンドウ空間ビューが提供される。２５６×２５６以下のビンサイズの場合、歪み関数は、３２×３２のラスタ空間領域毎にジオメトリ上に適用される。上述したアルファを有するプログラム可能な８つのセグメントＬＵＴは、ビナー及びＦＢＷの両方で使用される。
【００４６】
図１１は、いくつかの実施形態による、プリミティブバウンディングボックスと歪みラスタビューとの比較に基づくプリミティブの歪み認識ルーティング１１００を示す図である。図１に示す入力アセンブラ１０２等のプリミティブアセンブラは、バウンディングボックス１１０５を使用して、プリミティブ１１１０を、ラスタライズのための適切なシェーダエンジン及びスキャンコンバータにルーティングする。しかしながら、歪み関数は、プリミティブのマッピングを、ラスタ空間内の均一な間隔のピクセルに変更する。例えば、歪みのないラスタ空間１１１５において、バウンディングボックス１１０５は、対応するシェーダエンジン及びスキャンコンバータにルーティングされる単一のピクセル内に完全に存在する。しかしながら、ラスタ空間の歪みビュー１１２０では、バウンディングボックス１１０５は、不均一な間隔の４つのピクセルと重複する。その結果、プリミティブアセンブラは、プリミティブ１１１０を適切なシェーダエンジン及びスキャンコンバータにルーティングするために、異なるルーティング決定を行う。
【００４７】
プリミティブアセンブラのいくつかの実施形態は、逆歪み関数を使用して、プリミティブ１１１０のルーティングを実行する。例えば、逆歪み関数は、バウンディングボックス１１０５の境界を定義する４つの値（ｍｉｎｘ，ｍｉｎｙ，ｍａｘｘ，ｍａｘｙ）に適用され、プリミティブのラスタビューを生成する。いくつかの実施形態では、次のコード片を使用して、バウンディングボックスのラスタライザ／スキャンコンバータ（ＳＣ）ビューを生成する。
【表２】
2020515968.tif 000004
ビナー／垂直方向のラスタライザのいくつかの実施形態は、プリミティブアセンブラがシェーダエンジンを選択するために使用するのと同じバウンディングボックス１１０５のアンワーピングを使用して、垂直方向のビン行を決定する。
【００４８】
図１２は、いくつかの実施形態による、プリミティブのビニングを示すグラフィックスパイプラインの一部１２００のブロック図である。グラフィックスパイプラインの一部１２００は、図１に示すグラフィックスパイプライン１００のいくつかの実施形態で実装される。図示した実施形態では、プリミティブ１２０５は、本明細書で説明するように、ウィンドウ空間内の不均一な間隔のピクセルのレンダリングを実行するジオメトリシェーダ１２１０に提供される。ジオメトリシェーダ１２１０は、レンダリングされたウィンドウ空間のピクセルを、ハードウェアに実装され、レジスタの値に基づき構成可能な歪み関数１２１５に提供する。
【００４９】
ビナー１２２０は、歪み関数１２１５を介してジオメトリシェーダ１２１０から三角形等のプリミティブのバッチを受信する。ビナー１２２０のいくつかの実施形態は、垂直方向及び水平方向の２つのステージで動作する。垂直方向のステージは、「現在のバッチの何れの三角形がビン行Ｙに接するか」という質問に回答する。水平方向のステージは、「ビン行Ｙの何れの三角形がビンＸに接するか」という質問に回答する。ビナー１２２０は、バッチの三角形が接する可能性のあるビン毎にこれらの質問に回答する。ビナー１２２０は、ビン毎に、ビンに接する各三角形をスキャンコンバータ１２２５に向けて送信する。ビナー１２２０は、現在のビンの周囲にシザー矩形を設定し、スキャンコンバータ１２２５は、現在のビン内でのみラスタライズする。場合によっては、三角形の頂点位置は、固定小数点の２４ビットＸＹ座標である。したがって、ビナー１２２０は、歪み関数１２１５に基づいて、ジオメトリの異なるビューをスキャンコンバータ１２２５に提示し、スキャンコンバータ１２２５によって処理される各ビンがウィンドウの一意の解像度を処理して、ＨＭＤ１２３５等のディスプレイデバイスに提供される表示ピクセルを生成できるようにする。
【００５０】
ジオメトリパイプラインの一部１２００のいくつかの実施形態は、上述した方法で動作するフレキシブルビンウォーカー１２３０をも含む。フレキシブルビンウォーカー１２３０は、破線で示すように、ジオメトリパイプラインの一部１２００に必ずしも実装されないオプションの要素である。
【００５１】
ビナー１２２０のいくつかの実施形態は、図６に示す垂直及び水平歪み関数６０５，６１０等の垂直及び水平歪み関数に従って、垂直方向及び水平方向のラスタライズを実行する。ビナー１２２０中の垂直方向のラスタライザは、各三角形の垂直方向の範囲を計算して記憶する。この情報の解像度は、ビン行にある。多重解像度レンダリングなしでは、正しい範囲のＭＳＢビットを選択するだけでよいため、垂直方向の範囲の計算が非常に容易である。多重解像度レンダリングでは、垂直方向のラスタライザは、プリミティブアセンブラがシェーダエンジン選択に関して行うのと同じ歪みのないバウンディングボックスを計算する。場合によっては、垂直方向のラスタライザは、バウンディングボックスの垂直方向の範囲を歪ませないが、バウンディングボックスの水平方向の部分も計算される場合、垂直方向のラスタライザを使用して、狭く高い三角形についての偽陽性ビン行（false positive bin rows）を除去する。マルチシェーダエンジン構成では、各ビン列が現在のビナー１２２０に属していないビン行を有する特定のパターンを有しているので、垂直方向のラスタライザは、このタスクに適している。したがって、垂直方向のラスタライザは、歪みのないバウンディングボックスの計算を追加するように変更される。以下の擬似コードは、三角形によって区切られるビンを決定するための例示的な技術である。
【表３】
2020515968.tif 000005
【００５２】
水平方向のラスタライザは、連続するクロック周期で現在のビン行Ｙに接する全ての三角形と共に、垂直方向のラスタライザから現在のビン行Ｙを受信する。水平方向のラスタライザが各三角形を受信することに応じて、水平方向のラスタライザは、三角形がビン行の上部境界と下部境界との間で接する左端及び右端の交点を計算する。また、多重解像度レンダリングを可能にするために、水平方向のラスタライザは、水平方向の交点を解くために使用されるビン行の上部及び下部のＹ座標を（歪み関数に基づいて）歪ませ、水平方向のスパンがカバーするビンを決定するために、計算された水平方向の交点を（歪み関数に基づいて）歪ませないように構成されている。以下の擬似コードは、水平方向のラスタライザによって実行される処理の一例である。
【表４】
2020515968.tif 000006
【００５３】
ビナー１２２０は、現在のビン境界に設定されたシザー矩形セットと共に三角形をスキャンコンバータ１２２５に出力する。多重解像度レンダリングでは、各ビンから「透けて」見える元のビューポートの量が異なる。これは、ビン毎の一意のスケール及びオフセットを計算して、スキャンコンバータ１２２５に送信される前に三角形の頂点に適用することによって実現される。より大きなビンの場合、ＦＢＷ１２３０は、ビンを細分化又は集約する能力内で出力されるビンのサイズを調整するようにプログラミングされている。いくつかの実施形態では、スケール及びオフセットは、シザー矩形座標をワープ空間にワープし、元のシザー矩形とワープされたシザー矩形との間のサイズ及びオフセット差を計算することによって、計算される。スケール及びオフセットによって、頂点ＸＹ位置が変更される。これは、勾配設定計算（gradient set up calculation）をプリミティブアセンブラからスキャンコンバータ１２２５に移動させることによって実装される。そうでなければ、ビナー１２２０の出力は、重心及びＺ勾配もスケーリングする必要があり、追加の計算が必要になる。以下の擬似コードは、ビナー１２２０及びＦＢＷ１２３０の例示的な動作を示している。
【表５】
2020515968.tif 000007
【００５４】
要約すると、プリミティブアセンブラは、三角形のバウンディングボックスを歪ませずにプリミティブを取得するシェーダエンジンを決定するように構成されている。ビナー１２２０の垂直方向のラスタライザは、プリミティブのバウンディングボックスを歪ませず、水平方向のラスタライザは、ビン行の上部及び下部境界を歪ませる。また、水平方向のラスタライザは、水平方向のスパンの端点を歪ませない。ビナー１２２０からの出力及び場合によってはＦＢＷ１２３０を使用して、現在のビンのスケール及びオフセットを計算し、これらのスケール及びオフセットを三角形の頂点位置に適用する。次に、セットアップ関数を、ビナー１２２０に続くグラフィックスパイプラインの点に移動する。これにより、セットアップユニットは、ビナー１２２０又はＦＢＷ１２３０によって出力される新規の及び変更された三角形の頂点位置を使用して、三角形の勾配を正常に計算することができる。
【００５５】
図１３は、いくつかの実施形態による、歪み関数を通してウィンドウ空間内のサンプリング不均一ピクセルをレンダリングする方法１３００のフロー図である。方法１３００は、図１に示すグラフィックスパイプライン１００、図２に示す電子デバイス２０５、及び、図３に示す電子デバイス３０５のいくつかの実施形態で実施される。
【００５６】
ブロック１３０５において、ジオメトリパイプラインは、ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングする。ブロック１３１０において、ウィンドウ空間内の不均一な間隔のピクセルを、歪み関数を通してサンプリングする。ブロック１３１５において、スキャンコンバータは、ラスタ空間内の均一な間隔のピクセルに基づいて、表示ピクセルをレンダリングする。均一な間隔のピクセルは、歪み関数を通して不均一な間隔のピクセルをサンプリングすることによって決定される。ブロック１３２０において、表示ピクセルに基づいて、ユーザに表示される画像を生成する。
【００５７】
いくつかの実施形態では、上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステム（例えば、図１〜１３を参照して上述したグラフィックスパイプライン等）において実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５８】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００５９】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００６０】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００６１】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2020515968.tif 000008
【図２】
2020515968.tif 000009
【図３】
2020515968.tif 000010
【図４】
2020515968.tif 000011
【図５】
2020515968.tif 000012
【図６】
2020515968.tif 000013
【図７】
2020515968.tif 000014
【図８】
2020515968.tif 000015
【図９】
2020515968.tif 000016
【図１０】
2020515968.tif 000017
【図１１】
2020515968.tif 000018
【図１２】
2020515968.tif 000019
【図１３】
2020515968.tif 000020
【手続補正書】
【提出日】令和1年12月5日(2019.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフィックスパイプライン（１００）において、ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることと、
スキャンコンバータ（１１０，１２２５）を用いて、ウィンドウ空間（４０５，５１０）内のピクセルを、ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする歪み関数（１０９，５１５）を通してサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいて、前記スキャンコンバータによってレンダリングされる表示ピクセルを使用して、ユーザに表示される画像を生成することと、を含む、
方法。
【請求項２】
前記ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることは、視野（subtended）領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
請求項１の方法。
【請求項３】
前記ウィンドウ空間内のピクセルをレンダリングすることは、視野角毎のピクセル密度が、ユーザに関連する中心窩領域（２２５，２４０）でより高く、前記ユーザに関連する視覚周辺部（２３０，２５０）でより低くなるように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
請求項２の方法。
【請求項４】
前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることは、ウィンドウ空間内の不均一な間隔のピクセルの第１寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数（６１０）と、ウィンドウ空間内の不均一な間隔のピクセルの第２寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数（６０５）と、を通してウィンドウ空間内のピクセルをサンプリングすることを含む、
請求項１の方法。
【請求項５】
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、をさらに含む、
請求項４の方法。
【請求項６】
ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプラインを実装するように構成された少なくとも１つのプロセッサ（３３５）と、
ウィンドウ空間（４０５，５１０）内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする歪み関数（１０９，５１５）と、
スキャンコンバータ（１１０，１２２５）と、を備え、
前記スキャンコンバータは、
前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいてユーザに表示される画像を生成するために使用される表示ピクセルをレンダリングすることと、
を行うように構成されている、
装置。
【請求項７】
前記少なくとも１つのプロセッサは、
視野領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングすることと、
視野角毎のピクセル密度が、ユーザに関連する中心窩領域（２２５，２４０）で比較的高く、前記ユーザに関連する視覚周辺部（２３０，２５０）で比較的低くなるように、前記ウィンドウ空間内のピクセルをレンダリングすることと、
を行うように構成されている、
請求項６の装置。
【請求項８】
前記スキャンコンバータは、ウィンドウ空間内の不均一な間隔のピクセルの第１寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数（６１０）と、ウィンドウ空間内の不均一な間隔のピクセルの第２寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数（６０５）と、を通してウィンドウ空間内のピクセルをサンプリングするように構成されている、
請求項６の装置。
【請求項９】
前記垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される、
請求項８の装置。
【請求項１０】
前記少なくとも１つのプロセッサは、
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、
を行うように構成されている、
請求項９の装置。
【請求項１１】
前記少なくとも１つのプロセッサは、
プリミティブ（１０００）のバウンディングボックス（１００５）をウィンドウ空間内の不均一な間隔のピクセルの境界と比較することと、
前記比較に基づいて、前記グラフィックスパイプラインを通して前記プリミティブをルーティングすることと、
前記プリミティブとウィンドウ空間内の不均一な間隔のピクセルとの交点に基づいて、前記プリミティブのサンプルをビニングすることと、
を行うように構成されている、
請求項６の装置。
【請求項１２】
ヘッドマウントデバイス（ＨＭＤ）（３００，１２３５）であって、
前記ＨＭＤを装着しているユーザに画像を提示するディスプレイ（３２０）と、
ウィンドウ空間（４０５，５１０）内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプライン（１００）を実装するように構成された少なくとも１つのプロセッサ（３３５）と、
スキャンコンバータ（１１０，１２２５）と、を備え、
前記スキャンコンバータは、
ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間（４１０，５２０）内の均一な間隔のピクセルにマッピングする第１歪み関数（１０９，１０５）を通して、ウィンドウ空間内のピクセルをサンプリングすることと、
ラスタ空間内の均一な間隔のピクセルに基づいて、前記ユーザに表示される画像を生成するために、前記ディスプレイに提供される表示ピクセルをレンダリングすることと、
を行うように構成されている、
ＨＭＤ。
【請求項１３】
前記少なくとも１つのプロセッサは、視野領域毎のピクセル密度が前記ユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
請求項１２のＨＭＤ。
【請求項１４】
前記少なくとも１つのプロセッサは、前記ディスプレイに提供される前に前記表示ピクセルに適用される第２歪み関数を実装するように構成されている、
請求項１２のＨＭＤ。
【請求項１５】
前記少なくとも１つのプロセッサは、
前記ユーザの中心窩領域（２２５，２４０）を決定することと、
前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記第１歪み関数を変更することと、
を行うように構成されている、
請求項１２のＨＭＤ。
【国際調査報告】
2020515968.tif 000021
2020515968.tif 000022