JP2020515968A - シングルパスフレキシブルスクリーン/スケールラスタライゼーション - Google Patents

シングルパスフレキシブルスクリーン/スケールラスタライゼーション Download PDF

Info

Publication number
JP2020515968A
JP2020515968A JP2019553101A JP2019553101A JP2020515968A JP 2020515968 A JP2020515968 A JP 2020515968A JP 2019553101 A JP2019553101 A JP 2019553101A JP 2019553101 A JP2019553101 A JP 2019553101A JP 2020515968 A JP2020515968 A JP 2020515968A
Authority
JP
Japan
Prior art keywords
pixels
space
window space
window
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019553101A
Other languages
English (en)
Other versions
JP2020515968A5 (ja
JP7050085B2 (ja
Inventor
マントル マイケル
マントル マイケル
ルフェーブル ローラン
ルフェーブル ローラン
ツオミ ミカ
ツオミ ミカ
カッリオ キーア
カッリオ キーア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of JP2020515968A publication Critical patent/JP2020515968A/ja
Publication of JP2020515968A5 publication Critical patent/JP2020515968A5/ja
Application granted granted Critical
Publication of JP7050085B2 publication Critical patent/JP7050085B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Optics & Photonics (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Geometry (AREA)

Abstract

ヘッドマウントデバイス(HMD)(300,125)などの装置は、ウィンドウ空間(405,510)内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプライン(100)を実装するように構成された1つ以上のプロセッサ(335)を備える。また、装置は、ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間(410,520)内の均一な間隔のピクセルにマッピングする第1歪み関数(109,525)を備える。さらに、装置は、第1歪み関数を通してウィンドウ空間内のピクセルをサンプリングするように構成されたスキャンコンバータ(110,1225)を備える。スキャンコンバータは、ラスタ空間内の均一な間隔のピクセルに基づいて、ユーザに表示される画像を生成するために使用される表示ピクセルをレンダリングするように構成されている。場合によっては、ウィンドウ空間内のピクセルは、視野領域毎のピクセル密度がユーザの視野全体で一定になるようにレンダリングされる。【選択図】図13

Description

グラフィックスプロセッサは、プログラマブルシェーダのシーケンスと固定機能ハードウェアブロックとを用いて、拡張現実(AR)及び仮想現実(VR)アプリケーションにおいてヘッドマウントディスプレイ(HMD)の画像を生成する。例えば、フレームに表示されるオブジェクトの3Dモデルは、ユーザに表示されるピクセルの値を生成するためにグラフィックスパイプラインで処理される三角形、他のポリゴン、パッチ等のプリミティブのセットで表される。ピクセルは、通常、ウィンドウ全体で均一なピクセル間隔でウィンドウ空間にレンダリングされる。その結果、視野角(subtended angle)当たりのピクセル密度は、HMDにおけるユーザの中心視線方向又はレンズの中心部からのピクセル距離と共に増加する。ピクセルは、スキャンコンバータによって定期的にサンプリングされ、矩形画像が生成される。後処理ステップでは、ユーザがディスプレイレンズのセット通して画像を見る場合(例えば、ユーザがHMDを装着している場合)に画像が規則的に見えるように、矩形画像を歪める。
添付の図面を参照することによって、本発明をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示している。
いくつかの実施形態による、DX12アプリケーションプログラミングインタフェース(API)を実装するグラフィックスパイプラインのブロック図である。 いくつかの実施形態による、没入型仮想現実(VR)又は拡張現実(AR)機能を提供するように構成された電子デバイスを含むディスプレイシステムを示す図である。 いくつかの実施形態による、電子デバイスを装着しているユーザに対してディスプレイを介してAR又はVR機能を提供するように構成された電子デバイスを含むディスプレイシステムを示す図である。 いくつかの実施形態による、ウィンドウ空間内の不均一な間隔のピクセルの、ラスタ空間内の均一な間隔のピクセルへのマッピングを示す図である。 いくつかの実施形態による、HMDを装着しているユーザの目に表示される表示ピクセルのレンダリングのプロセスを示すブロック図である。 いくつかの実施形態による、歪み関数を実装するために使用される水平歪み関数及び垂直歪み関数を表すプロットのセットを示す図である。 いくつかの実施形態による、水平歪み関数又は垂直歪み関数を表す歪み曲線の図である。 いくつかの実施形態による、滑らかな歪み曲線を形成するために使用される区分曲線の選択を示す図である。 いくつかの実施形態による、歪み曲線の中心窩修正(fovea modification)を示すプロットのセットを示す図である。 いくつかの実施形態による、等間隔のピクセルのラスタ空間及び不均一な間隔のピクセルのウィンドウ空間内のプリミティブの部分を表すタイルのビニングを示す図である。 いくつかの実施形態による、プリミティブバウンディングボックスと歪んだラスタビューとの比較に基づくプリミティブの歪み認識ルーティング(distortion-aware routing)を示す図である。 いくつかの実施形態による、プリミティブのビニングを示すグラフィックスパイプラインの一部のブロック図である。 いくつかの実施形態による、歪み関数を通してウィンドウ空間内のサンプリング不均一ピクセルをレンダリングする方法のフロー図である。
画面の中央部に高品質の画像を生成するのに必要とされる高いピクセル解像度が、ウィンドウ空間内の全てのピクセルをレンダリングするために使用される解像度を決定するので、ウィンドウ空間内の均一な間隔のピクセルをレンダリングする際に、かなりの処理能力が浪費される。しかしながら、視野角が複数のピクセルにマッピングされるので、周辺部の画質は、画面の中央部における画質程高くする必要がない。例えば、高解像度のレンダリングは、中心視線方向(又は、HMDディスプレイデバイスのレンズの中心部)を囲む高視力領域(high-acuity region)において画像を生成するために必要であるが、視覚周辺の低視力領域又はレンズの周辺領域において十分な品質の画像を生成するのに必要ではない。高視力領域は、通常、中心視線方向の或る角度距離内にある視野の一部を含む。中心視線方向からの角度距離は、偏心度とも呼ばれる。低視力領域は、より大きな偏心度にある視野の部分を含む。例えば、高視力領域は、中心窩と呼ばれる人間の目の網膜領域に投影される視野の一部に対応する、5〜10°の偏心度内にある視野の一部を含むことができる。
ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることによって、知覚された画像解像度を損なうことなく、HMDによって表示される画像を生成するのに消費される電力及び計算リソースが低減される。いくつかの実施形態では、不均一なピクセル間隔は、ユーザの視野全体の視野角毎にほぼ一定のピクセル密度に対応する。例えば、視野角毎のピクセル密度は、中心窩領域では比較的高く、視覚周辺部では比較的低くなる。スキャンコンバータは、不均一なピクセルをラスタ空間の均一な間隔のピクセルにマッピングする第1歪み関数を使用して、ウィンドウ空間内のピクセルをサンプリングする。スキャンコンバータは、ラスタ空間内の等間隔のピクセルの値に基づいて表示ピクセルをレンダリングし、表示ピクセルは、ユーザへの表示前に第2歪み関数を通過する。
第1歪み関数のいくつかの実施形態は、不均一なピクセルの第1寸法を均一な間隔のピクセルにマッピングする垂直歪み関数と、不均一なピクセルの第2寸法を均一な間隔のピクセルにマッピングする水平歪み関数と、を含む。第1寸法及び第2寸法は、互いに直交している。垂直及び水平歪み関数のいくつかの実施形態は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される。例えば、垂直及び水平歪み関数の変位のセットは、第1歪み関数を表す滑らかな曲線によって結合される点のセットを定義する。垂直及び水平歪み関数のいくつかの実施形態は、中心窩領域の位置に対応するウィンドウ空間の一部におけるピクセルの解像度を増加するように変更される。
図1は、いくつかの実施形態による、DX12アプリケーションプログラミングインタフェース(API)を実装するグラフィックスパイプライン100のブロック図である。グラフィックスパイプライン100は、高次ジオメトリプリミティブを処理し、三次元(3D)シーンのラスタライズ画像を所定の解像度で生成することができる。グラフィックスパイプライン100は、バッファを実装し、頂点データ、テクスチャデータ等を記憶するために使用される1つ以上のメモリ又はキャッシュの階層等のストレージリソース101にアクセスする。グラフィックスパイプライン100におけるシェーダのいくつかの実施形態は、複数の頂点が同時に処理されるように、単一命令複数データ(SIMD)処理を実行する。したがって、グラフィックスパイプライン100は、グラフィックスパイプライン100に含まれるシェーダが、共有されたSIMD計算ユニット上で同じ実行プラットフォームを含むように、統合シェーダモデルの概念を実装する。したがって、シェーダは、1つ以上のプロセッサを含む共通のリソースセットを使用して実装される。本明細書では、共通のリソースセットを、統合シェーダプール104と呼ぶ。
典型的なDX12レンダリングパイプラインにおいて、入力アセンブラ102は、シーンのモデルの一部を表すオブジェクトを定義するために使用されるストレージリソース101からの情報にアクセスするように構成されている。頂点シェーダ103は、いくつかの実施形態では、ソフトウェアで実装され、入力アセンブラ102からの入力としてプリミティブの単一の頂点を論理的に受信し、単一の頂点を出力する。ハルシェーダ105は、入力パッチを定義するために使用される入力高次パッチ(high-order patches)又は制御点で動作する。ハルシェーダ105は、テッセレーション係数及び他のパッチデータを出力する。
ハルシェーダ105によって生成されたプリミティブを、オプションでテッセレータ106に提供することができる。テッセレータ106は、オブジェクト(パッチ等)をハルシェーダ105から受信し、例えば、ハルシェーダ105によってテッセレータ106に提供されたテッセレーション係数に基づいて入力オブジェクトをテッセレーションする等して、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されるプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分化する。
ドメインシェーダ107は、ドメインの位置及び(オプションで)他のパッチデータを入力する。ドメインシェーダ107は、提供された情報に対して動作し、入力ドメインの位置及び他の情報に基づいて、出力用の単一の頂点を生成する。ジオメトリシェーダ108は、入力プリミティブを受信し、入力プリミティブに基づいて、ジオメトリシェーダ108によって生成された4つまでのプリミティブを出力する。
次に、プリミティブは、例えばウィンドウビューポート変換(window-to-viewport transformation)を使用して、シーンを含むビューウィンドウから、ユーザに表示される画像を表すピクセルのグリッドにマッピングされる。「ウィンドウ空間」という用語は、処理のこの時点までにグラフィックスパイプライン100によって生成されるピクセルを指す。本明細書で説明するように、グラフィックスパイプライン100によって生成されるウィンドウ空間内のピクセルは、不均一に分布し、ピクセル間の間隔が不均一である。いくつかの実施形態では、グラフィックスパイプライン100は、ユーザの視野全体で視野領域(subtended area)当たりのピクセル密度が一定になるように、ウィンドウ空間内のピクセルをレンダリングする。例えば、ウィンドウ空間内のピクセルは、グラフィックスパイプライン100を実装するHMDを装着したユーザの中心窩領域において、比較的高いピクセル密度でレンダリングされる。ウィンドウ空間内のピクセルは、視覚周辺部において、比較的低いピクセル密度でレンダリングされる。
歪み関数109を使用して、ウィンドウ空間内の不均一な間隔のピクセルを、スキャンコンバータ110によって使用されるラスタ空間内の均一な間隔のピクセルに変換する。歪み関数109のいくつかの実施形態は、ウィンドウ空間内の不均一な間隔のピクセルの第1寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数と、ウィンドウ空間内の不均一な間隔のピクセルの第2寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数と、を実装する。垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形歪み関数からの変位のセットに基づいて定義される。スキャンコンバータ110は、歪み関数109を通してウィンドウ空間内のピクセルをサンプリングし、ラスタ空間内の均一な間隔のピクセルを生成する。
ピクセルシェーダ111は、スキャンコンバータ110からピクセルフローを受信し、入力されたピクセルフローに応じて、0又は他のピクセルフローを出力する。出力マージャブロック112は、ピクセルシェーダ111から受信したピクセルに対してブレンド、深度、ステンシル又は他の操作を実行する。
図2は、いくつかの実施形態による、没入型VR又はAR機能を提供するように構成された電子デバイス205を含むディスプレイシステム200を示す図である。電子デバイス205は、図1に示すグラフィックスパイプライン100のいくつかの実施形態から出力されるピクセル値を使用して画像を表示するために使用される。図2に、本開示の少なくとも1つの実施形態による、HMDフォームファクタにおける電子デバイス205の例示的な実装の背面図を示している。他の実施形態では、電子デバイス205は、例えば、眼鏡用のフォームファクタ、スマートフォンのフォームファクタ、タブレットのフォームファクタ、医療用撮像デバイスのフォームファクタ、スタンドアロンコンピュータ、システムオンチップ(SOC)等の他のフォームファクタに実装され、図示したものと類似の構成を実装する、他のフォームファクタに実装される。背面図で示すように、電子デバイス205は、電子デバイス205をユーザの顔に(ストラップやハーネスの使用と共に)固定するために、表面215上に取り付けられたフェイスガスケット210を含むことができる。
電子デバイス205は、ユーザに提供されるVR画像又はAR画像等の画像を生成するために使用されるディスプレイ220を含む。ディスプレイ220は、ユーザの右目に画像を提供する右側部分と、ユーザの左目に画像を提供する左側部分と、の実質的に同一の2つの部分に分割される。他の実施形態では、ディスプレイ220は、それぞれの目に専用の2つの異なるディスプレイとして実装される。電子デバイス205を装着したユーザの視力は、ユーザの視線中心部からの距離(例えば、偏心度)に依存する。例えば、ユーザの左目の視野は、中心視線方向230を囲む高視力領域225に細分化される。ユーザの左目の視野は、視覚周辺部に低視力領域240を含む。同様に、ユーザの右目の視野は、中心視線方向250を囲む高視力領域245と、視覚周辺部の低視力領域260と、に細分化される。中心視線方向230,250は、現在の視野の中心に等しく設定されるか、ユーザの両目の中心視線方向を検出する視線追跡測定に基づいて決定される。
本明細書で説明するように、図1に示す歪み関数109等の歪み関数を使用して、ウィンドウ空間内の不均一にレンダリングされたピクセルを、ラスタ空間内の均一にレンダリングされたピクセルにマッピングする。したがって、歪み関数を実装するグラフィックスパイプラインは、例えば、ディスプレイによってサポートされる本来の解像度と等しい解像度でピクセルをレンダリングすることによって、高視力領域225,245内のウィンドウ空間内のピクセルを比較的高い解像度でレンダリングすることができる。グラフィックスパイプラインは、低視力領域240,260内のウィンドウ空間内のピクセルを低い解像度でレンダリングすることによって、ウィンドウ空間内のピクセルをレンダリングするのに必要な電力及び計算リソースを低減する。その後、ウィンドウ空間内のレンダリングされたピクセルは、スキャンコンバータによって歪み関数を通してサンプリングされ、ラスタ空間内の均一な間隔のピクセルの値を決定する。
図3は、いくつかの実施形態による、電子デバイス305を装着しているユーザに対してディスプレイを介してAR又はVR機能を提供するように構成される電子デバイス305を含むディスプレイシステム300を示す図である。電子デバイス305は、図2に示す電子デバイス205のいくつかの実施形態を実施するために使用される。電子デバイス305は、ユーザの頭部310に装着されるものとして図3に示されている。図示するように、電子デバイス305は、ユーザに提示される画像を生成するディスプレイ320を含むハウジング315を備える。ディスプレイ320は、図2に示すディスプレイ220のいくつかの実施形態を使用して実装される。図示した実施形態では、ディスプレイ320は、立体画像を対応する左目及び右目に表示するために使用される左側ディスプレイ321及び右側ディスプレイ322から形成される。しかしながら、他の実施形態では、ディスプレイ320は、左目及び右目に表示される別々の立体画像を生成する単一のモノリシックディスプレイ320である。また、電子デバイス305は、ハウジング315のユーザに面する表面332の対応する開口又は他の開口部に配置された接眼レンズ325,330を含む。ディスプレイ320は、ハウジング315内の接眼レンズ325,330の遠位に配置される。接眼レンズ325は、左目ディスプレイ321と位置合わせされており、接眼レンズ330は、右目ディスプレイ322と位置合わせされている。
立体表示モードでは、画像は、左目ディスプレイ321によって表示され、接眼レンズ325を介してユーザの左目で見られる。画像は、右目ディスプレイ322によって同時に表示され、接眼レンズ325を介してユーザの右目で見られる。左目及び右目によって見られる画像は、ユーザの立体視ビューを生成するように構成されている。ディスプレイ320,321,322のいくつかの実施形態は、ディスプレイ320,321,322の外縁部を囲むベゼル(図3には示されていない)を含むように製造される。この場合、レンズ325,330又は他の光学デバイスを使用して、ディスプレイ320,321,322の周囲のベゼルがユーザに見えないように、ディスプレイ320,321,322によって生成される画像を組み合わせる。代わりに、レンズ325,330は、ディスプレイ320,321,322間の境界を越えて連続的に見えるように、画像をマージする。
ディスプレイ320及び電子デバイス305の他のコンポーネントの動作を制御及びサポートするいくつか又は全ての電子コンポーネントは、ハウジング315内に実装される。電子デバイス305のいくつかの実施形態は、プロセッサ335等の処理ユニットと、図1に示すグラフィックスパイプライン100等のグラフィックスパイプラインの一部又は全てを実装するのに使用可能なメモリ340(又は、他のハードウェア、ファームウェア若しくは)と、を備える。いくつかの実施形態では実際の又は仮想の画像を取得し、これらの画像をディスプレイ320上に表示するためにレンダリングすることに関連するワークロードは、電子デバイス305の外部に実装される外部処理ユニットと共有されてもよい。電子デバイス305のいくつかの実施形態は、ユーザの目の動きを追跡し、各目の注視中心部をリアルタイムに決定するアイトラッカー345を含む。また、電子デバイス305は、1つ以上のモーションセンサ350を含む。モーションセンサ350の例には、加速度計、ジャイロスコープ方向検出器、又は、電子デバイス305の動きを検出することができる他のデバイスが含まれる。
図4は、いくつかの実施形態による、ウィンドウ空間405内の不均一な間隔のピクセルの、ラスタ空間410内の均一な間隔のピクセルへのマッピング400を示す図である。マッピング400は、図1に示すグラフィックスパイプライン100、図2に示す電子デバイス205、及び、図3に示す電子デバイス305のいくつかの実施形態で実施される。ウィンドウ空間405内のピクセルは、グラフィックスパイプラインのジオメトリ部分によって生成され、スキャンコンバータ(又は、ラスタライザ)は、図1に示す歪み関数109のいくつかの実施形態を実施するために使用される歪み関数415を通してウィンドウ空間405内のピクセルをサンプリングすることによって、ラスタ空間410内のピクセルの値を決定する。
不均一な間隔のピクセルは、歪み関数415に従って、ウィンドウ空間405全体に分布する。図示した実施形態では、歪み関数415は、垂直歪み関数及び水平歪み関数を使用して実行される。ウィンドウ空間405内のピクセルの水平方向の境界は、ウィンドウ空間405の上部からウィンドウ空間405の中央部に向かう距離を減少させることによって分離され、その後、ウィンドウ空間405の中央部からウィンドウ空間405の下部に向かう距離を増加させることによって分離される。ウィンドウ空間405内のピクセルの垂直方向の境界は、ウィンドウ空間405の左側からウィンドウ空間405の中央部に向かう距離を減少させることによって分離され、その後、ウィンドウ空間405の中央部からウィンドウ空間405の右側に向かう距離を増加させることによって分離される。したがって、最高解像度のピクセルは、ウィンドウ空間405の中心部近くにあり、最低解像度のピクセルは、ウィンドウ空間405の縁部近くにある。
ウィンドウ空間405内の不均一な間隔のピクセルは、歪み関数415によってラスタ空間410内の均一な間隔のピクセルにマッピングされる。例えば、ラスタ空間410内のピクセル420は、ウィンドウ空間405内のピクセル425にマッピングされる。したがって、スキャンコンバータは、レンダリングされたピクセル425の比較的密なサンプリングを実行して、ピクセル420の値を決定する。別の例では、ラスタ空間410内のピクセル430をウィンドウ空間405内のピクセル435にマッピングする。したがって、スキャンコンバータは、レンダリングされたピクセル435の比較的粗いサンプリングを実行して、ピクセル430の値を決定する。
したがって、歪み関数415は、プログラム可能な方法でラスタライズのサンプリング密度を調整することができ、HMDに実装されたVR及びAR等のアプリケーションの不要なピクセルシェーディングを減らすために使用される。歪み関数415のいくつかの実施形態は、ビューポート変換後のジオメトリウィンドウ空間(ウィンドウ空間405)と、例えばラスタ空間410内のレンダリングされるジオメトリのスキャンコンバータビューと、の間に配置される状態制御された2D空間歪み変換として実装される。図示した実施形態では、水平及び垂直歪み曲線は、HMDの光学系の静的特性、及び、HMDを装着しているユーザの変化する視線等の動的特性を補償する。また、歪み関数415は、フレーム毎の画質対性能の動的なトレードオフをサポートする。このトレードオフは、ビューポートウィンドウ、歪み関数415に関連するウィンドウ、及び、歪み関数415を変更せずに後処理サンプルウィンドウのサイズを変更することによって実行される。また、レンダリングされたジオメトリは、歪み関数415を使用して、選択されたレンダリング対象の部分に柔軟にマッピングすることも可能である。
図5は、いくつかの実施形態による、HMDを装着しているユーザの目505に表示される表示ピクセルのレンダリングのプロセス500を示すブロック図である。プロセス500は、図1に示すグラフィックスパイプライン100、図2に示す電子デバイス205、及び、図3に示す電子デバイス305のいくつかの実施形態で実施される。
ジオメトリパイプラインは、ウィンドウ空間510にレンダリングされたピクセルを提供する。ウィンドウ空間510の視野は、HMDの投影マトリクスと光学特性とによって決定される。本明細書で説明するように、ウィンドウ空間510内のピクセルは、図1に示す歪み関数109及び図4に示す歪み関数415等の歪み関数515に従って不均一にレンダリングされる。歪み関数515のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせで実装される。歪み関数515は、以下に説明するように、レジスタ値に基づいて構成可能である。ウィンドウ空間510内のピクセルは、HMDを装着しているユーザの視野全体の視野角毎にほぼ一定のピクセル密度を確立するように分布している。
スキャンコンバータは、歪み関数515を通してウィンドウ空間510内の不均一なピクセルをサンプリングし、ラスタ空間520内の均一な間隔のピクセルの値を生成する。いくつかの実施形態では、後処理は、歪み認識シェーダ(distortion-aware shaders)及び他のフィルタによってラスタ空間520において実行される。次に、ラスタ空間520内のピクセルの値を使用して、ディスプレイバッファ525に提供される表示ピクセルの値を生成する。いくつかの実施形態では、レンダリング又は再構成された画像は、色調整又は他のフィルタリングを実行するために、変更されたメッシュを用いてラスタ空間520からサンプリングされる。
ディスプレイバッファ525に記憶された表示ピクセルは、HMDに実装されたディスプレイ530に提供される。ディスプレイ530は、表示ピクセルの値を使用して、対応する1対のレンズ535,540の一方を使用して、目505に提示される画像を生成する。したがって、歪み関数515を実装して、ウィンドウ空間510内の不均一な間隔のピクセルのレンダリングをサポートすることによって、過度に高い解像度で視覚周辺部のピクセルをレンダリングするようにジオメトリパイプラインにおいて消費されるリソースを減らし、低解像度での高品質なレンダリングを可能にする。スキャンコンバータは、ウィンドウ空間510内のピクセルのほぼ1:1のサンプリングを実行して、ラスタ空間520内のピクセルをレンダリングする。ウィンドウ空間510及びラスタ空間520の解像度を変更することによって、品質と性能との間の動的トレードオフが実現される。
2Dビューポート後のウィンドウ空間(ウィンドウ空間510等)と2Dラスタビュー(ラスタ空間520等)との間のジオメトリ変換は、ラスタ空間のX、Yポイントを、ウィンドウ空間内の歪んだx、yに一意且つ双方向にマッピングする。マッピングの例は、
(x,y)ws=F[(X,Y)rs]及び(X,Y)rs=F’[(x,y)ws
によって与えられ、式中、wsは、ウィンドウ空間を指し、rsは、ラスタ空間を指し、F()及びF’()は、2つの2D画像間の空間変換を定義する。いくつかの実施形態は、歪み関数を垂直歪み関数及び水平歪み関数として表す。例えば、水平成分及び垂直成分の歪みは、
(x)ws=F[(X)rs]及び(X)rs=F’[(x)ws]&
(y)ws=F[(Y)rs]及び(Y)rs=F’[(y)ws
として表される。状態テーブル及びロジックを使用して、各プリミティブに使用される歪みマップをサンプリングするためのF、F’、F、F’を構築する。
各目及び各パイプの水平方向及び垂直方向の状態パラメータを、以下の表に列挙する。歪み曲線を定義する状態を、構成状態として記憶する。有効化状態と、ビニングと連携するための状態とは、「レンダリング状態」と呼ばれる。
いくつかの実施形態では、歪み関数を定義する制御方法は、例えば、ウィンドウ空間510内のウィンドウの左上及び右下の座標を使用してウィンドウを定義することを含む。水平方向及び垂直方向の状態パラメータの値は、ルックアップテーブル(LUT)のセットからアクセスされる。例えば、システムは、2つのグラフィックスパイプライン、2つの目、及び、2つの方向(水平及び垂直)の各組み合わせに対して1つのLUTを実装して、合計8つのLUTとすることができる。以下に詳細に説明するように、LUTは、実際の水平及び垂直歪み曲線を生成するために使用されるポイント間のアルファ制御されたRCP曲線によって8つの領域曲線を定義する。レジスタ状態値を使用して、プリミティブのラスタライズ中の歪みプロセスを制御する。
Figure 2020515968
図6は、いくつかの実施形態による、歪み関数を実装するために使用される水平歪み関数605及び垂直歪み関数610を表すプロットのセット600を示す図である。水平歪み関数605及び垂直歪み関数610は、図1に示す歪み関数109、図2に示す電子デバイス205、図3に示す電子デバイス305、図4に示す歪み関数415、及び、図5に示す歪み関数515のいくつかの実施形態で実施される。水平歪み関数605及び垂直歪み関数610は、1つ以上のレジスタに記憶された状態情報に基づいて構成可能なハードウェアで実装される。
各目について、状態データは、水平歪み関数605及び垂直歪み関数610を定義し、ラスタ空間の座標X、Yをウィンドウ空間の座標x、yにマッピングする。いくつかの実施形態では、垂直方向及び水平方向における光学中心は、HMD製造者の仕様又はアプリケーションプログラミングインタフェース(API)に基づいて決定される。歪み関数は、通常、2D関数であり、APIを介してHMDドライバからクエリされ得る。光学中心は、レンダリング対象においてサンプリングされた2つのピクセル間の距離が最小になる位置に対応している。この中心が見つかると、垂直方向の中心において、水平歪み関数605を表す曲線が抽出され、水平方向の中心において、垂直歪み関数610を表す曲線が抽出される。歪み曲線が確立されると、システムは、ハードウェアで水平歪み関数605及び垂直歪み関数610を表すために使用される8セグメントの滑らかな区分関数のパラメータを決定する。
矢印615,620,625,630によって示すように、水平歪み関数605及び垂直歪み関数610は、画像を歪ませる又は歪ませないために使用される。
図7は、いくつかの実施形態による、水平歪み関数又は垂直歪み関数を表す歪み曲線705を示す図700である。歪み曲線705は、図1に示す歪み関数109、図2に示す電子デバイス205、図3に示す電子デバイス305、図4に示す歪み関数415、及び、図5に示す歪み関数515のいくつかの実施形態で実施される。歪み曲線705は、1つ以上のレジスタに記憶された状態情報に基づいて構成可能なハードウェアに実装される。歪み曲線705は、ウィンドウ空間からラスタ空間に座標をマッピングするために使用される歪み曲線を表す一例を示している。しかしながら、歪み曲線の他の実施形態は、ウィンドウからラスタ空間へのマッピングの他のパラメータ化又は関数的表現を使用して表される。
歪み曲線705は、ウィンドウ空間からラスタ空間へ1つの座標のマッピングを表す。ウィンドウ空間の座標は垂直軸で表され、ラスタ空間の座標は水平軸で表される。歪み曲線705がX座標のマッピングを表す場合、歪み曲線705は水平歪み関数を表す。歪み曲線がY座標のマッピングを表す場合、歪み曲線705は垂直歪み関数を表す。分かり易くするために、以下の説明では、歪み曲線705が、ウィンドウ空間からラスタ空間にX座標をマッピングする水平歪み関数を表すものと想定している。歪み曲線705が対角線715上の位置点710(明確にするために符号で1つのみを示す)にマッピングされる場合、歪みがなく、ウィンドウ空間のxはラスタ空間のXに等しい。
図示した実施形態では、歪み曲線705上の点720(明確にするために符号で1つのみを示す)の位置決めは、状態データ:YPosition、YPositionShift、XPosition、XPositionShiftによって制御される。点720の位置を表す位置の値は、共通のPositionShiftが適用された後に、歪みテーブルの対角線715上の7つの等間隔の点710からの水平及び垂直デルタとして記憶される。しかしながら、上述したように、歪み曲線705のいくつかの実施形態は、必ずしも等間隔ではない異なる数の点によって表される。さらに、いくつかの実施形態では、スプライン、多項式又は他のパラメトリック曲線等の連続関数又は区分連続関数を使用して、点720の位置を識別する。
PositionShift値は、対角線との最大位置差を含む次の2のべき乗の値の指数を見つけることによって決定される。歪みに使用される関数が単調に増加する場合、位置の値は、水平及び垂直の両向で増加する。例えば、点710の座標は、XPosition及びYPositionの対応する値によって決定される。次に、歪み曲線705上の点720の位置は、矢印725,730によってそれぞれ示されるYPositionShift及びXPositionShiftの値によって、点710に対して決定される。次に、アルファ値を使用して、曲線が点720の所望の位置を通過するように、最も近いX、Y位置間の曲線の曲率を変更する。点720の位置を決定すると、滑らかな歪み曲線705を生成するために、(アルファ値を使用して)区分曲線のセットが選択される。
図8は、いくつかの実施形態による、滑らかな歪み曲線805を形成するために使用される区分曲線800の選択を示す図である。歪み曲線805は、図7に示す歪み曲線705のいくつかの実施形態を表している。図示した実施形態では、歪み曲線805を決定する点のセットは、例えば、対角線上の点の位置、及び、対応するオフセットに基づいて構成されている。プロット810は、バウンディングボックス815によって識別されるセクションに滑らかな歪み曲線805を形成するために使用される区分曲線800として選択されるのに利用可能な区分曲線の候補のセットを示している。図示した実施形態では、区分曲線800は、区分曲線の候補のセットから選択されている。
区分曲線の候補の形状は、曲線がバウンディングボックス815の左下隅からバウンディングボックス815の右上隅まで移動する方法を定義するアルファ値によって決定される。位置の値の配置の選択では、検索空間を使用して、実際の光学曲線とアンダーサンプリングを抑制するための対角線とをカプセル化する滑らかな歪み曲線805を生成する区分曲線の最適なセットを見つける。一実施形態では、等しい水平間隔で点が配置され、その後、潜在的な垂直位置及びアルファ値が検索され、水平間隔のシフト及び他の値に対する調整が続き、最適な曲線の一致を見つける。区分曲線800を表すアルファ値は、サンプリング方法も使用して選択される。例えば、歪み曲線805は、セグメントの中間点でサンプリングされ、アルファ値は、歪み曲線805のサンプリング点における(ウィンドウ空間内の)x座標値に基づいて決定される。別の例では、歪み曲線805上で複数の点がサンプリングされ、x座標値の平均に基づいてアルファ値が決定される。さらに別の例では、歪み曲線805上で複数の点がサンプリングされ、サンプリングされたx座標値に対して最小二乗誤差和を有するアルファ値が選択される。
図9は、いくつかの実施形態による、歪み曲線905の中心窩修正を示すプロットのセット900を示す図である。グラフ910は、歪み曲線905と、中心視線方向920及び中心視線方向920からの偏心度の増加に伴う視力の低下を表す中心窩曲線915と、を示している。グラフ925は、中心視線方向920に対応するX、Y位置において、対応するバウンディング領域内で解像度を増加させる、修正された歪み曲線930を示している。修正された歪み曲線930は、中心窩曲線915によって変調され、解像度を所定の減少によって高める。いくつかの実施形態では、歪み曲線905の中心窩修正は、中心窩領域内のパッキングを減少させることに対応する量の視覚周辺部の間隔を増加させるため、ピクセルシェーディングのコストを増加させない。場合によっては、中心窩領域にも追加のピクセルレンダリングが追加される。
いくつかの実施形態では、ウィンドウの境界(例えば、ウィンドウの右下及び左上の座標)を示す状態情報を変更して、レンダリングされるピクセルの数を調整する。その場合、オフセットを示す状態情報と同様に、ビューポート変換の幅/高さによって使用される幅及び高さは、ウィンドウのサイズの割合の変化に対応する割合だけ変化する。フルスクリーンビューポートと、ビューポートでレンダリングするミラー又はウィンドウとは、同じ割合を使用する。座標が0〜1の範囲にあり、テクスチャサイズによってのみスケーリングする必要があるので、各色サンプルのバッファをサンプリングする三角形/四角形メッシュ又は計算シェーダは、同じUVメッシュを使用する。
図10は、いくつかの実施形態による、均一な間隔のピクセルのラスタ空間1005、及び、不均一な間隔のピクセルのウィンドウ空間1010内のプリミティブ1000の部分を表すタイルのビニングを示す図である。図1に示すグラフィックスパイプライン100のいくつかの実施形態では、ビニングが実行される。図示した実施形態では、ビン1015を、複数のより小さなビンに細分化する。本明細書で開示される歪み関数を実装するための最小ビンサイズは、図1に示すスキャンコンバータ110等のスキャンコンバータにおけるラスタライゼーションタイルのサイズに対応するため、場合によっては32×32である。しかしながら、最小ビンサイズを含むサイズは、設計上の選択事項である。グラフィックスパイプラインのいくつかの実施形態は、ターゲットとなるビニング特性、又は、グラフィックス処理システムの他の特性に応じて、より大きな又は例えば16×16までのより小さなビンを生成するビナー(プリミティブバッチビナー又はドローストリームビニングラスタライザ等)を含む。
均一なラスタ空間1005でのビニングは、ビン1015内の均一なピクセル1020と、プリミティブ1000(明確にするために符号によって1つのみを示す)と、の交点を使用して、プリミティブ1000が接するサブビン1025を識別する。
不均一なウィンドウ空間1010では、追加のユニット(以下、フレキシブルビンウォーカー、FBWと呼ばれる)を使用して、より大きなビンを分割し、歪み関数によって決定される目的の解像度で歪みビン境界のクエリを行う。例えば、ビン1015は、プリミティブ1000が接するサブビン1035を識別することによって、歪みピクセル1030に基づいて細分化される。したがって、FBWは、ビンサイズが大きくなるように構成されている場合に、歪みジオメトリを32×32の解像度で生成することができる。いくつかの実施形態では、複数のビンを単一の歪みビンに組み合わせることによって解像度を変更することもでき、これにより、16×16のビン解像度で32×32のワープ粒度が可能になる。FBWのいくつかの実施形態は、X及びYに対して別々に、2つの符号付き3ビットレジスタを介して制御される。正の値は、ビン1015がワーピングのためにさらに分割されることを示し、負の値は、ビン1015がより大きなワープビンに組み合わせられることを示している。3という最大分割カウントは、ビン1015が8つの歪みビンに分割されていることを示している。実際には、これは、256×256のビンサイズが32×32のワープビンサイズに分割可能な最大のビンサイズであることを意味する。上述したように、本明細書で説明する特定のビンサイズは例示であり、いくつかの実施形態は、グラフィックス処理システムの特性に応じて、より大きい又はより小さいビンサイズを実装する。
FBWがより大きなビン1015を細分化する場合に、出力は、プリミティブ1000と交差する各サブビン1025,1035に対してのみ生成される。クロック周期は、接していないサブビンを維持するために消費されない。各サブプリミティブ出力は、スキャンコンバータによる歪み関数に従って適切に歪む。ビナーのいくつかの実施形態は、各32×32領域の歪み関数に基づいて一意の出力歪みをサポートするために、最大256×256のビンサイズに制限されている。ビナーがより大きなビンサイズを使用する場合、歪み関数の効果は、より粗くなる。ビナー、FBW及びスキャンコンバータは、均一なラスタ空間内で動作するが、歪み関数を含めると、図10に示す不均一なウィンドウ空間1010で示すように、ジオメトリのプリミティブ/サブプリミティブ毎の歪みウィンドウ空間ビューが提供される。256×256以下のビンサイズの場合、歪み関数は、32×32のラスタ空間領域毎にジオメトリ上に適用される。上述したアルファを有するプログラム可能な8つのセグメントLUTは、ビナー及びFBWの両方で使用される。
図11は、いくつかの実施形態による、プリミティブバウンディングボックスと歪みラスタビューとの比較に基づくプリミティブの歪み認識ルーティング1100を示す図である。図1に示す入力アセンブラ102等のプリミティブアセンブラは、バウンディングボックス1105を使用して、プリミティブ1110を、ラスタライズのための適切なシェーダエンジン及びスキャンコンバータにルーティングする。しかしながら、歪み関数は、プリミティブのマッピングを、ラスタ空間内の均一な間隔のピクセルに変更する。例えば、歪みのないラスタ空間1115において、バウンディングボックス1105は、対応するシェーダエンジン及びスキャンコンバータにルーティングされる単一のピクセル内に完全に存在する。しかしながら、ラスタ空間の歪みビュー1120では、バウンディングボックス1105は、不均一な間隔の4つのピクセルと重複する。その結果、プリミティブアセンブラは、プリミティブ1110を適切なシェーダエンジン及びスキャンコンバータにルーティングするために、異なるルーティング決定を行う。
プリミティブアセンブラのいくつかの実施形態は、逆歪み関数を使用して、プリミティブ1110のルーティングを実行する。例えば、逆歪み関数は、バウンディングボックス1105の境界を定義する4つの値(minx,miny,maxx,maxy)に適用され、プリミティブのラスタビューを生成する。いくつかの実施形態では、次のコード片を使用して、バウンディングボックスのラスタライザ/スキャンコンバータ(SC)ビューを生成する。
Figure 2020515968

ビナー/垂直方向のラスタライザのいくつかの実施形態は、プリミティブアセンブラがシェーダエンジンを選択するために使用するのと同じバウンディングボックス1105のアンワーピングを使用して、垂直方向のビン行を決定する。
図12は、いくつかの実施形態による、プリミティブのビニングを示すグラフィックスパイプラインの一部1200のブロック図である。グラフィックスパイプラインの一部1200は、図1に示すグラフィックスパイプライン100のいくつかの実施形態で実装される。図示した実施形態では、プリミティブ1205は、本明細書で説明するように、ウィンドウ空間内の不均一な間隔のピクセルのレンダリングを実行するジオメトリシェーダ1210に提供される。ジオメトリシェーダ1210は、レンダリングされたウィンドウ空間のピクセルを、ハードウェアに実装され、レジスタの値に基づき構成可能な歪み関数1215に提供する。
ビナー1220は、歪み関数1215を介してジオメトリシェーダ1210から三角形等のプリミティブのバッチを受信する。ビナー1220のいくつかの実施形態は、垂直方向及び水平方向の2つのステージで動作する。垂直方向のステージは、「現在のバッチの何れの三角形がビン行Yに接するか」という質問に回答する。水平方向のステージは、「ビン行Yの何れの三角形がビンXに接するか」という質問に回答する。ビナー1220は、バッチの三角形が接する可能性のあるビン毎にこれらの質問に回答する。ビナー1220は、ビン毎に、ビンに接する各三角形をスキャンコンバータ1225に向けて送信する。ビナー1220は、現在のビンの周囲にシザー矩形を設定し、スキャンコンバータ1225は、現在のビン内でのみラスタライズする。場合によっては、三角形の頂点位置は、固定小数点の24ビットXY座標である。したがって、ビナー1220は、歪み関数1215に基づいて、ジオメトリの異なるビューをスキャンコンバータ1225に提示し、スキャンコンバータ1225によって処理される各ビンがウィンドウの一意の解像度を処理して、HMD1235等のディスプレイデバイスに提供される表示ピクセルを生成できるようにする。
ジオメトリパイプラインの一部1200のいくつかの実施形態は、上述した方法で動作するフレキシブルビンウォーカー1230をも含む。フレキシブルビンウォーカー1230は、破線で示すように、ジオメトリパイプラインの一部1200に必ずしも実装されないオプションの要素である。
ビナー1220のいくつかの実施形態は、図6に示す垂直及び水平歪み関数605,610等の垂直及び水平歪み関数に従って、垂直方向及び水平方向のラスタライズを実行する。ビナー1220中の垂直方向のラスタライザは、各三角形の垂直方向の範囲を計算して記憶する。この情報の解像度は、ビン行にある。多重解像度レンダリングなしでは、正しい範囲のMSBビットを選択するだけでよいため、垂直方向の範囲の計算が非常に容易である。多重解像度レンダリングでは、垂直方向のラスタライザは、プリミティブアセンブラがシェーダエンジン選択に関して行うのと同じ歪みのないバウンディングボックスを計算する。場合によっては、垂直方向のラスタライザは、バウンディングボックスの垂直方向の範囲を歪ませないが、バウンディングボックスの水平方向の部分も計算される場合、垂直方向のラスタライザを使用して、狭く高い三角形についての偽陽性ビン行(false positive bin rows)を除去する。マルチシェーダエンジン構成では、各ビン列が現在のビナー1220に属していないビン行を有する特定のパターンを有しているので、垂直方向のラスタライザは、このタスクに適している。したがって、垂直方向のラスタライザは、歪みのないバウンディングボックスの計算を追加するように変更される。以下の擬似コードは、三角形によって区切られるビンを決定するための例示的な技術である。
Figure 2020515968
水平方向のラスタライザは、連続するクロック周期で現在のビン行Yに接する全ての三角形と共に、垂直方向のラスタライザから現在のビン行Yを受信する。水平方向のラスタライザが各三角形を受信することに応じて、水平方向のラスタライザは、三角形がビン行の上部境界と下部境界との間で接する左端及び右端の交点を計算する。また、多重解像度レンダリングを可能にするために、水平方向のラスタライザは、水平方向の交点を解くために使用されるビン行の上部及び下部のY座標を(歪み関数に基づいて)歪ませ、水平方向のスパンがカバーするビンを決定するために、計算された水平方向の交点を(歪み関数に基づいて)歪ませないように構成されている。以下の擬似コードは、水平方向のラスタライザによって実行される処理の一例である。
Figure 2020515968
ビナー1220は、現在のビン境界に設定されたシザー矩形セットと共に三角形をスキャンコンバータ1225に出力する。多重解像度レンダリングでは、各ビンから「透けて」見える元のビューポートの量が異なる。これは、ビン毎の一意のスケール及びオフセットを計算して、スキャンコンバータ1225に送信される前に三角形の頂点に適用することによって実現される。より大きなビンの場合、FBW1230は、ビンを細分化又は集約する能力内で出力されるビンのサイズを調整するようにプログラミングされている。いくつかの実施形態では、スケール及びオフセットは、シザー矩形座標をワープ空間にワープし、元のシザー矩形とワープされたシザー矩形との間のサイズ及びオフセット差を計算することによって、計算される。スケール及びオフセットによって、頂点XY位置が変更される。これは、勾配設定計算(gradient set up calculation)をプリミティブアセンブラからスキャンコンバータ1225に移動させることによって実装される。そうでなければ、ビナー1220の出力は、重心及びZ勾配もスケーリングする必要があり、追加の計算が必要になる。以下の擬似コードは、ビナー1220及びFBW1230の例示的な動作を示している。
Figure 2020515968
要約すると、プリミティブアセンブラは、三角形のバウンディングボックスを歪ませずにプリミティブを取得するシェーダエンジンを決定するように構成されている。ビナー1220の垂直方向のラスタライザは、プリミティブのバウンディングボックスを歪ませず、水平方向のラスタライザは、ビン行の上部及び下部境界を歪ませる。また、水平方向のラスタライザは、水平方向のスパンの端点を歪ませない。ビナー1220からの出力及び場合によってはFBW1230を使用して、現在のビンのスケール及びオフセットを計算し、これらのスケール及びオフセットを三角形の頂点位置に適用する。次に、セットアップ関数を、ビナー1220に続くグラフィックスパイプラインの点に移動する。これにより、セットアップユニットは、ビナー1220又はFBW1230によって出力される新規の及び変更された三角形の頂点位置を使用して、三角形の勾配を正常に計算することができる。
図13は、いくつかの実施形態による、歪み関数を通してウィンドウ空間内のサンプリング不均一ピクセルをレンダリングする方法1300のフロー図である。方法1300は、図1に示すグラフィックスパイプライン100、図2に示す電子デバイス205、及び、図3に示す電子デバイス305のいくつかの実施形態で実施される。
ブロック1305において、ジオメトリパイプラインは、ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングする。ブロック1310において、ウィンドウ空間内の不均一な間隔のピクセルを、歪み関数を通してサンプリングする。ブロック1315において、スキャンコンバータは、ラスタ空間内の均一な間隔のピクセルに基づいて、表示ピクセルをレンダリングする。均一な間隔のピクセルは、歪み関数を通して不均一な間隔のピクセルをサンプリングすることによって決定される。ブロック1320において、表示ピクセルに基づいて、ユーザに表示される画像を生成する。
いくつかの実施形態では、上述した装置及び技術は、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステム(例えば、図1〜13を参照して上述したグラフィックスパイプライン等)において実施される。これらのICデバイスの設計及び製造には、通常、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし(例えば、システムRAM又はROM)、コンピュータシステムに固定的に取り付けられてもよいし(例えば、磁気ハードドライブ)、コンピュータシステムに着脱可能に取り付けられてもよいし(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい(例えば、ネットワークアクセス可能なストレージ(NAS))。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. グラフィックスパイプライン(100)において、ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることと、
    スキャンコンバータ(110,1225)を用いて、ウィンドウ空間(405,510)内のピクセルを、ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間(410,520)内の均一な間隔のピクセルにマッピングする歪み関数(109,515)を通してサンプリングすることと、
    ラスタ空間内の均一な間隔のピクセルに基づいて、前記スキャンコンバータによってレンダリングされる表示ピクセルを使用して、ユーザに表示される画像を生成することと、を含む、
    方法。
  2. 前記ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングすることは、視野(subtended)領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
    請求項1の方法。
  3. 前記ウィンドウ空間内のピクセルをレンダリングすることは、視野角毎のピクセル密度が、ユーザに関連する中心窩領域(225,240)で比較的高く、前記ユーザに関連する視覚周辺部(230,250)で比較的低いように、前記ウィンドウ空間内のピクセルをレンダリングすることを含む、
    請求項2の方法。
  4. 前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることは、ウィンドウ空間内の不均一な間隔のピクセルの第1寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数(610)と、ウィンドウ空間内の不均一な間隔のピクセルの第2寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数(605)と、を通してウィンドウ空間内のピクセルをサンプリングすることを含む、
    請求項1の方法。
  5. 前記垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される、
    請求項4の方法。
  6. 前記ユーザの中心窩領域(225,240)を決定することと、
    前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、をさらに含む、
    請求項5の方法。
  7. プリミティブ(1000)のバウンディングボックス(1105)をウィンドウ空間内の不均一な間隔のピクセルの境界と比較することと、
    前記比較に基づいて、前記グラフィックスパイプラインを通して前記プリミティブをルーティングすることと、をさらに含む、
    請求項1の方法。
  8. 前記プリミティブとウィンドウ空間内の不均一な間隔のピクセルとの交点に基づいて、前記プリミティブのサンプルをビニングすること、をさらに含む、
    請求項7の方法。
  9. ウィンドウ空間内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプラインを実装するように構成された少なくとも1つのプロセッサ(335)と、
    ウィンドウ空間(405,510)内の不均一な間隔のピクセルをラスタ空間(410,520)内の均一な間隔のピクセルにマッピングする歪み関数(109,515)と、
    スキャンコンバータ(110,1225)と、を備え、
    前記スキャンコンバータは、
    前記歪み関数を通してウィンドウ空間内のピクセルをサンプリングすることと、
    ラスタ空間内の均一な間隔のピクセルに基づいてユーザに表示される画像を生成するために使用される表示ピクセルをレンダリングすることと、
    を行うように構成されている、
    装置。
  10. 前記少なくとも1つのプロセッサは、視野領域毎のピクセル密度がユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
    請求項9の装置。
  11. 前記少なくとも1つのプロセッサは、視野角毎のピクセル密度が、ユーザに関連する中心窩領域(225,240)で比較的高く、前記ユーザに関連する視覚周辺部(230,250)で比較的低いように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
    請求項10の装置。
  12. 前記スキャンコンバータは、ウィンドウ空間内の不均一な間隔のピクセルの第1寸法をラスタ空間内の均一な間隔のピクセルにマッピングする垂直歪み関数(610)と、ウィンドウ空間内の不均一な間隔のピクセルの第2寸法をラスタ空間内の均一な間隔のピクセルにマッピングする水平歪み関数(605)と、を通してウィンドウ空間内のピクセルをサンプリングするように構成されている、
    請求項9の装置。
  13. 前記垂直及び水平歪み関数は、ウィンドウ空間内の均一な間隔のピクセルをラスタ空間内の均一な間隔のピクセルにマッピングする線形関数からの対応する変位のセットによって定義される、
    請求項12の装置。
  14. 前記少なくとも1つのプロセッサは、
    前記ユーザの中心窩領域(225,240)を決定することと、
    前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記垂直及び水平歪み関数を変更することと、
    を行うように構成されている、
    請求項13の装置。
  15. 前記少なくとも1つのプロセッサは、
    プリミティブ(1000)のバウンディングボックス(1005)をウィンドウ空間内の不均一な間隔のピクセルの境界と比較することと、
    前記比較に基づいて、前記グラフィックスパイプラインを通して前記プリミティブをルーティングすることと、
    を行うように構成されている、
    請求項9の装置。
  16. 前記少なくとも1つのプロセッサは、
    前記プリミティブとウィンドウ空間内の不均一な間隔のピクセルとの交点に基づいて、前記プリミティブのサンプルをビニングすること、
    を行うように構成されている、
    請求項15の装置。
  17. ヘッドマウントデバイス(HMD)(300,1235)であって、
    前記HMDを装着しているユーザに画像を提示するディスプレイ(320)と、
    ウィンドウ空間(405,510)内のピクセルを不均一なピクセル間隔でレンダリングするグラフィックスパイプライン(100)を実装するように構成された少なくとも1つのプロセッサ(335)と、
    スキャンコンバータ(110,1225)と、を備え、
    前記スキャンコンバータは、
    ウィンドウ空間内の不均一な間隔のピクセルをラスタ空間(410,520)内の均一な間隔のピクセルにマッピングする第1歪み関数(109,105)を通して、ウィンドウ空間内のピクセルをサンプリングすることと、
    ラスタ空間内の均一な間隔のピクセルに基づいて、前記ユーザに表示される画像を生成するために、前記ディスプレイに提供される表示ピクセルをレンダリングすることと、
    を行うように構成されている、
    HMD。
  18. 前記少なくとも1つのプロセッサは、視野領域毎のピクセル密度が前記ユーザの視野全体で一定になるように、前記ウィンドウ空間内のピクセルをレンダリングするように構成されている、
    請求項17のHMD。
  19. 前記少なくとも1つのプロセッサは、前記ディスプレイに提供される前に前記表示ピクセルに適用される第2歪み関数を実装するように構成されている、
    請求項17のHMD。
  20. 前記少なくとも1つのプロセッサは、
    前記ユーザの中心窩領域(225,240)を決定することと、
    前記中心窩領域の位置に対応する前記ウィンドウ空間の一部のピクセルの解像度を高めるように、前記第1歪み関数を変更することと、
    を行うように構成されている、
    請求項17のHMD。
JP2019553101A 2017-03-27 2018-03-15 シングルパスフレキシブルスクリーン/スケールラスタライゼーション Active JP7050085B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762477149P 2017-03-27 2017-03-27
US62/477,149 2017-03-27
US15/843,968 US10546365B2 (en) 2017-03-27 2017-12-15 Single pass flexible screen/scale rasterization
US15/843,968 2017-12-15
PCT/US2018/022693 WO2018182989A1 (en) 2017-03-27 2018-03-15 Single pass flexible screen/scale rasterization

Publications (3)

Publication Number Publication Date
JP2020515968A true JP2020515968A (ja) 2020-05-28
JP2020515968A5 JP2020515968A5 (ja) 2021-04-30
JP7050085B2 JP7050085B2 (ja) 2022-04-07

Family

ID=63583513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019553101A Active JP7050085B2 (ja) 2017-03-27 2018-03-15 シングルパスフレキシブルスクリーン/スケールラスタライゼーション

Country Status (6)

Country Link
US (1) US10546365B2 (ja)
EP (1) EP3602484A4 (ja)
JP (1) JP7050085B2 (ja)
KR (1) KR102410351B1 (ja)
CN (1) CN110462677A (ja)
WO (1) WO2018182989A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11087644B2 (en) 2015-08-19 2021-08-10 E Ink Corporation Displays intended for use in architectural applications
EP3465628B1 (en) 2016-05-24 2020-07-08 E Ink Corporation Method for rendering color images
GB2569574B (en) * 2017-12-20 2021-10-06 Sony Interactive Entertainment Inc Head-mountable apparatus and methods
CN110324601A (zh) * 2018-03-27 2019-10-11 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
US11544822B2 (en) * 2019-01-21 2023-01-03 Sony Interactive Entertainment Inc. Image generation apparatus and image generation method
US11120591B2 (en) * 2019-05-31 2021-09-14 Apple Inc. Variable rasterization rate
US11954789B2 (en) 2019-07-02 2024-04-09 Interdigital Vc Holdings, Inc. System and method for sparse distributed rendering
CN114175630A (zh) * 2019-07-28 2022-03-11 谷歌有限责任公司 利用注视点网格渲染沉浸式视频内容的方法、系统和介质
GB2589325B (en) * 2019-11-26 2021-12-22 Sony Interactive Entertainment Inc Image rendering method and apparatus
GB2600944B (en) 2020-11-11 2023-03-01 Sony Interactive Entertainment Inc Image rendering method and apparatus
US11915384B2 (en) * 2021-04-22 2024-02-27 Sony Interactive Entertainment Inc. Estimation of optimal rasterization distortion function from image distortion property
GB2615362B (en) * 2022-02-08 2024-03-13 Sony Interactive Entertainment Inc Image processing system and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165760A (ja) * 2006-12-04 2008-07-17 Arm Norway As グラフィックスを処理する方法および装置
US20150287167A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
JP2017010559A (ja) * 2015-06-23 2017-01-12 三星電子株式会社Samsung Electronics Co.,Ltd. グラフィックスパイプラインを遂行する方法及びその装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7385612B1 (en) 2002-05-30 2008-06-10 Adobe Systems Incorporated Distortion of raster and vector artwork
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US9443355B2 (en) 2013-06-28 2016-09-13 Microsoft Technology Licensing, Llc Reprojection OLED display for augmented reality experiences
US9495790B2 (en) * 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9818201B2 (en) * 2014-12-22 2017-11-14 Lucasfilm Entertainment Company Ltd. Efficient lens re-distortion
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US10037620B2 (en) * 2015-05-29 2018-07-31 Nvidia Corporation Piecewise linear irregular rasterization
DE102015217993A1 (de) * 2015-09-18 2017-03-23 Bayerische Motoren Werke Aktiengesellschaft Pixelbasierte Anzeigevorrichtigung

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165760A (ja) * 2006-12-04 2008-07-17 Arm Norway As グラフィックスを処理する方法および装置
US20150287167A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
JP2017010559A (ja) * 2015-06-23 2017-01-12 三星電子株式会社Samsung Electronics Co.,Ltd. グラフィックスパイプラインを遂行する方法及びその装置

Also Published As

Publication number Publication date
US10546365B2 (en) 2020-01-28
EP3602484A4 (en) 2021-01-13
KR20190125515A (ko) 2019-11-06
EP3602484A1 (en) 2020-02-05
JP7050085B2 (ja) 2022-04-07
KR102410351B1 (ko) 2022-06-17
US20180276790A1 (en) 2018-09-27
CN110462677A (zh) 2019-11-15
WO2018182989A1 (en) 2018-10-04

Similar Documents

Publication Publication Date Title
JP7050085B2 (ja) シングルパスフレキシブルスクリーン/スケールラスタライゼーション
JP6903183B2 (ja) 曲面ビューポート上に頂点の投影を近似することによる、グラフィックス処理における画面位置に基づく有効解像度の変化
JP7395577B2 (ja) 再投影フレームのモーションスムージング
KR101923562B1 (ko) 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법
KR101862182B1 (ko) 래스터화 파라미터를 변경하는 것에 의해 스크린 위치에 따른 유효 해상도의 가변
EP3444775B1 (en) Single pass rendering for head mounted displays
US10037620B2 (en) Piecewise linear irregular rasterization
JP2018537755A (ja) 中心窩ジオメトリテッセレーション
TWI503791B (zh) 針對各向異性過濾運算細節位準之技術
US10403029B2 (en) Methods and systems for multistage post-rendering image transformation
JP2002503855A (ja) 可変解像度スーパーサンプリングによるグラフィックス・システム
KR20200040883A (ko) 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링
WO2019099078A1 (en) Phase aligned foveated rendering
CN111275801A (zh) 一种三维画面渲染方法及装置
US20180213215A1 (en) Method and device for displaying a three-dimensional scene on display surface having an arbitrary non-planar shape
JP2014006674A (ja) 画像処理装置及びその制御方法、プログラム
US8743123B2 (en) Visualization processing method and apparatus with mask surface
EP1330785A2 (en) Dynamic depth-of-field emulation based on eye-tracking
CN116188668B (zh) 一种基于ios平台的阴影渲染的方法、介质及电子设备
JPH1166357A (ja) 画像表示システム及び画像表示処理方法
JP2023538828A (ja) 距離場グラフィックスレンダリングのためのアンチエイリアシング

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210315

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R150 Certificate of patent or registration of utility model

Ref document number: 7050085

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150