JP5068849B2 - レイトレーシング方法、システム、およびプログラム - Google Patents
レイトレーシング方法、システム、およびプログラム Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 47
- 239000013598 vector Substances 0.000 claims description 25
- 238000013139 quantization Methods 0.000 claims description 7
- 238000007906 compression Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- NRNCYVBFPDDJNE-UHFFFAOYSA-N pemoline Chemical compound O1C(N)=NC(=O)C1C1=CC=CC=C1 NRNCYVBFPDDJNE-UHFFFAOYSA-N 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 238000010276 construction Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding 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
図2に、ある実施形態に係るグローバルグリッドにおける三角形の配置を示す。境界ボリューム階層に照らし、形を三角形の群としてモデリングする際に、個々の多角形をローカルで量子化されたグリッドに配置すると、形状に割れ目または間隙が現れる場合がある。これは、同一のグローバルグリッドに全ての三角形の頂点およびリーフ境界ボックスをスナップすることで防ぐことが可能である。左端の図210は、頂点が量子化される前、かつグリッドに配置される前の隣接する三角形群を示す。中央の図220は、各々のローカルグリッドで量子化および配置された複数の三角形を示す。複数の三角形をマージすると、結合するべき三角形の間に間隙が生じる場合がある。これらの例えば間隙225のような間隙は、ローカル量子化によるアーティファクトであり得る。ある実施形態では、間隙を除去するべく三角形をスナップ可能な、グローバルグリッドを利用できる。これを右端の図230に示す。ここでは、間隙225が除去されてよい。BVHにおいては、グローバルにスナップされた境界ボックスは、頂点の復元によって速やかにスナップされ得ることから、これらを格納する必要がないことは留意に値する。
さらにメモリを節約するべく、三角形の頂点がビット列を用いて指定されてよい。ある実施形態では、境界ボックスの原点Oを基準として頂点位置がエンコードされてよい。したがって、エンコードする頂点群(Ai)について、まずOからAiのそれぞれの頂点へのデルタベクトル(Di={xi,yi,zi})が計算されてよい。その後、max(xi)、max(yi)およびmax(zi)をエンコードするに必要なビット数(nx,ny,nz)がそれぞれ計算されてよい。(nx,ny,nz)は、各頂点の各座標で最大限必要な合計ビット数nを示し、可変ビットエンコーディングスキームをもたらす。ある実施形態では、各頂点に必要なビット数(nx,ny,nz)はビット列としてエンコーディングされる。その後、頂点データは待機状態とされてよい。
三角形の接続性もモデル化が可能であり、これにはいくつかの方法がある。ある方法では、共有の頂点を重複させて、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を表す。
・各リーフの三角形の最大数を例えば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}からなる。
・ストリップは、三角形を交互に時計回りおよび反時計回りにする。各三角形の向きを格納する。
特定のアーキテクチャにおけるデコーディング処理の速度を速めるべく、ある実施形態では対象のアーキテクチャの整列していないロード機能が用いられてよい。このようなアーキテクチャの一例として、x86アーキテクチャがある。x86ファミリーのチップ等は、メモリーロードについて極めて寛大であり得る。ここでは以下のように、64ビットのクワッドワードを整列性に関わらずロードすることができる。
各頂点の表現に必要なビット数nについて、クワッドワードの収納可能な最大の頂点数pn=[64/n]を計算する。
pn個の頂点の整列していないシーケンスを利用して頂点を格納する。
1.qからpn個の頂点をデコードする。全ての頂点がqに収容されることから、この操作にはSHIFT命令およびAND命令のシーケンスが必要な場合がある。
2.qからsnバイト後に位置する次のクワッドワードをロードする。
以下に、圧縮ノードおよび非圧縮ノードの両方を利用可能な2階層のBVH、境界ボックスによるメモリ消費を低減可能である階層的な量子化、ならびに子ノードに対する参照のサイズを低減可能なブロックに関するインデックスおよびブロックの割り当てについて説明する。図7に、ある実施形態に係るプロセスを示す。ステップ710では、子の境界ボックス、つまり子ノードの位置が階層的なエンコーディングを用いて表されてよい。子の境界ボックスの最小位置および最大位置は、これらの親ノードに相対して表されてよい。子の境界ボックスの角の位置が、親ボックスの点、例えば原点に対するオフセットを用いて定義されてよい。子の境界ボックスの各コンポーネントのエンコードに4ビットのみが利用できる場合、境界ボックスのメモリフットプリントは24ビットである。ある実施形態では、ノード毎に4バイト(32ビット)を用いることから、子ノードのインデックス化および以下に詳述する追加情報のエンコードには8ビットを利用可能である。
・境界ボックスに24ビットを用いてよい(付録Bを参照)。
・子ノードのインデックス化に6ビットを用いてよい。
・2つの子をソートする場合に必要となり得る3つの内部ノードの種類X、Y、Zをリーフノードと区別するために2ビットを用いてよい。
前述したプロセスはハードウェア、ファームウェア、またはソフトウェア、あるいは一部の組み合わせによって実装されてよい。さらに、ここに開示した1つ以上の特徴は、ディスクリート回路ロジックおよびICロジック、ASICロジック、およびマイクロコントローラを含むハードウェア、ソフトウェア、ファームウェアおよびこれらの組み合わせによって実装されてよく、またドメイン特化したICパッケージの一部またはICパッケージの組み合わせとして実装されてよい。ここで用いられる用語ソフトウェアとは、ここに開示した1つ以上の機能および/または機能の組み合わせをコンピュータシステムに実行させるコンピュータプログラムロジックを格納したコンピュータ可読媒体を含むコンピュータプログラム製品を示す。コンピュータプログラム製品は、例えばコンパクトディスク、フラッシュメモリ、ROM、または他の不揮発性メモリデバイスを含んでよい。
//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;
}
//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)
- ローカルグリッドで量子化された場合に隣接する三角形の間に発生する間隙が除去されるように、シーンの三角形を、境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上で量子化する段階と、
可変長のビット列として前記三角形の頂点位置をエンコードする段階と、
エンコードされた前記三角形の頂点位置により前記三角形の接続をモデリングする段階と、
モデリングされた前記三角形の少なくとも一部を表すBVHを構築する段階と
を備え、
グラフィックス処理を実行するプロセッサによって実行され、
前記頂点位置をエンコードする段階は、
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルDi={xi,yi,zi}を計算する段階と、
前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定する段階と、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするのに必要なビット数(nx,ny,nz)を決定する段階と、
前記ビット数(nx,ny,nz)をエンコードする段階と
を有し、前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続く方法。 - 前記頂点位置をエンコードする段階は、
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルDi={xi,yi,zi}を計算する段階と、
前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定する段階と、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするに必要なビット数(nx,ny,nz)を決定する段階と、
前記ビット数(nx,ny,nz)をエンコードする段階と、
xi、yiおよびziのそれぞれに前記境界ボックスの最近傍の平面を識別する追加の1ビットを加える段階と
を有し、
前記Diの各コンポーネントは、前記頂点を含む前記最近傍の平面から前記頂点までの距離を前記コンポーネントの軸と共に示し、前記最近傍の平面は、前記軸に垂直であり、原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続く請求項1に記載の方法。 - 前記接続をモデリングする段階は、前記三角形それぞれの各頂点を識別する段階を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項1または2に記載の方法。
- 前記接続をモデリングする段階は、
各頂点を1回識別する段階と、
インデックスをそれぞれ頂点に関連付ける段階と、
前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別する段階と
を有する請求項1から3のいずれか1項に記載の方法。 - 前記接続をモデリングする段階は、
前記BVH内のリーフ毎の三角形の最大数を指定する段階と、
ルックアップテーブル(LUT)を構築する段階と、
前記LUTの各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納する段階と、
前記三角形それぞれの方向を格納する段階と
を有し、前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項1から4のいずれか1項に記載の方法。 - 前記BVHを構築する段階は、
各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義する段階と、
複数の子ノードをブロックにグループ化する段階と、
前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義する段階と、
リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストする段階と、
下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納する段階と
を有する請求項1から5のいずれか1項に記載の方法。 - 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項6に記載の方法。
- プロセッサと、
前記プロセッサと通信するメモリとを備えるシステムであって、
前記メモリは複数の処理命令を格納し、前記複数の処理命令は前記プロセッサに、
ローカルグリッドで量子化された場合に隣接する三角形の間に発生する間隙が除去されるようにシーンの複数の三角形を、境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上で量子化させ、
前記三角形の頂点位置を可変長のビット列としてエンコードさせ、
エンコードされた前記三角形の頂点位置により前記三角形の接続をモデリングさせ、
モデリングされた前記三角形の少なくとも一部を表すBVHを構築させるための処理命令であり、
前記プロセッサに頂点位置をエンコードするように指示する前記命令は、前記プロセッサに
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離であるデルタベクトルDi={xi,yi,zi}を計算させ、
前記境界ボックスの全ての頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定させ、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするに必要なビット数(nx,ny,nz)を決定させ、
前記ビット数(nx,ny,nz)をエンコードさせるための命令を有し、
前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続くシステム。 - 前記プロセッサに頂点位置をエンコードするように指示する前記命令は、前記プロセッサに
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離であるデルタベクトルDi={xi,yi,zi}を計算させ、
前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定させ、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするに必要なビット数(nx,ny,nz)を決定させ、
前記ビット数(nx,ny,nz)をエンコードさせ、
xi、yiおよびziに最近傍の平面を識別する追加の1ビットを加えさせるための命令を有し、
前記Diの各コンポーネントは、前記頂点を含む前記境界ボックスの前記最近傍の平面から前記頂点までの距離を前記コンポーネントの軸と共に示し、前記最近傍の平面は、前記軸に垂直であり、原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続く請求項8に記載のシステム。 - 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに
前記三角形それぞれの各頂点を識別させるための命令を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項8または9に記載のシステム。 - 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに
各頂点を1回識別させ、
インデックスをそれぞれ頂点に関連付けさせ、
前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別させるための命令を有する請求項8から10のいずれか1項に記載のシステム。 - 前記プロセッサに接続をモデリングするように指示する前記命令は、前記プロセッサに、
前記BVH内のリーフ毎の三角形の最大数を指定させ、
ルックアップテーブル(LUT)を構築させ、
各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納させ、
前記三角形それぞれの方向を格納させるための命令を有し、
前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項8から11のいずれか1項に記載のシステム。 - 前記プロセッサに前記BVHを構築するように指示する前記命令は、前記プロセッサに
各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義させ、
複数の子ノードをブロックにグループ化させ、
前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義させ、
リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストさせ、
下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納させるための命令を有する請求項8から12のいずれか1項に記載のシステム。 - 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項13に記載のシステム。
- コンピュータに、
境界ボリューム階層(BVH)のすべてのリーフノードを整列可能であるグローバルグリッド上でシーンの複数の三角形を、ローカルグリッドで量子化された場合に隣接する複数の三角形の間に発生する間隙が除去されるように量子化させる手順と、
前記複数の三角形の頂点位置を可変長のビット列としてエンコードさせる手順と、
エンコードされた前記三角形の頂点位置により前記複数の三角形の接続をモデル化させる手順と、
モデリングされた前記三角形の少なくとも一部を表すBVHを構築させる手順と
を実行させるためのプログラムであって
前記頂点位置をエンコードさせる前記手順は、
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルDi={xi,yi,zi}を計算させる手順と、
前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定させる手順と、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするに必要なビット数(nx,ny,nz)を決定させる手順と、
前記ビット数(nx,ny,nz)をエンコードさせる手順と
を有し、前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続くプログラム。 - 前記頂点位置をエンコードさせる前記手順は、
各頂点iについて、前記頂点を含む境界ボックスの原点からの距離を記述するデルタベクトルDi={xi,yi,zi}を計算させる手順と、
前記境界ボックス内の全ての前記頂点について、前記頂点それぞれの前記デルタベクトルのうち、最大のx、yおよびzコンポーネント、max(xi)、max(yi)およびmax(zi)を決定させる手順と、
前記max(xi)、max(yi)およびmax(zi)をそれぞれエンコードするに必要なビット数(nx,ny,nz)を決定させる手順と、
前記(nx,ny,nz)をエンコードさせる手順と、
xi、yiおよびziに最近傍の平面を識別する追加の1ビットを加えさせる手順と
を有し、
前記Diの各コンポーネントは、前記頂点を含む前記境界ボックスの前記最近傍の平面から前記頂点までの距離を前記コンポーネントの軸と共に示し、前記最近傍の平面は、前記軸に垂直であり、前記原点を含む平面または前記原点を含む前記平面に対向する平面のいずれかであり、前記エンコードされた(nx,ny,nz)に前記頂点の前記デルタベクトルが続く請求項15に記載のプログラム。 - 前記接続をモデリングさせる前記手順は、前記三角形それぞれの各頂点を識別させる手順を有し、前記三角形の1つの頂点が複数の三角形の頂点である場合は、前記頂点は前記複数の三角形のそれぞれについて個別に識別される請求項15または16に記載のプログラム。
- 前記接続をモデリングさせる前記手順は、
各頂点を1回識別させる手順と、
インデックスをそれぞれ頂点に関連付けさせる手順と、
前記三角形の3つの頂点のそれぞれに関連付けられた3つのインデックスをリストすることで前記三角形をそれぞれに識別させる手順と
を有する請求項15から17のいずれか1項に記載のプログラム。 - 前記接続をモデリングさせる手順は、
前記BVH内のリーフ毎の三角形の最大数を指定させる手順と、
ルックアップテーブル(LUT)を構築させる手順と、
各エントリについて、前記三角形の数および前記三角形それぞれの第1の頂点のオフセットを格納させる手順と、
前記三角形それぞれの方向を格納させる手順と
を有し、前記LUTの各エントリはストリップ群に関連付けられ、前記ストリップのそれぞれは、1個以上の隣接する三角形のシーケンスを含み、1個の三角形は前記LUTに1回のみ現れる請求項15から18のいずれか1項に記載のプログラム。 - 前記BVHを構築させる前記手順は、
各子ノードについて、関連付けられた親ノードの境界ボリュームを基準にして指定された境界ボリュームを定義させる手順と、
複数の子ノードをブロックにグループ化させる手順と、
前記ブロックのそれぞれについて、前記ブロック内の各子ノードのインデックスを定義させる手順と、
リーフを含むブロックそれぞれについて、前記ブロックに関連付けられたリーフデータを前記ブロックの後にリストさせる手順と、
下部ノードを圧縮形式で格納し、上部ノードの少なくとも一部を非圧縮形式で格納させる手順と
を有する請求項15から19のいずれか1項に記載のプログラム。 - 前記ブロック内の子ノードは、フォワーディングノードが前記子ノードの従属サブツリーを指すように前記フォワーディングノードにマッピングされ、前記サブツリーは、異なるブロックに存在する請求項20に記載のプログラム。
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)
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)
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 |
-
2010
- 2010-04-29 US US12/770,212 patent/US8669977B2/en not_active Expired - Fee Related
- 2010-08-20 TW TW099127975A patent/TWI517103B/zh not_active IP Right Cessation
- 2010-09-14 GB GB1015347.6A patent/GB2474102B/en not_active Expired - Fee Related
- 2010-09-15 JP JP2010206819A patent/JP5068849B2/ja not_active Expired - Fee Related
- 2010-09-25 CN CN2010105007032A patent/CN102034259B/zh not_active Expired - Fee Related
- 2010-09-29 DE DE102010046891.6A patent/DE102010046891B4/de not_active Expired - Fee Related
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 |