(57)【要約】【解決手段】グラフィックス処理において、仮想空間におけるシーンに関する一つ以上の頂点を表すデータを受信する。表示デバイスの画面空間への頂点の投影を実行する。投影は、頂点の投影を曲面ビューポートにおいて近似する。頂点にプリミティブアセンブリを実行して、画面空間における頂点の投影から画面空間内の一つ以上のプリミティブを生成する。一つ以上のプリミティブに走査変換を実行して、一つ以上のプリミティブのうちの対応するプリミティブの部分である、複数個の画素のうちの一つ以上の画素を決定する。次に、対応するプリミティブの部分である一つ以上の画素に画素値を割り当てる画素処理を実行することによって完成フレームを生成する。いくつかの実施態様において、完成フレームを、メモリに保存するまたは表示デバイスに表示することができる。【選択図】図４Ｂ
2020091890.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックスプロセッシングユニット及びメモリを有するグラフィックス処理システムを用いたグラフィックス処理方法であって、
複数個の画素を有する表示デバイス上に仮想空間におけるシーンをレンダリングする際にプリミティブアセンブリを実行する前に、前記シーンに対する一つ以上の頂点の画面空間への数学的投影を実行するステップを含み、
前記数学的投影は、レンダリングされるべき前記画面空間の有効面積を減らすものであり、
前記頂点にプリミティブアセンブリを実行して一つ以上のプリミティブを生成する前に前記数学的投影を実行することが、レンダリングに関連付けられた計算負荷を減少し、
前記プリミティブを用いて生成された完成フレームを前記メモリに保存するまたは前記完成フレームを前記表示デバイスに表示するステップを含む、方法。
【請求項２】
前記頂点の前記投影を実行するステップが、
前記シーンの平面ビューポートであって、複数個の小区分に再分割された前記平面ビューポート上に、仮想空間からの前記頂点の初期の投影を計算するステップであって、前記複数個のうちの各小区分が前記画面空間の略等しい立体角に対応する、前記初期の投影を計算するステップと、
画面空間座標に変換された各プリミティブに粗いラスタライゼーションを実行して、どの一つ以上の小区分が前記プリミティブに重なるかを決定するステップと、
前記一つ以上のプリミティブの各プリミティブにおいて、前記プリミティブが重なる各小区分に画面空間補正を実行して、前記プリミティブの各頂点の前記座標を、前記小区分に関連する対応する補正された頂点座標にマッピングするステップとを含み、前記画面空間補正が、前記プリミティブが重なる各小区分の、曲面ビューポートの複数個の平面の補正された小区分のうちの対応する平面の補正された小区分へのマッピングに相当し、前記曲面ビューポートの前記補正された小区分が等しい面積を有する、請求項１に記載の方法。
【請求項３】
前記画面空間補正を実行するステップが、逆正接公式の区分線形近似を前記プリミティブの一つ以上の頂点の画面空間座標に適用して対応する補正された頂点を生成することを伴う計算を実行するステップを含む、請求項２に記載の方法。
【請求項４】
前記画面空間補正を実行するステップが、表示デバイスにおける物理的な光学によって生成された前記画像歪みの区分線形近似を前記プリミティブの一つ以上の頂点の画面空間座標に適用して対応する補正された頂点を生成することを伴う計算を実行するステップを含む、請求項２に記載の方法。
【請求項５】
前記一つ以上のプリミティブに走査変換を実行して、前記複数個の画素のうちのどの一つ以上の画素が前記一つ以上のプリミティブのうちの対応するプリミティブの部分であるかを決定するステップと、
前記対応するプリミティブの部分である前記一つ以上の画素に画素値を割り当てる画素処理を実行することによって前記完成フレームを生成するステップとをさらに含み、
前記走査変換が補正された小区分ごとに実行され、前記複数個の小区分のうちの所与の小区分における前記一つ以上のプリミティブのうちの所与のプリミティブに関して、前記補正された頂点座標を使用して、前記所与の小区分に関連する前記所与のプリミティブについての、前記所与の小区分に位置する前記所与のプリミティブのその部分に走査変換を実行する、請求項２に記載の方法。
【請求項６】
前記平面ビューポートの前記複数個の小区分のうちの前記小区分が矩形である、請求項２に記載の方法。
【請求項７】
前記頂点の前記投影、プリミティブアセンブリ及び走査変換が、計算シェーダを用いてソフトウェアに実装される、請求項１に記載の方法。
【請求項８】
前記頂点の前記投影、プリミティブアセンブリ及び走査変換が、ハードウェアに実装される、請求項１に記載の方法。
【請求項９】
ユーザが見ている前記表示デバイスの画面の一部を決定するステップをさらに含み、前記投影が、前記ユーザが見ている前記部分を含む前記画面の一つ以上の小区分における有効画素解像度が最も高くなるように前記有効画素解像度を変化させるように設定された、請求項１に記載の方法。
【請求項１０】
前記投影が、所与の光学及び前記表示デバイスの視野に対して静的である、請求項１に記載の方法。
【請求項１１】
前記投影が、所与の光学及び前記表示デバイスの視野に対して静的であり、前記投影が、前記画面の一つ以上の中央小区分が完全な有効画素解像度を有し、中央から遠い小区分が、次第に低減された有効画素解像度を有するように設定された、請求項１に記載の方法。
【請求項１２】
前記表示デバイスが９０度以上の視野によって特徴づけられた、請求項１に記載の方法。
【請求項１３】
前記表示デバイスが頭部装着型ディスプレイデバイスである、請求項１に記載の方法。
【請求項１４】
グラフィックス処理のためのシステムであって、
グラフィックスプロセッシングユニット（ＧＰＵ）と、
メモリとを備え、
前記ＧＰＵが、複数個の画素を有する表示デバイス上に仮想空間におけるシーンをレンダリングする際にプリミティブアセンブリを実行する前に、前記シーンに対する一つ以上の頂点の画面空間への数学的投影を実行するように構成され、
前記数学的投影は、レンダリングされるべき前記画面空間の有効面積を減らすものであり、
前記頂点にプリミティブアセンブリを実行して一つ以上のプリミティブを生成する前に前記数学的投影を実行することが、レンダリングに関連付けられた計算負荷を減少し、
前記ＧＰＵが、前記プリミティブを用いて生成された完成フレームを前記メモリに保存するまたは前記完成フレームを前記表示デバイスに表示するように構成された、システム。
【請求項１５】
前記シーンの平面ビューポートであって、複数個の小区分に再分割された前記平面ビューポート上に、仮想空間からの前記頂点の初期の投影を計算することであって、前記複数個のうちの各小区分が前記画面空間の大体等しい立体角に対応する、前記初期の投影を計算することと、
画面空間座標に変換された各プリミティブに粗いラスタライゼーションを実行して、どの一つ以上の小区分が前記プリミティブに重なるかを決定することと、及び
前記一つ以上のプリミティブの各プリミティブにおいて、前記プリミティブが重なる各小区分に画面空間補正を実行して、前記プリミティブの各頂点の前記座標を、前記小区分に関連する対応する補正された頂点座標にマッピングすることであって、前記画面空間補正が、前記プリミティブが重なる各小区分の、曲面ビューポートの複数個の平面の補正された小区分のうちの対応する平面の補正された小区分へのマッピングに相当する、前記マッピングすることと、によって、前記ＧＰＵが前記頂点の前記投影を実行するように構成された、請求項１４に記載のシステム。
【請求項１６】
前記ＧＰＵが、逆正接公式の区分線形近似を前記プリミティブの一つ以上の頂点の画面空間座標に適用して対応する補正された頂点を生成することを伴う計算を実行することによって、前記画面空間補正を実行するように構成された、請求項１５に記載のシステム。
【請求項１７】
前記ＧＰＵが、表示デバイスにおける物理的な光学によって生成された画像歪みの区分線形近似を前記プリミティブの一つ以上の頂点の画面空間座標に適用して対応する補正された頂点を生成することを伴う計算を実行することによって、前記画面空間補正を実行するように構成された、請求項１５に記載のシステム。
【請求項１８】
前記ＧＰＵが、前記一つ以上のプリミティブに走査変換を実行して、前記複数個の画素のうちのどの一つ以上の画素が前記一つ以上のプリミティブのうちの対応するプリミティブの部分であるかを決定するように構成され、
前記ＧＰＵが、前記対応するプリミティブの部分である前記一つ以上の画素に画素値を割り当てる画素処理を実行することによって前記完成フレームを生成するように構成され、
前記ＧＰＵが、補正された小区分ごとに前記走査変換を実行するように構成されており、前記複数個の小区分のうちの所与の小区分における前記一つ以上のプリミティブのうちの所与のプリミティブに関して、前記ＧＰＵが、前記所与の小区分に関連する前記所与のプリミティブについての、前記補正された頂点座標を使用して、前記所与の小区分に位置する前記所与のプリミティブのその部分に前記走査変換を実行する、請求項１５に記載のシステム。
【請求項１９】
前記平面ビューポートの前記複数個の小区分のうちの前記小区分が矩形である、請求項１５に記載のシステム。
【請求項２０】
前記曲面ビューポートの前記補正された小区分が等しい面積を有する、請求項１５に記載のシステム。
【請求項２１】
前記平面ビューポートの前記複数個の小区分のうちの前記小区分が矩形である、請求項２０に記載のシステム。
【請求項２２】
前記ＧＰＵが、前記頂点の投影、プリミティブアセンブリ及び走査変換を、計算シェーダを用いてソフトウェアに実装するように構成された、請求項１４に記載のシステム。
【請求項２３】
前記ＧＰＵが、前記頂点の前記投影、プリミティブアセンブリ及び走査変換をハードウェアに実装するように構成された、請求項１４に記載のシステム。
【請求項２４】
前記ＧＰＵが、ソフトウェアにおける小区分と、ハードウェアにおける前記頂点の前記投影、プリミティブアセンブリ及び走査変換との間の、プリミティブの粗野な分割を実施するように構成された、請求項１４に記載のシステム。
【請求項２５】
前記ＧＰＵが、ハードウェアに実装されるパレットから画面空間投影及びビューポートをその各々が選択する小区分インデックスを、ソフトウェアにおけるプリミティブ頂点に関連付けるように構成された、請求項２４に記載のシステム。
【請求項２６】
前記ＧＰＵが、ハードウェアに実装されるパレットから画面空間投影及びビューポートをその各々が選択する小区分インデックスを、ソフトウェアにおけるプリミティブ頂点インデックスに関連付けるように構成された、請求項２４に記載のシステム。
【請求項２７】
前記表示デバイスをさらに備えた、請求項１４に記載のシステム。
【請求項２８】
前記表示デバイスが９０度以上の視野によって特徴づけられた、請求項１４に記載のシステム。
【請求項２９】
前記表示デバイスが頭部装着型ディスプレイデバイスである、請求項１４に記載のシステム。
【請求項３０】
当該システムが、ユーザが見ている前記表示デバイスの画面の一部を決定するように構成されており、前記投影が、前記ユーザが見ている前記部分を含む前記画面の一つ以上の小区分における有効画素解像度が最も高くなるように前記有効画素解像度を変化させるように設定された、請求項１４に記載のシステム。
【請求項３１】
前記投影が、所与の光学及び前記表示デバイスの視野に対して静的である、請求項１４に記載のシステム。
【請求項３２】
前記投影が、所与の光学及び前記表示デバイスの視野に対して静的であり、前記投影が、前記画面の一つ以上の中央小区分が完全な有効画素解像度を有し、前記中央から遠い小区分が、次第に低減された有効画素解像度を有するように設定された、請求項１４に記載のシステム。
【請求項３３】
実行されたときに、請求項１に記載の前記方法を実施する、内部に具現化されるコンピュータ実行可能命令を有する非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、その内容全体が参照により本明細書に組み込まれる、本出願と同日に出願された「ＭＥＴＨＯＤ  ＦＯＲ  ＥＦＦＩＣＩＥＮＴ  ＣＯＮＳＴＲＵＣＴＩＯＮ  ＯＦ  ＨＩＧＨ  ＲＥＳＯＬＵＴＩＯＮ  ＤＩＳＰＬＡＹ  ＢＵＦＦＥＲＳ」（代理人整理番号ＳＣＥＡ１３０５５ＵＳ００）と題されたＴｏｂｉａｓ  Ｂｅｒｇｈｏｆｆへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６４号に関連する。
【０００２】
本願は、その内容全体が参照により本明細書に組み込まれる、２０１４年４月５日に出願された「ＧＲＡＰＨＩＣＳ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＨＡＮＣＥＭＥＮＴ  ＢＹ  ＴＲＡＣＫＩＮＧ  ＯＢＪＥＣＴ  ＡＮＤ／ＯＲ  ＰＲＩＭＩＴＩＶＥ  ＩＤＥＮＴＩＦＩＥＲＳ」（代理人整理番号ＳＣＥＡ１３０５６ＵＳ００）と題されたＴｏｂｉａｓ  Ｂｅｒｇｈｏｆｆへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６７号に関連する。
【０００３】
本願は、その内容全体が参照により本明細書に組み込まれる、２０１４年４月５日に出願された「ＧＲＡＤＩＥＮＴ  ＡＤＪＵＳＴＭＥＮＴ  ＦＯＲ  ＴＥＸＴＵＲＥ  ＭＡＰＰＩＮＧ  ＴＯ  ＮＯＮ−ＯＲＴＨＯＮＯＲＭＡＬ  ＧＲＩＤ」（代理人整理番号ＳＣＥＡ１３０５７ＵＳ００）と題されたＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６８号に関連する。
【０００４】
本願は、その内容全体が参照により本明細書に組み込まれる、２０１４年４月５日に出願された「ＶＡＲＹＩＮＧ  ＥＦＦＥＣＴＩＶＥ  ＲＥＳＯＬＵＴＩＯＮ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ  ＢＹ  ＣＨＡＮＧＩＮＧ  ＡＣＴＩＶＥ  ＣＯＬＯＲ  ＳＡＭＰＬＥ  ＣＯＵＮＴ  ＷＩＴＨＩＮ  ＭＵＬＴＩＰＬＥ  ＲＥＮＤＥＲ  ＴＡＲＧＥＴＳ」（代理人整理番号ＳＣＥＡ１３０５８ＵＳ００）と題されたＴｏｂｉａｓ  Ｂｅｒｇｈｏｆｆへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６１号に関連する。
【０００５】
本願は、その内容全体が参照により本明細書に組み込まれる、２０１４年４月５日に出願された「ＶＡＲＹＩＮＧ  ＥＦＦＥＣＴＩＶＥ  ＲＥＳＯＬＵＴＩＯＮ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ  ＢＹ  ＡＬＴＥＲＩＮＧ  ＲＡＳＴＥＲＩＺＡＴＩＯＮ  ＰＡＲＡＭＥＴＥＲＳ」（代理人整理番号ＳＣＥＡ１３０５９ＵＳ００）と題されたＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６３号に関連する。
【０００６】
本願は、その内容全体が参照により本明細書に組み込まれる、２０１４年４月５日に出願された「ＧＲＡＤＩＥＮＴ  ＡＤＪＵＳＴＭＥＮＴ  ＦＯＲ  ＴＥＸＴＵＲＥ  ＭＡＰＰＩＮＧ  ＦＯＲ  ＭＵＬＴＩＰＬＥ  ＲＥＮＤＥＲ  ＴＡＲＧＥＴＳ  ＷＩＴＨ  ＲＥＳＯＬＵＴＩＯＮ  ＴＨＡＴ  ＶＡＲＩＥＳ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ」（代理人整理番号ＳＣＥＡ１３０６１ＵＳ００）と題されたＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙへの同一出願人による同時係属中の米国特許出願第１４／２４６，０６２号に関連する。
【０００７】
［技術分野］
本開示の態様は、コンピュータグラフィックスに関する。特に、本開示は、画面位置に基づく解像度の変化に関する。
【背景技術】
【０００８】
グラフィックス処理は、一般的に、二つのプロセッサ、中央処理装置（ＣＰＵ）及びグラフィックスプロセッシングユニット（ＧＰＵ）の調整を伴う。ＧＰＵは、ディスプレイへの出力が意図された、フレームバッファ内の画像の作製を促進するように設計された特殊な電子回路である。ＧＰＵは、埋め込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム機、ワークステーション、及びゲームコンソールに使用される。ＧＰＵは、一般的に、コンピュータグラフィックスにおける操作が効率的となるように設計される。ＧＰＵは、多くの場合、データの大きなブロックの処理が並行して行われる場合に、アルゴリズムに関して汎用ＣＰＵよりもＧＰＵをより有効にする高度並列処理アーキテクチャを有する。
【０００９】
ＣＰＵは、ＧＰＵに特定のグラフィックス処理タスクを実施させる、例えば、画像において以前のフレームに対して変化した特定のテクスチャをレンダリングすることを命令する、一般に描画コマンドと呼ばれる命令をＧＰＵに送信することができる。これらの描画コマンドは、特定のアプリケーションの仮想環境の状態に対応するグラフィックスレンダリングコマンドを発行するために、グラフィックスアプリケーション・プログラミング・インターフェース（ＡＰＩ）を用いてＣＰＵによって調整することができる。
【００１０】
特定のプログラムに関するテクスチャをレンダリングするために、ＧＰＵは、仮想環境における視覚を、ディスプレイ上にレンダリングできる画像に変換するための、「グラフィックスパイプライン」における一連の処理タスクを実行することができる。標準的なグラフィックスパイプラインは、仮想空間内の仮想オブジェクトにおける特定のレンダリングまたはシェーディングオペレーション、出力ディスプレイに適切な画素データを生成するための、シーン内の仮想オブジェクトの変換及びラスタライゼーション、及びレンダリングされた画像をディスプレイ上に出力する前の、画素（または、フラグメント）への追加のレンダリングタスクの実行を含むことができる。
【００１１】
画像の仮想オブジェクトは、多くの場合、仮想シーンにおいてオブジェクトの形状を共に構成する、プリミティブとして公知の形状において仮想空間内に表現される。例えば、レンダリングすべき、三次元仮想世界内のオブジェクトは、三次元空間内のそれらの座標において規定された頂点を有し、それによってこれらの多角形がオブジェクトの表面に構成される、一連の異なる三角形のプリミティブに帰することができる。各多角形は、所与の多角形を他の多角形と区別するための、グラフィックス処理システムによって使用できる関連インデックスを有することができる。同様に、各頂点は、所与の頂点を他の頂点と区別するために使用できる関連インデックスを有することができる。グラフィックスパイプラインは、仮想シーンについての視覚を生成し、このデータを、ディスプレイの画素によって複製するのに適切な二次元フォーマットに変換する特定のオペレーションをこれらのプリミティブに実行することができる。本明細書に使用されるグラフィックスプリミティブ情報（または、単に「プリミティブ情報」）という用語は、グラフィックスプリミティブを表すデータを指すのに使用される。そのようなデータは、これらに限定されないが、頂点情報（例えば、頂点位置または頂点インデックスを表すデータ）、及び多角形情報、例えば、多角形インデックス、ならびに特定の頂点を特定の多角形に関連付ける他の情報を含む。
【００１２】
グラフィックスパイプラインの一部として、ＧＰＵは、シェーダとして一般に公知のプログラムを実装することによってレンダリングタスクを実行することができる。標準的なグラフィックスパイプラインは、頂点ごとの基準においてプリミティブの特定の性質を操作できる頂点シェーダ、ならびにグラフィックスパイプラインにおいて頂点シェーダからのダウンストリームを動作させ、画素データをディスプレイに伝送する前に、画素ごとの基準において特定の値を操作できる（「フラグメントシェーダ」としても公知の）画素シェーダを含むことができる。フラグメントシェーダは、テクスチャのプリミティブへの適用に関連する値を操作することができる。パイプラインは、頂点シェーダの出力を使用してプリミティブの新規のセットを生成するジオメトリシェーダ、ならびに特定の他の汎用計算タスクを実行するために、ＧＰＵによって実装できる計算シェーダ（ＣＳ）などの、さまざまなステージにおける他のシェーダもパイプラインに含むことができる。
【００１３】
広視野（ＦＯＶ）を有するグラフィカル表示デバイスが開発された。そのようなデバイスは、頭部装着型ディスプレイ（ＨＭＤ）デバイスを含む。ＨＭＤデバイスでは、小さな表示デバイスがユーザの頭部に装着される。表示デバイスは、片目（単眼ＨＭＤ）または各目（両眼ＨＭＤ）の前にディスプレイオプティックを有する。ＨＭＤデバイスは、一般的に、デバイスの向きを感知できるセンサを含み、ユーザの頭部が移動するにつれてディスプレイ光学によって示されるシーンを変化させることができる。従来、広視野ディスプレイにおけるシーンのレンダリングのほとんどのステージは、画面のすべての部分が単位面積当たりに同じ数の画素を有する平面レンダリングによって実行されてきた。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
実際的な体験を提供するために、高品質かつ効率的にレンダリングされた、広視野表示デバイスによって提示されるグラフィックスが望ましい。
【００１５】
本開示はこの文脈内に現れる。
【課題を解決するための手段】
【００１６】
本開示の教示は、添付図面と併せて以下の詳細な説明を検討することによって容易に理解することができる。
【図面の簡単な説明】
【００１７】
【図１Ａ−１Ｂ】図１Ａ及び図１Ｂは、広視野（ＦＯＶ）ディスプレイの特定のパラメータを図示する略図である。
【図１Ｃ】図１Ｃは、広視野ディスプレイの種々の部分における種々の立体角を図示する。
【図２Ａ−２Ｃ】図２Ａ〜図２Ｃは、本開示の態様に従う、種々の広視野ディスプレイの種々の領域における画素の相対的重要度の実施例を図示する。
【図２Ｄ】図２Ｄは、本開示の態様に従う、ＦＯＶディスプレイの画面の種々の領域における種々の画素解像度の実施例を図示する。
【図３】本開示の態様に従う、等しい立体角を示す画面小区分の、等面積の対応する小区分への変換を図示する概略図である。
【図４Ａ】図４Ａは、本開示の態様に従うグラフィックス処理システムのブロック図である。
【図４Ｂ】図４Ｂは、本開示の態様に従うグラフィックス処理パイプラインのブロック図である。
【図４Ｃ】図４Ｃは、本開示の態様に従う、画面位置に基づいて画素解像度が変化する実施例を図示する概略図である。
【図４Ｄ】図４Ｄは、本開示の態様に従う、画面位置に基づいて画素解像度が変化する代替的な実施例を図示する概略図である。
【図５】本開示の態様に従う、グラフィックスプリミティブの頂点の補正の実施例を図示する概略図である。
【発明を実施するための形態】
【００１８】
以下の詳細な説明は例証する目的のために多くの具体的な詳細を含むが、当業者は、以下の詳細に対する多くの変化及び変更が本発明の範囲内にあることを認識する。それ故に、後述する本発明の例示の実施形態は、一般性を何ら喪失することなく、かつ特許請求の範囲に記載されている発明に制限を課すことなく説明される。
【００１９】
序論
図１Ａ〜図１Ｃは、大きなＦＯＶディスプレイに伴う今まで認識されてこなかった問題を図示する。図１Ａは、９０度のＦＯＶディスプレイを図示し、図１Ｂは、１１４度のＦＯＶディスプレイを図示する。従来の大きなＦＯＶディスプレイでは、投影面１０１に対する平面投影を使用して、三次元ジオメトリをレンダリングする。しかしながら、高ＦＯＶ投影面へのジオメトリのレンダリングが非常に非効率的であることがわかってきた。図１Ｃを見てわかるように、投影面１０１のエッジ領域１１２及び中央領域１１４は、同じ範囲であるが、観察者１０３から見ると、非常に異なる立体角を示す。その結果、画面のエッジ付近の画素は、中央付近の画素よりも保持する有意義な情報が遥かに少ない。従来、シーンをレンダリングするときには、これらの領域は同じ数の画素を有し、画面における等しいサイズの領域をレンダリングするのに費やされる時間は等しい。
【００２０】
図２Ａ〜図２Ｃは、種々のサイズの視野に関する、二次元における大きなＦＯＶディスプレイの種々の部分の相対的重要度を図示する。図２Ａは、市松模様が１１４度の角度の範囲を定める場合の、ビュー方向と垂直の平面市松模様の各々の四角における立体角の相違を表す。言い換えれば、１１４度のＦＯＶディスプレイにおける従来の平面投影レンダリングの非効率性を表す。図２Ｂは、９０度のＦＯＶディスプレイおける同じ情報を表す。そのような平面投影レンダリングでは、投影において、画像２０１内のエッジに位置するタイル２０２及び隅部に位置するタイル２０３が、中央に位置するタイル２０４と比較してより小さい立体角に圧縮される。この圧縮、及び画像２０１における各タイルが画面空間において同じ数の画素を有するという事実の故に、中央タイル２０４と比較してエッジタイル２０２のレンダリングにはおおよそ４倍の非効率因子が存在する。このことは、エッジタイル２０３の従来のレンダリングが、中央タイル２０４に対して単位立体角当たりおおよそ４倍に等しい処理を伴うことを意味する。隅部タイル２０３では、非効率因子は、おおよそ８倍である。画像２０１全体において平均すると、非効率因子は、おおよそ２．５倍である。
【００２１】
非効率性は、ＦＯＶのサイズに応じて決まる。例えば、図２Ｂに示す９０度のＦＯＶディスプレイでは、非効率因子は、エッジタイル２０２のレンダリングではおおよそ２倍であり、隅部タイル２０３のレンダリングではおおよそ３倍であり、そして画像２０１全体のレンダリングではおおよそ１．７倍である。
【００２２】
この状況を見る別の方式を図２Ｃに示し、この図では、画面１０２が、範囲を定められた単位立体角当たりの画素の観点から大体等しい「重要度」をもつ矩形に分割されている。各矩形は、ディスプレイを通じて見るときの最終画像におおよそ同じ程度寄与する。平面投影がエッジ矩形２０２及び隅部矩形２０３の重要度をどの程度歪めるかを見ることができる。実際には、隅部矩形２０３は、ディスプレイ光学に起因して中央矩形に対して少ししか寄与しない可能性があり、（立体角ごとの画素として表される）画素の視覚濃度を、ディスプレイの中央の方により高くするように選ぶことができる。
【００２３】
前述の観測に基づき、図２Ｄに示すように、広視野ディスプレイに関する画像２１０において、中央領域２０５よりもエッジ領域２０２、２０４、２０６、２０８により小さい画素密度、かつエッジ領域２０２、２０４、２０６、２０８よりも隅部領域２０１、２０３、２０７及び２０９により小さい画素密度を有することが有利となるであろう。基礎的なグラフィカル画像データ若しくはデータフォーマットまたはデータの処理を著しく変更する必要なく、画面全体における画素密度を変化させて同じ効果が得られるように、広視野ディスプレイの画面において従来のグラフィカル画像をレンダリングすることも有利となるであろう。
【００２４】
代替的に、画面空間のエッジ及び隅部に位置する画素が中央に位置する画素と大体同じ立体角を含有する様に、頂点が投影され、プリミティブがレンダリングされた画面空間が球表面の一部を近似した場合に、これは有利となるであろう。
【００２５】
本開示の態様に従い、グラフィックス処理は、頂点の投影を曲面ビューポートにおいて近似するラスタライゼーションステージを利用する。特定の実施態様において、近似された半球画面空間における投影の均等物を、フラット画面空間における従来の投影、それに続いて、等しい立体角を示す画面空間小区分の、等面積の対応する小区分への変換を通じてグラフィックスパイプラインにおいて取得することができる。図３は、例示的なそのような変換を図示する。左側の図面では、平面画面空間１が、大体等しい立体角の矩形の領域に分割される。代替的な実施態様では、画面空間は、非矩形の領域に分割することができる。球面から観測面への中心投影は、（心射図法と呼ばれることもある）直線投影として公知であり、そしてそのような逆の直線投影では、投影面における画素を、球形のビューポート上に等しい立体角の要素に戻すように正確にマッピングする。真逆の直線投影では、垂線及び水平線を直線にマッピングしないので、本開示の態様の特定の実施態様は、代わりに、２軸の逆の直線投影を用いる。これは、右側の図面に示すように、各画面の軸が、大体等しい立体角の各矩形を、変換された画面空間２における対応する四角領域にマッピングする逆正接公式によって変換される。この近似において、変換された画面空間２における四角領域は、フラットである。実施例として、制限的なものではなく、変換は、座標（Ｈ，Ｖ）における三角形３の頂点を、一定の画素密度空間が次の通りであり得る、座標（Ｈ’，Ｖ’）における変換された三角形３’の対応する頂点にマッピングする。
【００２６】
例えば、ＦＯＶＨ、ＦＯＶＶがラジアンにおける水平及び垂直の視野であり、Ｈ’，Ｖ’が、逆投影された一定の画素密度空間における正規化された座標（すなわち、ＦＯＶ全体にわたる範囲［−１〜１］における座標）である場合には、Ｈ’，Ｖ’を、θＨ、θＶ（それぞれ、ＦＯＶ全体にわたる範囲［−ＦＯＶＨ／２〜ＦＯＶＨ／２］及び［−ＦＯＶＶ／２〜ＦＯＶＶ／２］にわたって変化する座標）を消去するための以下の方程式を解くことによって、線形空間における正規化された座標（すなわち、ＦＯＶ全体にわたる範囲［−１〜１］における座標）Ｈ，Ｖから取得することができる。
Ｈ’＝θＨ＊２／ＦＯＶＨ
Ｖ’＝θＶ＊２／ＦＯＶＶ
Ｈ＝ｔａｎ（θＨ）／ｔａｎ（ＦＯＶＨ／２）
Ｖ＝ｔａｎ（θＶ）／ｔａｎ（ＦＯＶＶ／２）
Ｈ’及びＶ’を解くと次を生じる、
Ｈ’＝ａｒｃｔａｎ（Ｈ＊ｔａｎ（ＦＯＶＨ／２））＊２／ＦＯＶＨ
Ｖ’＝ａｒｃｔａｎ（Ｖ＊ｔａｎ（ＦＯＶＶ／２））＊２／ＦＯＶＶ
この解決策が、ＨＭＤレンダリング構成において、画素間のほぼ理想的な立体範囲分布は生成するが、物理的な光学が、可視の視野にわたってＨＭＤ表示画素を均等には分布できないことに留意すべきである。その結果、この構成における最も効率的な解決策は、画面範囲への表示画素の理想的なマッピングの決定において、光学によって生じる歪みを考慮する。
【００２７】
従来のラスタライゼーションは平面ビューポートしか対象にできないので、各領域内の頂点は、線形変換を使用しない限りは再マッピングすることができない。故に、そのような場合では、特定の実施態様は、代わりに、次の通りに、この変換の連続的な区分線形近似を頂点に適用する。
【００２８】
一定の画素密度空間において増大する順序で画面範囲境界Ｈ’［ｉ］及びＶ’［ｊ］のセットを選び、前述の変換の逆を使用して、線形画面空間における対応する境界Ｈ［ｉ］及びＶ［ｊ］を算出する。
Ｈ［ｉ］＝ｔａｎ（Ｈ’［ｉ］＊ＦＯＶＨ／２）／ｔａｎ（ＦＯＶＨ／２）
Ｖ［ｊ］＝ｔａｎ（Ｖ’［ｊ］＊ＦＯＶＶ／２）／ｔａｎ（ＦＯＶＶ／２）
次に、これらの境界を維持する区分線形変換を構築する。
Ｈ’＝（Ｈ［ｉ］＜Ｈ＜Ｈ［ｉ＋１］）となるようなｉにおいて、
Ｈ’［ｉ］＋（Ｈ’［ｉ＋１］−Ｈ’［ｉ］）＊（Ｈ−Ｈ［ｉ］）／（Ｈ［ｉ＋１］−Ｈ［ｉ］）
Ｖ’＝（Ｖ［ｊ］＜Ｖ＜Ｖ［ｊ＋１］）となるようなｊにおいて、
Ｖ’［ｊ］＋（Ｖ’［ｊ＋１］−Ｖ’［ｊ］）＊（Ｖ−Ｖ［ｊ］）／（Ｖ［ｊ＋１］−Ｖ［ｊ］）
Ｈ，ＶからＨ’，Ｖ’へのマッピングは、（前述のｉ及びｊによってインデックスを付けられた）種々の小区分ごとに若干異なるので、オリジナルの画面空間１における三角形３は、湾曲部を有する変換された三角形３’として変換された画面空間２にマッピングされる。しかしながら、結果生じた画像が線形または曲面ディスプレイに帰着するときに、変換が帰着の一部として逆にされ、三角形３’の湾曲部は、明らかな直線に戻るように復元される。
【００２９】
そのような画面空間変換の利点は相当である。例えば、９０度ＦＯＶでは、画面空間１の面積が１．００である場合には、その結果、この方策では、おおよそ０．６２の面積をもつ変換された画面空間２が生じる。対照的に、画面空間１を球面にマッピングできる場合には、変換された画面空間２の面積は、おおよそ０．４６となるであろう。近似的に球形のみへの変換であったとしても、変換された画面空間の面積を減少することによって、変換しないよりも遥かに速くグラフィックス処理を行うことができる。
【００３０】
本開示の態様は、図３に関して記述したタイプの画面空間変換を利用して、レンダリングすべき画面空間の面積を効果的に減少することによってＧＰＵの計算負荷を減少する。
【００３１】
本開示の態様に従い、グラフィックスプロセッシングユニット及びメモリを有するグラフィックス処理システムは、次の通りにグラフィックス処理を実行することができる。仮想空間におけるシーンに関する一つ以上の頂点を表すデータを受信する。表示デバイスの画面空間への頂点の投影を実行する。投影は、頂点の投影を曲面ビューポートにおいて近似する。頂点にプリミティブアセンブリを実行して、画面空間における頂点の投影から画面空間内の一つ以上のプリミティブを生成する。一つ以上のプリミティブに走査変換を実行して、一つ以上のプリミティブのうちの対応するプリミティブの部分である、複数個の画素のうちの一つ以上の画素を決定する。次に、対応するプリミティブの部分である一つ以上の画素に画素値を割り当てる画素処理を実行することによって完成フレームを生成する。いくつかの実施態様において、完成フレームを、メモリに保存するまたは表示デバイスに表示することができる。
【００３２】
特定の実施態様において、仮想空間からの頂点をシーンの平面ビューポートにおいて初期に投影することによって、頂点の投影を実行することができる。平面ビューポートは、画面空間の大体等しい立体角に各々が対応する複数個の小区分に再分割される。画面空間座標に変換された各プリミティブに粗いラスタライゼーションを実行して、プリミティブが重なる一つ以上の小区分を決定する。各プリミティブにおいて、プリミティブが重なる各小区分に画面空間補正を実行して、プリミティブの各頂点の座標を、小区分に関連する対応する補正された頂点座標にマッピングする。ここでは、画面空間補正は、プリミティブが重なる各小区分の、曲面ビューポートの複数個の平面の補正された小区分のうちの対応する平面の補正された小区分へのマッピングに相当し、この曲面ビューポートの補正された小区分は、等しい面積を有する。
【００３３】
そのような実施態様では、画面空間補正の実行は、逆正接公式に基づいて導き出された係数を使用した線形変換をプリミティブの一つ以上の頂点の画面空間座標に適用して、対応する補正された頂点を生成することを含むことができる。
【００３４】
そのような実施態様では、補正された小区分ごとに走査変換を実行することができる。ここでは、複数個の小区分のうちの所与の小区分における一つ以上のプリミティブのうちの所与のプリミティブに関して、所与の小区分に関連する所与のプリミティブについての補正された頂点座標を使用して、所与の小区分に位置する所与のプリミティブのその部分に走査変換を実行する。
【００３５】
本開示の態様のいくつかの実施態様において、平面ビューポートの複数個の小区分のうちの小区分は、矩形であっても良い。
【００３６】
本開示の態様のいくつかの実施態様において、頂点の投影、プリミティブアセンブリ及び走査変換は、計算シェーダを用いてソフトウェアに実装される。
【００３７】
本開示の態様のいくつかの代替的な実施態様において、頂点の投影、プリミティブアセンブリ及び走査変換は、ハードウェアに実装される。
【００３８】
本開示の態様のいくつかの実施態様において、表示デバイスは、９０度以上の視野によって特徴づけられる。
【００３９】
本開示の態様のいくつかの実施態様において、表示デバイスは、頭部装着型ディスプレイデバイスである。
【００４０】
本開示の態様は、前述の態様に従うグラフィックス処理を実施するように構成された、グラフィックスプロセッシングユニット及びメモリを有するグラフィックス処理システムも含む。
【００４１】
本開示の態様は、実行されたときに、前述の態様に従うグラフィックス処理を実施する、内部に具現化されるコンピュータ実行可能命令を有する非一時的コンピュータ可読媒体も含む。
【００４２】
システム及び装置
本開示の態様は、曲面ビューポート上に頂点の投影を近似することによって、画面位置に基づいて有効画素解像度を変化させるグラフィックス処理を実施するように構成されたグラフィックス処理システムを含む。実施例として、制限的なものではなく、図４Ａは、本開示の態様に従うグラフィックス処理を実施するのに使用できるコンピュータシステム４００のブロック図を図示する。本開示の態様に従い、システム４００は、埋め込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム機、ワークステーション、ゲームコンソールなどであっても良い。
【００４３】
システム４００は、通常、中央プロセッサユニット（ＣＰＵ）４０２、グラフィックス・プロセッサ・ユニット（ＧＰＵ）４０４、ならびにＣＰＵ及びＧＰＵの両方にアクセス可能なメモリ４０８を含むことができる。ＣＰＵ４０２及びＧＰＵ４０４は、各々、一つ以上のプロセッサコア、例えば、単一のコア、二つのコア、四つのコア、八つのコア、またはそれ以上のコアを含むことができる。メモリ４０８は、例えば、ＲＡＭ、ＤＲＡＭなどのアドレス可能メモリを提供する集積回路の形態であっても良い。メモリ４０８は、グラフィックスリソースを保存し、グラフィックスレンダリングパイプラインに関するデータのグラフィックスバッファ４０５を一時的に保存できるグラフィックスメモリ４２８を含むことができる。グラフィックスバッファ４０５は、例えば、頂点パラメータ値を保存するための頂点バッファＶＢ、頂点インデックスを保存するためのインデックスバッファＩＢ、グラフィックスコンテントの深度値を保存するための深度バッファ（例えば、Ｚ−バッファ）ＤＢ、ステンシルバッファＳＢ、ディスプレイに送信すべき完成したフレームを保存するためのフレームバッファＦＢ、及び他のバッファを含むことができる。図４Ａに示す実施例では、グラフィックスメモリ４２８は、メインメモリの一部として示される。代替的な実施態様では、グラフィックスメモリ４２８は、場合によってはＧＰＵ４０４に一体化された別個のハードウェアコンポーネントであっても良い。
【００４４】
実施例として、制限的なものではなく、ＣＰＵ４０２及びＧＰＵ４０４は、データバス４０９を使用してメモリ４０８にアクセスできる。場合によっては、システム４００に二つ以上の種々のバスを含むことが有用であり得る。メモリ４０８は、ＣＰＵ４０２及びＧＰＵ４０４がアクセスできるデータを含むことができる。ＧＰＵ４０４は、グラフィックス処理タスクを並行して実行するように構成された複数個の計算ユニットを含むことができる。各計算ユニットは、ローカルデータ共有などのそれぞれの専用ローカルメモリストアを含むことができる。代替的に、計算ユニットは、その各々が、メモリ４０８または専用グラフィックスメモリ４２８にアクセスできる。
【００４５】
ＣＰＵは、グラフィックス、コンパイラ及びグラフィックスＡＰＩを利用するアプリケーションを含み得るＣＰＵコード４０３Ｃを実行するように構成できる。グラフィックスＡＰＩは、ＧＰＵによって実施されるプログラムに描画コマンドを発行するように構成できる。ＣＰＵコード４０３Ｃは、物理学シミュレーション及び他の機能も実装することができる。ＧＰＵ４０４は、前述のように動作するように構成できる。特に、ＧＰＵは、前述のような計算シェーダＣＳ、頂点シェーダＶＳ及び画素シェーダＰＳなどのシェーダを実装できるＧＰＵコード４０３Ｇを実行できる。計算シェーダＣＳと頂点シェーダＶＳとの間のデータの受け渡しを促進するために、システムは、フレームバッファＦＢを含み得る一つ以上のバッファ４０５を含むことができる。ＧＰＵコード４０３Ｇは、選択的に、画素シェーダまたはジオメトリシェーダなどの他のタイプのシェーダ（図示せず）も実装することができる。各計算ユニットは、ローカルデータ共有などのそれぞれの専用ローカルメモリストアを含むことができる。ＧＰＵ４０４は、グラフィックスパイプラインの一部としてテクスチャをプリミティブに適用するための特定のオペレーションを実行するように構成された一つ以上のテクスチャユニット４０６を含むことができる。
【００４６】
本開示の特定の態様に従い、ＣＰＵコード４０３Ｃ及びＧＰＵコード４０３ｇならびにシステム４００の他の要素は、仮想空間におけるシーンの一つ以上のオブジェクトについての一つ以上の頂点を示す頂点データ４３２をＧＰＵ４０４が受信するグラフィックスパイプラインを実装するように構成される。頂点データ４３２は、演算、例えば、ＣＰＵ４０２によるＣＰＵコード４０３Ｃの実行によって実施される物理学シミュレーションから生成できる。ＧＰＵ４０４は、表示デバイス４１６の画面空間への頂点の投影を実行する。投影は、頂点の投影を曲面ビューポートにおいて近似する。次に、ＧＰＵ４０４は、頂点にプリミティブアセンブリを実行して、画面空間における頂点の投影から画面空間内の一つ以上のプリミティブを生成する。次に、一つ以上のプリミティブに走査変換を実行して、対応するプリミティブの部分である画面空間の画素を決定する。次に、ＧＰＵ４０４は、対応するプリミティブの部分である一つ以上の画素に画素値を割り当てる画素処理を実行することによって結果生成される完成フレーム４６０を生成する。完成フレームは、メモリ４０８若しくは（例えば、フレームバッファＦＢにおける）グラフィックスメモリ４２８に保存する、または表示デバイス４１６に表示することができる。
【００４７】
画面空間及びグラフィックスパイプラインの他の関連部分における頂点の投影は、ソフトウェアにおいて、例えば、計算シェーダＣＳとして実装されるフロントエンドによって実行することができる。代替的に、画面空間及びグラフィックスパイプラインの他の関連部分における頂点の投影は、これらの機能を実施するように構成された、特別に設計されたハードウェアコンポーネントＨＷによって実施できる。
【００４８】
前述の直線逆投影では、計算及びメモリリソースの使用を最適化することによってグラフィックス処理を向上することができる。いくつかの実施態様において、直線逆投影は、光学及びディスプレイ４１６のＦＯＶに対して静的である。そのような場合、画面小区分ごとの有効画素解像度を、例えば、図４Ｃに図示するようになるように構成できる。図４Ｃに示す実施例では、画面４１６の中央小区分は、完全な解像度を有し、中央から遠い小区分は、次第に低減された解像度を有することが所望される。
【００４９】
本開示の態様は、逆投影が動的である実施態様も含む。例えば、レンダリング効率を改善するために、逆投影を視線追跡と組み合わせて中心窩の解像度を改善することができる。そのような実施態様では、システム４００は、ユーザの注視、すなわち、ユーザの眼球が向いているところを追跡し、この情報を、ユーザが見ている対応する画面位置に関連づけるためのハードウェアを含む。そのようなハードウェアの一つの実施例は、表示デバイス４１６の画面に対する既知の位置にあり、ユーザの概略の方向に向けられたデジタルカメラを含むことができる。デジタルカメラは、ユーザインターフェース４１８の一部または別個のコンポーネントであっても良い。ＣＰＵコード４０３Ｃは、画像解析ソフトウェアを含むことができ、これは、カメラからの画像を解析して、（ａ）画像内にユーザが居るか否か、（ｂ）ユーザがカメラの方を向いているか否か、（ｃ）ユーザが画面の方を向いているか否か、（ｄ）ユーザの眼球が可視であるか否か、（ｅ）ユーザの頭部と相対的なユーザの眼球の瞳孔の向き、及び（ｆ）カメラと相対的なユーザの頭部の向きを決定することができる。画面に対するカメラの既知の位置及び向き、ユーザの頭部と相対的なユーザの眼球の瞳孔の向き、ならびにカメラと相対的なユーザの頭部の向きから、画像解析ソフトウェアは、ユーザが画面を見ているか否か、そして見ている場合には、ユーザが見ている画面の一部についての画面空間座標を決定することができる。次に、ＣＰＵコード４０３Ｃは、これらの画面座標をＧＰＵコード４０３Ｇに送り、これによりＧＰＵコード４０３Ｇは、中心窩部分４８０を含む一つ以上の小区分（すなわち、ユーザが見ている部分）を決定することができる。次に、ＧＰＵコード４０３ｇは、それに応じて、図４Ｄに示すように、中心窩部分４８０を含む一つ以上の小区分における画素解像度が最も高く、中心窩部分から遠い小区分における画素解像度が次第に低減されるように直線逆投影を変更することができる。
【００５０】
いくつかの実施態様において、ＣＰＵコード４０３Ｃ、ＧＰＵコード４０３ｇ及びテクスチャユニット４０６は、さらに、画面位置依存性の可変画素解像度と併せて、テクスチャマッピングオペレーションについての変更を実施するように構成できる。例えば、画素シェーダＰＳ及びテクスチャユニット４０６は、画素位置ＸＹごとの一つ以上のテクスチャ座標ＵＶを生成して、一つ以上のテクスチャマッピングオペレーションのための座標セットを提供し、テクスチャ座標ＵＶから勾配値Ｇｒを算出し、その勾配値を使用して、プリミティブに適用するための、テクスチャについての詳細度（ＬＯＤ）を決定するように構成できる。これらの勾配値は、可変解像度ならびにサンプル位置における正規直交性からの逸脱を考慮する為に調節され得る。
【００５１】
実施例として、制限的なものではなく、特別に設計されたハードウェアＨＷ、テクスチャユニット（複数可）４０６、特定のタイプのシェーダ、及び後述するグラフィックスパイプラインの他の部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはシステムオンチップ（ＳｏＣまたはＳＯＣ）などの専用ハードウェアによって実装できる。
【００５２】
本明細書に使用され、当業者によって通常理解されるような特定用途向け集積回路（ＡＳＩＣ）は、汎用使用を意図したものではなく、特定の使用向けにカスタマイズされた集積回路である。
【００５３】
本明細書に使用され、当業者によって通常理解されるようなフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）は、製造後に顧客または設計者によって設定される、したがって、「フィールド・プログラマブル」であるように設計された集積回路である。ＦＰＧＡ設定は、通常、ＡＳＩＣに使用されるものに類似するハードウェア記述言語（ＨＤＬ）を使用して指定される。
【００５４】
本明細書に使用され、当業者によって通常理解されるように、システムオンアチップまたはシステムオンチップ（ＳｏＣまたはＳＯＣ）は、コンピュータまたは他の電子システムのすべてのコンポーネントを単一チップに集積する集積回路（ＩＣ）である。それは、デジタル、アナログ、混合信号及び多くの場合にすべてが単一チップ基板上にある?無線周波数機能を含むことができる。標準的なアプリケーションは、埋め込みシステムの領域に存在する。
【００５５】
標準的なＳｏＣは、以下のハードウェアコンポーネントを含む。
一つ以上のプロセッサコア（例えば、マイクロコントローラ、マイクロプロセッサまたはデジタルシグナルプロセッサ（ＤＳＰ）コア。
メモリブロック、例えば、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、及びフラッシュメモリ。
発振器または位相ロックループなどのタイミングソース。
カウンタタイマ、リアルタイムタイマまたはパワーオンリセット発電機などの周辺機器。
外部インターフェース、例えば、ユニバーサル・シリアル・バス（ＵＳＢ）、ファイヤーワイヤー、イーサネット（登録商標）、万能非同期送受信機（ＵＳＡＲＴ）、シリアル周辺インターフェース（ＳＰＩ）バスなどの業界標準。
アナログ・デジタル・コンバータ（ＡＤＣｓ）及びデジタル・アナログ・コンバータ（ＤＡＣｓ）を含むアナログインターフェース。
電圧レギュレータ及び電源管理回路。
【００５６】
これらのコンポーネントは、所有者のまたは業界標準バスのいずれかによって接続される。ダイレクトメモリアクセス（ＤＭＡ）コントローラは、外部インターフェースとメモリとの間でデータを直接に送り、プロセッサコアをバイパスすることによってＳｏＣのデータスループットを増大する。
【００５７】
標準的なＳｏＣは、前述のハードウェアコンポーネント、ならびにプロセッサコア（複数可）、周辺機器及びインターフェースを制御する実行可能命令（例えば、ソフトウェアまたはファームウェア）を含む。
【００５８】
いくつかの実施態様において、グラフィックスパイプラインの部分の機能のいくつかまたはすべては、代替的に、例えば、ＧＰＵ４０４によって実行される計算シェーダＣＳとして、ソフトウェアプログラマブル汎用コンピュータプロセッサによって実行される適切に構成されたソフトウェア命令によって実施することができる。そのような命令は、コンピュータ可読媒体、例えば、メモリ４０８、グラフィックスメモリ４２８またはストレージデバイス４１５において具現化することができる。
【００５９】
システム４００は、例えば、バス４０９を通じてシステムの他のコンポーネントと通信できる周知のサポート機能４１０も含むことができる。そのようなサポート機能は、これらに限定されないが、入出力（Ｉ／Ｏ）要素４１１、電源（Ｐ／Ｓ）４１２、クロック（ＣＬＫ）４１３及びキャッシュ４１４を含むことができる。キャッシュ４１４に加えて、ＧＰＵ４０４は、それぞれのＧＰＵキャッシュ３１４Ｇを含むことができ、このＧＰＵは、ＧＰＵ４０４において実行されているプログラムがＧＰＵキャッシュ４１４Ｇをリードスルーまたはライトスルーできるように構成できる。
【００６０】
システム４００は、レンダリングされたグラフィックス４１７をユーザに提示するための表示デバイス４１６を含むことができる。代替的な実施態様では、表示デバイス４１６は、システム４００とともに稼働する別個のコンポーネントである。表示デバイス４１６は、フラットパネルディスプレイ、頭部装着型ディスプレイ（ＨＭＤ）、陰極線管（ＣＲＴ）画面、プロジェクタ、または可視のテキスト、数字、グラフィカルシンボル若しくは画像を表示できる他のデバイスの形態であっても良い。特に有用な実施態様では、ディスプレイ４１６は、９０度以上の視野（例えば、１１４度以上）をもつ画面を有する広視野（ＦＯＶ）デバイスである。表示デバイス４１６は、本明細書に記述したさまざまな技術に従い処理されたレンダリングされたグラフィック画像４１７（例えば、完成フレーム４６０）を表示する。
【００６１】
システム４００は、選択的に、ディスクドライブ、ＣＤ−ＲＯＭドライブ、フラッシュメモリ、テープドライブ、またはプログラム及び／若しくはデータを保存する同類のものなどのマスストレージデバイス４１５を含むことができる。システム４００は、選択的に、システム４００とユーザとの間の相互作用を促進するユーザインターフェースユニット４１８も含むことができる。ユーザインターフェース４１８は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、またはグラフィカルユーザインターフェース（ＧＵＩ）とともに使用できる他のデバイスを含むことができる。システム４００は、ネットワーク４２２を通じてデバイスを他のデバイスと通信させることができるネットワークインターフェース４２０も含むことができる。ネットワーク４２２は、例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネットなどの広域ネットワーク、ブルートゥース（登録商標）ネットワークなどのパーソナル・エリア・ネットワーク、または他のタイプのネットワークであっても良い。これらのコンポーネントは、ハードウェア、ソフトウェア若しくはファームウェア、またはこれらの二つ以上のいくつかの組み合わせにおいて実施することができる。
【００６２】
グラフィックスパイプライン
本開示の態様に従い、システム４００は、グラフィックスレンダリングパイプラインの一部を実装するように構成される。図４Ｂは、本開示の態様に従うグラフィックスレンダリングパイプライン４３０の実施例を図示する。
【００６３】
レンダリングパイプライン４３０は、仮想空間（本明細書において「世界空間」とも呼ばれることがある）内に二次元または好ましくは三次元ジオメトリを有するシーンを表現する画像としてグラフィックスをレンダリングするように構成できる。パイプラインの早期のステージは、表示デバイス４１６に出力するのに適切な離散的ピクチャエレメントのセットとしてシーンが画面空間においてラスタライズ及び変換される前に仮想空間において実行されるオペレーションを含むことができる。パイプライン全体を通じて、グラフィックスメモリ４２８内に収容されたさまざまなリソースを、パイプラインステージにおいて利用でき、ステージへの入力及び出力を、画像の最終値を決定する前に、グラフィックスメモリ内に収容されたバッファに一時的に保存することができる。
【００６４】
レンダリングパイプラインは、仮想空間内にセットアップされた頂点のセットによって画定された一つ以上の仮想オブジェクトを含み、そしてシーンにおける座標に関して画定されたジオメトリを有する入力データ４３２に関して動作することができる。パイプラインの早期のステージは、図４Ｂにおける頂点処理ステージ４３４として広く分類されたものを含むことができ、これは、仮想空間内のオブジェクトの頂点を処理するためのさまざまな計算を含むことができる。これは、例えば、位置値（例えば、Ｘ−Ｙ座標及びＺ深度値）、色彩値、照明値、テクスチャ座標などの、シーン内の頂点のさまざまなパラメータ値を操作できる頂点シェーディング計算４３６を含むことができる。好ましくは、頂点シェーディング計算４３６は、ＧＰＵ４０４の一つ以上のプログラマブル頂点シェーダＶＳによって実行される。頂点処理ステージは、選択的に、モザイク細工などの追加の頂点処理計算、ならびに選択的に、仮想空間内に新規の頂点及び新規のジオメトリを生成するのに使用できるジオメトリシェーダ計算４３８を含むことができる。モザイク細工計算は、シーンジオメトリ及びジオメトリシェーディング計算を再分割して、ＣＰＵコード４０３Ｃによって実装されるアプリケーションにおけるそれらの初期のセットアップに勝る新規のシーンジオメトリを生成する。頂点処理ステージ４３４が完了すると、頂点のセットパラメータ値４３９をその各々が有する頂点のセットによってシーンが画定される。頂点パラメータ値は、テクスチャ座標、接線、照明値、色彩、位置などを含むことができる。
【００６５】
次に、パイプライン４３０は、シーンジオメトリの画面空間内及び離散的ピクチャエレメントのセット、すなわち、画素への変換に関連するラスタライゼーション処理ステージ４４０において処理することができる。仮想空間ジオメトリ（三次元であり得る）は、オブジェクトの投影及び仮想空間からシーンのビューイングウィンドウ（または「ビューポート）までの頂点を本質的に計算できるオペレーションを通じて画面空間ジオメトリ（通常、二次元）に変換される。頂点のサブセットは、画面空間におけるプリミティブのセットを規定するようにグループ化される。本開示の態様に従い、ラスタライゼーションステージ４４０は、頂点の投影を曲面ビューポートにおいて近似する。
【００６６】
本開示の態様に従い、グラフィックスパイプライン４３０は、ラスタライゼーションステージについてのフロントエンド４４１を含む。フロントエンドは、ラスタライゼーションステージの一部として、または頂点処理４３４とラスタライゼーションステージ４４０との間の中間ステージとして実装できる。図４Ｂに描写する実施例では、フロントエンド４４１は、ラスタライゼーションステージ４４０の一部として示される。しかしながら、本開示の態様は、そのような実施態様に限定されない。特定の実施態様において、フロントエンド４４１は、全体的にまたは部分的に、ＧＰＵ４０４において実行されている計算シェーダＣＳとして実装される。しかしながら、本開示の態様は、そのような実施態様に限定されない。
【００６７】
フロントエンド４４１のオペレーション及び本開示の関連する態様は、図４Ａ及び図４Ｂを参照して理解することができる。
【００６８】
図４Ｂに描写するラスタライゼーション処理ステージ４４０は、シーン内の頂点の各セットによって規定されたプリミティブをセットアップできるプリミティブアセンブリオペレーション４４２を含む。各頂点は、インデックスによって規定することができ、各プリミティブは、これらの頂点インデックスに関して規定でき、これは、グラフィックスメモリ４２８内のインデックスバッファＩＢ内に保存することができる。プリミティブは、好ましくは、各々の三つの頂点によって画定された三角形を含む。ただし、点プリミティブ、線プリミティブ、及び他の多角形状も含みことができる。プリミティブアセンブリステージ４４２中、選択的に、特定のプリミティブをカリングすることができる。例えば、そのインデックスが特定のワインディングオーダーを示すそれらのプリミティブをバックフェーシングとみなし、シーンからカリングすることができる。
【００６９】
実施例として、制限的なものではなく、プリミティブが、三次元仮想空間内の、頂点によって画定された三角形の形態である場合には、プリミティブアセンブリは、ディスプレイ４１６の画面上の各三角形が位置する所を決定する。通常、プリミティブアセンブリユニット４４２によってクリッピング及び画面空間変換オペレーションが実行される。図５に描写する実施例では、フロントエンド４４１は、５０２に示すような各頂点についての画面空間座標を決定する。特定の実施態様において、画面空間座標は、例えば、シーンの平面ビューポート上の、仮想空間内の頂点の位置の初期の投影を計算することによって計算される。平面ビューポートは、複数の小区分に再分割される。各小区分は、例えば、図３に示すように、画面空間の大体等しい立体角に対応する。フロントエンド４４１は、この処理の一部でバックフェーシングされたプリミティブ５１０を検出及び除去できるので、画面空間座標に変換された各プリミティブに粗いラスタライゼーションを実行して、プリミティブが重なる一つ以上の小区分を決定する。画面空間に変換された各プリミティブにおいて、フロントエンド４４１は、プリミティブが重なる各小区分に画面空間補正５０６を実行して、プリミティブの各頂点の座標を、対応する補正された頂点座標にマッピングする。画面空間補正５０６は、プリミティブが重なる各小区分の、曲面ビューポートの複数個の平面の補正された小区分のうちの対応する平面の補正された小区分へのマッピングに相当し、この曲面ビューポートの補正された小区分は、等しい面積を有する。
【００７０】
特定の実施態様において、５０２における頂点座標の補正は、次の通りの、座標（Ｈ，Ｖ）の頂点の、各小区分についての対応する補正された頂点座標（Ｈ’，Ｖ’）への区分線形逆正接変換を伴う。
Ｈ’＝（Ｈ［ｉ］＜Ｈ＜Ｈ［ｉ＋１］）となるようなｉにおいて、
Ｈ’［ｉ］＋（Ｈ’［ｉ＋１］−Ｈ’［ｉ］）＊（Ｈ−Ｈ［ｉ］）／（Ｈ［ｉ＋１］−Ｈ［ｉ］）
Ｖ’＝（Ｖ［ｊ］＜Ｖ＜Ｖ［ｊ＋１］）となるようなｊにおいて、
Ｖ’［ｊ］＋（Ｖ’［ｊ＋１］−Ｖ’［ｊ］）＊（Ｖ−Ｖ［ｊ］）／（Ｖ［ｊ＋１］−Ｖ［ｊ］）
式中、Ｈ［ｉ］及びＶ［ｊ］は、増大する順序においてセットとして選択された対応する一定の画素領域空間境界Ｈ’［ｉ］及びＶ’［ｊ］から次の通りに導き出された線形画面空間境界である。
Ｈ［ｉ］＝ｔａｎ（Ｈ’［ｉ］＊ＦＯＶＨ／２）／ｔａｎ（ＦＯＶＨ／２）
Ｖ［ｊ］＝ｔａｎ（Ｖ’［ｊ］＊ＦＯＶＶ／２）／ｔａｎ（ＦＯＶＶ／２）
特定の実施態様において、物理的な光学を備えたＨＭＤ及び類似のディスプレイにおいて、これらの画面境界についての方程式は、各表示画素への等しい立体角の理想的なマッピングからの光学の偏差を考慮して調節できる。
【００７１】
特定の実施態様において、補正された頂点座標は、頂点座標を小区分に関連付ける情報の注釈を付けられる。これらの実施態様において、プリミティブアセンブリステージ４４２は、補正された頂点座標の注釈を確認して、走査変換４４４オペレーションにおいて小区分を処理する適切なＧＰＵコンポーネントのみにプリミティブを送信する。走査変換４４４は、小区分ごとの基準においてのみ各プリミティブを処理する、例えば、各プリミティブは、注釈によって示された小区分においてのみ処理される。
【００７２】
走査変換オペレーション４４４は、プリミティブを各画素にサンプリングし、サンプルがプリミティブによって含有されたときに、さらなる処理のためにプリミティブからフラグメント（画素と呼ばれることもある）を生成する。走査変換オペレーションは、画面空間座標に変換されたプリミティブを取り込み、そのプリミティブの部分である画素を決定するオペレーションを含む。いくつかの実施態様において、複数のサンプルは、走査変換オペレーション４４４期間にプリミティブ内に取り込まれ、これはアンチエイリアス処理のために使用できる。特定の実施態様において、種々の画素は、異なるようにサンプリングすることができる。例えば、頭部装着型ディスプレイ（ＨＭＤｓ）などの特定のタイプの表示デバイス４１６におけるレンダリングの特定の態様を最適化するために、いくつかのエッジ画素のサンプリング密度を中央画素よりも低くすることができる。走査変換４４４期間にプリミティブから生成されたフラグメント（または「画素」）は、それらを作り出したプリミティブの頂点の頂点パラメータ値４３９から画素の位置を補間できるパラメータ値を有することができる。ラスタライゼーションステージ４４０は、パイプラインの後のステージにおけるさらなる処理のための入力として使用できる、これらの補間されたフラグメントパラメータ値４４９を計算するためのパラメータ補間オペレーション４４６ステージを含むことができる。
【００７３】
本開示の態様に従い、プリミティブアセンブリ４４２と走査変換４４４との間に、画面の種々の小区分が種々の画素解像度を有するという事実を考慮して特定のオペレーションを行う。特定の実施態様において、プリミティブの頂点についての画面位置が既知になると、プリミティブが重なる所定のすべての画面小区分（本明細書において粗いラスタライゼーションタイルまたはスーパータイルと呼ばれることもある）を検出するために、粗いラスタライゼーション４４３を行うことができる。プリミティブが重なる各小区分において、プリミティブについての頂点位置は、小区分の画素解像度を考慮して調節される。走査変換４４４及びその後の処理ステージは、関連性のある一つ以上の小区分についての規定の数のアクティブ画素にのみ画素処理を実行することによって最終画素値を生成する。
【００７４】
特定の実施態様において、ＧＰＵ４０４は、ソフトウェアにおける小区分と、ハードウェアにおける頂点の投影、プリミティブアセンブリ及び走査変換との間の、プリミティブの粗野な分割を実施するように構成される。いくつかのそのような実施態様において、ＧＰＵ４０４は、ソフトウェアにおけるプリミティブ頂点を、ハードウェアに実装されるパレットから画面空間投影及びビューポートをその各々が選択する小区分インデックスに関連付けるように構成される。他のそのような実施態様では、ＧＰＵ４０４は、ソフトウェアにおけるプリミティブ頂点インデックスを、ハードウェアに実装されるパレットから画面空間投影及びビューポートをその各々が選択する小区分インデックスに関連付けるように構成される。
【００７５】
グラフィックスパイプライン４３０は、さらに、補間されたパラメータ値４４９をさらに操作し、ディスプレイ４１６における最終画素値にフラグメントがどのようにして寄与するかを決定するさらなるオペレーションを実行するための、図４Ｂの４５０に概して示される画素処理オペレーションを含む。本開示の態様に従い、これらのタスクは、従来の様式において実行できる。画素処理タスクは、フラグメントの補間されたパラメータ値４４９をさらに操作する画素シェーディング計算４５２を含む。画素シェーディング計算４５２は、ＧＰＵ４０４内のプログラマブル画素シェーダまたは特設ハードウェアによって実行できる。画素シェーダ起動４４８は、ラスタライゼーション処理ステージ４４０期間にプリミティブのサンプリングに基づいて起動することができる。画素シェーディング計算４５２は、グラフィックスメモリ４２８内の一つ以上のバッファ４０５に値を出力することができる。レンダーターゲットＲＴまたは複数ある場合にはマルチプルレンダーターゲット（ＭＲＴｓ）と呼ばれることもある値を、グラフィックスメモリ４２８内の一つ以上のバッファ４０５に出力することができる。ＭＲＴによって、画素シェーダは、選択的に、その各々が同じ画面寸法であるが、異なる画素フォーマットをもつ可能性もある二つ以上のレンダーターゲットを出力することができる。
【００７６】
画素処理オペレーション４５０は、通常、一つ以上のシェーダ（例えば、画素シェーダＰＳ、計算シェーダＣＳ、頂点シェーダＶＳまたは他のタイプのシェーダ）、及びテクスチャユニット４０６によってある程度実行できるテクスチャマッピングオペレーション４５４を含む。画素シェーダ計算４５２は、画面空間座標ＸＹからテクスチャ座標ＵＶを算出することと、テクスチャ座標をテクスチャオペレーション４５４に送信することと、及びテクスチャデータＴＸを受信することと、を含む。テクスチャ座標ＵＶは、任意の様式において画面空間座標ＸＹから算出することができるが、典型的には、補間された入力値または時折、以前のテクスチャオペレーションの結果から算出される。勾配Ｇｒは、多くの場合、テクスチャユニット４０６（テクスチャオペレーションハードウェアユニット）によってテクスチャ座標のクワッドから直接に算出されるが、選択的に、デフォルト演算を実行するテクスチャユニット４０６に依存せずに、画素シェーダ計算４５２によって明確に算出し、テクスチャオペレーション４５４に送ることができる。
【００７７】
テクスチャオペレーション４５６は、画素シェーダＰＳ及びテクスチャユニット４０６のいくつかの組み合わせによって実行できる以下のステージを含む。第一に、画素位置ＸＹごとの一つ以上のテクスチャ座標ＵＶを生成し、これを使用して、各テクスチャマッピングオペレーションに座標セットを提供する。勾配値Ｇｒをテクスチャ座標ＵＶから算出し、これを使用して、プリミティブに適用するための、テクスチャについての詳細度（ＬＯＤ）を決定する。
【００７８】
画素処理４５０は、通常、ラスタオペレーション（ＲＯＰ）として一般に公知のものを含み得るレンダ出力オペレーション４５６で完結する。ラスタライゼーションオペレーション（ＲＯＰ）は、単に、マルチプルレンダーターゲット（ＭＲＴｓ）のうちの各レンダーターゲットに１回ずつ、画素ごとに複数回実行される。出力オペレーション４５６中、選択的に、フラグメントの結合、ステンシルの適用、深度試験、及びサンプル処理タスクごとの特定の処理を含み得る、フレームバッファにおける最終画素値４５９を決定することができる。最終画素値４５９は、すべてのアクティブレンダーターゲット（ＭＲＴｓ）についての収集した出力を含む。ＧＰＵ４０４は、最終画素値４５９を使用して完成フレーム４６０を構成し、これは選択的に、リアルタイムで表示デバイス４１６の画素に表示できる。
【００７９】
追加の態様
本開示の追加の態様は、
仮想空間におけるシーンに関する一つ以上の頂点を表すデータを受信することと、
複数個の画素を有する表示デバイスの画面空間への頂点の投影であって、頂点の投影を曲面ビューポートにおいて近似する投影を実行することと、
頂点にプリミティブアセンブリを実行して、画面空間における頂点の投影から画面空間内の一つ以上のプリミティブを生成することと、
一つ以上のプリミティブに走査変換を実行して、一つ以上のプリミティブのうちの対応するプリミティブの部分である、複数個の画素のうちの一つ以上の画素を決定することと、
対応するプリミティブの部分である一つ以上の画素に画素値を割り当てる画素処理を実行することによって完成フレームを生成することと、を含むグラフィックス処理方法を含む。
【００８０】
前述の方法のいくつかの実施態様において、完成フレームを、メモリに保存するまたは表示デバイスに表示する。
【００８１】
別の追加の態様は、実行されたときに、前述の方法を実施する、内部に具現化されるコンピュータ実行可能命令を有するコンピュータ可読媒体である。
【００８２】
なおも別の追加の態様は、前述の方法を実施するためのプログラムコード命令を含むことを特徴とする、通信ネットワークからダウンロード可能な、ならびに／またはコンピュータ可読及び／若しくはマイクロプロセッサ実行可能な媒体に保存されたコンピュータプログラム製品である。
【００８３】
さらなる態様は、前述の方法を実施するための、電磁または他の信号伝送コンピュータ可読命令である。
【００８４】
本発明の別の態様は、頂点及び／または画素データを処理して、二つの種々の小区分におけるシーンの部分が、異なる有効画素解像度を有するように、表示デバイスに表示されるシーンのビューポートについての最終画素値を生成するグラフィックス処理方法である。
【００８５】
いくつかの実施態様において、方法は、さらに、ユーザが見ている表示デバイスの画面の一部を決定することと、及びユーザが見ている部分を含む一つ以上の小区分における有効画素解像度が最も高くなるように画素解像度を変化させることと、を含む。
【００８６】
追加の態様は、前述の方法を実施するように構成されたコンピュータグラフィックス装置である。
【００８７】
別の追加の態様は、実行されたときに、前述の方法を実施する、内部に具現化されるコンピュータ実行可能命令を有するコンピュータ可読媒体である。
【００８８】
なおも別の追加の態様は、前述の方法を実施するためのプログラムコード命令を含むことを特徴とする、通信ネットワークからダウンロード可能な、ならびに／またはコンピュータ可読及び／若しくはマイクロプロセッサ実行可能な媒体に保存されたコンピュータプログラム製品である。
【００８９】
さらなる追加の態様は、前述の方法を実施するための、電磁または他の信号伝送コンピュータ可読命令である。
【００９０】
前述は、本発明の好ましい実施形態の完全な記述であるが、さまざまな代替物、変更物及び均等物を使用することができる。故に、本発明の範囲は、均等物の完全な範囲とともに、前の記述を参照して決定すべきではなく、代わりに、添付の特許請求の範囲を参照して決定すべきである。本明細書に記述した任意の特徴は、好ましいか否かにかかわらず、本明細書に記述した任意の他の特徴と組み合わせることができる。以下の特許請求の範囲においては、不定冠詞「Ａ」または「Ａｎ」は、別な様に明白に記述されていない限り、冠詞に続くアイテムの一つ以上の数量を意味する。添付の特許請求の範囲は、そのような制限が、成句「ｍｅａｎｓ  ｆｏｒ」を使用して所与の特許請求の範囲において明確に説明されていない限り、ミーンズプラスファンクション限定を含むものとして解釈されない。
【図１Ａ】
2020091890.tif 000003
【図１Ｂ】
2020091890.tif 000004
【図１Ｃ】
2020091890.tif 000005
【図２Ａ】
2020091890.tif 000006
【図２Ｂ】
2020091890.tif 000007
【図２Ｃ】
2020091890.tif 000008
【図２Ｄ】
2020091890.tif 000009
【図３】
2020091890.tif 000010
【図４Ａ】
2020091890.tif 000011
【図４Ｂ】
2020091890.tif 000012
【図４Ｃ】
2020091890.tif 000013
【図４Ｄ】
2020091890.tif 000014
【図５】
2020091890.tif 000015