JP5068849B2 - レイトレーシング方法、システム、およびプログラム - Google Patents

レイトレーシング方法、システム、およびプログラム Download PDF

Info

Publication number
JP5068849B2
JP5068849B2 JP2010206819A JP2010206819A JP5068849B2 JP 5068849 B2 JP5068849 B2 JP 5068849B2 JP 2010206819 A JP2010206819 A JP 2010206819A JP 2010206819 A JP2010206819 A JP 2010206819A JP 5068849 B2 JP5068849 B2 JP 5068849B2
Authority
JP
Japan
Prior art keywords
vertex
triangles
max
vertices
triangle
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.)
Expired - Fee Related
Application number
JP2010206819A
Other languages
English (en)
Other versions
JP2011081788A (ja
JP2011081788A5 (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2011081788A publication Critical patent/JP2011081788A/ja
Publication of JP2011081788A5 publication Critical patent/JP2011081788A5/ja
Application granted granted Critical
Publication of JP5068849B2 publication Critical patent/JP5068849B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Description

レイトレーシングは、オフラインのレンダリングおよびインタラクティブなアプリケーションの両方においてますます重要になってきている。レイトレーシングは、その柔軟性と写実的な画質から、大域照明などの課題を解決するに適したアルゴリズムである。近年、リアルタイムのレンダリングにおけるレイトレーシングの適合性が実証されてきた。今日のレイトレーサの性能は、多様な状況のラスタライゼーションを有することで優れており、よりロバスト性に優れた使い勝手がよいものになり得る。従来のラスタライゼーションに基づいたレンダリングパイプラインの利点は、今後登場する完全にプログラム可能なグラフィックスアーキテクチャによって縮小する可能性がある。
しかしながら、レイトレーシングにおける課題の1つに、デバイスメモリにシーン全体を収容可能な場合にのみ最適な性能が発揮され得る点がある。多くの場合、インタラクティブなレイトレーシングの実装は高フレームレートを生じることから、大容量のメモリを利用する。これは、高速ではあるが限られたメモリを有するグラフィックスボードの場合と同じく、実際のアプリケーションでは問題となる。
データ圧縮が高速レイトレーシングにおいて積極的に用いられない理由は、多くの圧縮アルゴリズムの性能の影響とランダムアクセスのサポート欠如とにある。レンダリングの前にデータ群全体を順次復元することが選択肢にない場合がある。最近開発されたアルゴリズムは、その方向性は正しいものの、達成可能な圧縮率が中程度に過ぎないか、またはキャッシュを用いたデータ構造のブロック毎の復元を必要とするかのいずれかである。メモリに限りのある極めて大きなモデルのリアルタイムレイトレーシングにおいては、これらの制限のいずれもが問題となる。
本発明のある実施形態に係る、以下に説明するプロセス全体を示すフローチャート図である。 本発明のある実施形態に係る、グローバルグリッドにおける三角形の配置を示す。 本発明のある実施形態に係る、頂点位置のビット列へのエンコーディングを示すフローチャート図である。 本発明のある実施形態に係る、最近傍の境界平面が追加のビットで示され得る、頂点のエンコーディングを示す。 本発明のある実施形態に係る、三角形の接続性のモデリングにおけるルックアップテーブルの利用を示すフローチャート図である。 本発明のある実施形態に係る、頂点のデコーディングにおける不整列なロードの利用を示す。 本発明のある実施形態に係る、コンパクトな境界ボリューム階層の構築を示すフローチャート図である。 本発明のある実施形態に係る、子ノードがブロックにグループ化され得る境界ボリューム階層のレイアウトを示す。 本発明のある実施形態に係る、以下に説明するプロセスのソフトウェアまたはファームウェアの実装を示す。
類似の符号が同一または機能的に類似な要素を示す図面を参照して、望ましい実施形態について説明する。また図面では、各符号の最上位桁はその符号が最初に現れる図面の番号を示す。具体的な構成および配置について説明するが、これが説明を目的としているに過ぎないことが理解されるべきである。当業者であれば、説明の趣旨および範囲から逸脱することなく他の構成および配置を利用可能であることを認識するであろう。ここに説明する以外の様々なシステムおよびアプリケーションに応用可能であることは、当業者にとって明らかである。
以下に説明する方法およびシステムは、三角形メッシュおよびその境界ボリューム階層(BVH)をコンパクトな階層データ構造として格納することができる。BVHは加速構造、および三角形メッシュの階層圧縮表現として利用できる。これは、BVHが三角メッシュの近似を表現可能であることを活用している。メッシュの頂点は、少数のビットで量子化された値としてBVHのリーフ内部に格納され得る。
しかしながら、リーフノード内の頂点位置を量子化する際に、異なるリーフに存在する隣接する三角形間に間隙が生じ得る。これは、2つのリーフノード内の量子化位置が整列していない場合があることに起因する。ある実施形態では、グリッド上で全てのリーフノードを整列可能なグローバル量子化グリッドにより、この問題を解決できる。三角形の頂点は同一グリッドにスナップされてよく、それらの位置は、それぞれが対応する境界ボックスの原点に対する整数オフセットとして格納可能である。一般的に、1つのリーフノード内の整数位置の範囲は小さく、圧縮が容易である。
整数値は、例えばハフマン符号化または算術符号化等の積極的な圧縮アルゴリズムでエンコードされ得る。ある実施形態では、データがビット列で格納されてよい。適切なアンパック(unpack)関数を利用して、これらのデータを低コストでデコードしてよい。
頂点位置に加えて、頂点の接続性も圧縮可能である。三角形は、ストリップまたはインデックス化されたストリップのいずれか小さい方として、BVHノード内にローカルに格納されてよい。量子化された位置と同じく、頂点インデックスの範囲は小さく、圧縮可能である。
また境界ボリューム階層そのものもコンパクトな形式で格納可能である。BVHノードは量子化できる。さらに、ノードはクラスタで格納可能である。このように、子ポインタは、少数のビットだけを必要とするクラスタ内のローカルオフセットを表現できる。BVHノードのサイズは、全体として例えば32バイトから4バイトへと縮小できる。一般的にBVH構築アルゴリズムについての制限はないことから、従来のビルダを利用可能である。
図1に、ある実施形態に係るプロセスの全体を示す。ステップ110では、モデルの三角形がグローバルグリッドで量子化およびスナップされる。これは、三角形がそれぞれのローカルグリッドで量子化された場合に発生してしまう間隙を除去するべく行なわれてよい。ステップ120では、三角形の頂点位置がビット列としてエンコードされる。これは、頂点を表すために必要なビットの数が最小限となるように行なわれてよい。ステップ130では、三角形の接続性がモデル化される。ある実施形態では、これが以下に詳述するように三角形をストリップとして捉えることで行なわれてよい。ステップ140では、モデルの一部または全てがBVHで表されてよい。ある実施形態では、以下の詳述するようにBVHがコンパクトに構築されてよい。プロセスはステップ150で終了してよい。
<グローバルグリッドでの量子化>
図2に、ある実施形態に係るグローバルグリッドにおける三角形の配置を示す。境界ボリューム階層に照らし、形を三角形の群としてモデリングする際に、個々の多角形をローカルで量子化されたグリッドに配置すると、形状に割れ目または間隙が現れる場合がある。これは、同一のグローバルグリッドに全ての三角形の頂点およびリーフ境界ボックスをスナップすることで防ぐことが可能である。左端の図210は、頂点が量子化される前、かつグリッドに配置される前の隣接する三角形群を示す。中央の図220は、各々のローカルグリッドで量子化および配置された複数の三角形を示す。複数の三角形をマージすると、結合するべき三角形の間に間隙が生じる場合がある。これらの例えば間隙225のような間隙は、ローカル量子化によるアーティファクトであり得る。ある実施形態では、間隙を除去するべく三角形をスナップ可能な、グローバルグリッドを利用できる。これを右端の図230に示す。ここでは、間隙225が除去されてよい。BVHにおいては、グローバルにスナップされた境界ボックスは、頂点の復元によって速やかにスナップされ得ることから、これらを格納する必要がないことは留意に値する。
<頂点位置のエンコーディング>
さらにメモリを節約するべく、三角形の頂点がビット列を用いて指定されてよい。ある実施形態では、境界ボックスの原点Oを基準として頂点位置がエンコードされてよい。したがって、エンコードする頂点群(A)について、まずOからAのそれぞれの頂点へのデルタベクトル(D={x,y,z})が計算されてよい。その後、max(x)、max(y)およびmax(z)をエンコードするに必要なビット数(n,n,n)がそれぞれ計算されてよい。(n,n,n)は、各頂点の各座標で最大限必要な合計ビット数nを示し、可変ビットエンコーディングスキームをもたらす。ある実施形態では、各頂点に必要なビット数(n,n,n)はビット列としてエンコーディングされる。その後、頂点データは待機状態とされてよい。
図3に、ある実施形態に係る頂点のエンコーディングを示す。ステップ310では、各頂点についてデルタベクトル(D={x,y,z})が計算されてよい。このベクトルの各コンポーネントは、境界ボックスの原点から頂点までのそのにおける距離を示す。ステップ320では、Aの全ての頂点について、各の最大値が決定されてよい。これらの最大値をmax(x)、max(y)およびmax(z)として示す。ステップ330では、これらの最大値のそれぞれをエンコーディングするために必要なビット数が決定されてよい。これにより、これらの最大値を表す3つの値(n,n,n)が生じる。ステップ340では、これらの値(n,n,n)がビット列で表され、Aの頂点データがこれらに続いてよい。プロセスはステップ350で終了してよい。
境界ボックス内の頂点データをエンコードする技術の1つに、原点からの整数デルタベクトルを計算する方法がある。しかしながら、リーフ境界ボックスは、頂点を包含する実際の境界ボックスである。頂点の一部が境界ボックスの1つの面の上または近傍に位置することから、原点からではなく最近傍の平面からのデルタ値を計算することにより、より少数のビットで表現可能な小さなデルタベクトルをもたらし得る場合がある。
したがって、ある実施形態では、デルタベクトルの各コンポーネントについて1ビットを追加してすることで、距離の計測が開始される最近傍の平面を識別してよい。これにより、頂点データの最終的なサイズ、つまりビット数を低減することができる。これは特に、大きな三角形を数多く有するモデルにおいて有効である。図4に示す二次元の例では、頂点Dを含む各頂点についてデルタベクトルが作成されてよい。ここではあらゆる頂点について、頂点から405で示された原点Oまでのx方向の距離を示すためにxminが用いられてよい。原点405からDまでのy方向の距離を示すために可変のyminが用いられてよい。頂点Dにおいては、yでの最近傍の「平面」は上部境界410であり、xでの最近傍の「平面」は右端境界420である。従って、頂点Dは(xmax ,ymax )としてエンコードされ、これらの座標はそれぞれ上部境界410および右端境界420からの距離を表す。その後、各座標に最近傍の境界を識別する1ビットが追加されてよい。追加のビットは、第1座標の場合、上部境界または下部境界のいずれかを意味し、第2座標の場合、右境界または左境界のいずれかを意味する。
頂点データのデコーディングは本質的に、各コンポーネントに必要なビット数の読み取りおよび頂点データのデコーディングであってよい。
簡潔さと説明の容易さを目的に、図4では二次元モデルを図示することが理解されるべきである。この例は、境界が線分ではなく平面である三次元モデルへも拡張可能である。ある頂点をエンコードする場合、x座標およびy座標に加えてz座標も関与する。
<三角形の接続性>
三角形の接続性もモデル化が可能であり、これにはいくつかの方法がある。ある方法では、共有の頂点を重複させて、1個の三角形について3つの頂点位置が格納されてよい。図4のリーフの例では、頂点位置シーケンス{ABE,EBD,CED}が直接エンコードされてよい。別の方法では、頂点位置のアレイを格納し、その後1個の三角形について3つのインデックスを格納してよい。インデックスは、アレイ内で識別される頂点位置を示してよい。図4の例では、頂点データとして{ABCDE}が格納されてよい。インデックスは、例えば第1の識別された頂点(A)は0、第2の識別された頂点(B)は1などと定義されてよい。この結果、{[0,1,4],[4,1,3],[2,4,3]}を用いて三角形が指定されてよい。例えば、[0,1,4]は三角形ABEを表す。
三角形の接続性をモデル化する別の方法としては、隣接する三角形をストリップとして捉える方法がある。ストリップまたはインデックス化されたストリップを利用することで、リーフサイズおよびデコーディング時間を低減する機会がもたらされる場合がある。ある実施形態では、リーフに包含された三角形メッシュのストリップシステムが利用される。このようなシステムは、例えば1個の三角形が続く3個の三角形のストリップが続く4個の三角形のストリップといったリーフのメッシュレイアウトを処理可能である。この方法は自動的に作成され、次のように設計され得るルックアップテーブル(LUT)を用いてよい。
・各リーフの三角形の最大数を例えば14個に制限する。
・LUTの各エントリが1つのメッシュレイアウトを処理する。例えば、エントリSTRIP3X3_STRIP2X3_TRIX4は、3個の三角形の3つのストリップ、その後2個の三角形の3つのストリップ、その後4個の三角形からなるレイアウトを処理する。
・ストリップをサイズ順に並べ替え、エントリ数を制限する。したがって、STRIP4X1_STRIP3X3はエントリとして正しいが、STRIP3X3_STRIP4X1は正しくない。
・各エントリについて、三角形の数および第1の頂点のオフセットを格納する。例えば、エントリSTRIP3X1_TRIX2は5個の三角形および5個の三角形のオフセット{0,1,2,5,8}からなる。
・ストリップは、三角形を交互に時計回りおよび反時計回りにする。各三角形の向きを格納する。
LUTはストリップまたはインデックス化されたストリップの使用に依存せずともよい。リーフが三角形ストリップを格納する場合、テーブルのオフセットが頂点位置のオフセットとなってよい。一方で、リーフがインデックス化されたストリップを格納する場合、テーブルが頂点のインデックスを提供してよい。ストリップおよびインデックス化されたストリップの両方が圧縮処理中に計算されてよく、より小さい表現のみが保存されてよい。その後リーフは、ストリップまたはインデックス化されたストリップの存在を示す追加のビットでフラグされてよい。
図5は、ある実施形態に係る三角形の接続性をモデリングするためのストリップの利用に関するプロセスを示す。ステップ510では、単一のリーフ内に含まれ得る三角形の上限数が選択されてよい。ステップ520では、各エントリが単一のメッシュレイアウトに対応するルックアップテーブルが作成されてよい。ステップ530では、サイズ別に並べられたストリップが各エントリに格納されてよい。ステップ540では、各エントリで三角形の数および各第1の頂点のオフセットが格納されてよい。ステップ550では、三角形の向きが格納されてよい。プロセスはステップ560で終了してよい。
<デコーディング>
特定のアーキテクチャにおけるデコーディング処理の速度を速めるべく、ある実施形態では対象のアーキテクチャの整列していないロード機能が用いられてよい。このようなアーキテクチャの一例として、x86アーキテクチャがある。x86ファミリーのチップ等は、メモリーロードについて極めて寛大であり得る。ここでは以下のように、64ビットのクワッドワードを整列性に関わらずロードすることができる。
各頂点の表現に必要なビット数nについて、クワッドワードの収納可能な最大の頂点数p=[64/n]を計算する。
個の頂点の整列していないシーケンスを利用して頂点を格納する。
最終段階を図6の実施形態に示す。ここではnが44ビットであり、pが1である。44ビットの1つの頂点がエンコードされてよく、バイトの境界までの4ビットは空白である。したがって、合計48ビットが頂点に割り当てられる。次の頂点は、先の頂点の開始後に6バイト(48ビット=(8ビット/バイト)×(6バイト))にエンコードされる。
個の頂点の各シーケンスは新たなバイトで開始することから、高速な整列されていないロードがアーキテクチャでサポートされている場合には、デコーディング処理が向上する。高速なデコーディングでは、まず全ての頂点サイズnε[1...64]について2つの値を格納するルックアップテーブル(LUT)が計算されてよい。ここでのpはクワッドワード内に格納され得る頂点の数であり、次の頂点(または複数の頂点)の位置を基準にしてバイトで表されたsをオフセットしてデコードする。
デコーディング処理は以下のように行われてよい。ここでのqは、デコーディングが現在行なわれている位置からのクワッドワードである。
1.qからp個の頂点をデコードする。全ての頂点がqに収容されることから、この操作にはSHIFT命令およびAND命令のシーケンスが必要な場合がある。
2.qからsバイト後に位置する次のクワッドワードをロードする。
デコーディング処理を向上するべく、整数SIMD演算が利用されてよい。ある実施形態では、ビット列からのデルタ値が取得されると、SIMD演算を用いたブランチレスコードが、整数スナップ済の位置を取得し、その後スナップするグリッドのセルサイズおよび原点を用いてワールド空間フローティング点の位置を計算してよい。付録Aに頂点データのデコーディングの擬似コードの例を示す。
<BVHツリーレイアウト>
以下に、圧縮ノードおよび非圧縮ノードの両方を利用可能な2階層のBVH、境界ボックスによるメモリ消費を低減可能である階層的な量子化、ならびに子ノードに対する参照のサイズを低減可能なブロックに関するインデックスおよびブロックの割り当てについて説明する。図7に、ある実施形態に係るプロセスを示す。ステップ710では、子の境界ボックス、つまり子ノードの位置が階層的なエンコーディングを用いて表されてよい。子の境界ボックスの最小位置および最大位置は、これらの親ノードに相対して表されてよい。子の境界ボックスの角の位置が、親ボックスの点、例えば原点に対するオフセットを用いて定義されてよい。子の境界ボックスの各コンポーネントのエンコードに4ビットのみが利用できる場合、境界ボックスのメモリフットプリントは24ビットである。ある実施形態では、ノード毎に4バイト(32ビット)を用いることから、子ノードのインデックス化および以下に詳述する追加情報のエンコードには8ビットを利用可能である。
ステップ720では、子ノードがブロックとしてグループ化されてよい。図8の実施形態が示すように、2つのインデックス化システムが利用されてよい。ブロック内では、子が少数のビットを用いてインデックス化されてよい。図8では、例えばルートノードRから複数のノードNをインデックス化するべく、少数のインデックスが用いられてよい。現在のブロック外の子を参照するには、専用のフォワードノードに4バイトの整数が格納されてよい。図では、フォワードノードFはボトムノードBによって参照されてよい。フォワードノードF自身がそれぞれのサブツリーのルートであるブロックルートRを参照してよい。
このレイアウトを利用して、4バイトノードの形式は以下のように構築されてよい。
・境界ボックスに24ビットを用いてよい(付録Bを参照)。
・子ノードのインデックス化に6ビットを用いてよい。
・2つの子をソートする場合に必要となり得る3つの内部ノードの種類X、Y、Zをリーフノードと区別するために2ビットを用いてよい。
ステップ730では、リーフデータがツリーノードとインターリーブされてよい。三角形のインデックスまたは頂点位置等のリーフデータをインデックス化する際に、1つ以上の4バイトのインデックスを用いることは無駄である場合がある。図8の実施形態が示すように、リーフデータとツリーノードとをインターリーブすることで、外部アレイへの参照を回避できる場合がある。各ブロックの後にリーフデータを待機状態とすることで、リーフデータはメモリ内のリーフ位置に相対してインデックス化され得る。
ステップ740では、BVHの下部ノードが圧縮され、上部ノードの少なくとも一部は圧縮されないままであってよい。トップノードはレイの大部分によってトラバースされることから、メモリのフットプリントを小さく保ちつつ、性能への影響を抑えることが可能である。
プロセスはステップ750で終了してよい。
<実装>
前述したプロセスはハードウェア、ファームウェア、またはソフトウェア、あるいは一部の組み合わせによって実装されてよい。さらに、ここに開示した1つ以上の特徴は、ディスクリート回路ロジックおよびICロジック、ASICロジック、およびマイクロコントローラを含むハードウェア、ソフトウェア、ファームウェアおよびこれらの組み合わせによって実装されてよく、またドメイン特化したICパッケージの一部またはICパッケージの組み合わせとして実装されてよい。ここで用いられる用語ソフトウェアとは、ここに開示した1つ以上の機能および/または機能の組み合わせをコンピュータシステムに実行させるコンピュータプログラムロジックを格納したコンピュータ可読媒体を含むコンピュータプログラム製品を示す。コンピュータプログラム製品は、例えばコンパクトディスク、フラッシュメモリ、ROM、または他の不揮発性メモリデバイスを含んでよい。
図9は、前述したプロセスのソフトウェアまたはファームウェアによる実施形態を示す。システム900は、プロセッサ920と、コンピュータプログラムロジック940を格納可能な1つ以上のコンピュータ可読媒体を含んでよいメモリ本体910とを備えてよい。メモリ910は、例えばハードディスクおよびドライブ、コンパクトディスク等の着脱可能媒体およびドライブ、またはROMデバイスとして実装されてよい。プロセッサ920およびメモリ910は、例えばバス等の当業者によって知られている複数の技術のうちいずれかを用いて通信してよい。メモリ910内に含まれるロジックは、プロセッサ920によって読み取られ、実行されてよい。集合的にI/O930として示された1つ以上のI/Oポートおよび/またはI/Oデバイスもまた、プロセッサ920およびメモリ910に接続されてよい。
ある実施形態では、コンピュータプログラムロジックがモジュール950〜970を含んでよい。グリッドロジック950は、三角形がスナップされるようにグローバルグリッドで三角形の量子化を行なってよい。エンコーディングロジック960は、前述のように頂点位置をビット列にエンコード、および三角形の接続性をエンコードしてよい。BVHロジック970は、前述のようにコンパクトなBVHを構築してよい。
機能、特徴および関係を示す機能的な構造ブロックを用いて方法およびシステムを開示した。これらの機能的な構造ブロックの境界の少なくとも一部は、説明の便宜上、任意に定義されている。指定された機能および関係が適切に実行される限り、別の境界が定義され得る。
以上に様々な実施形態を開示したが、これらは例示的に示されており限定的なものではないことが理解されるべきである。以上に開示した方法およびシステムの趣旨および範囲から逸脱することなく、形式および詳細を多様に変更可能であることは、当業者にとって明らかである。したがって、請求項の範囲および広さは以上に開示したいかなる例示的な実施形態によっても限定されるべきではない。
付録A
<頂点データの高速デコーディング>
//3バイトの圧縮済AABB。各コンポーネントに4ビットが使用されている。
struct CAABB {
void decode(aos3f pMin, aos3f pMax,
aos3f &tMin, aos3f &tMax) const;
//各コンポーネントに最小値/最大値を格納。
uint8_t pMinMax[3];
//8ビットの最小値/最大値をフロートへ変換。
static const float dLUTMinMax[256][2];
};

//SSE4.1命令を用いて高速ギャザー。
FINLINE aos3f
aos3f::gather(const float *x, const float *y, const float *z) {
aos3f to;
to.vec = _mm_load_ss(x);
to.vec = _mm_castsi128_ps(_mm_insert_epi32(
_mm_castps_si128(to.vec), *((int *) y), 1));
to.vec = _mm_castsi128_ps(_mm_insert_epi32(
_mm_castps_si128(to.vec), *((int *) z), 2));
return to;
}

//SSEハンドコードのギャザーを用いて高速復元。
FINLINE void
CAABB4::decode(aos3f pMin, pMax, aos3f &tMin, aos3f &tMax) const
{
const aos3f ext = pMax - pMin;
const float *x = dLUTMinMax[this->pMinMax[0]];
const float *y = dLUTMinMax[this->pMinMax[1]];
const float *z = dLUTMinMax[this->pMinMax[2]];
const aos3f deltaMin = aos3f::gather(x, y, z);
const aos3f deltaMax = aos3f::gather(x + 1, y + 1, z + 1);
const aos3f tmpMin = pMin + ext * deltaMin;
const aos3f tmpMax = pMin + ext * deltaMax;
tMin = tmpMin;
tMax = tmpMax;
}
付録B
<圧縮ノードの高速デコーディング>
//3バイトの圧縮済AABB。各コンポーネントに4ビットが使用されている。
struct CAABB {
void decode(aos3f pMin, aos3f pMax,
aos3f &tMin, aos3f &tMax) const;
//各コンポーネントに最小値/最大値を格納。
uint8_t pMinMax[3];
//8ビットの最小値/最大値をフロートへ変換。
static const float dLUTMinMax[256][2];
};

//SSE4.1命令を用いて高速ギャザー。
FINLINE aos3f
aos3f::gather(const float *x, const float *y, const float *z) {
aos3f to;
to.vec = _mm_load_ss(x);
to.vec = _mm_castsi128_ps(_mm_insert_epi32(
_mm_castps_si128(to.vec), *((int *) y), 1));
to.vec = _mm_castsi128_ps(_mm_insert_epi32(
_mm_castps_si128(to.vec), *((int *) z), 2));
return to;
}

//SSEハンドコードのギャザーを用いて高速復元。
FINLINE void
CAABB4::decode(aos3f pMin, pMax, aos3f &tMin, aos3f &tMax) const
{
const aos3f ext = pMax - pMin;
const float *x = dLUTMinMax[this->pMinMax[0]];
const float *y = dLUTMinMax[this->pMinMax[1]];
const float *z = dLUTMinMax[this->pMinMax[2]];
const aos3f deltaMin = aos3f::gather(x, y, z);
const aos3f deltaMax = aos3f::gather(x + 1, y + 1, z + 1);
const aos3f tmpMin = pMin + ext * deltaMin;
const aos3f tmpMax = pMin + ext * deltaMax;
tMin = tmpMin;
tMax = tmpMax;
}

Claims (21)

  1. ローカルグリッドで量子化された場合に隣接する三角形の間に発生する間隙が除去されるように、シーンの三角形を、境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上で量子化する段階と、
    可変長のビット列として前記三角形の頂点位置をエンコードする段階と、
    エンコードされた前記三角形の頂点位置により前記三角形の接続をモデリングする段階と、
    モデリングされた前記三角形の少なくとも一部を表すBVHを構築する段階と
    を備え、
    グラフィックス処理を実行するプロセッサによって実行され、
    前記頂点位置をエンコードする段階は、
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルD={x,y,z}を計算する段階と、
    前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定する段階と、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするのに必要なビット数(n,n,n)を決定する段階と、
    前記ビット数(n,n,n)をエンコードする段階と
    を有し、前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続く方法。
  2. 前記頂点位置をエンコードする段階は、
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルD={x,y,z}を計算する段階と、
    前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定する段階と、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするに必要なビット数(n,n,n)を決定する段階と、
    前記ビット数(n,n,n)をエンコードする段階と、
    、yおよびziのそれぞれに前記境界ボックスの最近傍の平面を識別する追加の1ビットを加える段階と
    を有し、
    前記Dの各コンポーネントは、前記頂点を含む前記最近傍の平面から前記頂点までの距離を前記コンポーネントのと共に示し、前記最近傍の平面は、前記に垂直であり、原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続く請求項1に記載の方法。
  3. 前記接続をモデリングする段階は、前記三角形それぞれの各頂点を識別する段階を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項1または2に記載の方法。
  4. 前記接続をモデリングする段階は、
    各頂点を1回識別する段階と、
    インデックスをそれぞれ頂点に関連付ける段階と、
    前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別する段階と
    を有する請求項1から3のいずれか1項に記載の方法。
  5. 前記接続をモデリングする段階は、
    前記BVH内のリーフ毎の三角形の最大数を指定する段階と、
    ルックアップテーブル(LUT)を構築する段階と、
    前記LUTの各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納する段階と、
    前記三角形それぞれの方向を格納する段階と
    を有し、前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項1から4のいずれか1項に記載の方法。
  6. 前記BVHを構築する段階は、
    各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義する段階と、
    複数の子ノードをブロックにグループ化する段階と、
    前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義する段階と、
    リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストする段階と、
    下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納する段階と
    を有する請求項1から5のいずれか1項に記載の方法。
  7. 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項6に記載の方法。
  8. プロセッサと、
    前記プロセッサと通信するメモリとを備えるシステムであって、
    前記メモリは複数の処理命令を格納し、前記複数の処理命令は前記プロセッサに、
    ローカルグリッドで量子化された場合に隣接する三角形の間に発生する間隙が除去されるようにシーンの複数の三角形を、境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上で量子化させ、
    前記三角形の頂点位置を可変長のビット列としてエンコードさせ、
    エンコードされた前記三角形の頂点位置により前記三角形の接続をモデリングさせ、
    モデリングされた前記三角形の少なくとも一部を表すBVHを構築させるための処理命令であり、
    前記プロセッサに頂点位置をエンコードするように指示する前記命令は、前記プロセッサに
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離であるデルタベクトルD={x,y,z}を計算させ、
    前記境界ボックスの全ての頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定させ、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするに必要なビット数(n,n,n)を決定させ、
    前記ビット数(n,n,n)をエンコードさせるための命令を有し、
    前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続くシステム。
  9. 前記プロセッサに頂点位置をエンコードするように指示する前記命令は、前記プロセッサに
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離であるデルタベクトルD={x,y,z}を計算させ、
    前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定させ、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするに必要なビット数(n,n,n)を決定させ、
    前記ビット数(n,n,n)をエンコードさせ、
    、yおよびzに最近傍の平面を識別する追加の1ビットを加えさせるための命令を有し、
    前記Dの各コンポーネントは、前記頂点を含む前記境界ボックスの前記最近傍の平面から前記頂点までの距離を前記コンポーネントのと共に示し、前記最近傍の平面は、前記に垂直であり、原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続く請求項8に記載のシステム。
  10. 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに
    前記三角形それぞれの各頂点を識別させるための命令を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項8または9に記載のシステム。
  11. 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに
    各頂点を1回識別させ、
    インデックスをそれぞれ頂点に関連付けさせ、
    前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別させるための命令を有する請求項8から10のいずれか1項に記載のシステム。
  12. 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに、
    前記BVH内のリーフ毎の三角形の最大数を指定させ、
    ルックアップテーブル(LUT)を構築させ、
    各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納させ、
    前記三角形それぞれの方向を格納させるための命令を有し、
    前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項8から11のいずれか1項に記載のシステム。
  13. 前記プロセッサに前記BVHを構築するように指示する前記命令は、前記プロセッサに
    各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義させ、
    複数の子ノードをブロックにグループ化させ、
    前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義させ、
    リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストさせ、
    下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納させるための命令を有する請求項8から12のいずれか1項に記載のシステム。
  14. 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項13に記載のシステム。
  15. コンピュータに、
    境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上でシーンの複数の三角形を、ローカルグリッドで量子化された場合に隣接する複数の三角形の間に発生する間隙が除去されるように量子化させる手順と、
    前記複数の三角形の頂点位置を可変長のビット列としてエンコードさせる手順と、
    エンコードされた前記三角形の頂点位置により前記複数の三角形の接続をモデル化させる手順と、
    モデリングされた前記三角形の少なくとも一部を表すBVHを構築させる手順と
    を実行させるためのプログラムであって
    前記頂点位置をエンコードさせる前記手順は、
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルD={x,y,z}を計算させる手順と、
    前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定させる手順と、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするに必要なビット数(n,n,n)を決定させる手順と、
    前記ビット数(n,n,n)をエンコードさせる手順と
    を有し、前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続くプログラム。
  16. 前記頂点位置をエンコードさせる前記手順は、
    各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルD={x,y,z}を計算させる手順と、
    前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(x)、max(y)およびmax(z)を決定させる手順と、
    前記max(x)、max(y)およびmax(z)をそれぞれエンコードするに必要なビット数(n,n,n)を決定させる手順と、
    前記(n,n,n)をエンコードさせる手順と、
    、yおよびzに最近傍の平面を識別する追加の1ビットを加えさせる手順と
    を有し、
    前記Dの各コンポーネントは、前記頂点を含む前記境界ボックスの前記最近傍の平面から前記頂点までの距離を前記コンポーネントのと共に示し、前記最近傍の平面は、前記に垂直であり、前記原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(n,n,n)に前記頂点の前記デルタベクトルが続く請求項15に記載のプログラム。
  17. 前記接続をモデリングさせる前記手順は、前記三角形それぞれの各頂点を識別させる手順を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項15または16に記載のプログラム。
  18. 前記接続をモデリングさせる前記手順は、
    各頂点を1回識別させる手順と、
    インデックスをそれぞれ頂点に関連付けさせる手順と、
    前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別させる手順と
    を有する請求項15から17のいずれか1項に記載のプログラム。
  19. 前記接続をモデリングさせる手順は、
    前記BVH内のリーフ毎の三角形の最大数を指定させる手順と、
    ルックアップテーブル(LUT)を構築させる手順と、
    各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納させる手順と、
    前記三角形それぞれの方向を格納させる手順と
    を有し、前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項15から18のいずれか1項に記載のプログラム。
  20. 前記BVHを構築させる前記手順は、
    各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義させる手順と、
    複数の子ノードをブロックにグループ化させる手順と、
    前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義させる手順と、
    リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストさせる手順と、
    下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納させる手順と
    を有する請求項15から19のいずれか1項に記載のプログラム。
  21. 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項20に記載のプログラム。
JP2010206819A 2009-10-01 2010-09-15 レイトレーシング方法、システム、およびプログラム Expired - Fee Related JP5068849B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US24778109P 2009-10-01 2009-10-01
US61/247,781 2009-10-01
US12/770,212 US8669977B2 (en) 2009-10-01 2010-04-29 Hierarchical mesh quantization that facilitates efficient ray tracing
US12/770,212 2010-04-29

Publications (3)

Publication Number Publication Date
JP2011081788A JP2011081788A (ja) 2011-04-21
JP2011081788A5 JP2011081788A5 (ja) 2012-07-19
JP5068849B2 true JP5068849B2 (ja) 2012-11-07

Family

ID=43065205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010206819A Expired - Fee Related JP5068849B2 (ja) 2009-10-01 2010-09-15 レイトレーシング方法、システム、およびプログラム

Country Status (6)

Country Link
US (1) US8669977B2 (ja)
JP (1) JP5068849B2 (ja)
CN (1) CN102034259B (ja)
DE (1) DE102010046891B4 (ja)
GB (1) GB2474102B (ja)
TW (1) TWI517103B (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120088783A (ko) * 2009-10-30 2012-08-08 인텔 코오퍼레이션 계층적 가속 구조를 사용한 그래픽 렌더링
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
US9965821B2 (en) 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9224235B2 (en) * 2013-03-20 2015-12-29 Nvidia Corporation System, method, and computer program product for compression of a bounding volume hierarchy
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
KR102230200B1 (ko) 2014-07-04 2021-03-19 삼성전자주식회사 객체에 대한 바운딩 박스의 좌표 값을 표현하는 방법 및 장치
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9552664B2 (en) * 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
US10559125B2 (en) 2015-12-02 2020-02-11 Samsung Electronics Co., Ltd. System and method of constructing bounding volume hierarchy tree
US9928640B2 (en) * 2015-12-18 2018-03-27 Intel Corporation Decompression and traversal of a bounding volume hierarchy
KR102604737B1 (ko) * 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
EP3923246A3 (en) * 2016-03-21 2022-06-15 Imagination Technologies Limited Processing a hierarchy for rendering a scene
US10043303B2 (en) * 2016-03-30 2018-08-07 Intel IP Corporation Methods and apparatus for more efficient ray tracing of instanced geometry
US9858704B2 (en) * 2016-04-04 2018-01-02 Intel Corporation Reduced precision ray traversal with plane reuse
US10861216B2 (en) * 2017-04-07 2020-12-08 Intel Corporation Ray tracing apparatus and method for memory access and register operations
DE102019108046A1 (de) 2018-04-11 2019-10-17 Intel IP Corporation Vorrichtung und verfahren zum komprimieren von blattknoten einer hüllkörperhierarchie (bhv)
US10839475B2 (en) * 2018-04-11 2020-11-17 Intel IP Corporation Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH)
US10885698B2 (en) * 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
US11263800B2 (en) 2019-12-27 2022-03-01 Intel Corporation Apparatus and method for quantized convergent direction-based ray sorting
US11663777B2 (en) * 2020-03-15 2023-05-30 Intel Corporation Apparatus and method for motion blur with a dynamic quantization grid
US11521343B2 (en) * 2020-07-30 2022-12-06 Apple Inc. Graphics memory space for shader core
WO2023014086A1 (ko) * 2021-08-03 2023-02-09 엘지전자 주식회사 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
US20230097562A1 (en) * 2021-09-28 2023-03-30 Advanced Micro Devices, Inc. Acceleration structures with delta instances
US20230267650A1 (en) * 2022-02-21 2023-08-24 Microsoft Technology Licensing, Llc Data compression

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2812168B2 (ja) 1993-12-27 1998-10-22 松下電器産業株式会社 形状データ圧縮方法および形状データ伸長方法
US6525722B1 (en) * 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5838830A (en) 1996-09-18 1998-11-17 Sharp Laboratories Of America, Inc. Vertex-based hierarchical shape representation and coding method and apparatus
US6718290B1 (en) * 1998-12-10 2004-04-06 Georgia Tech Research Corporation Systems and methods for encoding tetrahedral meshes
SG93211A1 (en) * 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
JP2002369205A (ja) 2001-06-06 2002-12-20 Matsushita Electric Ind Co Ltd 動画像生成装置
US6867778B2 (en) * 2002-02-28 2005-03-15 Sun Microsystems, Inc. End point value correction when traversing an edge using a quantized slope value
FR2873472B1 (fr) 2004-07-22 2007-02-09 Commissariat Energie Atomique Procede et systeme d'identification de zones de proximite entre plusieurs objets geometriques simules numeriquement
US7439973B2 (en) 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US20080122838A1 (en) * 2006-09-27 2008-05-29 Russell Dean Hoover Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
JP4902748B2 (ja) 2006-12-08 2012-03-21 メンタル イメージズ ゲーエムベーハー 階層型オクルージョンカリングを使用するコンピュータグラフィックシャドウボリューム
US7719532B2 (en) * 2007-02-09 2010-05-18 International Business Machines Corporation Efficient and flexible data organization for acceleration data structure nodes
JP4721072B2 (ja) 2008-02-12 2011-07-13 株式会社アクセル ポリゴンデータの圧縮システムおよび伸張システム
US8339395B2 (en) * 2008-07-08 2012-12-25 Lockheed Martin Corporation Method and apparatus for model compression

Also Published As

Publication number Publication date
TW201135672A (en) 2011-10-16
JP2011081788A (ja) 2011-04-21
DE102010046891A1 (de) 2011-04-07
US20110080403A1 (en) 2011-04-07
TWI517103B (zh) 2016-01-11
GB201015347D0 (en) 2010-10-27
GB2474102B (en) 2012-04-25
GB2474102A (en) 2011-04-06
DE102010046891B4 (de) 2014-11-27
CN102034259B (zh) 2013-11-20
US8669977B2 (en) 2014-03-11
CN102034259A (zh) 2011-04-27

Similar Documents

Publication Publication Date Title
JP5068849B2 (ja) レイトレーシング方法、システム、およびプログラム
US10403004B2 (en) Compressing blocks of data values by performing spatial decorrelation on reorganized blocks
US9478002B2 (en) Vertex parameter data compression
CN113615181A (zh) 用于点云编码的隐式四叉树或二叉树几何形状分割
JP2011081788A5 (ja)
JP2022539411A (ja) 点群符号化方法、点群復号化方法、符号器、復号器及びコンピュータ記憶媒体
JP4808771B2 (ja) 3次元メッシュ情報の符号化及び復号化装置ならびにその方法
US20230108967A1 (en) Micro-meshes, a structured geometry for computer graphics
US8928661B2 (en) Representing a field over a triangular mesh
KR20160001652A (ko) 데이터 프로세싱 방법 및 디바이스
Segovia et al. Memory efficient ray tracing with hierarchical mesh quantization
US20230111561A1 (en) Data structures, methods and tiling engines for storing tiling information in a graphics processing system
KR20220123034A (ko) 옥트리 기반의 포인트 클라우드 코딩에서의 평면 모드에 대한 컨텍스트 결정
JP2020519042A (ja) ビデオへのデルタカラー圧縮の適用
Derzapf et al. Dependency‐free parallel progressive meshes
KR20140037897A (ko) 반복 구조를 갖는 3d 모델을 위한 비트스트림을 인코딩하고 디코딩하는 시스템 및 방법
Derzapf et al. Parallel View-Dependent Refinement of Compact Progressive Meshes.
KR101883532B1 (ko) 반복적인 구조 발견 기반 3d 모델 압축의 비트스트림을 생성하기 위한 방법 및 장치
Aleardi et al. Array-based compact data structures for triangulations: Practical solutions with theoretical guarantees
Aleardi et al. ESQ: Editable SQuad representation for triangle meshes
US20220286677A1 (en) Point cloud processing method, encoder, decoder and storage medium
JP5932986B2 (ja) メッシュシーケンスファイルフォーマット
Meyer et al. Data‐Parallel Decompression of Triangle Mesh Topology
CN113570691A (zh) 用于体素模型的存储优化方法、装置及电子设备
Mlakar et al. End‐to‐End Compressed Meshlet Rendering

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120606

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: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120815

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5068849

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees