JP2022504892A - 並行テクスチャサンプリング - Google Patents
並行テクスチャサンプリング Download PDFInfo
- Publication number
- JP2022504892A JP2022504892A JP2021520389A JP2021520389A JP2022504892A JP 2022504892 A JP2022504892 A JP 2022504892A JP 2021520389 A JP2021520389 A JP 2021520389A JP 2021520389 A JP2021520389 A JP 2021520389A JP 2022504892 A JP2022504892 A JP 2022504892A
- Authority
- JP
- Japan
- Prior art keywords
- texel
- texels
- sampling
- buffer
- array
- 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.)
- Pending
Links
- 238000005070 sampling Methods 0.000 title claims abstract description 194
- 239000000872 buffer Substances 0.000 claims abstract description 271
- 238000000034 method Methods 0.000 claims description 63
- 238000003860 storage Methods 0.000 claims description 40
- 230000001052 transient effect Effects 0.000 claims description 11
- 230000036961 partial effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 abstract description 9
- 230000015654 memory Effects 0.000 description 111
- 210000001508 eye Anatomy 0.000 description 30
- 238000009877 rendering Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000004075 alteration Effects 0.000 description 10
- 238000001914 filtration Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 210000003128 head Anatomy 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000004886 head movement Effects 0.000 description 3
- 210000001747 pupil Anatomy 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000004424 eye movement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000005252 bulbus oculi Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
本開示は、概して、仮想現実及び拡張現実といった人工現実に関する。
人工現実は、ユーザに提示される前に何らかのやり方で調整された現実の一形態であり、例えば、仮想現実(VR)、拡張現実(AR)、混合現実(MR)、ハイブリッド現実、又は、これらの何らかの組み合わせ及び/又は派生物を含みうる。人工現実コンテンツは、完全に生成されたコンテンツ、又は、撮像されたコンテンツ(例えば、現実世界の写真)と組み合わせて生成されたコンテンツを含みうる。人工現実コンテンツは、映像、音、触覚フィードバック、又はこれらのいくつかの組み合わせを含むことができ、これらのいずれも、1つのチャネル又は複数のチャネル(視聴者に3D効果をもたらす立体動画(stereo video)など)で提示されうる。人工現実は、例えば、或る人工現実においてコンテンツを制作するために使用され及び/又は或る人工現実において使用される(例えば、人工現実においてアクティビティを行う)アプリケーション、製品、アクセサリ、サービス、又はこれらの幾つかの組み合わせと関連付けられうる。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD:head-mounted display)、独立型HMD、携帯機器若しくは計算システム、又は、1人以上の視聴者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装されうる。
本明細書に記載の特定の実施形態は、レンダリングプリミティブとしてプリワープされた(pre-warped)表面を使用して人工現実オブジェクトをレンダリングし、及び、1つの動作で、タイル(例えば、その四隅により画定される16×16のピクセルといった、ピクセルの集合)内のピクセルサンプルの集合(例えば、2×2のピクセルの集合)の特性(例えば、色、又は距離場)を決定するために必要とされる全てのテクセルを並行して取り出す方法に関する。システムは、計算システム(例えば、携帯電話といった身体装着型計算システム、又は、ラップトップ、デスクトップ等)と関連付けられた1つ以上のCPU/GPU上で、プリワープされた表面を生成しうる。プリワープされた表面は、下にあるオブジェクトの3D輪郭を視覚的に考慮した、2D画像といったCPU/GPUのレンダリング結果に基づいて生成されうる。プリワープされた表面は、視聴者の視点(例えば、観視距離、視野角)に基づいて、特定の形状、サイズ、向きで生成されうる。2D画像は、表面のテクスチャデータとして格納されうる。表面は、2Dテクスチャのための平らで平面的なキャンバスと見なすことができ、視聴者に面する3Dビュー空間内に、(例えば、法線ベクトルが実質的に視聴者の方を指した状態で)配置される。結果として、表面のプリワープされたテクスチャデータは、複数のテクスチャミップマップレベルではなく、1つのミップマップレベルによって表されうる。
ヘッドセットシステムは、身体装着型計算システムから、プリワープされた表面を受信し、このプリワープされた表面を変換することによってヘッドマウントディスプレイ上で表面をレンダリングしうる。プリワープされた表面の可視性が、視聴者のスクリーンから光線を投影することによりテストされうる。特定の実施形態において、スクリーン空間におけるその四隅の位置によりそれぞれが画定されうる複数のタイル(例えば、16×16のピクセルが整列したブロック)から、光線が投げかけられうる(cast)。特定の表面が、タイルから見えると判定された場合には、そのタイル内のピクセルの色が、表面のテクスチャからサンプリングされうる。特定の実施の形態において、ピクセルのサンプリングが、4個の整列した2×2ピクセルに対して同時に行われうる。システムは、ズームアウト操作による縮小を2倍の範囲内に制限しうる。この制約により、2×2のサンプリング点が常に、4×4のテクセル領域内に入りうる。特定の実施形態において、システムは、テクセルバッファのための16個の独立したテクセルバッファブロックを含むマルチレベルメモリアーキテクチャを利用しうる。システムは、所定のテクセルストレージパターンを使用して、別々にアドレス指定することが可能であり、かつ並行して(例えば、1つの動作で)読み出すことが可能な16個の独立したクワッドバッファブロックに、4×4のテクセル領域を格納することができる。したがって、システムは、(4個のクワッドに順次アクセスするのではなく、)1つの読み出し動作で4×4のテクセル領域にアクセスし、4個のピクセル値を決定するために必要な全てのテクセルを並行してサンプリングすることができる。プリワープされた表面が1つのテクスチャミップマップレベルに基づいて生成されるため、ヘッドセットシステムはピクセルの値を決定するために、異なるミップマップレベルから他のテクセルデータ集合を読み出すことが必要となるトライリニア補間の代わりに、1つのテクスチャミップマップにアクセスして、バイリニア補間を利用するだけでよい。
一実施形態において、方法は、計算システムによって、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を含みうる。
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を含みうる。
複数の部分配列が、テクセル配列内で繰り返しパターンを形成しうる。
複数のバッファブロックのそれぞれが、別々にアドレス指定され、かつ並行してアクセスされうる。
複数のバッファブロックが、複数の群にグループ化されてよく、サンプリング点のピクセル値を決定するために使用される各テクセルが、複数の群の異なる群から取り出されうる。
一実施形態において、複数のテクセル部分集合が、
テクセル配列における基準テクセルの位置を示す第1の座標(u,v)を有する基準テクセルを決定することと、
複数の中間テクセル群であって、(0,0)、(1,0)、(0,1)、及び(1,1)に等しい第1の座標(u,v)の2進表現の最下位ビットを有するテクセルをそれぞれ含む複数の中間テクセル群を決定することと、
各中間テクセル群の各テクセルについて第2の座標(x,y)を決定することと、
対応する中間テクセル群に関して、(0,0),(1,0),(0,1)及び(1,1)に等しい第2の座標(x,y)の2進表現の最下位ビットを有するテクセルをそれぞれが含む複数のテクセル部分集合を決定すること
によって決定されうる。
テクセル配列における基準テクセルの位置を示す第1の座標(u,v)を有する基準テクセルを決定することと、
複数の中間テクセル群であって、(0,0)、(1,0)、(0,1)、及び(1,1)に等しい第1の座標(u,v)の2進表現の最下位ビットを有するテクセルをそれぞれ含む複数の中間テクセル群を決定することと、
各中間テクセル群の各テクセルについて第2の座標(x,y)を決定することと、
対応する中間テクセル群に関して、(0,0),(1,0),(0,1)及び(1,1)に等しい第2の座標(x,y)の2進表現の最下位ビットを有するテクセルをそれぞれが含む複数のテクセル部分集合を決定すること
によって決定されうる。
複数のテクセル部分集合が、16個のテクセル部分集合を含んでよく、複数のバッファブロックが、16個のバッファブロックを含んでよい。
16個のテクセル部分集合が、4個のテクセル群に編成されうる。複数のサンプリング点が、4個のサンプリング点を含んでよく、4個のテクセル群が、4個のサンプリング点のピクセル値をそれぞれ並行して決定するために使用されうる。
各ピクセル値が、サンプリングテクセル配列の2×2のテクセル部分配列に基づいて決定されてよく、2×2のテクセル部分配列の各テクセルは、4個のテクセル群のうちの1つから選択されうる。
複数のサンプリング点が、シーンの一部分の二次元表現への表示領域の交差領域と関連付けられうる。
二次元表現が、シーンの一部分の三次元情報を含むことができ、シーンの一部分の二次元表現が、表示領域内で可視でありうる。
シーンの一部分の二次元表現が、単一のテクスチャ解像度で表わすことができ、テクセル配列が、単一のテクスチャ解像度を有するテクセルを含むことができる。
サンプリングテクセル配列が、整列したテクセル領域又は整列していないテクセル領域と関連付けられうる。
一実施形態において、1つ以上のコンピュータ可読な非一過性記憶媒体が、
ソフトウェアであって、実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を行うよう動作可能であるソフトウェアを具現化しうる。
ソフトウェアであって、実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を行うよう動作可能であるソフトウェアを具現化しうる。
複数の部分配列が、テクセル配列内で繰り返しパターンを形成しうる。
複数のバッファブロックのそれぞれが、別々にアドレス指定され、かつ並行してアクセスされる。
複数のバッファブロックは、複数の群にグループ化されてよく、サンプリング点のピクセル値を決定するために使用される各テクセルが、複数の群の異なる群から取り出されうる。
一実施形態において、システムが、
1つ以上のプロセッサと、
1つ以上のプロセッサに接続された1つ以上のコンピュータ可読な非一過性記憶媒体であって、命令を含み、
命令は、1つ以上のプロセッサによって実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
をシステムに行わせるよう動作可能である、1つ以上のコンピュータ可読な非一過性記憶媒体と、
を備えうる。
1つ以上のプロセッサと、
1つ以上のプロセッサに接続された1つ以上のコンピュータ可読な非一過性記憶媒体であって、命令を含み、
命令は、1つ以上のプロセッサによって実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、サンプリングテクセル配列の各テクセルが、複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
をシステムに行わせるよう動作可能である、1つ以上のコンピュータ可読な非一過性記憶媒体と、
を備えうる。
複数の部分配列が、テクセル配列内で繰り返しパターンを形成しうる。
複数のバッファブロックのそれぞれが、別々にアドレス指定され、かつ並行してアクセスされうる。
複数のバッファブロックは、複数の群にグループ化されてよく、サンプリング点のピクセル値を決定するために使用される各テクセルが、複数の群のうちの異なる群から取り出されうる。
一実施形態において、1つ以上のコンピュータ可読な非一過性記憶媒体は、ソフトウェアであって、実行されたときに、上述した任意の実施形態に係る方法、又はそれらの範囲内の方法を実施するよう動作可能なソフトウェアを具現化しうる。
一実施形態において、システムは、1つ以上のプロセッサと、当該プロセッサに接続され、当該プロセッサにより実行可能な命令を含む少なくとも1つのメモリと、を備え、プロセッサは、命令を実行するときに、上述した任意の実施形態に係る方法、又はそれらの範囲内の方法を実施するよう動作可能である。
一実施形態において、好適にコンピュータ可読な非一過性記憶媒体を含むコンピュータプログラム製品は、データ処理システム上で実行されるときに、上述した任意の実施形態に係る方法、又はそれらの範囲内の方法を実施するよう動作可能でありうる。
本明細書に開示される実施形態は単なる例であり、本開示の範囲は、これらに限定されない。特定の実施形態は、先に開示された実施形態の構成要素、要素、特徴、機能、動作、又はステップの全て若しくは一部を含んでよく、又は全く含まなくてよい。本発明に係る実施形態は、方法、記憶媒体、システム、及びコンピュータプログラム製品を対象とする添付の特許請求の範囲において特に開示されており、1の請求項のカテゴリ(例えば、方法)で言及される任意の特徴が、他の請求項のカテゴリ(例えば、システム)でも同様に特許請求されうる。添付の特許請求の範囲における従属関係又は引用は、形式上の理由で選択されている。しかしながら、任意の先行する請求項への意図的な引用(特に多項従属)から生じるいかなる発明の主題も特許請求することが可能であり、これにより、請求項とその特徴との任意の組み合わせが開示され、添付の特許請求の範囲において選択された従属関係にかかわらず特許請求することが可能である。特許請求することが可能な発明の主題は、添付の特許請求の範囲に記載される特徴の組み合わせだけでなく、特許請求項における特徴の任意の他の組み合わせも含み、特許請求項において言及される各特徴は、特許請求項における任意の他の特徴又は他の特徴の組み合わせと組み合わせることが可能である。さらに、本明細書に記載若しくは図示される任意の実施形態及び特徴は、別個の請求項で、及び/又は、本明細書に記載若しくは図示される任意の実施形態又は特徴との任意の組み合わせにおいて、又は、添付の特許請求項の任意の特徴との任意の組み合わせにおいて特許請求することが可能である。
従来のグラフィックス・レンダリングシステムでは、テクスチャから必要なテクセルデータを取得して、1つのピクセルの色(画像の場合)又は距離場(フォント、文字、グリフ等といったラベルの場合)を決定するために、別々の読み出し動作を実行する必要がありうる。サンプリングプロセス中に、従来のGPU上に実装された従来のレンダリングパイプラインは、ピクセル値(例えば、色/距離場)を決定するためにバイリニア補間を行うときには、クワッド・テクセルバッファメモリにアクセスする。例えば、従来のGPUは、(例えば、バイリニア補間を介して)フィルタリングを実行するために必要な、サンプル位置に対して最も近い4個のテクセルを取り出すために、4つの別々の読み出し動作を実行することを必要としうる。このようなメモリアクセス動作は遅く、より多くの電力を消費する。さらに、複数のピクセルサンプルが同時にフィルタリングされる場合には、別々のサンプリング位置が、別々のテクスチャミップマップレベルからのテクセルを必要とし、メモリアクセス時間がさらに増大する。例えば、仮想ボックスが視聴者に対して非常に傾斜している場合には、視聴者により近いボックスの部分が、視聴者から離れたボックスの部分よりも高解像度ミップマップテクスチャを利用しうる。同様に、視聴者がボックスからズームアウトする場合には、より多くのテクセルを取り出す必要があり、又は、システムは、より粗いミップマップレベルに切り替える必要がありうる。このような動作が、特に膨大な量で実行される場合には、全レンダリング時間、電力消費、及びシステムの複雑さを著しく増大する。
上述の問題は、プリワープされた表面を処理又は調整するよう設計されたディスプレイエンジンの特定の実施形態によって、大幅に解消されうる。上記表面は、従来のコンピュータグラフィックスがレンダリングされる3Dモデルポリゴンではなく、ディスプレイエンジンがそこで動作するプリミティブでありうる。「表面」は、テクセルで構成される2Dテクスチャデータと、3D位置データ(例えば、視聴者のビュー空間座標において指定された距離、角度、及び/又は座標)と、を含みうる。特定の実施の形態において、表面は、視聴者のビュー空間に配置された、テクスチャがマッピングされる平らで平面なキャンバスとして表されうる。表面の可視性を、表面の3D位置データを用いて計算することができ、各ピクセルの色又は距離場の決定が、表面のテクスチャデータからサンプリングされうる。表面のテクスチャは、(例えば、ポリゴンにより定義される3Dモデルから)GPUによりレンダリングされた2D画像に基づいて生成されうる。従って、表面が3Dオブジェクトを示しているように見えても、表面は、実際には平らな表面である。したがって表面は、当該表面が生成されたときには、視聴者の視点に基づいてプリワープされていると見なすことが可能である。さらに、表面が生成された時間以降に視聴者がわずかに動いたとしても(例えば、視聴者が、フレーム間又は1/60秒間に大きく動いている可能性は低い)、表面の法線ベクトルは、実質的に視聴者の方を指しうる。表面がプリワープされ、視聴者に面しているため、フレーム間調整を行うためにディスプレイエンジンによって表面を処理しているときには、(例えば、複数のテクスチャミップマップレベルの代わりに)1つのテクスチャミップマップレベルを用いて、表面をサンプリングすることが可能である。さらに、本システムの特定の実施形態は、ズームアウト操作によって起こる縮小を、2倍の範囲内に制限することができ、これにより、4個のサンプリング点が常に4×4のテクセル領域内に入ることが可能となる。システムの特定の実施形態は、上記の特徴を利用し、テクセルバッファメモリ内のテクセルストレージパターン(例えば、テクセルバッファブロックを含むクアッドバッファブロック)を設定し、4×4のテクセル領域を、1つの読み出し動作で読み出すことができるように格納することを可能としうる。システムの特定の実施形態は、所定数のメモリブロックを含むメモリ構造であって、多重化及び帯域幅の要件が低減された状態で並行アクセスが可能な上記メモリ構造を利用しうる。
本システムの特定の実施形態は、ピクセル値を決定するのに必要なテクセルを取り出すためのより高速でより少数のメモリ読み出しをもたらし、テクセルバッファメモリ(例えば、テクセルバッファブロックを含むクワッドバッファブロック)から、テクセルを取り出すために必要な電力消費及び論理演算を低減する。本システムの特定の実施形態は、フレーム間での視聴者の視点の変化に対応するために、プレワープされた表面を調整又は変換する(例えば、概念的には、位置、向き、及び/又はスケールの調整)ための、ヘッドセットシステムによる計算量を削減する。システムの特定の実施形態は、複数のピクセルサンプル(例えば、2×2のピクセル)をフィルタリングするために必要なテクセルを読み出すために必要とされる計算量及び消費電力を低減する。というのは、本システムが、このような任意のサンプル群を閉じ込めて、4×4のテクセル領域内に入れるからである。本システムの特定の実施形態は、ヘッドセットシステム上の多重化動作を低減しテクセルバッファメモリ(例えば、テクセルバッファブロックを含むクワッドバッファブロック)にアクセスするときにデータバス上の帯域幅の使用を低減する、テクセルバッファハードウェア構造及びテクセルデータ記憶パターンを提供する。
図1Aは、例示的な人工現実システム100を示している。特定の実施の形態において、人工現実システム100は、ヘッドセットシステム110、身体装着型計算システム120、クラウド130内のクラウド計算システム132等を含みうる。特定の実施形態において、ヘッドセットシステム110は、データバス114を介して2つのアイディスプレイシステム116A及び116Bに接続されたディスプレイエンジン112を含みうる。ヘッドセットシステム110は、ユーザに人工的な現実を提供するためにユーザの頭部に取り付けられるヘッドマウントディスプレイ(HMD:head-mounted display)を含むシステムでありうる。ヘッドセットシステム110は、その電源(例えば、バッテリ)で利用可能な電力量には限度がありうる。ディスプレイエンジン112は、比較的高いデータレート(例えば、200Hz~800Hz)で、データバス114を介して、アイディスプレイシステム116A及び116Bにディスプレイデータを提供しうる。後述するように、ディスプレイエンジン112は、1つ以上のコントローラブロック、テクセルメモリ、変換ブロック、ピクセルブロック等を含みうる。テクセルメモリに格納されたテクセルは、ピクセルブロックによってアクセスされ、表示のためにアイディスプレイシステム116A及び116Bに供給されうる。
特定の実施の形態において、身体装着型計算システム120は、ユーザの身体に装着されうる。特定の実施形態において、身体装着型計算システム120は、ユーザの身体に装着されない計算システム(例えば、ラップトップ、デスクトップ、移動型計算システム)であってよい。身体装着型計算システム120は、1つ以上のGPU、1つ以上のスマートビデオデコーダ、メモリ、プロセッサ、及び他のモジュールを含みうる。身体装着型計算システム120は、ディスプレイエンジン112よりも多くの計算資源を有しうるが、その電源(例えば、バッテリ)は依然として、限られた電力量を有しうる。身体装着型計算システム120は、無線接続144を介してヘッドセットシステム110に接続されうる。クラウド計算システム132は、高性能コンピュータ(例えば、サーバ)であってよく、無線接続142を介して身体装着型計算システム120と通信しうる。図1Bは、ヘッドセットシステム110の例示的なアイディスプレイシステム(例えば、116A又は116B)を示す。特定の実施形態において、アイディスプレイシステム116Aは、ドライバ154、瞳孔ディスプレイ156等を含む。ディスプレイエンジン112は、瞳孔ディスプレイ156への表示データを、高いデータレート(例えば、200Hz~800Hz)で、データバス114及びドライバ154に提供することができる。
従来のグラフィックス・レンダリングシステムでは、視聴者に対する3Dオブジェクトの向きに応じて、3Dオブジェクトの或る特定の領域が他の領域よりも視聴者により近くなる。距離の不一致によって、様々な領域内にピクセルサンプリング位置があることになり、テクスチャサンプリングのために様々なミップマップレベルが必要となりうる。一例として、図2は、例示的な3Dオブジェクト200を示している。オブジェクト200は、当該オブジェクト200のエッジ210が視聴者に対してエッジ220よりも近い、視聴者に対して斜めの向きで配向されうる。その結果、エッジ210の領域212内に入るピクセルの色をサンプリングするためには、エッジ220の領域222内に入るピクセルをサンプリングするために利用されうるより粗いミップマップレベルに対して、より細かなテクスチャミップマップレベルが必要となりうる。例えば、GPUが、ミップマップチェーン230における複数のテクスチャレベル231、232、233、234、235、236、237にアクセスできる場合に、GPUは、領域212内に入るピクセルのためにミップマップレベル237を使用し、領域222内に入るピクセルのためにミップマップレベル236を使用しうる。
さらに、ミップマップレベルは、ズームアウト操作によって生じる縮小のために、変えることが必要となりうる。一般に、ズームアウト操作の結果、オブジェクト上で2倍以上のズームアウトが起こった場合には、サンプリングのために利用するミップマップを変更して、新しいシーンをレンダリングする必要がありうる。例えば、視聴者がズームアウトし、その結果、上記ミップマップレベル237、236の各テクセルのサイズがピクセルサンプルサイズに対してより小さくなった場合には、GPUは、使用するミップマップレベルを変更しうる。例えば、ズームアウトの後で、GPUは、領域212内に入るピクセルサンプルのためにミップマップレベル236を使用し、領域222内に入るピクセルサンプルのためにミップマップレベル235を使用しうる。
残念ながら、テクセルバッファメモリからテクスチャデータを読み出すには、時間と電力が掛かる。従って、ミップマップの切り替えが行われる前述のシナリオは、フレームが非常に高いレート、例えば200~800フレーム/秒で出力されることが期待される用途においては、コストが掛かって不適切である可能性がある。ディスプレイエンジンがAR/VRヘッドセットシステム上に存在する特定の実施形態において、計算資源、及び(例えば、1つ以上のバッテリによって電力供給される)利用可能な電力には特に限度がありうる。ヘッドセットシステムが、用途の要求を満たす(例えば、ユーザの動きに応じてAR/VRシーンをレンダリングする)ためには、計算資源及び利用可能な電力の上記の制限が、桁違いに大きくなりうる。
システムの特定の実施形態は、身体装着型計算システムのGPU上で、(例えば、60ヘルツのフレームレートで)プリワープされた表面を生成することと、ヘッドセットシステムが、プリワープされた表面を(例えば、200ヘルツ以上で)ポストワープ又は再サンプリングして、フレーム間での視聴者の遠近感の変化を調整できるようにすることによって前述の問題に対処する。プリワープされた表面を生成することに加えて、特定の実施形態はさらに、ズームアウト操作を2倍以下のズームアウトに制限しうる。以下でさらに詳しく説明するように、そうすることによって、4個の2×2ピクセルをサンプリングするために必要なテクセルを、4×4のテクセル領域に閉じ込めることが保証される。これにより、ディスプレイエンジンは、1つの読み出し動作で4×4テクセル領域にアクセスできるようにテクセルがどのように書き込まれ、かつ読み出されるかを設定することが可能となる。
図3は、身体装着型計算システム上で生成された例示的なプリワープされた表面330を示している。特定の実施形態において、身体装着型計算システムは、1つ以上のGPU又は/及びスマートビデオデコーダを含む。特定の実施形態において、プリワープされた表面が、身体装着型計算システム上の1つ以上のGPUによって生成されうる。特定の実施形態において、プリワープされた表面が、身体装着型計算システム上の1つ以上のビデオデコーダによって生成されうる。例えば、身体装着型計算システム上のGPUは、図2に示した3Dオブジェクト200の2Dビューをレンダリングしうる。2Dオブジェクト200は、複数のポリゴン又は三角形(例えば、数百又は数千のポリゴン)を用いて定義することができ、身体装着型計算システムは、従来のグラフィックスレンダリングパイプラインを使用して(例えば、レイトレーシング及びシェーディングを利用して)2Dビューをレンダリングすることができる。このレンダリングプロセスは、計算的には非常に高コストでありうるが、身体装着型計算システムは、ヘッドセットシステムよりも多くの計算資源(例えば、よりパワフルなプロセッサ、より大きなメモリ空間)及びより多くの利用可能な電力(例えば、より大きなバッテリ容量、電源コンセントへの直接プラグイン等)を有しうる。したがって、3Dオブジェクト200の2Dビューは、例えば30~60ヘルツのレートでレンダリングされうる。
特定の実施形態において、3Dオブジェクト200の2Dビューが、プリワープされた表面330を生成するために使用されうる。プリワープされた表面330は2Dで表されているが、2Dビューがレンダリングされたときに、視聴者の視点からは3Dで見えうる。例えば、表面330のエッジ342は、視点のより近く見え、エッジ344は視点からより離れて見えうる。3Dの外観にもかかわらず、プリワープされた表面330のテクスチャは2Dであり、上記表面はあたかも、2D画像がマッピングされる平らなキャンバスのようである。プリワープされた表面330は、視点に対して、3Dビュー空間において定義された位置を有しうる。プリワープされた表面330の様々な領域が、視点から実質的に等しい距離にありうる。例えば、テクセル332に対応する領域とテクセル334に対応する領域とは、3Dビュー空間において視点から実質的に等距離にありうるが、3Dモデル200上の対応する領域212と222とは、3Dオブジェクト200の2Dビューがレンダリングされたときに、視点から異なる距離で離れている。
特定の実施形態において、プレワープされた表面330の2Dの外観が、均一なテクセルグリッド340を有するテクスチャとして格納されうる。対応する3Dモデル200とは異なり、プリワープ表面330は、332及び334といった領域の相対的深度が異って見えていても、視点からは実質的に等距離にある。したがって、プレワープされた表面330上での任意のピクセルサンプリングが、表面の様々な部分についての様々なミップマップレベルではなく、同じミップマップレベルテクスチャを使用して行われうる。例えば、エッジ342は、エッジ344よりも視聴者の近くに見えるが、領域332及び334に対応するテクセルが、同じテクスチャレベル又はテクスチャ解像度に対応しうる。
ヘッドセットシステムは、無線又は有線通信接続を介して、身体装着型計算システムからプリワープされた表面を受信しうる。特定の実施形態において、ヘッドセットシステムは、フレームの開始時にプリワープされた表面を受信しうる。その後と、次のフレームとの間に(例えば、1/60秒間隔で)、ヘッドセットシステムは、はるかに高いフレームレート(例えば、200ヘルツ以上)で、(ヘッドセットの慣性測定ユニット及び/又は視線追跡装置に基づいて決定された)ユーザの現在の頭部位置又は視線に基づいて、プリワープされた表面をワープ又は再サンプリングすることができる。このようにして、ヘッドセットシステムは、ポリゴンを用いて定義された3Dモデルからプリワープされた表面を生成する際に要する高コストの計算を回避することができ、代わりに、ポリゴンよりも遥かに少数でありうるプリワープされた表面に対して、リアルタイムの動的な更新をもたらすタスクが課されうる。
図4は、アイディスプレイシステム上にレンダリングするために、ヘッドセットシステムによって変換されて出現した例示的なプリワープされた表面410を示している。特定の実施形態において、ヘッドセットシステムは、身体装着型計算システムから、プリワープされた表面を受信しうる。プリワープされた表面は、身体装着型計算システムと関連付けられたGPUでのレンダリング結果に基づいて生成することができ、基礎となったオブジェクトの3D輪郭を視覚的に考慮することができる。特定の実施形態において、表面は、テクスチャデータ、及び視聴者のビュー空間内の位置データを含みうる。視聴者の現在の遠近感(例えば、頭の向き及び/又は視線)の変化に基づいて、ヘッドセットシステムのディスプレイエンジンは、視聴者の更新された視点から、(例えば、レイキャスティングを利用して)可視性テストを行いうる。例えば、ディスプレイエンジンは、スクリーン空間内の各タイルから、視聴者の現在の遠近感に従って配置されて方向付けられた光線を投げかけ、光線がビュー空間内の任意の表面と交差するかどうかを見ることができる。次いで、可視性の判定に基づいて、ディスプレイエンジンは、投影された光線と交差する表面のテクスチャデータを利用して、ピクセルごとに適切な色情報を再サンプリングしうる。このポストワーピングプロセスの結果が、身体計算システムが(プレワーピングされた表面を生成するために使われた)初期の2Dフレームをレンダリングした後に更新された2Dフレームでありうる。更新された2Dフレームは、あたかも、初期のプリワープされた表面410を、3D空間430における1つ以上の次元に沿って移動及び/又はワープすることで、ヘッドセットシステムが変換されたプリワープされた表面420を生成したかのように出現しうる。他の例として、ヘッドセットシステムは、3D空間430内の1つ以上の軸に沿って、プリワープされた表面410を回転させうる。他の例として、ヘッドセットシステムは、ズームイン又はズームアウト操作のために、プリワープされた表面410のサイズを増減しうる。他の例として、ヘッドセットシステムは、上述した1つ以上の変換又は調整を組み合わせて、受信したプリワープされた表面を、アイディスプレイシステム上でレンダリングするための新しい表面(例えば、420)に変換又は調整しうる。
特定の実施形態において、ヘッドセットシステムは、視聴者の1つ以上の条件に従って、受信したプリワープされた表面を変換又は調整しうる。特定の実施形態において、ヘッドセットシステムは、相対的に高速で、だが相対的に小さな範囲内で、視聴者に対してプリワープされた表面の位置(例えば、距離、向き、角度)を変えさせる1つ以上の条件に従って、受信されたプリワープされた表面を変形又は調節しうる。例えば、ヘッドセットシステムは、視聴者の視点の変化(例えば、頭部の動き、目の動き)に基づいて、プリワープされた表面410の向き又は位置を調整しうる。他の例として、ヘッドセットシステムは、視聴者のズーム操作(例えば、ズームイン又はズームアウト)に基づいて、プリワープされた表面410のサイズ、向き、及び/又は位置を調整しうる。特定の実施形態において、視聴者の条件(例えば、視点の変化、観視距離の変化、ユーザ操作)が、人工現実システムに関連付けられた1つ以上のセンサ又は感知システムに基いて、例えば、加速度計、輻輳追跡システム、視線追跡システム、頭部運動センサ、身体運動センサ、コントローラ等に基づいて決定されうる。特定の実施形態において、ヘッドセットシステムは、例えば、視点、観視距離、視野角、移動速度、移動方向、加速度メトリック、頭部運動、眼球運動、頭部姿勢、眼球状態、ユーザのズーム操作、注視点、注視距離、輻輳距離、ユーザ入力、コントローラ状態等を含むがこれらに限定されない1つ以上の条件に従って、受信したプリワープされた表面を変換又は調整しうる。
特定の実施形態において、システムは、ズームアウト操作の縮小効果を、2倍のズームアウト範囲内に制限することができる。2倍のズームアウトに制限することによって、ユーザのズーム操作により引き起こされるサンプルピクセルサイズに対するテクセルサイズの変化が、現在のテクスチャミップマップレベルを利用するための許容可能な範囲内であることが保証されうる。さらに、後述するように、2倍のズームアウトの制約によって、1つのタイルに関連付けられた4個のサンプリング点が、整列した又は整列していない4×4のテクセル領域内に入ることを可能とすることができ、したがって、システムが、サンプリング点の色又は距離場をより高速でより良好な計算効率で決定するために必要な全てのテクセルを、並行して取り出すことを可能とすることができる。さらに、2×2のサンプリング位置のブロックのために必要なテクセルの数を抑制することにより、上記の制限は、ディスプレイエンジンのロジックを簡素化する一方で、ヘッドセットシステムが、更新されたフレームを、改善された効率でより高速に提供することを可能にする。
図5は、例示的なタイル540を介して見える例示的なプリワープされた表面500を示している。特定の実施形態において、システムは、レイキャスティングアルゴリズムを使用して、プリワープされた表面500がスクリーン上の領域を介して見えるかどうかを判定しうる。特定の実施形態において、スクリーン上の領域は、タイル(例えば、16×16のピクセルといった、ピクセルのブロック)によって表されうる。レイキャスティングアルゴリズムは、最初に、視聴者の視点530(例えば、視聴者の目の中心点)を決定しうる。次いで、レイキャスティングアルゴリズムは、概念的な又は仮想のカメラ532を視聴者の視点に配置して、仮想カメラ532から複数の光線534を投げかけうる。特定の実施形態において、仮想カメラ532のスクリーン内に配置されたタイルの四隅から、4個の光線が投げかけうる。4個の投げかけられた光線534の群は、4個の各交点(例えば、540A、540B、540C、540D)において、プリワープされた表面500と交差しうる。サンプリング点540A、540B、540C、及び540Dが、表面500と対になるタイル540を形成し、当該タイル540と関連付けられうる。特定の実施形態において、システムは、このようなやり方で、複数のタイル-表面の,を生成することができる。
ディスプレイエンジンが、タイルが表面と交差すると判定した場合には、ディスプレイエンジンは、表面のテクスチャデータを使用して、タイル内の各ピクセルをサンプリングすることができる。特定の実施形態において、タイルが16×16のピクセルを含む場合には、ディスプレイエンジン(例えば、そのピクセルブロック)が補間を利用して、(3Dビュー空間における交点がテクスチャ座標に変換された後で、)投影されたタイルの四隅の4個のテクスチャ座標を用いて、各ピクセルサンプル位置の(例えば、(U,V)における)テクスチャ座標を決定することができる。次いで、ディスプレイエンジンは、4個の最も近いテクセルを使用して、各サンプリング点の色又は距離場の特性を(例えば、バイリニア補間又はバイキュービック補間を利用して)計算することができる。
図6A~図6Bは、サンプリング点の色又は距離場を決定するために必要なテクセルを決定するための例示的なプロセスを示している。図6Aは、例示的なサンプリング点610と、サンプリング点610におけるピクセル値を決定するために必要な対応するテクセル(例えば、601、602、603、604)と、を示している。特定の実施形態において、システムは、4個の最も近いテクセルに基づく補間を利用してピクセル値を決定しうる。例えば、サンプリング点610に対応するピクセル値は、601、602、603、及び604の4個の最も近いテクセルを補間することによって決定されうる。サンプリング点610のピクセル値を決定するために使用されるテクセルの可視化を助けるために、示される図は、テクセル601、602、603、604の各中心点611、612、613、614を繋ぐことにより形成される幾何学的領域626を示している。サンプリング点610のピクセル値は、幾何学的領域626を囲むテクセル601、602、603、及び604によって決定される。
図6Bは対応するピクセル値を決定するための、例示的なサンプリング点(例えば、632、642、652、662)と、関連付けられたテクセルと、を示している。サンプリング点632、642、652、662はすべて、(1,1)の(U,V)座標により示される同じテクセルに入りうるが、テクセル(1,1)と、テクセル(1,1)と隣接するテクセルと、に対するサンプリング点の相対位置に基づいて、異なるテクセル群と関連付けられうる。例えば、サンプリング点632は、テクセル(0,0)、(1,0)、(0,1)、及び(1,1)の中心点により決定される幾何学的領域634内にあることができ、したがって、テクセル(0,0)、(1,0)、(0,1)、及び(1,1)が、サンプリング点632に対応するピクセル値を決定するための補間に必要なテクセルとして識別されうる。他の例として、サンプリング点642は、テクセル(1,0)、(2,0)、(1,1)、及び(2,1)の中心点により決定される幾何学的領域644内にあることができ、したがって、テクセル(1,0)、(2,0)、(1,1)、及び(2、1)が、サンプリング点642に対応するピクセル値を決定するための補間に必要なテクセルとして識別されうる。他の例として、サンプリング点652は、テクセル(0,1)、(1,1)、(0,2)、及び(1,2)の中心点により決定される幾何学的領域654内にあることができ、したがって、テクセル(0,1)、(1,1)、(0,2)、及び(1,2)が、サンプリング点652に対応するピクセル値を決定するための補間に必要なテクセルとして識別されうる。他の例として、サンプリング点662は、テクセル(1,1)、(2,1)、(1,2)、及び(2,2)の中心点により決定される幾何学的領域664内にあることができ、したがって、テクセル(1,1)、(2,1)、(1,2)、及び(2,2)が、サンプリング点662に対応するピクセル値を決定するための補間に必要なテクセルとして識別されうる。
特定の実施形態において、システムは、ピクセル位置に対応するサンプリング点(例えば、各点がピクセルの中心を表す)を用いて表面をサンプリングして、ピクセルのカラー値を決定しうる。特定の実施形態において、サンプリング点のピクセルサイズが、テクセルのサイズと実質的に同じでありうる。視聴者がズームアウトしたときに、レンダリングされたオブジェクトと関連付けられた表面のサイズは、縮小効果に因り小さくなりうる。テクスチャ解像度を変えることなく(即ち、同じミップマップレベルを使用して、)縮小された表面がサンプリングされたときには、同じピクセルサイズが、ここでタイルのサイズよりも大きくなり、その結果、ピクセルが、縮小された表面上の複数のテクセルをカバーすることになりうる。したがって、ディスプレイエンジンは、2×2のサンプリング点の色を決定するために、より多くのテクセル(例えば、4×4テクセルを超える)にアクセスして補間することが必要となりうる。したがって、2倍の範囲を超えてズームアウトして、縮小された表面をサンプリングすると、必要でありうるテクセルの量と範囲の点で不確実性が生じる。特定の実施形態において、システムは、ズームアウト操作の縮小効果を2倍の範囲内に制限することができ、これにより、1つの読み出し動作で読み出すことができかつ並行してサンプリングすることができる4×4のテクセル領域内に、4個のサンプリング点を常に入れることが保証されうる。
特定の実施形態において、隣り合うサンプリング点の位置が2テクセル以下で離れている限りは、2×2のサンプリング点が4×4のテクセル領域内に入る。特定の実施形態において、2つのサンプリング点の間の距離が、マンハッタン距離によって測定されうる。例えば、上記制約は、以下の2つの数式の双方を満たすことにより記述されうる。即ち、
但し、u及びvは、テクセルのための(U,V)座標空間におけるサンプリング点座標に対応し、x及びyは、表示ピクセルのための二次元の(X,Y)座標空間に対応する。特定の実施形態において、2つのサンプリング点の間の距離が、マンハッタン距離ではなく、幾何学的距離によって測定されうる。特定の実施形態において、テクセルのサイズが、テクセル方形のエッジの長さによって定義されうる。
但し、u及びvは、テクセルのための(U,V)座標空間におけるサンプリング点座標に対応し、x及びyは、表示ピクセルのための二次元の(X,Y)座標空間に対応する。特定の実施形態において、2つのサンプリング点の間の距離が、マンハッタン距離ではなく、幾何学的距離によって測定されうる。特定の実施形態において、テクセルのサイズが、テクセル方形のエッジの長さによって定義されうる。
前述のように、特定の実施形態において、テクスチャのサンプリングが、2×2のピクセルのサンプリング点について、同時に行われうる。図7Aは、例示的な4×4のテクセル領域700Aと、例示的なサンプリング領域701と、を示しており、サンプリング領域701は、サンプリング領域701の四隅に位置する2×2の直交するサンプリング点の集合を表している。サンプリング領域701の各辺のサイズは、テクセルサイズの2倍以下でありうる。図7Aのサンプリング領域701は、テクセルの2D空間内の二次元に沿って、テクセルと整列している。サンプリング領域701がテクセル上に投影されたときには、各サンプリング点(すなわち、サンプリング領域701の四隅のそれぞれ)におけるピクセル値を決定するための補間に必要な関連するテクセルが、図6A~図6Bに記載した方法を利用して決定されうる。細線によって繋がれた4個のテクセル中心の各群が、細線のボックス内に位置するサンプリング点(例えば、サンプリング領域701の角)をフィルタリングするために使用される4個の最も近いテクセル中心を表わしている。サンプリング領域701について、4個の2×2サンプリング点をフィルタリングするために必要なテクセルが、4×4のテクセル領域701内に入る。サンプリング領域701が2D空間の1つ以上の次元に沿って動かされたときに、4個のサンプリング点をフィルタリングするために必要なテクセルが常に4×4のテクセル領域内に収まるであろう。例えば、サンプリング領域701が、サンプリング領域702によって示される位置にシフトされたときには、4個のサンプリング点(サンプリング領域702の四隅)を決定するための関連するテクセルが、整列した同じ4×4のテクセル領域700A内に入り続けるであろう。他の例として、サンプリング領域702が、サンプリング領域701に対してより大きな距離で(例えば、2D空間の1つ又は2つの次元に沿って半テクセルサイズより大きく)シフトされたときに、サンプリング領域702の関連するテクセルが、整列していない4×4のテクセル領域内に入りうる。
図7Bは、整列した4×4のテクセル領域内の例示的な2×2の直交するサンプリング点を示している。サンプリング点711、712、713、及び714は、2Dテクセル空間の2つの次元に沿ってテクセルと整列したサンプリング領域の四隅の点でありうる。サンプリング点714とサンプリング点713との間の距離716が2テクセル以下であるときには、ピクセル714及び713を決定するために必要な対応する8テクセルが、テクセル(0,0)、(1,0)、(2,0)、(3,0)、(0,1)、(1,1)、(2,1)、及び(3,1)を含む2×4のテクセル領域内に入りうる。サンプリング点712とサンプリング点713との間の距離718が2テクセル以下であるときには、714及び713のピクセルを決定するために必要とされるテクセルの対応する8つのテクセルが、4×2のテクセル領域内に入りうる。同様に、サンプリング点711とサンプリング点712との間の距離716が2テクセル以下であるときには、711及び712のピクセルを決定するために必要とされるテクセルの対応する8つのテクセルが、2×4のテクセル領域内に入りうる。サンプリング点711とサンプリング点714との間の距離718が2テクセル以下であるときには、711及び714のピクセルを決定するために必要とされるテクセルの対応する8つのテクセルが、4×2のテクセル領域内に入りうる。したがって、任意の隣り合う2つのサンプリング点の間の距離がテクセルエッジ長の2倍以下であるときには、四隅に対応する4個のピクセル値を決定するための補間に必要な全てのテクセルが、サンプリング領域がどのように配置されているかにかかわらず、4×4のテクセル領域に常に含まれうる。
図7Cは、整列していない4×4のテクセル領域730内の例示的な2×2の直交するサンプリング点を示している。上述したように、任意の2つのサンプリング点の間の距離がテクセルエッジ長の2倍以下である限りは、4つのピクセル値を決定するために必要なテクセルが、2×2のサンプリング点がどのように配置されていても、4×4のテクセル領域内に常に適合しうる。しかしながら、サンプリング点がテクセルサイズの半分より大きくシフトされたときには、4個のサンプル点は、整列していない別のテクセル領域内に入りうるが、そのテクセル領域の寸法は4×4であり続ける。例えば、サンプリング点の位置が図7Bに示された位置から図7Cに示される位置に変更されたときに、731、732、733、734のサンプリング点が、整列していないテクセル領域730内に入りうる。
図7Dは、4×4のテクセル領域740内の、例示的な2×2の直交していないサンプリング点(例えば、741、742、743、744)を示している。特定の実施形態において、システムは、表面をサンプリングするために直交していないサンプリング点を使用しうる。直交していないサンプリング点について、任意の隣り合う2つのサンプリング点の間の距離がテクセルサイズの2倍以下である限りは、4個のピクセル値を決定するために必要とされるテクセルが、4×4のテクセル領域内に常に入りうる。限定ではなく一例として、サンプリング点741、742、743、744は、テクセル領域740内のテクセルの(U,V)座標空間に対して、45度の位置に配置されうる。サンプリング点744とサンプリング点743の間の距離752、及び、サンプリング点743とサンプリング点742の間の距離754は、(図7A~図7Bのサンプリング領域701及び702より小さなサンプリング領域に対応する)テクセルのエッジ長の√2倍に等しいとすることができ、テクセルサイズの2倍未満である。細線によって繋がれた4個のテクセル中心の各群が、画定されたボックス内にあるサンプル点(741、742、743、又は744)をフィルタリングするために使用される4個の最も近いテクセル中心を示している。図7Dから分かるように、サンプリング点741、742、743、及び744が回転されている場合であっても、4個のサンプリング点741、742、743、及び744をフィルタリングするために必要なテクセル領域が、隣り合うサンプリング点(例えば、744と743、744と742)間の距離がテクセルエッジ長の2倍未満であるときには、4×4テクセル領域740内に適合し続け、1つの読み出し動作で読み出すことが可能である。
特定の実施形態において、システムは、2倍のズームアウトルールに違反したときには、複数のフォールバックソルーションを提供しうる。例えば、通常に拡大されたラベルに対応する表面が、2倍以上縮小されると、エイリアシングを引き起される可能性がある。この場合に、システムは、(縮小を実行するのではなく)上記ラベルから小さな画像を生成し、小さな画像をレンダリングして、エイリアシングを回避しうる。特定の実施形態において、システムは、中心窩画像を実現しうる。中心窩画像は、画像の様々な部分で様々な解像度を有することができ、複数のテクスチャレベルを有するミップマップチェーンと関連付けられうる。中心窩画像上で、2倍のズームアウトルールに違反したときには、システムは、フォールバック解像度として解像度がより粗いテクスチャを選択して、より細かい解像度が使用される場合に必要とされる過剰なテクセルを回避することができる、より粗いテクスチャに切り替えることによって、2×2のサンプリング点をフィルタリングするために必要なテクセルが、4×4のテクセル内に入り続ける。特定の実施形態において、2倍のズームアウトルールに違反したときに、システムは、身体装着型計算システムと関連付けられたGPU又はスマートビデオデコーダ上でプリワープされた表面を再生成して、新しいプリワープされた表面をヘッドセットシステムに再送信してよい。
本開示において先に論じたように、従来のGPUは、複数のサンプリング点を決定するために必要なテクセルを取り出すために、クワッド・テクセルバッファメモリにアクセスし、連続的で別々の動作を必要とする。たとえば、3Dモデル上に投影された4個のサンプリング点は、モデルの形状に基づいて、任意の位置及び距離を有しうる。4個のサンプリング点のそれぞれのためのピクセル値を決定するために、従来のGPUは、必要な4個のテクセル群を得るために、4つの別々の連続的な読み出し動作でテクセルバッファメモリにアクセスする必要があり、これは遅くて非効率的である。ディスプレイエンジンの特定の実施形態は、2倍のズームアウトルールを利用して、2×2のサンプリング点の集合をフィルタリングするために必要な全てのテクセルが常に4×4のテクセル領域内に入ることを可能としうる。テクセルバッファメモリに格納された4×4のテクセル領域は、後述するように、1つの読み出し動作を利用して取り出すことが可能である。したがって、システムの特定の実施形態は、テクセルバッファメモリからテクセルを読み出すための帯域幅の利用を低減し、別々の連続的な読み出し動作ではなく、16個のテクセルに並行してアクセスすることにより、より良好な効率を提供する。
図8Aは、交互に配置されたパターンで、32バイトのメモリブロック815に格納された例示的な4×4のテクセル配列810を示している。特定の実施形態において、システムは、2Dテクセル配列を、交互に配置されるスウィズルパターンでメモリブロックに格納して、2Dテクセル配列内の全てのテクセルをメモリから並行して取り出することを可能としうる。限定としてではなく一例として、4×4のテクセル配列810は、(U,V)座標によって示される16個のテクセルを含むことができ、各テクセルは16ビットのデータを有しうる。図6A~図6Bに記載した方法を利用して、16個のテクセルが、4個のサンプリング点811、812、813、及び814のピクセル値を決定するための補間に必要なテクセルとして識別されうる。16個のテクセルは、図8Aに示すように、交互に配置されるパターンで、同じメモリブロック、例えば32バイト(256ビット)のメモリ815に格納されうる。4×4のテクセル配列810が必要とされたときには、システムは、1つの読み出し動作で、32バイト(256ビット)のメモリ815にアクセスし、全ての16個のテクセルを並行して取り出すことができる。次いで、システムは、4個のサンプリング点811、812、813、及び814について、取り出されたテクセルを用いて補間を行いうる。
図8B~図8Cは、例示的な8×8のテクセル配列であって、16個の別々のテクセルバッファブロックに格納された、任意の4×4のテクセル配列を1つの読み出し動作で読み出すことを可能とするための例示的な8×8のテクセル配列を示している。特定の実施形態において、ディスプレイエンジンは、ピクセルブロック(例えば、図9の930A、930B)のフィルタブロック(例えば、図10の1002、1003、1004)内に、テクセルバッファメモリを含みうる。特定の実施形態において、テクセルバッファメモリは、クワッドバッファブロック、テクセルバッファブロック、及びサブレベルバッファユニットを含む複数のメモリブロックレベルに編成されうる。ディスプレイエンジンのピクセルブロックは、3つのフィルタブロックを含むことができ、当該フィルタブロックのそれぞれが、4個のクワッドバッファブロック(例えば、図11Aの1102、1103、1104、1105)を含みうる。各クワッドバッファブロックは、4個のテクセルバッファブロック(例えば、図11Bの1121、1122、1123、1124)を含みうる。各テクセルバッファブロックは、2個のサブレベルバッファユニット(例えば、図12Aの512×2バッファユニット1201A及び512×10バッファユニット1202B)を含みうる。その結果、特定の実施形態のディスプレイエンジンのピクセルブロックは、別々にアドレス指定しかつ並行してアクセスすることが可能な16個のテクセルバッファブロックを含むことができ、したがって、ディスプレイエンジンは、16個のテクセルバッファブロックのそれぞれから同時に1個のテクセルを読み出し、かつ16個のテクセルを並行して取り出すことができる。
特定の実施形態において、ディスプレイエンジンは、32×32のテクセル配列を、制御ブロックのテクセルメモリから、ピクセルブロックのテクセルバッファメモリにロードしうる。ディスプレイエンジンは、任意の4×4のテクセル配列(整列した又は整列していない配列)の16個のテクセルが、16個の別個のテキストバッファブロックに格納される(各テクセルバッファブロック内に1個のテクセル)ようなパターンで、32×32のテクセル配列を格納/編成して、4×4のテクセルを含む任意の配列を1つの読み出し動作で読み出すことを可能としうる。説明を簡潔にするために、図8Bに示す例示的な8×8のテクセル配列820を用いて、テクセルバッファメモリに32×32のテクセル配列を格納し、編成し、4×4のテクセル含む任意の整列した又は整列していない配列を、1つの読み出し動作で並行して取り出すことを可能とするためのプロセス、原理、及びパターンを示す。8×8のテクセル配列820は、16個の部分配列を含むことができ、16個の部分配列はそれぞれ、2×2のテクセル(例えば、2×2のテクセル配列825)を有する。説明を簡潔にするために、各2×2のテクセル配列(例えば、配列825)内の4個のテクセルが、4つの文字A、B、C、及びDによって表すされ、4つの文字A、B、C、及びDは、それぞれ、(0,0)、(1,0)、(0,1)、及び(1,1)の(U,V)座標に対応している。例えば、2×2のテクセル配列825では、テクセル(0,0)、テクセル(1,0)、テクセル(0,1)、及びテクセル(1,1)が、それぞれ、A1、B1、C1、及びD1によって表わされうる。
特定の実施形態において、4個のクワッドバッファブロック(例えば、図11Aの1102、1103、1104、1105)は、それぞれの2×2テクセル配列において(U,V)座標により示される同じ位置に、テクセルをそれぞれ含みうる。例えば、クワッドバッファブロック1102は、各2×2のテクセル配列内で(0,0)の位置にテクセルを含みうる。例示的な8×8のテクセル配列820について、クワッドブロック1102は、A1~A16のテクセルを含むことができ、これらテクセルのそれぞれが、自身の対応する2×2のテクセル配列において位置(0,0)に存在する。クワッドバッファブロック1102内のテクセルA1~A16は、図8Bに示すように、概念的に4×4のテクセル配列831を形成しうる。他の例として、クワッドバッファブロック1103は、各2×2のテクセル配列内で(1,0)の位置にテクセルを含みうる。例示的な8×8のテクセル配列820について、クワッドブロック1103は、B1~B16のテクセルを含むことができ、これらテクセルのそれぞれが、自身の対応する2×2のテクセル配列において位置(1,0)に存在する。クワッドバッファブロック1103内のテクセルB1~B16は、図8Bに示すように、概念的に4×4のテクセル配列832を形成しうる。他の例として、クワッドバッファブロック1104は、各2×2のテクセル配列内で(0,1)の位置にテクセルを含みうる。例示的な8×8のテクセル配列820について、クワッドブロック1104は、C1~C16のテクセルを含むことができ、これらテクセルのそれぞれが、自身の対応する2×2のテクセル配列において位置(1,0)に存在する。クワッドバッファブロックC1104内のテクセルC1~16は、図8Bに示すように、概念的に4×4テクセル配列833を形成しうる。他の例として、クワッドバッファブロック1105は、各2×2のテクセル配列内で(1,1)の位置にテクセルを含みうる。例示的な8×8のテクセル配列820について、クワッドブロック1105は、D1~D16のテクセルを含むことができ、これらテクセルのそれぞれが、自身の対応する2×2のテクセル配列において位置(1,1)に存在する。クワッドバッファブロック1105内のテクセルD1~D16は、図8Bに示すように、概念的に4×4のテクセル配列834を形成しうる。
図8Cは、テクセルをテクセルバッファブロックに格納するために利用される例示的なパターンを示している。特定の実施形態において、クワッドバッファブロック(例えば、図11Aの1102、1103、1104、1105)は、4個のテクセルバッファブロック(例えば、図11Bの1121、1122、1123、1124)を含みうる。各クワッドバッファブロックに格納されたテクセルは、概念的に、4×4のテクセル配列(たとえば、A1~A16)を形成することができ、当該4×4のテクセル配列は、4個の2×2のテクセル配列を含んでいる。例えば、クワッドバッファブロック1102に格納されたA1~A16は、4×4のテクセル配列を形成することができ、当該4×4のテクセル配列は、(A1、A2、A5、A6)、(A3、A4、A7、A8)、(A9、A10、A13、A14)、及び(A11、A12、A15、A16)の4個の2×2のテクセル配列を含んでいる。2×2のテクセル配列内の各テクセルは、自身のローカル(U,V)座標を有しうる。例えば、テクセルA1、A2、A5、A6は、(A1、A2、A5、A6)のテクセル配列において、それぞれ、(0,0)、(1,0)、(1,1)のローカル(U,V)座標を有しうる。特定の実施形態において、クワッドバッファブロックの各テクセルバッファブロックは、同じローカル(U,V)座標にテクセルを含みうる。例えば、テクセルバッファブロック1121Aは、(A1、A2、A5、A6)、(A3、A4、A7、A8)、(A9、A10、A13、A14)、及び(A11、A12、A15、A16)の各2×2テクセル配列内で、(0,0)の位置にA1、A3、A9、及びA11を含みうる。他の例として、テクセルバッファブロック1122Aは、(A1、A2、A5、A6)、(A3、A4、A7、A8)、(A9、A10、A13、A14)、及び(A11、A12、A15、A16)の各2×2テクセル配列内で、(1,0)の位置にA2、A4、A10、及びA12を含みうる。他の例として、テクセルバッファブロック1123Aは、(A1、A2、A5、A6)、(A3、A4、A7、A8)、(A9、A10、A13、A14)、及び(A11、A12、A15、A16)の各2×各2テクセル配列内で、(0,1)の位置にA5、A7、A13、及びA15を含みうる。他の例として、テクセルバッファブロック1124Aは、(A1、A2、A5、A6)、(A3、A4、A7、A8)、(A9、A10、A13、A14)、及び(A11、A12、A15、A16)の各2×2テクセル配列内で、(1,1)の位置にA6、A8、A14、及びA16を含みうる。同様に、他のクワッドバッファブロックのテクセルバッファブロックが、図8Cに示すような同様のパターンで、対応するクワッドバッファブロックのテクセルを格納しうる。クワッドバッファブロックに格納されたテクセルは、そのテクセルバッファ内で二次元の配列を形成することができる。例えば、テクセルバッファブロック1121Aに格納されたテクセル配列は、ローカル(U,V)座標(0,0)、(1,0)、(0,1)、及び(1,1)にそれぞれ対応するテクセルA1、A3、A9、及びA11を含みうる。結果として、8×8のテクセル配列内の64個のテクセルが16個のテクセルバッファブロック(例えば、1121A~1121D、1122A~1122D、1123A~1123D、1124A~1124D)に、以下のように格納され、即ち、後述するように、4×4のテクセルを含む任意の部分配列の16個のテクセルを、16個のテクセルバッファブロックに別々に(各テクセルバッファブロックに1個のテクセル)格納することを可能とするようなパターンで、格納されうる。
図8D~図8Eは、8×8のテクセル配列から選択された、16個の独立したテクセルバッファブロックに格納されている例示的な4×4のテクセル配列を示している。特定の実施形態において、タイルと関連付けられたサンプリング点(例えば、16×16のピクセル)が、整列した4×4のテクセル配列(例えば、テクセル配列820におけるA1~D6)内、又は、整列していない4×4のテクセル配列(例えば、テクセル配列820におけるB5~C11)内に入りうる。前述したように、クワッドバッファブロック及びテクセルバッファブロックにテクセルを格納して編成するために使用されるパターンによって、任意の整列した又は整列していない4×4のテクセル配列の16個のテクセルを、16個の独立したテクセルバッファブロックに格納することが可能となり、したがって、4×4のテクセル配列内の16個のテクセルを、1つの読み出し動作を用いて読み出すことが可能となりうる。限定ではなく一例として、サンプリング点が、(太い実線の方形によってマークされる)整列していない4×4のテクセル配列826に対応する領域内に入りうる。4×4のテクセル配列826は、各2×2のテクセル配列内のテクセル位置に対応するテクセルによる4個の群に分けることができる。例えば、第1のテクセル群は、(B5、A6、D5、C6)、(B6、A7、D6、C7)、(B9、A10、D9、C10)、及び(B10、A11、D10、C11)の各2×2のテクセル配列内で、テクセル位置(0,0)に対応するB5、B6、B9、及びB10を含みうる。第2のテクセル群は、(B5、A6、D5、C6)、(B6、A7、D6、C7)、(B9、A10、D9、C10)、及び(B10、A11、D10、C11)の各2×2のテクセル配列内で、テクセル位置(1,0)に対応するA6、A7、A10、及びA11を含みうる。第3のテクセル群は、(B5、A6、D5、C6)、(B6、A7、D6、C7)、(B9、A10、D9、C10)、及び(B10、A11、D10、C11)の各2×2のテクセル配列内で、テクセル位置(0,1)に対応するC6、C7、C10、及びC11を含みうる。第4のテクセル群は、(B5、A6、D5、C6)、(B6、A7、D6、C7)、(B9、A10、D9、C10)及び(B10、A11、D10、C11)の各2×2のテクセル配列内で、テクセル位置(1,1)に対応するD5、D6、D9、及びD10を含みうる。図8Dに示すように、上述の第1、第2、第3、及び第4のテクセル群は、太い実線の方形(例えば、827A、827B、827C、827D)によりマークされるように、各クワッドバッファブロック1102、1103、1104、及び1105に格納されている。図8Eは、第1、第2、第3、及び第4のテクセル群におけるテクセルが、どのように別々のテクセルバッファブロックに格納されているのかを示している。例えば、第1の群のA6、A7、A10、及びA11のテクセルが、それぞれ、テクセルバッファブロック1124A、1123A、1122A、及び1121Aに格納されうる。第2の群のB5、B6、B9、及びB10のテクセルが、それぞれ、テクセルバッファブロック1123B、1124B、1121B、及び1122Bに格納されうる。第3の群のC6、C7、C10、及びC11のテクセルが、それぞれ、テクセルバッファブロック1124C、1123C、1122C、及び1121Cに格納されうる。第4の群のD5、D6、D9、及びD10のテクセルが、それぞれ、テクセルバッファブロック1123D、1124D、1121D、及び1122Dに格納されうる。整列していない4×4のテクセル配列と同様に、8×8のテクセル配列820から選択された、任意の整列した4×4のテクセル配列(例えば、A1~D6)の16個のテクセルが、16個の独立したテクセルバッファブロックにそれぞれ格納されうる。したがって、8×8のテクセル配列820から選択された、(整列した又は整列していない)任意の4×4のテクセル配列の16個のテクセルを、同時にアドレス指定し及びアクセスすることが可能な16個の独立した/別個のテクセルバッファブロックに格納することができる。その結果、8×8のテクセル配列820から選択された任意の(整列した又は整列していない)4×4のテクセル配列を、1つの読み出し動作で読みだすことができ、これにより、テクセルバッファからテクセルを取り出すためのメモリアクセル効率が著しく向上する。
図8F~図8Gは、8×8のテクセル配列から選択され、16個の独立したテクセルバッファブロックに格納された例示的な2×2のテクセル配列であって、多重化動作を低減しながらテクセルバッファから読み出すことが可能な例示的な2×2のテクセル配列を示している。特定の実施形態において、4×4のテクセル配列を利用して、当該4×4のテクセル領域内に入るサンプリングタイルと関連付けられたピクセルの数(例えば、16×16ピクセル)を決定しうる。各ピクセルが、対応するサンプリング点の位置に基づく4個のテクセルに基づいて決定されうる。例えば、或るサンプリング位置のピクセルを決定するために必要な4個のテクセルが、図6A~図6Bで記載した方法を利用して決定されうる。限定ではなく一例として、2×2のテクセル配列827内の4個のテクセルが、ピクセル値を決定するために必要なテクセルとして決定されて、4×4のテクセル配列826から選択されうる。2×2のテクセル配列827は、斜線の方形によってマークされたD5、C6、B9、及びA10を含みうる。テクセルは、上述したようなパターンで、クワッドバッファブロック及びテクセルバッファブロックに格納されているため、D5、C6、B9、及びA10の4個のテクセルはそれぞれ、1102、1103、1104、及び1105の4個のクワッドバッファブロックに、(図8Fの各クワッドバッファブロック内の斜線の方形によってマークされるように)格納されている。
図8Gは、4個のテクセルD5、C6、B9、及びA10が、それぞれ、4個のテクセルバッファブロック1123D、1124C、1121B、及び1122Aに、各テクセルバッファブロック内の斜線の正方形によってマークされるように、格納されていることを示している。特定の実施形態において、4×4のテクセル配列826から選択された任意の2×2のテクセル配列の4個のテクセルは、4個の別個のクワッドバッファブロック及び4個の別個のテクセルバッファブロックに格納されうる。したがって、(整列した又は整列していない)4×4のテクセル配列から、(整列した又は整列していない)任意の2×2のテクセルを選択するのに、各クワッドバッファブロック内の4個のテクセルバッファブロックのうちの1つを選択することが必要でありうる。結果として、サンプルフィルタブロック(例えば、図11Aの1106、1107、1108、1109)により処理される各サンプリング位置が、4個の4:1マルチプレクサ(例えば、図11Bの1125E、1125F、1125G、1125H)のみ必要としうる。したがって、整列していない4×4のテクセルブロック内で、整列していない任意の2×2のテクセルブロックを選択するのに、各クワッドバッファブロック内の4個の選択されたエントリのうちの1つを選択することが必要であるとすることができ、このことにより、クワッドバッファブロック内のテクセルにアクセスし、サンプリングするために必要な多重化動作が大幅に低減される。
特定の実施形態において、ディスプレイエンジンは、サンプリングプロセスのために、(整列した又は整列していない)4×4のテクセル配列にアクセスして、4×4のテクセル配列内の4個の(整列した又は整列していない)2×2のテクセル配列を抽出しうる。(例えば、1つのサンプリング点のための)各2×2のテクセル配列を、4個のテクセルバッファブロックから選択して取り出すために、4個の4:1マルチプレクサのみ必要としうる。クワッドバッファブロック及びテクセルバッファブロックに並行してアクセスし、かつ、クワッドバッファブロック及びテクセルバッファブロックから(例えば、1つの読み出し動作を用いて)取り出すことができる4×4のテクセル配列から、4個の2×2のテクセル配列を並行して抽出することができる。これにより、メモリアクセスごとに4倍のテクセルを処理することが可能となり、かつ、従来のグラフィックレンダリングシステムよりもメモリアクセスを4倍広くすることが可能となり、したがって、ヘッドセットシステムのメモリアクセス効率が著しく改善され、メモリアクセスに必要な多重化動作及び電力消費が低減される。
図9は、ディスプレイエンジン112の系統図を示している。特定の実施形態において、ディスプレイエンジン112は、制御ブロック910、変換ブロック920A及び920B、ピクセルブロック930A及び930B、表示ブロック940A及び940B等を含みうる。ディスプレイエンジン112の1つ以上の構成要素が、高速バス、共有メモリ、又は任意の他の適切なやり方を介して通信するよう構成されうる。図9に示されるように、ディスプレイエンジン112の制御ブロック910は、変換ブロック920A及び920B、ピクセルブロック930A及び930B、ならびに表示ブロック940A及び940Bと通信するよう構成されうる。本明細書でさらに詳細に説明するように、この通信は、データ信号及び制御信号、割り込み、並びに、他の命令を含みうる。
特定の実施形態において、制御ブロック910は、身体装着型計算システムから(例えば、図1の114から)入力を受信し、ディスプレイエンジンにおけるパイプラインを初期化して、表示のためのレンダリングを終了しうる。特定の実施形態において、制御ブロック910は、身体装着型計算システムからデータ及び制御パケットを受信しうる。データ及び制御パケットは、テクスチャデータ及び位置データを含む1つ以上の表面、並びに、追加のレンダリング命令といった情報を含みうる。制御ブロック910は、必要に応じて、ディスプレイエンジン112の1つ以上の他のブロックにデータを分配しうる。制御ブロック910は、表示すべき1つ以上のフレームのためのパイプライン処理を開始しうる。特定の実施形態において、アイディスプレイシステム116A及び116Bはそれぞれ、自身の制御ブロック910を有しうる。特定の実施形態において、1つ以上のアイディスプレイシステム116A及び116Bが、制御ブロック910を共有してよい。
特定の実施形態において、変換ブロック920A及び920Bが、人工現実シーンで表示される表面についての初期の可視性情報を決定しうる。一般に、変換ブロック920A及び920Bは、スクリーン上のピクセル位置から光線を投げかけて、フィルタコマンドを生成して(例えば、バイリニア補間又は他の種類の補間の技術に基づいたフィルタリング)、ピクセルブロック930A及び930Bに送信しうる。変換ブロック920A及び920Bは、(例えば、ヘッドセットの慣性測定ユニット、眼球追跡器、及び/又は、同時位置決め地図作成(SLAM:simultaneous localization and mapping)といった、任意の適切な追跡/位置決めアルゴリズムを用いて決定された)ユーザの現在の観点から、表面が配置された人工シーンに対してレイキャスティングを行い、結果を生成して、ピクセルブロック930A及び930Bに送信することができる。
一般に、特定の実施形態によれば、変換ブロック920A及び920Bがそれぞれ、4段のパイプラインを含みうる。変換ブロック920A又は920Bの上記4段は、以下のように進行しうる。レイキャスタが、タイル(例えば、各タイルが16×16の整列したピクセルを含みうる)と呼ばれる、1つ以上の整列したピクセルの配列に対応する光線束を発しうる。光線束は、人工現実シーンに入る前に、1つ以上のディストーションメッシュに従って歪められうる。ディストーションメッシュは、ヘッドセットシステム110のアイディスプレイシステム116A及び116Bから少なくとも生じる、幾何学的な歪み効果を補正するよう構成されうる。変換ブロック920A及び920Bは、各タイルの境界ボックスを表面の境界ボックスと比較することによって、各光線束がシーン内の表面と交差するかどうかを判定することができる。光線束がオブジェクトと交差しない場合には、そのオブジェクトは廃棄されうる。タイルと表面との交差が検出され、対応するタイル-表面の対が、ピクセルブロック930A及び930Bに渡される。
一般に、特定の実施形態によれば、ピクセルブロック930A及び930Bは、タイル-表面の対からカラー値を決定して、ピクセルカラー値を生成しうる。各ピクセルのカラー値は、制御ブロック910によって受信され格納された表面のテクスチャデータから、サンプリングすることができる。ピクセルブロック930A及び930Bは、変換ブロック920A及び920Bからタイル-表面の対を受け取って、バイリニアフィルタリングをスケジューリングすることができる。各タイル-表面の対に対して、ピクセルブロック930A及び930Bは、投影されたタイルが表面と交差する箇所に対応するカラー値を用いて、タイル内のピクセルのための色情報をサンプリングしうる。特定の実施形態において、ピクセルブロック930A及び930Bは、各ピクセルに対して赤、緑、及び青の色成分を別々に処理しうる。特定の実施形態において、第1のアイディスプレイシステム116Aのディスプレイエンジン112のピクセルブロック930Aが、第2のアイディスプレイシステム116Bのディスプレイエンジン112のピクセルブロック930Bとは独立して、及び、当該ピクセルブロック930Bと並行して進行しうる。次いで、ピクセルブロックは、自身の色決定を表示ブロックに出力しうる。
一般に、表示ブロック940A及び940Bは、ピクセルブロック930A及び930Bからピクセルカラー値を受信し、ディスプレイの走査線出力により適するようデータのフォーマットを変換し、ピクセルカラー値に1回以上の輝度補正を適用し、ディスプレイへの出力のためにピクセルカラー値を準備しうる。表示ブロック940A及び940Bは、ピクセルブロック930A及び930Bによって生成されたタイルオーダのピクセルカラー値を、物理的ディスプレイによって必要とされうる走査線又は行のオーダのデータに変換しうる。輝度の補正は、必要な任意の輝度補正、ガンママッピング、及びディザリングを含みうる。表示ブロック940A及び940Bは、補正されたピクセルカラー値を、物理的ディスプレイ(例えば、ドライバ154を介して図1の瞳孔ディスプレイ156)に直接的に出力することができ、又は、ピクセル値を、様々なフォーマットでディスプレイエンジン112の外部のブロックに出力することができる。例えば、アイディスプレイシステム116A及び116B、又はヘッドセットシステム110は、バックエンドのカラー処理をさらにカスタマイズするため、ディスプレイへのより広いインタフェースをサポートするため、又は、ディスプレイ速度若しくは忠実度を最適化するために、追加のハードウェア又はソフトウェアを備えうる。
特定の実施形態において、コントローラブロック910は、マイクロコントローラ912、テクセルメモリ914、メモリコントローラ916、I/O通信のためのデータバス917、入力ストリームデータ905のためのデータバス918等を含みうる。メモリコントローラ916及びマイクロコントローラ912は、I/O通信のためのデータバス917を介して、システムの他のモジュールと接続されうる。マイクロコントローラ912は、データバス917を介して、位置データ及び表面情報といった制御パッケージを受信しうる。入力ストリームデータ905は、マイクロコントローラ912によってセットアップされた後に、身体装着型計算システムからコントローラブロック910に入力されうる。入力ストリームデータ905は、メモリコントローラ916によって、必要なテクセルフォーマットに変換されてテクスチャメモリ914に格納されうる。特定の実施形態において、テクセルメモリ914は、スタティックランダムアクセスメモリ(SRAM:static random-access memory)でありうる。
特定の実施形態において、身体装着型計算システムが、メモリコントローラ916に入力ストリームデータ905を送ることができ、メモリコントローラ916は、入力ストリームデータを、要求されるフォーマットのテクセルに変換して、テクセルをスウィズルパターンでテクセルメモリ914に格納することができる。上記スウィズルパターンに編成されたテクセルメモリによって、タイル(例えば、「タイル」は、16×16のピクセルのブロックといった、整列したピクセルのブロックを指す)と関連付けられた全てピクセルの少なくとも1つの色成分(例えば、赤、緑、及び/又は青)を決定するために必要な(、例えば4×4のテクセルブロック内の)テクセルを、ピクセルボックス930A及び930Bによって、テクセルバッファメモリに格納するのに適した265ビット単位で、読み出し動作で取り出すことが可能となる。結果として、ヘッドセットは、テクセル配列がこのようなパターンで格納されていない場合にテクセル配列を読み出し組み立てるために必要とされる過剰な多重化動作を回避し、したがって、ヘッドセットシステムの計算資源要件を下げ電力消費を低減することが可能である。
特定の実施形態において、ピクセルブロック920A及び920Bは、テクセルメモリ912から取り出されたテクセルに基づいて、表示のためのピクセルデータを生成しうる。メモリコントローラ916は、2つの256ビットデータバス904A及び904Bを介して、ピクセルブロック930A及び930Bにそれぞれ接続されうる。ピクセルボックス930A及び930Bは、それぞれの変換ブロック920A及び920Bから、タイル-表面の対を受信し、図6A~図6Bに記載した方法を利用して、タイルと関連する全てのピクセルを決定するために必要なテクセルを識別しうる。ピクセルブロック930A及び930Bは、メモリコントローラ916と、256ビットデータバス904A及び904Bとを介して、テクセルメモリ914から、識別されたテクセル(たとえば、4×4のテクセル配列)を並行して取り出すことができる。例えば、タイルと関連する全てのピクセルを決定するために必要な4×4のテクセル配列が、1個のメモリブロックに格納され、1つのメモリ読み出し動作を用いて取り出されうる。ピクセルブロック930A及び930Bは、複数のサンプルフィルタブロックを使用して、様々なテクセル群で並行して補間を行って、対応するピクセルを決定しうる。ピクセルの値は、後の表示プロセスのために、表示ブロック940A及び940Bに送信されうる。
特定の実施形態において、システムは、両目のレンダリングパイプラインによって使用されるテクスチャデータを格納するために、1個のテクスチャメモリを使用しうる。特定の実施形態において、2つのピクセルブロック930A及び930Bが、両目のためのデータを並行して処理することができ、別々の状態にありうる。なぜならば、2つのディスプレイが同期していない可能性があるためである。典型的に、両目に対してラベル及び画像をレンダリングすることができ、従って、ステレオ分離が最小となるように視聴者の視点から十分に離された、GPUにより生成された画像がレンダリングされうる。一方の目のために必要とされるほとんどのラベル及びビデオ画像表面データは、他方の目のためにも同様に必要なため、同じチップで両目を処理することで、そのデータを、2回ではなく1回で格納することが可能となる。結果的に、両目のパイプラインのためのテクスチャデータを格納するために、単一のテクスチャメモリを使用することが有益である。GPUで生成された画像であっても、別個の立体画像は、近くのオブジェクトについてのみ必要となりうる。例えば、前景オブジェクトを背景に対して動かせるようにするために、背景が別にレンダリングされる場合には、ステレオ背景画像が一般に必要されない可能性がある。特定の実施形態において、システムは、各目に対して別個のテクセル配列を使用して、立体視を要するオブジェクトをレンダリングしうる。特定の実施形態において、システムは、両目のパイプラインのため、及び各目のパイプライン(例えば、ピクセルブロック)のために共有のテクセル配列を使用することができ、オブジェクトが各目の視野内で出現しうる箇所について信頼性が高い相関が存在しない可能性があるため、共有のテクセル配列に別々にアクセスしうる。
図10は、ピクセルブロック930Aの例示的な図を示している。バッファマネージャ1001が、ヘッドセットシステムの他のモジュールからタイルコマンド1009を受信しうる。バッファマネージャ1001は、補間のためのサンプルをスケジューリングする前に、必要な表面データを、フィルタブロック1002、1003、及び1004内のバッファにロードしうる。ピクセルブロック930Aは、変換ブロックから、タイル-表面の対を受信することができ、変換ブロックは、行内の各タイル位置にある全てのタイル-表面の対を、他のタイルに移動する前に送信しうる。バッファマネージャ1001は、タイル内のピクセル位置でのバイリニアフィルタリングをスケジュールすることができ、スケジュールに基づいて、サンプル位置でバイリニアフィルタリングを実行しうる。バッファマネージャ1001は、8ビットアドレスバス1007を介して、テクセルメモリを含むコントローラブロックに、テクセルメモリ読み出しアドレス1005を送信しうる。ピクセルブロック930Aは、256ビットデータバス1008を介して、テクセルメモリ読み出しデータ1006を受信しうる。特定の実施形態において、バッファマネージャ1001は、タイルのための全ての必要なテクセルデータを、そのタイル-表面の対でサンプルを処理する前にロードしうる。特定の実施形態において、バッファマネージャは、データを、1つのタイルから次のテクセルへと再利用することを可能としうる。特定の実施形態において、各フィルタブロック(例えば、1001、1002、1003)が、後の表示プロセスのために表示ブロックに、対応する色の2×2のピクセル配列を出力しうる。特定の実施形態において、バッファマネージャ1009は、8ビットアドレスバス1009を介して、8ビットのパターンを表示ブロックに出力しうる。特定の実施形態において、システムは、フォビエイテッド・レンダリング(foveated rendering)をサポートすることができ、フィルタブロックは、タイルごとに、タイル上で使用するフォビエイテッド・レンダリングの種類を指定するパターン値を書き込むこともできる。
特定の実施形態において、ピクセルブロック930Aは、色収差のために、赤、緑、及び青の色成分を別々に処理しうる。色収差によって、単一の表示ピクセルの赤、緑、及び青の成分が、別々の光線を必要するようになり、従って、別々のサンプル位置を要するようになりうる。特定の実施形態において、バッファマネージャ1001は、赤、緑、及び青のタイルの境界ボックスを計算して、上記三色のいずれかが要する全てのテクセルをテクセルメモリから読み出しうる。1つのテクセル読み出し動作を介して取り出されたデータを、二色以上の色成分が必要とする場合には、バッファマネージャ1001は、このデータを、複数の色成分に並行してロードすることができる。色収差がほとんど無く又は全く無い場合には、バッファマネージャ1001は、1つの読み出し動作を使用してテクスチャメモリから読み出して、3個のフィルタブロック1002、1003、及び1004の全てにデータをロードすることができる。色収差が16ピクセルを超える場合には、赤、緑、及び青フィルタブロックのそれぞれが、テクスチャメモリからの別々の読み出しを必要としうる。
特定の実施形態において、システムは、タイル行を二等分してタイルをインターリーブするタイル処理順序を利用しうる。特定の実施形態において、エッジのタイルでは、高い色収差が選択されていて、中心のタイルでは、低い色収差である可能性がありうる。色収差に従って、単一の256ビット・テクセルメモリワードが、1個のフィルタブロックによって、又は複数のフィルタブロックによって必要とされうる。後者の場合には、単一のテクセルメモリ読み出しが、同じデータを、当該データを必要とする全てのフィルタブロックにロードしうる。したがって、色収差によって、テクセルメモリにアクセスするために必要な読み出し帯域幅において最大3対1の変動が生じうる。タイル行を二等分してタイルをインターリーブする処理順序を利用することで、システムは、テクスチャメモリが要する帯域幅を均等としうる。例えば、中心タイルは、色収差がほとんど無く又は全くないとすることができ、単一のアクセスが、所与の目について3つのフィルタブロック全てにロードするために利用されうる。他の例として、エッジタイルが高い色収差を有することができ、所与の目について、フィルタブロックのそれぞれのために別個の読み出しを必要としうる。結果的に、システムは、ほとんどの状況において、必要な読み出しを4回未満とすることができ、したがって、テクセルメモリにアクセスするため、及びピクセルブロックをビジーに保つために必要な帯域幅を低減する。
特定の実施形態において、バッファマネージャ1001は、変換ブロックから、所与の位置のためのタイル-表面の対を受信しうる。バッファマネージャ1001は、三色全ての、4テクセルが整列した従来の境界ボックスを計算することができ、3つの(ダブルバッファされた)フィルタブロックバッファ全てにおいて空間が利用可能となるまで待機しうる。バッファマネージャ1001は、1つ以上のフィルタブロックが必要とする境界ボックス内の4×4のブロックごとに読み出しを行って、データを、各関連するフィルタブロック内の32×32のテクセル領域にロードすることができる。32×32のテクセル領域でサンプリングが終了すると、バッファマネージャは、さらなる使用のために空間を解放しうる。特定の実施形態において、テクセルが、バッファメモリ(例えば、テクセルバッファブロックを含むクワッドバッファブロック)内の32×32の領域、又はより小さな領域へとロードされ、バッファがより効率良く使用される。例えば、必要なテクセルを格納するのに十分な幅及び高さの2の累乗を有する領域に、テクセルがロードされうる。特定の実施形態において、バッファマネージャ1001は、サンプルステップ中にテクセルがもはや必要でなくなった後で、テクセルを解放しうる。特定の実施形態において、バッファマネージャ1001は、赤、緑、及び青のチャネルのうちの1つ以上が、32×32テクセルの配列より大きなテクセル配列をロードすることを要する場合に、任意のタイルを廃棄しうる。
図11Aは、フィルタブロックの例示的な図1100を示している。特定の実施形態において、フィルタブロックは、サンプルステッパ1101、4個のクワッドバッファブロック(例えば、1102、1103、1104、1105)、4個のサンプルフィルタブロック(例えば、1106、1107、1108、1109)、タイルバッファブロック1112、データバス等を含みうる。特定の実施形態において、フィルタブロック(例えば、図10の1002、1003、1004)は、クワッドバッファブロック(例えば、1102、1103、1104及び1105)を含む内部バッファの集合に格納されたデータに対して、バイリニアフィルタリングを実行しうる。4個のサンプリング位置についての4個のテクセル群が、サンプルフィルタブロック1106、1107、1108、及び1109それぞれにおいて、並行してサンプリングされうる。結果が、タイルバッファブロック1112によって、これらのピクセル位置に以前に書き込まれたデータと混ぜられうる。最後に、タイルバッファブロック1112は、サンプルステッパ1101に情報(例えば、不透明なピクセルのデータ)を返して、同じタイルへの後続のアクセスを最適化することを可能としうる。制御ブロックのテクセルメモリ(例えば、図9の914)内のテクセルが、256ビット単位で編成され、256ビット単位でアクセスされることが可能であり、これにより、各クワッドバッファブロックが、256ビット・テクセルメモリアクセスのうち、自身の64ビットサブワードを入力しうる。256ビット・テクセルメモリ読み出しの各16ビットが、整列した4×4のテクセルの内の異なる位置についてのテクセルを含みうる。制御ブロックのテクセルメモリは複数のバンクに編成することができ、これにより、256ビット・アクセスは、整列した4×4のテクセルブロックを読み出すことができ、又は、32ビットのテクセルについて、4×4のブロックの半分を読み出すことができる。
特定の実施形態において、各クワッドバッファブロックは、64ビット・データバスを介して、整列した2×2のテクセルの領域内の同じ位置にある4個の16ビット・サブワードを入力しうる。例えば、クワッドバッファブロック1102は、対応する2×2テクセル配列内のローカル(U,V)座標がゼロ(0,0)であるテクセル(例えば、テクセル配列1110内のA1、A2、A3、及びA4)を取得することができる。同様に、クワッドバッファブロック1103は、対応する2×2テクセル配列を有するローカル(U,V)座標が(1,0)であるテクセル(例えば、テクセル配列1110内のB1、B2、B3、B4)を取得することができる。クワッドバッファブロック1104は、対応する2×2テクセル配列内のローカル(U,V)座標が(0,1)であるテクセル(例えば、テクセル配列1110内のC1、C2、C3、C4)を取得することができる。クワッドバッファブロック1105は、対応する2×2テクセル配列内のローカル(U,V)座標が(1,1)のテクセル(例えば、テクセル配列1110内のD1、D2、D3、D4)を取得することができる。4×4のテクセル配列1110は、対応するローカル(U,V)座標を示す各テクセルを有することができ、各テクセルが、テクセル内の文字によって示されるように、各クワッドバッファブロックに格納されうる(例えば、クワッドバッファブロック1102内にAx、クワッドバッファブロック1103内にBx、クワッドバッファブロック1104内にCx、クワッドバッファブロック1105内にDxが格納される)。結果的に、4個のクワッドバッファブロック1102、1103、1104、及び1105は、補間のために、任意に整列した2×2のテクセルを提供することができる。例えば、クワッドバッファブロック1102、1103、1104、及び1105はそれぞれ、2×2のテクセル配列内に含まれるテクセルを、各サンプルフィルタブロック(例えば、1106、1107、1108、1109)に送信することができる。その結果、各サンプルフィルタブロックは、2×2のテクセル配列に対応する4個のテクセルを受信して、テクセルに対して補間を行うことができる。
特定の実施形態において、フィルタブロックは、4個のサンプルフィルタブロック(例えば、1106、1107、1108、1109)を含み、各サンプルフィルタブロックは、4個のクワッドバッファブロック(例えば、1102、1103、1104、1105)及びサンプルステッパ1101から、データ入力を得うる。4個のサンプルフィルタブロックは、ディスプレイ上の整数ピクセル位置の、2×2の整列したブロックに対応する、テクスチャ(U,V)空間内のサンプル位置の2×2のブロックを計算することができる。特定の実施形態において、サンプルフィルタブロックは、タイルバッファブロック1112を介して、表示ブロックに結果を出力しうる。特定の実施形態において、サンプルステッパ1101は、クワッドバッファブロック及びサンプルフィルタブロックを介して、サンプル位置を順序付けうる。サンプルステッパ1101は、読み出し動作のためにクワッドバッファブロックにテクセルのアドレスを送信することができ、かつ、サンプルフィルタブロックに送られるデータのデータフォーマットを指定することができる。サンプルステッパ1101は、フィルタの重み及び他の制御をサンプルフィルタブロックに提供することができる。特定の実施形態において、システムは、複数種の表面データをサポートすることができ、上記複数種の表面データのいくつかは、サンプルフィルタブロックでの、ピクセルごとの複数サイクルの補間操作を必要としうる。
図11Bは、クワッドバッファブロック(例えば、図11Aの1102、1103、1104、1105)の例示的な図1110を示している。特定の実施形態において、クワッドバッファブロックは、4個のテクセルバッファブロック(例えば、1121、1122、1123、1124)、4個のクワッド増分ブロック(例えば、1131、1132、1133、1134)、8つのマルチプレクサ(例えば、1125A~1125H)、データバス、アドレスバス等を含みうる。集合的に、4個のクワッドバッファブロックの16個のテクセルバッファブロックは、4×4テクセル配列内の各位置についてテクセルをバッファリングすることができる。特定の実施形態において、各テクセルバッファブロックは、同じローカル(U,V)座標を有し同じクワッドバッファブロックに格納されたテクセルを格納しうる。限定ではなく一例として、クワッドバッファブロック1102に格納された4×4のテクセル配列は、図11Bに示されるようなパターンで、1121、1122、1123、及び1124の対応する4個のテクセルバッファブロックに格納されうる。テクセルバッファブロック1121は、それぞれが(0,0)のローカル(U,V)座標を有するA1、A3、A9、A11のテクセルを格納することができる。テクセルバッファブロック1122は、それぞれが(1,0)のローカル(U,V)座標を有するA2、A4、A10、A12のテクセルを格納することができる。テクセルバッファブロック1123は、それぞれが(0,1)のローカル(U,V)座標を有するA5、A7、A13、A15のテクセルを格納することができる。テクセルバッファブロック1124は、それぞれが(1,1)のローカル(U,V)座標を有するA6、A8、A14、A16のテクセルを格納することができる。前述したように、このようなパターンでテクセルを格納することにより、4×4のテクセル配列の16個のテクセルを、16個の別個のテクセルバッファブロックに格納することができ、したがって、1つの読み出し動作でテクセルバッファメモリから取り出すことができる。
特定の実施形態において、テクセルデータが、各32×32のテクセル領域内で、ラップアラウンド形式でテクセルバッファに格納されうる。すなわち、31から32にテクセルのUアドレスを増分すると、フィルタブロックのテクセルバッファ内の、所与の32×32テクセルブロックにおけるテクセルアドレス0に戻ることができる。このことにより、テクセルの(U,V)アドレス、及び32×32のテクセル領域へのオフセットを、全てのフィルタブロックについて同じにすることが可能となり、フィルタブロックの、整列していない32テクセル幅のバッファ領域内で必要となったテクセルのみロードすればよいとしうる。特定の実施形態において、ディスプレイエンジンが、より複雑なアルゴリズムを利用することができ、このより複雑なアルゴリズムは、4×4の代わりに2×2のテクセル境界に読み出しを揃えること、フィルタバッファ内の可変サイズ領域を使用すること、又は、1のタイルからのテクセルデータであって、近傍のタイルも必要とする上記テクセルデータを再使用することを含む。特定の実施形態において、特定のクワッドバッファブロック内のテクセルバッファブロックは、(U,V)座標について同じ下位ビットを有するテクセルをバッファリングしうる。例えば、テクセルバッファブロック1121は、Uアドレス及びVアドレスのビット<1>がゼロであり、Uアドレス及びVアドレスのビット<0>が、そのクワッドバッファブロックによって指定される場合に、テクセルを格納することができる。テクセルバッファブロックのための読み出しアドレスは、任意に整列した4×4のテクセルブロックの開始のテクセルを指定することができる。クワッド増分ブロック(例えば、1131、1132、1133、1134)は、ブロックに格納されたUアドレス又はVアドレスのビット<1>がゼロであるが、対応する読み出しアドレスビットが1である場合を検出することができる。残りのUアドレス又はVアドレスは、32×32テクセル領域内でラップアラウンドしながら増分されうる。その結果、テクセルバッファは、サンプルフィルタブロックが必要とするテクセルをカバーする4×4テクセルのどのような配列にも対処することが可能である。
特定の実施形態において、クワッドバッファブロックの図1110の右側のマルチプレクサ(例えば1125E~1125H)によって、各サンプルフィルタブロックが、どのテクセルバッファブロックにアクセスするかを選択し、これにより、対応する4×4テクセル領域内の各サンプルにバイリニア補間を行うことが可能となりうる。単一のクワッドバッファブロック内で、各サンプルフィルタブロックは、Uアドレス及びVアドレスのビット<1>がゼロ又は1であるべきかを選択することができる。この選択は、各クワッドフィルタブロック内で別々に行うことができ、その結果、各サンプルフィルタブロックは、自身が必要とする2×2のテクセルを獲得する。マルチプレクサは、サンプルステッパブロックから来るテクセルデータのビットを選択することができる。クワッドバッファブロックの図の左側のマルチプレクサ(例えば1125A~1125E)は、右側のマルチプレクサとは異なる機能を実行することができ、すなわち、選択されたテクセルバッファブロックから、サンプルステッパに情報を送る機能を実行することができる。これにより、サンプルステッパが、サンプルフィルタのシーケンシングを最適化することが可能となる。
図12Aは、テクセルバッファブロック(例えば、図11Bの1121、1122、1123、1124)の例示的な図1200を示している。特定の実施形態において、テクセルバッファブロックは、リフォーマッタブロック1201、512×2バッファユニット1202、512×10バッファユニット1203、遅延ブロック1205、セレクタ1207、書き込みアドレスバス1208、読み出しアドレスバス1209、他のデータ/アドレスバス等を含みうる。リフォーマッタブロック1201は、テクセルデータを、制御ブロックのテクセルメモリに格納されているフォーマットから、テクセルバッファブロックで必要とされるデータフォーマットに変換することができる。バッファコントローラが、どのテクセルデータが各テクセルバッファブロックに書き込まれるかに基づいて、書き込みアドレスを選択することができる。サンプルステッパブロック(図11Aの1101)が、クワッドバッファブロックによってテクセルバッファブロックごとにカスタマイズされうる読み出しアドレスを選択することができる。バッファエントリの上位2ビットが、最初に512×2バッファユニット1202に読み込まれ、その後、(例えば、デイブロック1205による)固定の遅延の後で、下位10ビットが512×10バッファユニット1203に読み込まれる。固定の遅延によって、サンプルステッパが、上位2ビットを解釈して、実行する必要がある補間のシーケンスを決定することが可能となりうる。最後に、セレクタブロック1207が、2つの6ビット値を組み立てることができ、6ビット出力バス1231を介して、距離、色、又は可変アルファ値を補間器に渡すことができる。他方の出力バス1232は、補間されえないラベルインデックス又は定数のために使用されうる。
図12Bは、テクセルバッファブロックのための例示的なテクセルデータフォーマット(例えば、1210、1211、1213、1214)を示している。特定の実施形態において、テクセルバッファブロックは、テクセルバッファエントリ及びテクセルバッファストレージのための複数のテクセルデータフォーマットをサポートしうる。16個のテクセルバッファブロックのそれぞれは、4×4のテクセル配列内の単一の位置について情報を格納することができる。各テクセルバッファブロックは、1つのカラーチャネルを補間するのに必要な情報を格納するためのバッファユニットを含みうる。特定の実施形態において、画像表面についてのテクセルデータが、色成分及びアルファを含みうる。ラベル表面についてのテクセルデータが、距離要素及び色インデックスと共に、最適化を選択するためのビットを含みうる。限定ではなく一例として、12ビットのテクセルフォーマット1210は、1ビットのT要素、1ビットのS要素、6ビットの距離要素、及び4ビットのインデックス要素を含みうる。他の例として、12ビットのテクセルフォーマット1211は、2ビットのモード要素、6ビットのカラー要素、及び4ビットアルファ要素を含みうる。他の例として、12ビットのテクセルフォーマット1211は、2ビットのモード要素、及び10ビットのカラー要素を含みうる。他の例として、12ビットのテクセルフォーマット1213は、2ビットのモード要素、8ビットのアルファ要素、及び2ビットのX要素を含みうる。他の例として、24ビットのテクセルフォーマット1214は、下位12ビットにおいて、2ビットのモード要素、6ビットの低ビットカラー要素、及び4ビットの低ビットアルファ要素を含んでよく、上位12ビットにおいて、2ビットのX要素、6ビットの高ビットカラー要素、4ビットの高ビットアルファ要素を含みうる。特定の実施形態において、T要素及びモード要素/Tフィールド及びモードフィールドが、リフォーマッタ(図12Aの1201)によって計算され、補間を最適化するためにサンプルステッパ(図11Aの1101)によって使用されうる。特定の実施形態において、画像フォーマットは、どのような種類の表面が格納されているかに基づいて使用されうる。例えば、ラベル表面は、より下位のビットに色インデックスが格納された6ビットの距離フォーマット(すなわち、Distance6)を使用することができる。他の例として、マスク表面は、8ビットのアルファフォーマット(すなわち、Alpha8)を使用することができる。他の例として、画像表面は、画像表面のために選択された数値精度に従って、他のフォーマットのうちの1つを使用することができる。
図12Cは、サンプルフィルタブロック(例えば、図11Aの1106、1107、1108、1109)の例示的な図1220を示している。特定の実施形態において、サンプルフィルタブロックは、第1の補間器1221、第2の補間器1222、V補間器1223、カラーセレクタブロック1224、ブレンダブロック1225等を含みうる。サンプルフィルタブロックは、1つのサンプリング位置のために、補間及び補間後処理を実行しうる。補間器1221及び1222は、フィルタキャッシュから、テクセル座標(0,0)、(1,0)、(0,1)及び(1,1)に対応するテクセルデータを受信することができる。補間器1221、1222、及び1223は、サンプルステッパによって提供される重みを使用して、5×5の乗算器でバイリニア補間を行いうる。特定の実施形態において、ディスプレイエンジンは、短い又は長いデータフォーマット(例えば、6ビットのデータフォーマット、12ビットのデータフォーマット)の補間に対して最適化操作を実行し、補間器にデータを送信するために必要なメモリエントリ及びサイクルの数を決定しうる。各補間器の出力は、補間結果を完全な精度で提供することができる。丸め又は他の数値変換が、カラーセレクタブロック1224で実行されうる。補間器は、アーチファクトが現れ始めるまで、約32倍までの拡大を可能にする6ビットのフィルタ重みを使用することができる。カラーセレクタ1124は、フィルタリングされる表面が画像又はラベルであるかに従って、2つのタスクを実行することができる。画像については、補間されたカラー値及びアルファ値を正しい出力へと導くことができる。ラベルを処理するときには、カラーセレクタ1224は、符号付き距離の補間関数をカラーに変換することができる。画像を処理するときには、カラーセレクタ1224は、カラーの補間関数及びアルファの補間関数を分けることができる。アルファの補間関数が存在しない場合には、アルファは、サンプルステッパからの制御ビットによって選択されるように、ゼロ又は1のいずれかでありうる。ブレンダブロック1225は、必要に応じてアルファ透明度ブレンディングを行うことができる。ブレンダブロック1225は、ソースのカラー及びソースのアルファを、タイルバッファブロックを介してアクセスされる目標のカラー及びアルファと組み合わせることができる。2種類のブレンド機能、すなわち、前から後へ(front-to-back)又は後から前へ(back-to-front)のいずれかで実行することが可能なアドブレンド(add-blend)及びオーバーブレンド(over-blend)が実行されうる。言い換えれば、ブレンディングは、ソースを、そのピクセル位置の現在値の後ろ又は前のいずれかにあるものとして扱うことが可能である。
図13は、複数のテクセル群を並行してサンプリングし、バイリニア補間を使用して複数のピクセル値を決定するための例示的な方法1300を示している。方法1300は、ステップ1310で開始することができ、ステップ1310では、ヘッドセットシステムが、身体装着型計算システムからプリワープされた表面を受信することができる。各プリワープされた表面は、単一のテクスチャ解像度によって表されるテクスチャデータを有しうる。特定の実施形態において、身体装着型計算システムは、1つ以上のGPU、及びスマートビデオデコーダを含みうる。特定の実施形態において、プリワープされた表面は、身体装着型計算システムと関連付けられたGPU又はスマートビデオデコーダにより生成されうる。プリワープされた表面は、身体装着型計算システムと関連付けられたGPUでのレンダリング結果に基づいて生成することができ、基礎となったオブジェクトの3D輪郭を視覚的に考慮することができる。プリワープされた表面は、視聴者のビュー空間内での表面の位置を示す位置データを有しうる。プリワープされた表面は、視聴者に面する平面的な領域として表され得、したがって、表面の様々な部分が視聴者に対して異なる深度を有するように見える場合であっても、ピクセルフィルタリングは、表面全体にわたって均一のテクスチャ解像度を用いて実施されうる。
ステップ1320において、ヘッドセットシステムは、プリワープされた表面がスクリーン上の領域(例えば、タイル、又は16×16ピクセルといったピクセルの集合)に見えるかどうかを判定しうる。特定の実施形態において、システムは、レイキャスティングアルゴリズムを使用して、境界ボックスを画定する4個の投げかけられた光線が、プリワープされた表面と交差するかどうかを判定してよい。光線は、視聴者の現在の視点に基づいて投げかけることができ、ヘッドセットシステム上のディスプレイエンジンは交点を利用して、プリワープされた表面をさらにワープさせ、プリワープされた表面の生成以降の視聴者の視点の任意の変化に適応させうる。境界ボックスが表面と交差する場合には、境界ボックス、及び当該表面と対応するタイルが、(表面がタイルに見えることを示す)タイル-表面の対と見なされうる。特定の実施形態において、システムは、同様のやり方で、複数のタイル-表面の対を生成しうる。特定の実施形態において、ズームアウト動作が、2倍以下のズームに制限されうる。
ステップ1330において、システムは、境界ボックスと交差する表面上の領域に基づいて、表面と関連付けられたテクスチャ内の点をサンプリングすることを決定することができる。例えば、境界ボックスが、16×16のピクセルで構成されるタイルに対応する場合には、システムは、16×16のサンプリング点の位置を決定することができる。特定の実施形態において、システムは、16×16のサンプリング点から選択された2×2のサンプリング点の群に基づいて、フィルタリングを連続的に実行しうる。
ステップ1340において、システムは、サンプリング点の各群について、当該サンプリング点におけるピクセル値を決定するために必要な関連するテクセルを決定しうる。上記必要なテクセルは、所定の寸法(例えば、4×4)を有しうる。特定の実施形態において、サンプリング点とテクセルグリッドとの相対的な位置を用いて、どのテクセルが必要であるかが決定されうる。例えば、2×2のサンプリング点の一群のために、最も近い4×4のテクセルが選択されうる。特定の実施形態において、システムは、2倍のズームアウト制限を利用しして、2×2のサンプリング点をフィルタリングするために必要なテクセルが4×4のテクセル領域内に入ることを保証しうる。この条件は、隣り合うサンプリング点の距離が(テクセルエッジ長により示される)テクセルサイズの2倍以下である限りは、満たされうる。特定の実施形態において、4×4のテクセルに1つの読み出し動作でアクセスすることを可能とするやり方で、テクセルがテクセルメモリブロックに格納される。例えば、4×4のテクセル配列は、交互に配置されるパターンで、32バイト(256ビット)のメモリブロックに格納されてよく、32バイトのメモリブロックの内容が、1つの読み出し動作を用いて並行して取り出されうる。
ステップ1350において、システムは、サンプリング点の位置についてのピクセル値を決定するのに必要なテクセルを、1つの読み出し動作で取り出すことができる。例えば、システムは、1つの読み出し動作を用いて、テクセルメモリから4×4のテクセル配列を並行して取り出すことができる。
ステップ1360において、システムは、取り出したテクセルに対して、バイリニア補間(又は、バイキュービック補間といった他の任意の適切な補間技術)を実施することによって、サンプリング点のためのピクセル値を決定しうる。特定の実施形態において、4個の2×2のサンプリング点に対する補間プロセスが、4個のサンプルフィルタブロックによって並行して実施されうる。
特定の実施形態において、計算システムは、複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信しうる。システムは、複数のテクセル部分集合であって、各部分集合におけるテクセルがそれぞれの部分配列内で同じ位置にある複数のテクセル部分集合を決定することができる。システムは、テクセル部分集合を複数のバッファブロックにそれぞれ格納し、各バッファブロックは、テクセル部分集合のうちの1つのテクセル部分集合を格納することができる。システムは、複数のサンプリング点のピクセル値を並行して決定するために、バッファブロックからサンプリングテクセル配列を取り出すことができ、サンプリングテクセル配列の各テクセルは、バッファブロックの異なるバッファブロックから取り出される。特定の実施形態において、テクセル配列の部分配列が、テクセル配列内で繰り返しパターンを形成しうる。特定の実施形態において、バッファブロックは、別々にアドレス指定され、かつ並行してアクセスされうる。
特定の実施形態において、バッファブロックが、複数の群にグループ化されうる。サンプリング点のピクセル値を決定するために使用される各テクセルは、テクセル群の異なる群から取り出されうる。特定の実施形態において、テクセル部分集合が、テクセル配列における基準テクセルの位置を示す第1の座標(u,v)を有する基準テクセルを決定し、複数の中間テクセル群であって、(0,0)、(1,0)、(0,1)、及び(1,1)に等しい第1の座標(u,v)の二進表現の最下位ビットを有するテクセルをそれぞれ含む複数の中間テクセル群を決定し、各中間テクセル群の各テクセルについて第2の座標(x,y)を決定し、対応する中間テクセル群に関して、(0,0)、(1,0)、(0,1)、及び(1,1)に等しい第2の座標(x,y)の二進表現の最下位ビットを有するテクセルをそれぞれが含むテクセル部分集合を決定することによって、決定されうる。
特定の実施形態において、テクセル部分集合は、少なくとも16個のテクセル部分集合を含んでよく、バッファブロックは、少なくとも16個のバッファブロックを含んでよい。特定の実施形態において、部分配列のそれぞれが、4×4のテクセル配列を含みうる。各テクセル部分集合は、2×2のテクセル配列を含みうる。各中間テクセル群は、4×4のテクセル配列を含みうる。特定の実施形態において、16個のテクセル部分集合を4個のテクセル群に編成することができ、サンプリング点は4個のサンプリング点を含みうる。4個のテクセル群が、4個のサンプリング点のピクセルの値をそれぞれ並行して決定するために使用されうる。特定の実施形態において、各ピクセル値が、サンプリングテクセル配列の2×2のテクセル部分配列に基づいて決定され、2×2のテクセル部分配列の各テクセルが、4個のテクセル群のうちの1つから選択されうる。特定の実施態様において、サンプリング点のピクセル値は、サンプリングテクセル配列のテクセルへの並行するバイリニア補間に基づいて決定されうる。各サンプリング点の各ピクセル値は、サンプリングテクセル配列の2×2のテクセル部分配列に基づいて決定されうる。特定の実施態様において、サンプリング点が、シーンの一部分の二次元表現への表示領域の交差領域と関連付けられうる。特定の実施態様において、二次元表現は、シーンの一部分の三次元情報を含みことができ、シーンの一部分の二次元表現が、表示領域内で可視でありうる。特定の実施形態において、シーンの一部分の二次元表現は、単一のテクスチャ解像度で表されうる。テクセル配列は、単一のテクスチャ解像度を有するテクセルを含みうる。特定の実施形態において、サンプリングテクセル配列は、整列したテクセル領域又は整列していないテクセル領域と関連付けられうる。
特定の実施形態は、必要に応じて、図13の方法の1つ以上のステップを繰り返しうる。本開示は、図13の方法の特定のステップが特定の順序で行われるものとして記載し例示しているが、本開示は、図13の方法の任意の適切なステップが任意の適切な順序で行われることを企図する。さらに、本開示は、図13の方法の特定のステップを含む、複数のテクセル群を並行してサンプリングして、バイリニア補間を用いて複数のピクセル値を決定するための例示的な方法について記載し例示しているが、本開示は、複数のテクセル群を並行してサンプリングして、バイリニア補間を用いて複数のピクセル値を決定するための任意の適切な方法が、必要に応じて、任意の適切なステップを含むことを企図し、上記任意の適切なステップは、図13の方法のステップの全て若しくは一部を含んでよく、又は当該ステップを全く含まなくてよい。さらに、本開示は、図13の方法の特定のステップを実行する特定の構成要素、装置、又はシステムについて記載し例示するが、本開示は、図13の方法の任意の適切なステップを実行する任意の適切な構成要素、装置、又はシステムの任意の適切な組み合わせを企図する。
図14は、例示的なコンピュータシステム1400を示している。特定の実施形態において、1つ以上のコンピュータシステム1400が、本明細書に記載又は図示された1つ以上の方法の1つ以上のステップを実行する。特定の実施形態において、1つ以上のコンピュータシステム1400は、本明細書に記載又は図示された機能を提供する。特定の実施形態において、1つ以上のコンピュータシステム1400上で実行されるソフトウェアが、本明細書に記載若しくは図示された1つ以上の方法の1つ以上のステップを実行し、又は、本明細書に記載若しくは図示された機能を提供する。特定の実施形態は、1つ以上のコンピュータシステム1400の1つ以上の部分を含む。ここでは、コンピュータシステムへの参照は、必要に応じて計算装置を包含することができ、その逆も然りである。さらに、コンピュータシステムへの参照は、必要に応じて、1つ以上の計算システムを包含することができる。
本開示は、任意の適切な数のコンピュータシステム1400を企図する。本開示は、任意の適切な物理的形態をとるコンピュータシステム1400を企図する。限定ではなく例として、コンピュータシステム1400は、組み込みコンピュータシステム、システム・オン・チップ(SOC:system-on-chip)、シングルボード・コンピュータシステム(SBC:single-board computer system)(例えば、コンピュータ・オン・モジュール(COM:computer-on-module)、若しくはシステム・オン・モジュール(SOM:system-on-module)など)、デスクトップ・コンピュータシステム、ラップトップ若しくはノートブック・コンピュータシステム、インタラクティブ・キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA:personal digital assistant)、サーバ、タブレット・コンピュータシステム、拡張現実/仮想現実デバイス、又は、これらの2つ以上の組み合わせであってよい。必要に応じて、コンピュータシステム1400は、1つ以上のコンピュータシステム1400を含むことができ、即ち、一体であってよく若しくは分散されてよく、複数の位置にまたがってよく、複数のマシンにまたがってよく、複数のデータセンタにまたがってよく、又は、1つ以上のネットワーク内に1つ以上のクラウドコンポーネントを含みうるクラウド内に存在してよい。必要に応じて、1つ以上のコンピュータシステム1400は、実質的な空間的又は時間的制限なしに、本明細書に記載又は図示される1つ以上の方法の1つ以上のステップを実行することができる。限定ではなく一例として、1つ以上のコンピュータシステム1400は、リアルタイムで又はバッチモードで、本明細書に記載又は図示される1つ以上の方法の1つ以上のステップを実行することができる。1つ以上のコンピュータシステム1400は、必要に応じて、本明細書で記載又は図示される1つ以上の方法の1つ以上のステップを、異なる時間に又は異なる位置で実行することができる。
特定の実施形態において、コンピュータシステム1400は、プロセッサ1402、メモリ1404、ストレージ1406、入出力(I/O:input/output)インタフェース1408、通信インタフェース1410、及びバス1412を含む。本開示は、特定の構成において特定数の特定の構成要素を有する特定のコンピュータシステムについて説明し例示するが、本開示は、任意の適切な構成において任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータシステムを企図する。
特定の実施形態において、プロセッサ1402は、コンピュータプログラムを構成する命令といった命令を実行するためのハードウェアを含む。限定ではなく一例として、命令を実行するために、プロセッサ1402は、内部レジスタ、内部キャッシュ、メモリ1404、又はストレージ1406から命令を獲得(又はフェッチ)し、それらを復号して実行し、1つ以上の結果を内部レジスタ、内部キャッシュ、メモリ1404、又はストレージ1406に書き込むことができる。特定の実施形態において、プロセッサ1402は、データ、命令、又はアドレスのための1つ以上の内部キャッシュを含みうる。本開示は、必要に応じて、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ1402を企図する。限定ではなく一例として、プロセッサ1402は、1つ以上の命令キャッシュ、1つ以上のデータキャッシュ、及び1つ以上の変換ルックアサイドバッファ(TLB:translation lookaside buffer)を含みうる。命令キャッシュ内の命令は、メモリ1404又はストレージ1406内の命令の複写であってよく、命令キャッシュは、プロセッサ1402によるこれら命令の検索を高速化してよい。データキャッシュ内のデータは、プロセッサ1402が動作するようプロセッサ1402で実行される命令のためのメモリ1404内若しくはストレージ1406内のデータの複写、即ち、先行する命令であって、プロセッサ1402で実行される後続の命令によるアクセスのため、若しくは、メモリ1404若しくはストレージ1406への書き込みのために、プロセッサ1402で実行される先行する命令の結果であってよく、又は、他の適切なデータであってよい。データキャッシュは、プロセッサ1402による読み出し動作又は書き込み動作を高速化することができる。TLBは、プロセッサ1402のための仮想アドレス変換を高速化することができる。特定の実施形態において、プロセッサ1402は、データ、命令、又はアドレスのための1つ以上の内部レジスタを含みうる。本開示は、必要に応じて、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ1402を企図する。必要に応じて、プロセッサ1402は、1つ以上の算術論理演算ユニット(ALU:arithmetic logic unit)を含んでよく、マルチコアプロセッサであってよく、又は、1つ以上のプロセッサ1402を含んでよい。本開示は、特定のプロセッサについて記載し例示するが、本開示は、任意の適切なプロセッサを企図する。
特定の実施形態において、メモリ1404は、プロセッサ1402が実行する命令、又はプロセッサ1402が動作するためのデータを格納するためのメインメモリを含む。限定ではなく一例として、コンピュータシステム1400は、ストレージ1406又は他のソース(例えば、他のコンピュータシステム1400)からメモリ1404に命令をロードすることができる。次いで、プロセッサ1402は、メモリ1404から内部レジスタ又は内部キャッシュに命令をロードすることができる。命令を実行するために、プロセッサ1402は、内部レジスタ又は内部キャッシュから命令を取得し、それらを復号することができる。命令の実行中又は実行後に、プロセッサ1402は、1つ以上の結果(中間結果又は最終結果でありうる)を内部レジスタ又は内部キャッシュに書き込むことができる。次いで、プロセッサ1402は、これらの結果のうちの1つ以上をメモリ1404に書き込みうる。特定の実施形態において、プロセッサ1402は、(ストレージ1406又は他の箇所とは対照的に、)1つ以上の内部レジスタ若しくは内部キャッシュ内、又はメモリ1404内の命令のみを実行し、(ストレージ1406又は他の箇所とは対照的に、)1つ以上の内部レジスタ若しくは内部キャッシュ内、又はメモリ1404内のデータのみに対して動作する。(アドレスバス及びデータバスをそれぞれが含みうる)1つ以上のメモリバスが、プロセッサ1402をメモリ1404に接続しうる。バス1412は、以下で説明するように、1つ以上のメモリバスを含みうる。特定の実施形態において、1つ以上のメモリ管理ユニット(MMU:memory management unit)が、プロセッサ1402とメモリ1404との間に存在し、プロセッサ1402が要求するメモリ1404へのアクセスを容易にする。特定の実施形態において、メモリ1404は、ランダムアクセスメモリ(RAM:random access memory)を含む。このRAMは、必要に応じて、揮発性メモリであってよい。必要に応じて、このRAMは、ダイナミックRAM(DRAM:dynamic RAM)又はスタティックRAM(SRAM:static RAM)であってよい。さらに、必要に応じて、このRAMはシングルポート又はマルチポートRAMであってよい。本開示は、任意の適切なRAMを企図する。メモリ1404は、必要に応じて、1つ以上のメモリ1404を含みうる。本開示は、特定のメモリについて記載し例示するが、本開示は、任意の適切なメモリを企図する。
特定の実施形態において、ストレージ1406は、データ又は命令のための大容量ストレージを含む。限定ではなく一例として、ストレージ1406は、ハードディスクドライブ(HDD:hard disk drive)、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、又はユニバーサルシリアルバス(USB:Universal Serial Bus)ドライブ、又は、これらの2つ以上の組み合わせを含みうる。ストレージ1406は、必要に応じて、リムーバブル又は非リムーバブル(又は固定)の媒体を含みうる。ストレージ1406は、必要に応じて、コンピュータシステム1400の内側又は外側にあってよい。特定の実施形態において、ストレージ1406は、不揮発性のソリッドステートメモリである。特定の実施形態において、ストレージ1406は、読み出し専用メモリ(ROM:read-only memory)を含む。必要に応じて、このROMは、マスクプログラムROM、プログラマブルROM(PROM:programmable ROM)、消去可能PROM(EPROM:erasable PROM)、電気的消去可能PROM(EEPROM:electrically erasable PROM)、電気的可変ROM(EAROM:electrically alterable ROM)、若しくはフラッシュメモリ、又はこれらの2つ以上の組み合わせでありうる。本開示は、任意の適切な物理的形態をとる大容量ストレージ1406を企図する。ストレージ1406は、必要に応じて、プロセッサ1402とストレージ1406との間の通信を容易にする1つ以上のストレージ制御ユニットを含みうる。必要に応じて、ストレージ1406は、1つ以上のストレージ1406を含みうる。本開示は、特定のストレージについて記載し例示するが、本開示は、任意の適切なストレージを企図する。
特定の実施形態において、I/Oインタフェース1408は、コンピュータシステム1400と1つ以上のI/Oデバイスとの間の通信のための1つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はその両方を含む。コンピュータシステム1400は、必要に応じて、1つ以上の上記I/Oデバイスを含みうる。1つ以上の上記I/Oデバイスが、人とコンピュータシステム1400との間の通信を可能としうる。限定ではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチ画面、トラックボール、ビデオカメラ、他の適切なI/Oデバイス、又はこれらの2つ以上の組み合わせを含む。I/Oデバイスは、1つ以上のセンサを含みうる。本開示は、上記センサのための任意の適切なI/Oデバイス及び任意の適切なI/Oインタフェース1408を企図する。必要に応じて、I/Oインタフェース1408は、プロセッサ1402が1つ以上の上記I/Oデバイスを駆動することを可能にする1つ以上のI/Oデバイス又はソフトウェアドライバを含みうる。I/Oインタフェース1408は、必要に応じて、1つ以上のI/Oインタフェース1408を含みうる。本開示は、特定のI/Oインタフェースについて記載し例示するが、本開示は、任意の適切なI/Oインタフェースを企図する。
特定の実施形態において、通信インタフェース1410は、コンピュータシステム1400と、1つ以上の他のコンピュータシステム1400又は1つ以上のネットワークと、の間の通信(例えば、パケットベースの通信)のための1つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はその両方を含む。限定ではなく一例として、通信インタフェース1410は、イーサネット若しくは他の有線ベースのネットワークと通信するためのネットワークインタフェースコントローラ(NIC:network interface controller)若しくはネットワークアダプタ、又は、WI-FIネットワークといった無線ネットワークと通信するための無線NIC(WNIC:wireless NIC)若しくは無線アダプタを含みうる。本開示は、任意の適切なネットワーク及びそのための任意の適切な通信インタフェース1410を企図する。限定ではなく一例として、コンピュータシステム1400は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN:personal area network)、ローカル・エリア・ネットワーク(LAN:local area network)、ワイド・エリア・ネットワーク(WAN:wide area network)、メトロポリタン・エリア・ネットワーク(MAN:metropolitan area network)、若しくは、インターネットの1つ以上の部分、又は、これらの2つ以上の組み合わせと通信することができる。1つ以上の上記ネットワークの1つ以上の部分は、有線又は無線であってよい。一例として、コンピュータシステム1400は、無線PAN(WPAN:wireless PAN)(例えば、BLUETOOTH WPAN)、WI-FIネットワーク、WI-MAXネットワーク、セルラー電話ネットワーク(例えば、GSM(Global System for Mobile Communications)ネットワーク等)、若しくは、他の適切な無線ネットワーク、又は、これらの2つ以上の組み合わせと通信することができる。コンピュータシステム1400は、必要に応じて、これらのネットワークのいずれかのための任意の適切な通信インタフェース1410を含みうる。通信インタフェース1410は、必要に応じて、1つ以上の通信インタフェース1410を含みうる。本開示は、特定の通信インタフェースについて記載し例示するが、本開示は、任意の適切な通信インタフェースを企図する。
特定の実施形態において、バス1412は、コンピュータシステム1400の構成要素を互いに接続するハードウェア、ソフトウェア、又はその両方を含む。限定ではなく一例として、バス1412は、高速グラフィックスポート(AGP:Accelerated Graphics Port)、又は他のグラフィックスバス、拡張業界標準アーキテクチャ(EISA:Enhanced Industry Standard Architecture)バス、フロントサイドバス(FSB:front-side bus)、ハイパートランスポート(HT:HYPERTRANSPORT)相互接続、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、インフィニバンド相互接続、ローピンカウント(LPC:low-pin-count)バス、メモリバス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、周辺要素相互接続(PCI:Peripheral Component Interconnect)バス、PCI-エクスプレス(PCIe:PCI-Express)バス、シリアルアドバンストテクノロジアタッチメント(SATA:serial advanced technology attachment)バス、ビデオエレクトロニクススタンダードアソシエーションローカル(VLB:Video Electronics Standards Association local)バス、若しくは、他の適切なバス、又はこれらの2つ以上の組み合わせを含みうる。バス1412は、必要に応じて、1つ以上のバス1412を含みうる。本開示は、特定のバスについて記載し例示するが、本開示は、任意の適切なバスを企図する。
本明細書では、コンピュータ可読非一過性記憶媒体は、必要に応じて、1つ以上の半導体ベースの若しくは他の集積回路(IC:integrated circuit)(例えば、フィールドプログラマブルゲートアレイ(FPGA:field-programmable gate array)若しくは特定用途向けIC(ASIC:application-specific IC)等)、ハードディスクドライブ(HDD:hard disk drive)、ハイブリッドハードドライブ(HDD:hybrid hard drive)、光ディスク、光ディスクドライブ(ODD:optical disc drive)、光磁気ディスク、光磁気ドライブ、フロッピーディスケット、フロッピーディスクドライブ(FDD:floppy disk drive)、磁気テープ、ソリッドステートドライブ(SSD:solid-state drive)、RAMドライブ、SD(SECURE DIGITAL)カード若しくはドライブ、任意の他の適切なコンピュータ可読非一過性記憶媒体、又は、これらの2つ以上の任意の適切な組合せを含みうる。コンピュータ可読な不揮発性記憶媒体は、必要に応じて、揮発性、不揮発性、又は揮発性と不揮発性の組合せでありうる。
本明細書において、「又は(or)」は、特記されない限り、又は文脈によって別様に示されない限り包括的であり、排他的ではない。従って、本明細書において、「A又はB」は、特記されない限り、又は文脈によって別様に示されない限り、「A、B、又はその両方」を意味する。さらに、「及び(and)」は、特記されない限り、又は文脈によって別様に示されない限り、「共に」と「個別的」の双方である。したがって、本明細書では、「A及びB」は、特記されない限り、又は文脈によって別様に示されない限り、「A及びB、「共に」又は「個別的に」(jointly or severally)」を意味する。
本開示の範囲は、当業者が理解するであろう、本明細書に記載又は図示される例示的な実施形態に対する全ての変更、置換、変形、改変、及び修正を包含する。本開示の範囲は、本明細書に記載又は図示された例示的な実施形態に限定されない。さらに、本開示は、特定の構成要素、要素、特徴、機能、動作、又はステップを含むものとして、本明細書の各実施形態を記載及び例示するが、これらの実施形態のいずれも、当業者には分かるであろう本明細書のどこかで記載又は例示された構成要素、要素、特徴、機能、動作、又はステップのいずれかの任意の組合せ又は置換を含みうる。さらに、添付の特許請求の範囲において、特定の機能を実行することが可能であり、当該特定の機能を実行するよう適合され、配置され、構成され、可能とされ、動作可能であり、又は動作する装置若しくはシステム、又は、装置若しくはシステムの構成要素への言及は、その特定の機能が作動され、オンにされ、又はロック解除されるか否かにかかわらず、その装置、システム、構成要素がそのように適合され、配置され、可能であり、構成され、可能とされ、動作可能であり、又は動作する限りは、その装置、システム、構成要素を包含する。さらに、本開示は、特定の利点を提供するものとして特定の実施形態を記載又は例示するが、特定の実施形態は、これらの利点のいずれも提供しなくてよく、利点の一部又は全てを提供してよい。
Claims (14)
- 方法であって、計算システムによって、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合における前記テクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
前記複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、前記複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、前記複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、前記複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、前記サンプリングテクセル配列の各テクセルが、前記複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を含む、方法。 - 前記複数のテクセル部分集合が、
前記テクセル配列における基準テクセルの位置を示す第1の座標(u,v)を有する前記基準テクセルを決定することと、
複数の中間テクセル群であって、(0,0)、(1,0)、(0,1)、及び(1,1)に等しい前記第1の座標(u,v)の2進表現の最下位ビットを有するテクセルをそれぞれ含む複数の中間テクセル群を決定することと、
各中間テクセル群の各テクセルについて第2の座標(x,y)を決定することと、
対応する中間テクセル群に関して、(0,0),(1,0),(0,1)、及び(1,1)に等しい前記第2の座標(x,y)の2進表現の最下位ビットを有するテクセルをそれぞれが含む前記複数のテクセル部分集合を決定すること
によって決定される、請求項1に記載の方法。 - 前記複数のテクセル部分集合が、16個のテクセル部分集合を含み、前記複数のバッファブロックが、16個のバッファブロックを含む、請求項5に記載の方法。
- 前記16個のテクセル部分集合が、4個のテクセル群に編成され、前記複数のサンプリング点が4個のサンプリング点を含み、前記4個のテクセル群が、前記4個のサンプリング点の前記ピクセル値をそれぞれ並行して決定するために使用される、請求項6に記載の方法。
- 各ピクセル値が、前記サンプリングテクセル配列の2×2のテクセル部分配列に基づいて決定され、前記2×2のテクセル部分配列の各テクセルが、前記4個のテクセル群のうちの1つから選択される、請求項7に記載の方法。
- 前記複数のサンプリング点が、シーンの一部分の二次元表現への表示領域の交差領域と関連付けられる、請求項1に記載の方法。
- 前記二次元表現は、前記シーンの前記一部分の三次元情報を含み、前記シーンの前記一部分の前記二次元表現が、前記表示領域において可視である、請求項9に記載の方法。
- 前記シーンの前記一部分の前記二次元表現が、単一のテクスチャ解像度で表され、前記テクセル配列が、前記単一のテクスチャ解像度を有するテクセルを含む、請求項9に記載の方法。
- 前記サンプリングテクセル配列が、整列したテクセル領域又は整列していないテクセル領域と関連付けられる、請求項1に記載の方法。
- ソフトウェアを具現化する1つ以上のコンピュータ可読な非一過性記憶媒体であって、
前記ソフトウェアは、実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合における前記テクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
前記複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、前記複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、前記複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、前記複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、前記サンプリングテクセル配列の各テクセルが、前記複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を行うよう動作可能である、1つ以上のコンピュータ可読な非一過性記憶媒体。 - システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに接続された1つ以上のコンピュータ可読な非一過性記憶媒体であって、命令を含み、
前記命令は、前記1つ以上のプロセッサによって実行されたときに、
複数の部分配列を含むテクセル配列に編成された複数のテクセルを受信することと、
複数のテクセル部分集合を決定することであって、各部分集合におけるテクセルはそれぞれの部分配列内で同じ位置にある、複数のテクセル部分集合を決定することと、
前記複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することであって、各バッファブロックが、前記複数のテクセル部分集合のうちの1つのテクセル部分集合を格納する、複数のテクセル部分集合を複数のバッファブロックにそれぞれ格納することと、
複数のサンプリング点のピクセル値を並行して決定するために、前記複数のバッファブロックからサンプリングテクセル配列を取り出すことであって、前記サンプリングテクセル配列の各テクセルが、前記複数のバッファブロックの異なるバッファブロックから取り出される、サンプリングテクセル配列を取り出すこと
を前記システムに行わせるよう動作可能である、1つ以上のコンピュータ可読な非一過性記憶媒体と、
を備えた、システム。 - 前記複数の部分配列が、前記テクセル配列内で繰り返しパターンを形成する、請求項1に記載の方法、請求項10に記載の媒体、又は請求項11に記載のシステム。
- 前記複数のバッファブロックのそれぞれが、別々にアドレス指定され、かつ並行してアクセスされる、請求項1に記載の方法、請求項10に記載の媒体、又は請求項11に記載のシステム。
- 前記複数のバッファブロックが複数の群にグループ化され、サンプリング点のピクセル値を決定するために使用される各テクセルが、前記複数の群のうちの異なる群から取り出される、請求項1に記載の方法、請求項10に記載の方法、又は請求項11に記載のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862755281P | 2018-11-02 | 2018-11-02 | |
US62/755,281 | 2018-11-02 | ||
US16/591,520 US11244492B2 (en) | 2018-11-02 | 2019-10-02 | Parallel texture sampling |
US16/591,520 | 2019-10-02 | ||
PCT/US2019/057792 WO2020092110A1 (en) | 2018-11-02 | 2019-10-24 | Parallel texture sampling |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022504892A true JP2022504892A (ja) | 2022-01-13 |
Family
ID=70458931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021520389A Pending JP2022504892A (ja) | 2018-11-02 | 2019-10-24 | 並行テクスチャサンプリング |
Country Status (5)
Country | Link |
---|---|
US (2) | US11244492B2 (ja) |
JP (1) | JP2022504892A (ja) |
KR (1) | KR20210087043A (ja) |
CN (1) | CN113302658A (ja) |
WO (1) | WO2020092110A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114175630A (zh) * | 2019-07-28 | 2022-03-11 | 谷歌有限责任公司 | 利用注视点网格渲染沉浸式视频内容的方法、系统和介质 |
US11132831B1 (en) | 2020-03-02 | 2021-09-28 | Qualcomm Incorporated | Methods and apparatus for efficient multi-view rasterization |
US11823318B2 (en) * | 2021-06-04 | 2023-11-21 | Nvidia Corporation | Techniques for interleaving textures |
US11640699B2 (en) * | 2021-08-06 | 2023-05-02 | Meta Platforms Technologies, Llc | Temporal approximation of trilinear filtering |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987567A (en) * | 1996-09-30 | 1999-11-16 | Apple Computer, Inc. | System and method for caching texture map information |
US6304268B1 (en) | 1997-06-26 | 2001-10-16 | S3 Graphics Co., Ltd. | Trilinear texture filtering of two levels of detail based on a single level of detail |
US7050063B1 (en) | 1999-02-11 | 2006-05-23 | Intel Corporation | 3-D rendering texture caching scheme |
US6563507B1 (en) * | 1999-09-22 | 2003-05-13 | Sony Corporation | Storage circuit control device and graphic computation device |
TW459206B (en) * | 2000-03-17 | 2001-10-11 | Silicon Integrated Sys Corp | Texture mapping cache connection device and method |
US6924811B1 (en) * | 2000-11-13 | 2005-08-02 | Nvidia Corporation | Circuit and method for addressing a texture cache |
US6853373B2 (en) * | 2001-04-25 | 2005-02-08 | Raindrop Geomagic, Inc. | Methods, apparatus and computer program products for modeling three-dimensional colored objects |
US6819324B2 (en) | 2002-03-11 | 2004-11-16 | Sun Microsystems, Inc. | Memory interleaving technique for texture mapping in a graphics system |
US6906720B2 (en) * | 2002-03-12 | 2005-06-14 | Sun Microsystems, Inc. | Multipurpose memory system for use in a graphics system |
KR100823373B1 (ko) * | 2003-12-29 | 2008-04-17 | 인텔 코오퍼레이션 | 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘 |
KR101110624B1 (ko) * | 2004-12-15 | 2012-02-16 | 삼성전자주식회사 | 그래픽 처리 기능을 갖는 메모리 컨트롤러 |
US8154564B2 (en) * | 2008-05-21 | 2012-04-10 | Advanced Micro Devices, Inc. | Dynamically configurable bilinear filtering system |
ES2635540T3 (es) * | 2009-11-24 | 2017-10-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Sistema y método de descodificación utilizable en bloques de elementos de textura codificada |
US9483843B2 (en) | 2014-01-13 | 2016-11-01 | Transgaming Inc. | Method and system for expediting bilinear filtering |
JP2015200915A (ja) | 2014-04-03 | 2015-11-12 | ヤマハ株式会社 | キャッシュ装置、および画像処理装置 |
KR20160032597A (ko) * | 2014-09-16 | 2016-03-24 | 삼성전자주식회사 | 텍스쳐를 처리하는 방법 및 장치 |
US10339052B2 (en) * | 2015-03-11 | 2019-07-02 | Centileo Llc | Massive access request for out-of-core textures by a parallel processor with limited memory |
US10593095B2 (en) * | 2015-06-12 | 2020-03-17 | Intel Corporation | Facilitating increased precision in mip-mapped stitched textures for graphics computing devices |
US11023993B2 (en) * | 2015-06-23 | 2021-06-01 | Nxp Usa, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
US9659402B2 (en) * | 2015-06-26 | 2017-05-23 | Intel Corporation | Filtering multi-sample surfaces |
GB2555633B (en) * | 2016-11-07 | 2020-02-26 | Advanced Risc Mach Ltd | Updating data stored in a memory |
US10255655B1 (en) * | 2017-06-16 | 2019-04-09 | Apple Inc. | Serial pixel processing with storage for overlapping texel data |
-
2019
- 2019-10-02 US US16/591,520 patent/US11244492B2/en active Active
- 2019-10-24 CN CN201980087797.4A patent/CN113302658A/zh active Pending
- 2019-10-24 KR KR1020217015175A patent/KR20210087043A/ko unknown
- 2019-10-24 JP JP2021520389A patent/JP2022504892A/ja active Pending
- 2019-10-24 WO PCT/US2019/057792 patent/WO2020092110A1/en active Application Filing
-
2021
- 2021-12-27 US US17/562,723 patent/US11893676B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11244492B2 (en) | 2022-02-08 |
CN113302658A (zh) | 2021-08-24 |
WO2020092110A1 (en) | 2020-05-07 |
KR20210087043A (ko) | 2021-07-09 |
US11893676B2 (en) | 2024-02-06 |
US20200143580A1 (en) | 2020-05-07 |
US20220180590A1 (en) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101923562B1 (ko) | 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법 | |
US11640691B2 (en) | Display engine for post-rendering processing | |
US11170577B2 (en) | Generating and modifying representations of objects in an augmented-reality or virtual-reality scene | |
US11862128B2 (en) | Systems and methods for foveated rendering | |
JP2022504892A (ja) | 並行テクスチャサンプリング | |
US11100992B2 (en) | Selective pixel output | |
US11211034B2 (en) | Display rendering | |
US11222396B2 (en) | Texture memory storage | |
US20210090322A1 (en) | Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene | |
US11138747B1 (en) | Interpolation optimizations for a display engine for post-rendering processing | |
US20230237730A1 (en) | Memory structures to support changing view direction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220802 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231010 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20240430 |