JP6948226B2 - 加速構造を生成する方法及びその装置 - Google Patents

加速構造を生成する方法及びその装置 Download PDF

Info

Publication number
JP6948226B2
JP6948226B2 JP2017211625A JP2017211625A JP6948226B2 JP 6948226 B2 JP6948226 B2 JP 6948226B2 JP 2017211625 A JP2017211625 A JP 2017211625A JP 2017211625 A JP2017211625 A JP 2017211625A JP 6948226 B2 JP6948226 B2 JP 6948226B2
Authority
JP
Japan
Prior art keywords
bounding box
primitives
primitive
aligned
ray
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.)
Active
Application number
JP2017211625A
Other languages
English (en)
Other versions
JP2018073427A5 (ja
JP2018073427A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018073427A publication Critical patent/JP2018073427A/ja
Publication of JP2018073427A5 publication Critical patent/JP2018073427A5/ja
Application granted granted Critical
Publication of JP6948226B2 publication Critical patent/JP6948226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/55Radiosity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • 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)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Description

本発明は、光線追跡に使用される加速構造を生成する方法及びその装置に関する。
三次元(3D:3-dimensional)レンダリングは、三次元客体データを与えられたカメラの視点(view point)から見える映像に合成(synthesis)する映像処理過程(process)である。三次元レンダリング時、客体を、さらに臨場感あるように表現するために、既定の光源から出た光線が、物体で反射する様子を基に、客体に関するデータを決定する光線追跡方法が使用される。
該光線追跡方法においては、レンダリングの対象になる客体と光線とが交差する地点を追跡するために、客体を空間的に区分した加速構造(acceleration structure)を生成し、生成された加速構造を探索し、光線とプリミティブとの交差(ray-primitive intersection)いかんを確認することができる。一方、光線追跡方法での探索と交差検査との過程は、客体で反射した全ての光線を追跡することにより、多くの演算量(computation)及び広いメモリ帯域幅(memory bandwidth)を必要とする。そのため、光線追跡方法での探索と交差検査との過程をさらに効率的に遂行するための加速構造を生成する方法が持続的に研究されている。
本発明が解決しようとする課題は、光線追跡に使用される加速構造を生成する方法及びその装置において、加速構造の品質を維持しながら、迅速に加速構造を生成することができる方法及びその装置を提供することである。
一実施形態による、光線追跡に使用される加速構造を生成する方法は、三次元空間に含まれた複数のプリミティブそれぞれの位置を示す線形コードを生成させる段階と、生成された線形コードにより、複数のプリミティブを整列する段階と、整列された複数のプリミティブを順次にバウンディングボックスに入力し、かつ、バウンディングボックスのサイズ変化比率を決定する段階と、バウンディングボックスのサイズ変化比率を基に、整列された複数のプリミティブのうちいずれか一つを選択する段階と、選択されたプリミティブを基準に、整列された複数のプリミティブを複数のバウンディングボックスに区分する段階と、を含む。
また、決定する段階は、整列された複数のプリミティブのうち第1プリミティブが含まれたバウンディングボックスに、第1プリミティブの次の順に整列された第2プリミティブを入力する段階と、第1プリミティブが含まれたバウンディングボックスに対する、第1プリミティブ及び前記第2プリミティブが含まれたバウンディングボックスの変化比率を決定する段階と、を含む。
また、選択する段階は、整列された複数のプリミティブのうちバウンディングボックスの変化比率が最大であるプリミティブを選択する。
また、複数のプリミティブそれぞれの位置は、三次元空間での複数のプリミティブそれぞれの中心の座標情報を基に決定される。
また、区分する段階は、整列された複数のプリミティブを、選択されたプリミティブの前の順に整列された少なくとも1つのプリミティブ、及び選択されたプリミティブが含まれた第1バウンディングボックスと、選択されたプリミティブの次の順に整列された少なくとも1つのプリミティブが含まれた第2バウンディングボックスと、に区分する。
また、光線追跡に使用される加速構造を生成する方法は、第1バウンディングボックスに対応する第1ノード、及び第2バウンディングボックスに対応する第2ノードを生成する段階と、第1ノード及び第2ノードを加速構造の子ノードとして追加する段階をさらに含む。
また、光線追跡に使用される加速構造を生成する方法は、複数のプリミティブの整列順によって加重値を設定する段階をさらに含み、選択する段階は、設定された加重値、及びバウンディングボックスのサイズ変化比率を基に、整列された複数のプリミティブのうちいずれか一つを選択する。
また、該加重値は、複数のプリミティブそれぞれの整列順序が、整列順序の中心から遠くなるほど低く設定される。
また、該線形コードは、モートンコードを含む。
一実施形態による光線追跡に使用される加速構造を生成する装置は、三次元空間に含まれた複数のプリミティブそれぞれの位置に関する情報及び加速構造を保存するメモリと、複数のプリミティブそれぞれの位置に関する情報を基に、生成された線形コードにより、複数のプリミティブを整列させ、整列された複数のプリミティブを順次にバウンディングボックスに入力し、かつ、バウンディングボックスのサイズ変化比率を決定し、バウンディングボックスのサイズ変化比率を基に、整列された複数のプリミティブのうちいずれか一つを選択し、選択されたプリミティブを基準に、整列された複数のプリミティブを複数のバウンディングボックスに区分するプロセッサと、を含む。
また、該プロセッサは、整列された複数のプリミティブのうち第1プリミティブが含まれたバウンディングボックスに、第1プリミティブの次の順に整列された第2プリミティブを入力し、第1プリミティブが含まれたバウンディングボックスに対する、第1プリミティブ及び前記第2プリミティブが含まれたバウンディングボックスの変化比率を決定する。
また、該プロセッサは、整列された複数のプリミティブのうちバウンディングボックスの変化比率が最大であるプリミティブを選択する。
また、複数のプリミティブそれぞれの位置は、三次元空間での前記複数のプリミティブそれぞれの中心の座標情報を基に決定される。
また、該プロセッサは、整列された複数のプリミティブを、選択されたプリミティブの前の順に整列された少なくとも1つのプリミティブ、及び選択されたプリミティブが含まれた第1バウンディングボックスと、選択されたプリミティブの次の順に整列された少なくとも1つのプリミティブが含まれた第2バウンディングボックスと、に区分する。
また、該プロセッサは、第1バウンディングボックスに対応する第1ノード、及び第2バウンディングボックスに対応する第2ノードを生成し、第1ノード及び第2ノードを加速構造の子ノードとして追加する。
また、該プロセッサは、複数のプリミティブの整列順によって加重値を設定し、設定された加重値、及びバウンディングボックスのサイズ変化比率を基に、整列された複数のプリミティブのうちいずれか一つを選択する。
また、該加重値は、複数のプリミティブそれぞれの整列順序が、整列順序の中心から遠くなるほど低く設定される。
また、該線形コードは、モートンコードを含む。
一実施形態による加速構造生成方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読取り可能な記録媒体が提供される。
光線追跡について説明するための図面である。 レイトレーシングコアについて説明するための図面である。 レイトレーシングコアが光線追跡を行う動作について説明するための図面である。 光線追跡を加速させるための方法について説明するための図面である。 図4の光線追跡を加速させるための方法について説明するための図面である。 一実施形態による、加速構造生成装置について説明するためのブロック図である。 一実施形態による、加速構造を生成する方法を示したフローチャートである。 一実施形態による、モートンコードを生成する方法について説明するための図面である。 一実施形態による、加速構造生成装置が、複数のプリミティブを、線形コードによって整列させる方法について説明するための図面である。 一実施形態による、加速構造生成装置が、整列された複数のプリミティブのうちバウンディングボックスのサイズ変化比率が最大であるプリミティブを選択する方法について説明するための図面である。 一実施形態による、加速構造生成装置が、複数のプリミティブそれぞれに設定された加重値を利用して、複数のプリミティブをバウンディングボックスに区分する方法について説明するためのフローチャートである。 一実施形態による、加速構造生成装置が、複数のプリミティブそれぞれに設定された加重値を利用して、複数のプリミティブをバウンディングボックスに区分する方法について説明するための図面である。
以下では、図面を参照し、実施形態について詳細に説明する。
図1は、光線追跡について説明するための図面である。図1を参照すれば、三次元モデリングにおいて、レイトレーシングコア(ray tracing core)は、視点(view point)10を決定し、視点によって、画面(image)20を決定する。視点10と画面20とが決定されれば、レイトレーシングコアは、視点10から、画面20の各ピクセル(pixel)に対して光線を生成する。
図1の構成について説明すれば、視点10から一次光線(primary ray)30が生成される。一次光線30は、画面20を経て、シーンオブジェクト(scene object)70と交差する。一次光線30とシーンオブジェクト70との交差点では、反射光線(reflection ray)40及び屈折光線(refraction ray)50が生成される。また、交差点において、光源80の方向にシャドー光線(shadow ray)60が生成される。このとき、反射光線40、屈折光線50、シャドー光線60を二次光線という。シーンオブジェクト70は、画面20に関するレンダリングの対象になるオブジェクトを示す。シーンオブジェクト70は、複数のプリミティブを含む。
レイトレーシングコアは、一次光線30、二次光線(反射光線40、屈折光線50、シャドー光線60)、及び二次光線から派生される光線を分析する。レイトレーシングコアは、分析結果に基づいて、画面20を構成するピクセルの色相値を決定する。このとき、該レイトレーシングコアは、シーンオブジェクト70の特性を考慮し、ピクセルの色相値を決定する。
図2は、レイトレーシングコア100について説明するための図面である。図2を参照すれば、レイトレーシングコア100は、光線生成ユニット110、TRV(traversal)ユニット120、IST(intersection test)ユニット130及びシェーディングユニット140を含む。図2では、TRVユニット120、ISTユニット130がレイトレーシングコア100に含まれるように図示されているが、TRVユニット120、ISTユニット130は、別途のハードウェアによっても具現される。図2に図示されたレイトレーシングコア100は、本実施形態に関する構成要素だけが図示されている。従って、図2に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に関する技術分野における当業者であれば、理解することができるであろう。
レイトレーシングコア100は、生成された光線と、三次元空間に位置したオブジェクトとの交差点を追跡し、画面を構成するピクセルの色相値を決定する。言い替えれば、レイトレーシングコア100は、光線とオブジェクトとの交差点を求め、交差点でのオブジェクトの特性によって、二次光線を生成し、交差点の色相の値を決定する。
レイトレーシングコア100は、加速構造を探索して交差検査を行うとき、以前の探索の結果、及び以前の交差検査の結果を利用することができる。言い換えれば、レイトレーシングコア100は、以前のレンダリング過程で遂行された結果を、現在のレンダリング過程に適用することにより、現在のレンダリングをさらに迅速に行うことができる。
光線生成ユニット110は、一次光線及び二次光線を生成する。光線生成ユニット110は、視点から一次光線を生成し、一次光線とオブジェクトとの交差点において、反射、屈折またはシャドーの二次光線を生成する。光線生成ユニット110は、また二次光線とオブジェクトとの交差点において、他の二次光線を生成することができる。光線生成ユニット110は、決められた回数内において、反射光線、屈折光線、シャドー光線を生成したり、オブジェクトの特性によって、反射光線、屈折光線、シャドー光線の生成回数を決定することができる。
TRVユニット120は、光線生成ユニット110から生成された光線に関する情報を受信する。生成された光線は、一次光線、二次光線、及び二次光線によって派生した光線をいずれも含む。例えば、一次光線の場合、TRVユニット120は、生成された光線の視点及び方向に関する情報を受信することができる。また、二次光線の場合、TRVユニット120は、二次光線の出発点及び方向に関する情報を受信することができる。二次光線の出発点は、一次光線がヒット(hit)された地点を示す。視点または出発点は、座標で表現され、方向は、ベクトルによっても表現される。
TRVユニット120は、外部メモリ250から、加速構造に関する情報を読み取る(read)。該加速構造は、加速構造生成装置200によって生成され、生成された加速構造は、外部メモリ250に保存される。該加速構造は、三次元空間のオブジェクトの位置情報を含んでいる構造を示す。例えば、該加速構造は、KD−tree(K-dimensional tree)、BVH(bounding volume hierarchy)などが適用される。
TRVユニット120は、該加速構造を探索し、光線がヒットされたオブジェクトまたはリーフノード(leaf node)を出力する。例えば、TRVユニット120は、加速構造に含まれたノードを探索し、該ノードのうち最下位ノードであるリーフノードのうち光線がヒットされたリーフノードをISTユニット130に出力する。言い替えれば、TRVユニット120は、加速構造を構成するバウンディングボックス(bounding box)のうち、いずれのバウンディングボックスに光線がヒットされたかを判断し、該バウンディングボックスに含まれたオブジェクトのうち、いずれのオブジェクトに光線がヒットされたかを判断する。ヒットされたオブジェクトに関する情報は、TRVキャッシュに保存される。該バウンディングボックスは、複数のオブジェクトまたはプリミティブを含む単位を示し、加速構造によって、異なる形態にも表現される。TRVキャッシュは、TRVユニット120が探索過程で使用するデータを一時的に保存するためのメモリを示す。
TRVユニット120は、以前のレンダリングの結果を利用して、加速構造を探索することができる。TRVユニット120は、TRVキャッシュに保存された以前のレンダリング結果を利用して、以前のレンダリングと同一経路で加速構造を探索することができる。例えば、TRVユニット120が、入力された光線に関する加速構造を探索するとき、TRVユニット120は、入力された光線と同一視点及び同一方向を有する以前の光線がヒットされたバウンディングボックスに対する探索を優先的に行う。また、TRVユニット120は、以前の光線に関する探索経路を参照し、加速構造を探索することができる。
ISTユニット130は、TRVユニット120から、光線がヒットされたオブジェクトまたはリーフノードを受信し、外部メモリ250から、ヒットされたオブジェクトに含まれたプリミティブに関する情報を読み取る。読み取られたプリミティブに関する情報は、ISTキャッシュに保存される。該ISTキャッシュは、交差検索過程において、ISTユニット130が使用するデータを一時的に保存するためのメモリを示す。
ISTユニット130は、光線とプリミティブとの交差検査を行い、光線がヒットされたプリミティブ及び交差点を出力する。TRVユニット120から、光線がヒットされたオブジェクトが何であるか受信したISTユニット130は、ヒットされたオブジェクトに含まれた複数のプリミティブのうち、いずれのプリミティブに光線がヒットされたかを検査する。光線がヒットされたプリミティブを求めた後、ISTユニット130は、ヒットされたプリミティブのいずれの地点と光線とが交差したかを示す交差点を出力する。該交差点は、座標形態でシェーディングユニット140に出力される。
ISTユニット130は、以前のレンダリングの結果を利用して、交差検査を行うことができる。ISTユニット130は、ISTキャッシュに保存された以前のレンダリングの結果を利用して、以前のレンダリングと同一プリミティブに対して、優先的に交差検査を行う。例えば、入力された光線とプリミティブとに関する交差検査を行うとき、ISTユニット130は、入力された光線と同一視点及び同一方向を有する以前の光線がヒットされたプリミティブに対する交差検査を優先的に行う。
シェーディングユニット140は、ISTユニット130から受信された交差点に関する情報及び交差点の物質特性に基づいて、ピクセルの色相値を決定する。シェーディングユニット140は、交差点の物質基本色相、及び光源による効果などを考慮し、ピクセルの色相値を決定する。
レイトレーシングコア100は、外部メモリ250から、光線追跡に必要なデータを受信する。外部メモリ250には、加速構造生成装置200によって生成された加速構造、またはプリミティブに関する情報を示す幾何データ(geometry data)が保存される。該プリミティブは、三角形、四角形などの多角形でもあり、該幾何データは、オブジェクトに含まれたプリミティブの頂点及び位置に関する情報を示すことができる。
加速構造生成装置200は、三次元空間上のオブジェクトの位置情報を含む加速構造を生成する。加速構造生成装置200は、さまざまな形態の加速構造を生成することができる。例えば、該加速構造は、三次元空間が、階層的ツリーに分割された形態でもあり、加速構造生成装置200は、BVHまたはKD−treeを適用し、三次元空間上のオブジェクトの関係を示す構造を生成することができる。加速構造生成装置200は、リーフノードの最大プリミティブの数及びツリー深さ(tree depth)を決定し、該決定に基づいて、加速構造を生成することができる。
図3は、レイトレーシングコアが光線追跡を行う動作について説明するための図面である。該レイトレーシングコアは、例えば、図2に図示されたレイトレーシングコア100の構造を有することができる。従って、以下で省略された内容であるとしても、レイトレーシングコア100について、上述された内容は、図3の光線追跡方法にも適用される。
310段階において、レイトレーシングコア100は、光線を生成する。レイトレーシングコア100は、一次光線、二次光線、及び二次光線によって派生した光線を生成する。
320段階において、レイトレーシングコア100は、外部メモリ250から読み取られた加速構造を探索する。レイトレーシングコア100は、生成された光線の視点及び方向に基づいて加速構造251を探索し、光線がヒットされたバウンディングボックスを検出し、ヒットされたバウンディングボックスに含まれるオブジェクトのうち、光線がヒットされたオブジェクトを検出する。段階325において、レイトレーシングコア100は、ヒットされたオブジェクトを検出するまで、加速構造251探索を反復して行う。例えば、レイトレーシングコア100は、いずれか1つの経路に沿って加速構造を探索し、探索された経路上のリーフノードに光線がヒットされない場合に、他の経路で加速構造を探索する。
レイトレーシングコア100は、全ての経路を順次に探索することができるが、以前の光線探索情報に基づいて、特定経路を優先的に探索することができる。例えば、以前の光線視点と方向とが現在の光線視点及び方向と同一または類似している場合、レイトレーシングコア100は、以前の光線でヒットされたリーフノードが含まれた経路を優先的に探索することができる。
330段階において、レイトレーシングコア100は、交差検査を行う。レイトレーシングコア100は、外部メモリ250から読み取られたプリミティブの幾何データ252に基づいて交差検査を行う。段階335において、レイトレーシングコア100は、ヒットされたプリミティブを検出するまで、交差検査を反復して行う。例えば、レイトレーシングコア100は、いずれか1つのプリミティブに対する交差検査を行い、プリミティブに光線がヒットされない場合には、他のプリミティブに対する交差検査を行う。
レイトレーシングコア100は、全てのプリミティブを順次に交差検査することができるが、以前の光線の交差検査情報に基づいて、特定プリミティブを優先的に交差検査することができる。例えば、以前の光線と現在の光線との視点及び方向が同一であるか、あるいは類似している場合、レイトレーシングコア100は、以前の光線でヒットされたプリミティブに対する交差検査を優先的に行うことができる。
340段階において、レイトレーシングコア100は、交差検査に基づいて、ピクセルのシェーディングを行う。レイトレーシングコア100は、340段階が終了すれば、310段階に進む。レイトレーシングコア100は、310段階ないし340段階を、画面を構成する全てのピクセルに対して反復に遂行する。
図4は、光線追跡を加速させるための方法について説明するための図面である。図4を参照すれば、第1画面412は、t=0であるとき、レンダリングされた画面を示し、第2画面422は、t=1であるとき、レンダリングされた画面を示す。第1画面412と第2画面422とにおいて、兎433だけが移動し、四角形431と三角形432は、動きがないから、第1画面412と第2画面422は、ほぼ類似している。従って、レイトレーシングコア100は、第1画面412に対するレンダリング結果を利用して、第2画面422に対するレンダリングを行うことができる。例えば、第1視点410と第2視点420との位置が同一であり、第1光線411と第2光線421との方向が同一であれば、レイトレーシングコア100は、第1光線411に対する光線追跡の結果を、第2光線421の光線追跡に適用し、第2光線421の光線追跡を加速させることができる。例えば、レイトレーシングコア100のTRVユニット120は、第2光線421に対する探索を行うとき、第1光線411がヒットされたバウンディングボックスを優先的に探索することができる。また、レイトレーシングコア100のISTユニット130は、第2光線421に対する交差検査を行うとき、第1光線411がヒットされた三角形432に対して、優先的に交差検査を行うことができる。
図5は、図4の光線追跡を加速させるための方法について説明するための図面である。図5を参照すれば、該加速構造は、5個のノード(ノード1ないしノード5)を含み、ノード3ないしノード5は、リーフノードを示す。
TRVユニット120は、3種の経路に沿って加速構造を探索することができる。第一に、TRVユニット120は、第1経路であるノード1、ノード2及びノード3に沿って加速構造を探索することができる。第二に、TRVユニット120は、第2経路であるノード1、ノード2及びノード4に沿って加速構造を探索することができる。第三に、TRVユニット120は、第3経路であるノード1及びノード5に沿って加速構造を探索することができる。このとき、TRVユニット120が第2光線421に対する探索を行うとき、TRVユニット120は、第1光線411がヒットされた三角形432を探索する第2経路を優先的に探索する。従って、TRVユニット120が、第1経路または第3経路を探索する過程を省略することができる。
図6は、一実施形態による加速構造生成装置200について説明するためのブロック図である。
図6を参照すれば、加速構造生成装置200は、プロセッサ210及びメモリ220を含む。ここで、加速構造生成装置200は、GPU(graphics processing unit)でもあるが、それは、一つの実施形態であるにすぎず、加速構造生成装置200は、GPUに限定されるものではない。
プロセッサ210は、三次元空間に含まれたプリミティブの位置を決定する。一実施形態によるプロセッサ210は、三次元空間を複数のグリッド(grid)に分割して生成された座標を基に、プリミティブの位置を示すことができる。例えば、プロセッサ210は、三次元空間を、x軸、y軸及びz軸方向の均一な間隔に分割することができる。ここで、該プリミティブの位置は、プリミティブが含まれたグリッドの位置によって表現される。該プリミティブが複数のグリッドに含まれている場合、プリミティブの位置は、プリミティブの中心点が含まれるグリッドの位置によっても表現される。プリミティブの位置を決定して表現する具体的な方法は、図8で後述する。
一方、プロセッサ210は、プリミティブの三次元空間内において、二進数で構成されたx軸座標、y軸座標及びz軸座標を決定することができる。例えば、プロセッサ210は、プリミティブの位置を示すx軸座標、y軸座標及びz軸座標をそれぞれ二進数に含まれた1つ以上の二進ビットで決定することができる。
プロセッサ210は、プリミティブのx軸座標を示す二進数に含まれた1つ以上の二進ビット、プリミティブのy軸座標を示す二進数に含まれた1つ以上の二進ビット、及びプリミティブのz軸座標を示す二進数に含まれた1つ以上の二進ビットを、既定の順によって組み合わせ、線形コードを生成することができる。ここで、該線形コードには、モートン(Morton)コードが含まれてもよい。以下では、説明の便宜上、線形コードに対して、モートンコードを例として挙げて説明する。
プロセッサ210は、三次元空間に含まれるプリミティブの分布によって、モートンコードを生成するために、二進ビットを組み合わせる順序を決定することができる。また、プロセッサ210は、モートンコード生成に利用されるx軸座標、y軸座標及びz軸座標の二進ビット数をそれぞれ異なるように設定することができる。
プロセッサ210は、生成された線形コードにより、複数のプリミティブを整列させる。例えば、プロセッサ210は、生成された線形コードの値の大きさによって、線形コードの値が小さいプリミティブが、線形コードの値が大きいプリミティブの前の順に位置するように、複数のプリミティブを整列させることができる。
また、プロセッサ210は、整列された複数のプリミティブを、順次にバウンディングボックスに入力しながら、バウンディングボックスのサイズ変化比率(例えば、増大比率)を決定する。例えば、プロセッサ210は、全てのプリミティブが、バウンディングボックスに含まれるまで、整列された複数のプリミティブを順次にバウンディングボックスに入力することができる。プロセッサ210は、整列された複数のプリミティブそれぞれが、バウンディングボックスに含まれることによって増大するバウンディングボックスサイズを比較することにより、複数のプリミティブそれぞれに関するバウンディングボックスの大きさの増大比率を決定することができる。例えば、プロセッサ210は、第1バウンディングボックスに対して順次に入力されるプリミティブと関連するバウンディングボックスと、第1バウンディングボックスとの大きさ変化を決定することができる。
プロセッサ210は、バウンディングボックスサイズの増大比率を基に、整列された複数のプリミティブのうちいずれか一つを選択する。例えば、プロセッサ210は、整列された複数のプリミティブのうちバウンディングボックスサイズの増大比率が最大であるプリミティブを選択することができる。ただし、それは、一つの実施形態であるにすぎず、他の例によって、プロセッサ210は、バウンディングボックスサイズの増大比率、及び複数のプリミティブそれぞれに対して既定の加重値に基づいて整列された複数のプリミティブのうちいずれか一つを選択することもできる。
プロセッサ210は、選択されたプリミティブを基準に、整列された複数のプリミティブを、複数のバウンディングボックスに区分する。また、プロセッサ210は、区分されたバウンディングボックスそれぞれに含まれたプリミティブに対して、バウンディングボックスサイズの増大比率を基に、他のバウンディングボックスに区分する過程を反復的に遂行することができる。
また、プロセッサ210は、バウンディングボックスの包含関係を示す加速構造を生成することができる。それぞれのバウンディングボックスは、加速構造に含まれたそれぞれのノードに対応する。例えば、プロセッサ210は、第1バウンディングボックスに対応する第1ノードを生成し、第2バウンディングボックスに対応する第2ノードを生成することができる。
それぞれのノードは、構造体(struct)、ユニオン(union)、クラス(class)などの資料構造でも構成されるが、それらに制限されるものではない。
プロセッサ210は、第1ノード及び第2ノードを、三次元空間に対応する第3ノードの子ノードとして加速構造に追加することができる。
該加速構造において、親ノードに対応するバウンディングボックスは、子ノードに対応するバウンディングボックスを含んでもよい。それぞれのバウンディングボックスは、2つのバウンディングボックスに区分される。従って、一般的に、該加速構造は、二進ツリー形態に生成される。
メモリ220は、三次元空間に含まれた複数のプリミティブそれぞれの位置に関する情報、及び加速構造に関する情報を保存することができる。該加速構造に関する情報は、加速構造が示す三次元空間に関する情報を含んでもよい。
図7は、一実施形態による、加速構造を生成する方法を示したフローチャートである。一実施形態による、加速構造を生成する方法は、図6で説明した一実施形態による加速構造生成装置200を介して遂行され、加速構造生成装置200の動作と同一動作を遂行することができる。
710段階において、加速構造生成装置200は、三次元空間に含まれた複数のプリミティブそれぞれの位置を示す線形コードを生成する。
一実施形態による加速構造生成装置200は、三次元空間内での複数のプリミティブそれぞれの位置に関する情報を獲得することができる。ここで、該位置に関する情報には、例えば、複数のプリミティブそれぞれの中心点の座標が含まれてもよい。一方、該位置に関する情報には、他の例によって、複数のプリミティブそれぞれが含まれたグリッドの中心点の座標が含まれてもよい。
また、加速構造生成装置200は、三次元空間内でのプリミティブの中心点のx軸座標、y軸座標及びz軸座標を示す線形コードを生成することができる。ここで、該線形コードは、モートンコードを含んでもよい。例えば、加速構造生成装置200は、x軸座標を示す二進数に含まれた1つ以上の二進ビット、y軸座標を示す二進数に含まれた1つ以上の二進ビット、及びz軸座標を示す二進数に含まれた1つ以上の二進ビットを既定の順によって組み合わせ、モートンコードを生成することができる。加速構造生成装置200がモートンコードを生成する方法については、図8を参照して具体的に説明する。
ただし、それは、一つの実施形態であるにすぎず、本実施形態の線形コードは、モートンコードに限定されるものではない。
段階720において、加速構造生成装置200は、生成された線形コードにより、複数のプリミティブを整列させる。例えば、加速構造生成装置200は、生成された線形コードの値の大きさによって、線形コードの値が小さいプリミティブが、線形コードの値が大きいプリミティブの前の順に位置するように、複数のプリミティブを整列させることができる。ただし、それは、一つの実施形態であるにすぎず、加速構造生成装置200が複数のプリミティブを整列させる方法は、上述の例に限定されるものではない。
730段階において、加速構造生成装置200は、整列された複数のプリミティブを、順次にバウンディングボックスに入力しながら、バウンディングボックスサイズの増大比率を決定する。
一実施形態による加速構造生成装置200は、複数のプリミティブを、整列された順によって、一つずつバウンディングボックスに入力することができる。例えば、加速構造生成装置200は、整列された複数のプリミティブのうち第1プリミティブを、バウンディングボックスに入力し、第1プリミティブの次の順に整列された第2バウンディングボックスを、第1プリミティブが含まれたバウンディングボックスに追加して入力することができる。
また、加速構造生成装置200は、整列された複数のプリミティブそれぞれがバウンディングボックスに入力されるたびに、バウンディングボックスサイズを決定することができる。例えば、加速構造生成装置200は、第1プリミティブが入力されたバウンディングボックスサイズと、第1プリミティブ及び第2プリミティブが入力されたバウンディングボックスサイズとをそれぞれ決定することができる。
一方、加速構造生成装置200は、バウンディングボックスサイズが決定されることにより、第1プリミティブが含まれたバウンディングボックスサイズと、第1プリミティブ及び第2プリミティブが含まれたバウンディングボックスサイズとを比較することができる。加速構造生成装置200は、該比較結果に基づいて、第2プリミティブがバウンディングボックスに入力されることによるバウンディングボックスサイズの増大比率を決定することができる。
一実施形態による加速構造生成装置200は、最終的に全てのプリミティブがバウンディングボックスに含まれるまで、整列された複数のプリミティブを順次にバウンディングボックスに入力することができる。また、加速構造生成装置200は、整列された複数のプリミティブそれぞれが、バウンディングボックスに入力されることによるバウンディングボックスサイズを比較することにより、複数のプリミティブそれぞれに関するバウンディングボックスサイズの増大比率を決定することができる。
740段階において、加速構造生成装置200は、バウンディングボックスサイズの増大比率を基に、整列された複数のプリミティブのうちいずれか一つを選択する。
一実施形態による加速構造生成装置200は、整列された複数のプリミティブそれぞれに関するバウンディングボックスの増大比率を比較することができる。また、加速構造生成装置200は、比較結果に基づいて、整列された複数のプリミティブのうちバウンディングボックスの増大比率が最大であるプリミティブを選択することができる。加速構造生成装置200は、バウンディングボックスの増大比率が最大であるプリミティブを選択することにより、整列された複数のプリミティブのうち表面積が最大であるプリミティブを選択することができる。
ただし、それは、一つの実施形態であるにすぎず、加速構造生成装置200は、増大比率、及び複数のプリミティブそれぞれに対して既定の加重値に基づいて整列された複数のプリミティブのうちいずれか一つを選択することができる。それについては、図11及び図12を参照し、さらに具体的に説明する。
750段階において、加速構造生成装置200は、選択されたプリミティブを基準に、整列された複数のプリミティブを複数のバウンディングボックスに区分する。
加速構造生成装置200は、整列された複数のプリミティブを、選択されたプリミティブの前の順に整列された少なくとも1つのプリミティブ、及び選択されたプリミティブが含まれた第1バウンディングボックスと、選択されたプリミティブの次の順に整列された少なくとも1つのプリミティブが含まれた第2バウンディングボックスと、に区分することができる。
また、一実施形態による加速構造生成装置200は、第1バウンディングボックスに対応する第1ノード、及び第2バウンディングボックスに対応する第2ノードを生成することができる。加速構造生成装置200は、第1ノード及び第2ノードを三次元空間に対応する第3ノードの子ノードとして加速構造に追加することができる。ここで、第3ノードは、ルートノードでもあり、ルートノードに追加されている子ノードのうち一つであってもよい。
一方、加速構造生成装置200は、第1バウンディングボックス及び第2バウンディングボックスにそれぞれ含まれたプリミティブを、他のバウンディングボックスに区分することもできる。例えば、第1バウンディングボックスに3個のプリミティブが含まれている場合、加速構造生成装置200は、3個のプリミティブをそれぞれバウンディングボックスに入力しながら、バウンディングボックスサイズの増大比率が最大であるプリミティブを選択することができる。加速構造生成装置200は、選択されたプリミティブを基準に、第1バウンディングボックスを、第1aバウンディングボックス及び第1bバウンディングボックスに区分することができる。また、加速構造生成装置200は、第1aバウンディングボックス及び第1bバウンディングボックスに対応するノードを、第1ノードの子ノードとして加速構造に追加することができる。
加速構造生成装置200は、前述の740段階及び750段階を反復的に遂行しながら、整列された複数のプリミティブを、複数のバウンディングボックスに区分することができる。
図8は、一実施形態による、モートンコードを生成する方法について説明するための図面である。説明の便宜のために、三次元空間800は、二次元に単純化して図示した。
加速構造生成装置200は、モートンコードを利用して、三次元空間に含まれたプリミティブの位置を線形的に示すことができる。
図8を参照すれば、加速構造生成装置200は、三次元空間800のx軸及びy軸をそれぞれ4個に均一に分割することができる。従って、加速構造生成装置200は、総16個のグリッドに分割される。また、加速構造生成装置200は、x軸及びy軸のそれぞれのグリッドに対して二進ビットを割り当て、座標を生成することができる。例えば、加速構造生成装置200は、x軸の4個のグリッドに対して、それぞれ00、01、10、11の座標を割り当て、y軸の4個のグリッドに対して、それぞれ00、01、10、11の座標を割り当てることができる。
加速構造生成装置200は、プリミティブが含まれたグリッドの座標を利用して、プリミティブの位置を示すことができる。一方、他の例によって、加速構造生成装置200は、プリミティブの中心点が含まれたグリッドの座標を利用して、プリミティブの位置を示すことができる。本実施形態においては、加速構造生成装置200がプリミティブの中心点が含まれたグリッドの座標を利用して、プリミティブの位置を示すものと仮定する。
また、加速構造生成装置200は、プリミティブが含まれたグリッドの座標情報を組み合わせ、モートンコードを生成することができる。一実施形態によって、プリミティブのx軸座標がXと表現され、y軸座標がYと表現された場合、プリミティブのモートンコードは、Xとも表現される。ここで、X、X、Y及びYは、x軸座標及びy軸座標を二進数で示した値の各桁数を示す二進ビットでもある。
例えば、第1プリミティブ811の場合、x軸座標が00であり、y軸座標が00であるので、X=0、X=0、Y=0、Y=0である。加速構造生成装置200は、第1プリミティブ811のx軸座標である00、及びy軸座標である00を組み合わせることにより、第1プリミティブ811のモートンコードを0000に生成することができる。
他の例によって、第2プリミティブ812の場合、x軸座標が00であり、y軸座標が01であるので、X=0、X=0、Y=0、Y=1である。加速構造生成装置200は、第2プリミティブ812のx軸座標である00、及びy軸座標である01を組み合わせることにより、第2プリミティブ812のモートンコードを0001に生成することができる。
前述の方法によって、加速構造生成装置200は、三次元空間800内に存在する複数のプリミティブそれぞれに対して、モートンコードを生成することができる。それにより、三次元空間800内に存在する第1プリミティブ811ないし第11プリミティブ821には、それぞれ0000、0001、0011、0100、0111、1000、1000、1010、1100、1101、1110、1111のモートンコードが割り当てられる。
一方、他の実施形態によって、プリミティブのz軸座標がZで表現される場合、三次元空間において、プリミティブのモートンコードは、Xで表現される。Z及びZは、プリミティブのz軸座標を二進数で示した値の各桁数を示す二進ビットでもある。
図9は、一実施形態による加速構造生成装置200が、複数のプリミティブ811−821を、線形コードによって整列させる方法について説明するための図面である。
図9を参照すれば、加速構造生成装置200は、線形コードが割り当てられた複数のプリミティブ811−821を整列させることができる。例えば、加速構造生成装置200は、線形コードの値の大きさにより、複数のプリミティブ811−821を整列することができる。加速構造生成装置200が、線形コードの値が小さいプリミティブを優先的に整列する場合、図9に図示されているように、複数のプリミティブ811−821は、第1プリミティブ811、第2プリミティブ812、第3プリミティブ813、第4プリミティブ814、第5プリミティブ815、第6プリミティブ816、第7プリミティブ817、第8プリミティブ818、第9プリミティブ819、第10プリミティブ820及び第11プリミティブ821の順にも整列される。
一方、加速構造生成装置200は、整列された複数のプリミティブ811−821を順次にバウンディングボックスに含めながら、整列された複数のプリミティブ811−821を、複数のバウンディングボックスに区分するための基準プリミティブを選択することができる。例えば、加速構造生成装置200は、整列された複数のプリミティブ811−821を順次にバウンディングボックスに入力しながら、入力されたプリミティブそれぞれに関するバウンディングボックスサイズの増大比率を算出することができる。
加速構造生成装置200は、算出された増大比率を基に、増大比率が最大であるプリミティブを選択することができる。例えば、第1プリミティブが選択された場合、加速構造生成装置200は、整列された複数のプリミティブを、第1プリミティブが含まれた第1バウンディングボックスと、第2プリミティブないし第11プリミティブが含まれた第2バウンディングボックスとに区分することができる。また、加速構造生成装置200は、第2バウンディングボックス内に含まれた複数のプリミティブ812−821に対しても、前述の過程を反復的に遂行することにより、第2バウンディングボックスに含まれた複数のプリミティブ812−821を、他のバウンディングボックスに区分することができる。
図10は、一実施形態による加速構造生成装置200が、整列された複数のプリミティブ811−821のうち、バウンディングボックスサイズの増大比率が最大であるプリミティブを選択する方法について説明するための図面である。
図10においては、説明の便宜のために、図9において、線形コードによって整列された複数のプリミティブ811−821のうち、第1プリミティブ811、第2プリミティブ812及び第3プリミティブ813のみを図示した。
一実施形態による加速構造生成装置200は、整列された複数のプリミティブ811−821のうち、最初に位置した第1プリミティブ811が含まれたバウンディングボックス1010の大きさを決定することができる。また、加速構造生成装置200は、第1プリミティブ811が含まれたバウンディングボックス1010に、第1プリミティブ811の次の順に整列された第2プリミティブ812を入力することができる。加速構造生成装置200は、第1プリミティブ811及び第2プリミティブ812が含まれたバウンディングボックス1020と、第1プリミティブ811が含まれたバウンディングボックス1010との大きさを比較し、第2プリミティブ812に対するバウンディングボックスサイズの増大比率を決定することができる。
また、加速構造生成装置200は、第1プリミティブ811及び第2プリミティブ812が含まれたバウンディングボックス1020に、第3プリミティブ813を入力することができる。加速構造生成装置200は、第1プリミティブ811、第2プリミティブ812及び第3プリミティブ813が含まれたバウンディングボックス1030と、第1プリミティブ811及び第2プリミティブ812が含まれたバウンディングボックス1020とのサイズを比較し、第3プリミティブ813に関するバウンディングボックスサイズの増大比率を決定することができる。
加速構造生成装置200は、整列された複数のプリミティブ811−821のうち残りのプリミティブ814−821それぞれについても、バウンディングボックスにプリミティブを入力し、バウンディングボックスサイズの増大比率を決定する過程を反復的に遂行することができる。
一方、加速構造生成装置200は、複数のプリミティブ811−821それぞれの増大比率を比較し、増大比率が最大であるプリミティブを選択することができる。本実施形態においては、第1プリミティブ811の増大比率が最大であると仮定する。それにより、加速構造生成装置200は、第1プリミティブ811が含まれた第1バウンディングボックス、及び第2プリミティブ812ないし第11プリミティブ821が含まれた第2バウンディングボックスに複数のプリミティブを区分することができる。
また、加速構造生成装置200は、バウンディングボックスそれぞれに含まれたプリミティブに対して、バウンディングボックスサイズの増大比率を基に区分する過程を反復的に遂行することができる。例えば、加速構造生成装置200は、第2バウンディングボックスに含まれた第2プリミティブ812ないし第11プリミティブ821のうち、増大比率が最大であるプリミティブを選択することができる。加速構造生成装置200は、選択されたプリミティブを基準に、第2プリミティブ812ないし第11プリミティブ821を、第3バウンディングボックス及び第4バウンディングボックスに区分することができる。
図11は、一実施形態による加速構造生成装置200が、複数のプリミティブそれぞれに設定された加重値を利用して、複数のプリミティブをバウンディングボックスに区分する方法について説明するためのフローチャートである。
1110段階において、加速構造生成装置200は、三次元空間に含まれた複数のプリミティブそれぞれの位置を示す線形コードを生成することができる。
一方、1110段階は、図7を参照して説明した710段階と対応する。
1120段階において、加速構造生成装置200は、生成された線形コードにより、複数のプリミティブを整列することができる。
一方、1120段階は、図7を参照して説明した720段階と対応する。
1130段階において、加速構造生成装置200は、複数のプリミティブの整列順により、加重値を設定することができる。
一実施形態による加速構造生成装置200は、複数のプリミティブの個数を基に、整列順序の中心を決定することができる。例えば、加速構造生成装置200は、複数のプリミティブの個数がNである場合、整列順序の中心をN/2に決定することができる。
加速構造生成装置200は、整列順序の中心に近く整列されたプリミティブに対し、さらに高い加重値を設定することができる。例えば、整列順序の中心であるN/2をMと仮定し、複数のプリミティブそれぞれの整列順序をiと仮定した場合、加速構造生成装置200は、iが1からMまでであるプリミティブについては、加重値をi/Mと設定し、iがM+1からNまでであるプリミティブについては、加重値を(N−i)/Mと設定することができる。
ただし、それは、一つの実施形態であるにすぎず、加速構造生成装置200において整列された複数のプリミティブ811−821それぞれに対して加重値を設定する方法は、それに限定されるものではない。
1140段階において、加速構造生成装置200は、整列された複数のプリミティブを順次にバウンディングボックスに入力しながら、バウンディングボックスサイズの増大比率を決定することができる。
一方、1140段階は、図7を参照して説明した730段階と対応する。
1150段階において、加速構造生成装置200は、設定された加重値、及びバウンディングボックスサイズの増大比率を基に、整列された複数のプリミティブのうちいずれか一つを選択することができる。
一実施形態による加速構造生成装置200は、複数のプリミティブそれぞれについて、加重値、及びバウンディングボックスサイズの増大比率が組み合わされた値を比較することができる。例えば、加速構造生成装置200は、整列された複数のプリミティブそれぞれについて、加重値と、バウンディングボックスサイズの増大比率とを乗じた値を比較することができる。また、加速構造生成装置200は、整列された複数のプリミティブのうち、加重値と、バウンディングボックスサイズの増大比率とを乗じた値が最大であるプリミティブを選択することができる。
ただし、それは、一つの実施形態であるにすぎず、加速構造生成装置200において、加重値と、バウンディングボックスサイズの増大比率とを基にプリミティブを選択する方法は、前述の例に限定されるものではない。
1160段階において、加速構造生成装置200は、選択されたプリミティブを基準に、整列された複数のプリミティブを、複数のバウンディングボックスに区分することができる。
一方、1160段階は、図7を参照して説明した750段階と対応する。
図12は、一実施形態による加速構造生成装置200が、複数のプリミティブ811−821それぞれに設定された加重値を利用して、複数のプリミティブをバウンディングボックスに区分する方法について説明するための図面である。
図12を参照すれば、加速構造生成装置200は、線形コードにより、複数のプリミティブ811−821を整列させることができる。一方、図12において、複数のプリミティブ811−821は、図9で説明した方法と同一方法によって整列されると仮定する。
一方、加速構造生成装置200は、整列された複数のプリミティブ811−821それぞれに対して、整列順によって加重値を決定することができる。例えば、加速構造生成装置200は、整列順序の中心に近く整列されたプリミティブの加重値が、整列順序の中心から遠く整列されたプリミティブの加重値より大きい値を有するように、複数のプリミティブ811−821の加重値を決定することができる。
加速構造生成装置200は、複数のプリミティブの個数がNである場合、整列順序の中心をN/2に決定することができる。一方、本実施形態において、整列順序の中心は、複数のプリミティブ811−821の個数である11を2で割った値である5.5であると仮定する。
加速構造生成装置200は、最初から5番目まで整列されたプリミティブについては、加重値を、それぞれi/5.5と設定することができる。ここで、iは、整列順序を示す。それにより、第1プリミティブ811ないし第5プリミティブ815の加重値であるw1、w2、w3、w4、w5は、それぞれ1/5.5、2/5.5、3/5.5、4/5.5、5/5.5と設定される。また、加速構造生成装置200は、6番目から11番目まで整列されたプリミティブについては、加重値を(N−i)/Mと設定することができる。それにより、第6プリミティブ816ないし第11プリミティブ821の加重値であるw6、w7、w8、w9、w10、w11は、それぞれ5/5.5、4/5.5、3/5.5、2/5.5、1/5.5、0に設定される。
一実施形態による加速構造生成装置200は、複数のプリミティブ811−821それぞれに対して、加重値、及びバウンディングボックスサイズの増大比率が組み合わされた値を比較することができる。例えば、加速構造生成装置200は、整列された複数のプリミティブそれぞれの加重値と、バウンディングボックスサイズの増大比率とを乗じた値を比較することができる。また、加速構造生成装置200は、整列された複数のプリミティブのうち加重値と、バウンディングボックスサイズの増大比率とを乗じた値が最大であるプリミティブを選択することができる。例えば、複数のプリミティブ811−821のうち第1プリミティブ811の増大比率が最大である値を有し得るが、第5プリミティブ815のバウンディングボックスサイズの増大比率と加重値とを乗じた値が最大である場合には、第5プリミティブ815が選択される。
加速構造生成装置200は、第5プリミティブ815が選択された場合、第1プリミティブ811ないし第5プリミティブ815が含まれた第1バウンディングボックス1210と、第6プリミティブ816ないし第11プリミティブ821が含まれた第2バウンディングボックス1220とに、複数のプリミティブ811−821を区分することができる。また、加速構造生成装置200は、バウンディングボックスサイズの増大比率と加重値とを基に、プリミティブを区分する過程を、第1バウンディングボックス1210及び第2バウンディングボックス1220それぞれに含まれたプリミティブに反復的に遂行する。
一実施形態による加速構造生成装置200は、複数のプリミティブ811−821の整列順によって決定された加重値を、バウンディングボックスサイズの増大比率と共に複数のプリミティブ811−821を区分するところに利用することにより、加速構造の深さ(depth)値が大きくなることを緩和したり防止したりすることができる。
一方、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読取り可能な記録媒体を利用してプログラムを動作させる汎用デジタルコンピュータでも具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読取り可能な記録媒体に、多くの手段を介して記録される。コンピュータで読取り可能な記録媒体は、磁気記録媒体(例えば、ROM(read-only memory)、RAM(random access memory)、USB(universal serial bus)、フロッピーディスク、ハードディスクなど)、光学的判読媒体(例えば、CD−ROM、DVD(digital versatile disc)など)を含む。
本発明の、加速構造を生成する方法及びその装置は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
10 視点
20 画面
30 一次光線
40 反射光線
50 屈折光線
60 シャドー光線
70 シーンオブフェクト
100 レイトレーシングコア
110 光線生成ユニット
120 TRVユニット
130 ISTユニット
140 シェーディングユニット
200 加速構造生成装置
210 加速構造生成部
210 プロセッサ
220 メモリ
250 外部メモリ
251 加速構造
252 幾何データ
800 三次元空間

Claims (20)

  1. 少なくとも1つのプロセッサによって、光線追跡に使用される加速構造を生成する方法において、
    三次元空間に含まれた複数のプリミティブそれぞれの位置を示す線形コードを生成する段階と、
    前記生成された線形コードにより、前記複数のプリミティブを整列させる段階と、
    前記整列された複数のプリミティブを生成されたバウンディングボックスへ順次に入力しながら、前記生成されたバウンディングボックスのサイズ変化比率を決定する段階と、
    前記生成されたバウンディングボックスのサイズ変化比率に基づいて、前記整列された複数のプリミティブのうち1つを選択する段階と、
    前記選択されたプリミティブに従って、前記整列された複数のプリミティブを複数の決定されたバウンディングボックスへと区分する段階と、
    を含む方法。
  2. 前記決定する段階は、
    前記整列された複数のプリミティブのうち第1プリミティブが含まれたバウンディングボックスに、前記第1プリミティブの次の順に整列された第2プリミティブを入力する段階と、
    前記第1プリミティブが含まれたバウンディングボックスに対する、前記第1プリミティブ及び前記第2プリミティブが含まれたバウンディングボックスの増大比率を決定する段階と、
    を含む、ことを特徴とする請求項1に記載の方法。
  3. 前記選択する段階は、
    前記整列された複数のプリミティブのうち、前記生成されたバウンディングボックスのサイズの変化が最大であるプリミティブを選択する、
    ことを特徴とする請求項1に記載の方法。
  4. 前記複数のプリミティブそれぞれの位置は、
    前記三次元空間での前記複数のプリミティブそれぞれの中心の座標情報に基づいて決定される、
    ことを特徴とする請求項1に記載の方法。
  5. 前記区分する段階は、
    前記整列された複数のプリミティブを、第1バウンディングボックスと第2バウンディングボックスへと区分し、
    前記第1バウンディングボックスは、前記選択されたプリミティブ、及び、前記選択されたプリミティブの前に整列された少なくとも1つのプリミティブを含み、かつ、
    前記第2バウンディングボックスは、前記選択されたプリミティブの後に整列された少なくとも1つのプリミティブを含む、
    ことを特徴とする請求項1に記載の方法。
  6. 前記方法は、さらに、
    前記第1バウンディングボックスに対応する第1ノード、及び前記第2バウンディングボックスに対応する第2ノードを生成する段階と、
    前記第1ノード及び前記第2ノードを、前記加速構造の子ノードとして追加する段階と、
    を含む、ことを特徴とする請求項5に記載の方法。
  7. 前記方法は、さらに、
    前記整列に基づいて加重値を設定する段階を含み、
    前記選択する段階は、
    前記設定された加重値、及び前記生成されたバウンディングボックスのサイズ変化比率に基づいて、前記整列された複数のプリミティブのうち1つを選択する、
    ことを特徴とする請求項1に記載の方法。
  8. 前記設定する段階は、
    前記整列された複数のプリミティブの整列順序の中心から遠くなるほど前記加重値を減少させる
    ことを特徴とする請求項7に記載の方法。
  9. 前記線形コードは、
    モートンコードを含む、
    ことを特徴とする請求項1に記載の方法。
  10. 光線追跡に使用される加速構造を生成する装置であって
    三次元空間に含まれた複数のプリミティブそれぞれの位置に関する前記加速構造及び情報を保存するメモリと、
    プロセッサであり、
    前記複数のプリミティブそれぞれの位置に関する線形コードにより、前記複数のプリミティブを整列させ、
    前記整列された複数のプリミティブを生成されたバウンディングボックスへ順次に入力しながら、前記生成されたバウンディングボックスのサイズ変化比率を決定し、
    前記生成されたバウンディングボックスのサイズ変化比率に基づいて、前記整列された複数のプリミティブのうち1つを選択し、かつ、
    前記選択されたプリミティブに従って、前記整列された複数のプリミティブを複数の決定されたバウンディングボックスへと区分する
    ように構成されている、プロセッサと、
    を含む装置。
  11. 前記プロセッサは、
    前記整列された複数のプリミティブのうち第1プリミティブが含まれたバウンディングボックスに、前記第1プリミティブの次の順に整列された第2プリミティブを入力し、かつ、
    前記第1プリミティブが含まれたバウンディングボックスに対する、前記第1プリミティブ及び前記第2プリミティブが含まれたバウンディングボックスの増大比率を決定する、
    ことを特徴とする請求項10に記載の装置。
  12. 前記プロセッサは、
    前記整列された複数のプリミティブのうち、前記生成されたバウンディングボックスのサイズの変化が最大であるプリミティブを選択する、ように構成されている、
    ことを特徴とする請求項10に記載の装置。
  13. 前記複数のプリミティブそれぞれの位置は、
    前記三次元空間での前記複数のプリミティブそれぞれの中心の座標情報に基づいて決定される、
    ことを特徴とする請求項10に記載の装置。
  14. 前記プロセッサは、
    前記整列された複数のプリミティブを、第1バウンディングボックスと第2バウンディングボックスへと区分する、ように構成されており、
    前記第1バウンディングボックスは、前記選択されたプリミティブ、及び、前記選択されたプリミティブの前に整列された少なくとも1つのプリミティブを含み、かつ、
    前記第2バウンディングボックスは、前記選択されたプリミティブの後に整列された少なくとも1つのプリミティブを含む、
    ことを特徴とする請求項10に記載の装置。
  15. 前記プロセッサは、
    前記第1バウンディングボックスに対応する第1ノード、及び前記第2バウンディングボックスに対応する第2ノードを生成し、かつ、
    前記第1ノード及び前記第2ノードを、前記加速構造の子ノードとして追加する、ように構成されている、
    ことを特徴とする請求項14に記載の装置。
  16. 前記プロセッサは、
    前記複数のプリミティブの整列順によって加重値を設定し、かつ、
    前記設定された加重値、及び前記生成されたバウンディングボックスのサイズ変化比率に基づいて、前記整列された複数のプリミティブのうち1つを選択する、ように構成されている、
    ことを特徴とする請求項10に記載の装置。
  17. 前記プロセッサは、
    前記整列された複数のプリミティブの整列順序の中心から遠くなるほど前記加重値を減少させるように構成されている、
    ことを特徴とする請求項16に記載の装置。
  18. 前記線形コードは、
    モートンコードを含む、
    ことを特徴とする請求項10に記載の装置。
  19. プログラムを保管している非一時的なコンピュータで読取り可能な記憶媒体であって、
    コンピュータによって実行されると、請求項1に記載の方法を前記コンピュータ実行させる
    コンピュータで読取り可能な記憶媒体。
  20. 前記バウンディングボックスのサイズ変化は、前記バウンディングボックスの表面積の変化である、
    ことを特徴とする請求項1に記載の方法。
JP2017211625A 2016-11-04 2017-11-01 加速構造を生成する方法及びその装置 Active JP6948226B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0146908 2016-11-04
KR1020160146908A KR20180050124A (ko) 2016-11-04 2016-11-04 가속 구조를 생성하는 방법 및 장치

Publications (3)

Publication Number Publication Date
JP2018073427A JP2018073427A (ja) 2018-05-10
JP2018073427A5 JP2018073427A5 (ja) 2020-12-10
JP6948226B2 true JP6948226B2 (ja) 2021-10-13

Family

ID=60190749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017211625A Active JP6948226B2 (ja) 2016-11-04 2017-11-01 加速構造を生成する方法及びその装置

Country Status (5)

Country Link
US (1) US10460506B2 (ja)
EP (1) EP3319047B1 (ja)
JP (1) JP6948226B2 (ja)
KR (1) KR20180050124A (ja)
CN (1) CN108022284B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10839598B2 (en) * 2016-07-26 2020-11-17 Hewlett-Packard Development Company, L.P. Indexing voxels for 3D printing
PL3938894T3 (pl) 2019-03-15 2024-02-19 Intel Corporation Zarządzanie pamięcią wielokafelkową dla wykrywania dostępu krzyżowego między kafelkami, zapewnianie skalowanie wnioskowania dla wielu kafelków i zapewnianie optymalnej migracji stron
US11398072B1 (en) * 2019-12-16 2022-07-26 Siemens Healthcare Gmbh Method of obtaining a set of values for a respective set of parameters for use in a physically based path tracing process and a method of rendering using a physically based path tracing process
US20230206378A1 (en) * 2021-12-23 2023-06-29 Nvidia Corporation Hardware-accelerated nearest neighbor queries for arbitrary data primitives

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7580927B1 (en) 2001-05-29 2009-08-25 Oracle International Corporation Quadtree center tile/boundary tile optimization
US8018457B2 (en) 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
GB0710795D0 (en) 2007-06-05 2007-07-18 Arm Norway As Method of and apparatus for processing graphics
US8063902B2 (en) 2007-10-12 2011-11-22 Caustic Graphics, Inc. Method and apparatus for increasing efficiency of transmission and/or storage of rays for parallelized ray intersection testing
US8072460B2 (en) 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
US8237711B2 (en) 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
US8390618B2 (en) * 2008-03-03 2013-03-05 Intel Corporation Technique for improving ray tracing performance
JP5244977B2 (ja) 2008-09-22 2013-07-24 コースティック グラフィックス インコーポレイテッド レイトレーシングシェーダapiのためのシステム及び方法
US8379022B2 (en) 2008-09-26 2013-02-19 Nvidia Corporation Fragment shader for a hybrid raytracing system and method of operation
US8243073B2 (en) 2009-01-28 2012-08-14 International Business Machines Corporation Tree insertion depth adjustment based on view frustum and distance culling
KR101004110B1 (ko) 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
US8441482B2 (en) 2009-09-21 2013-05-14 Caustic Graphics, Inc. Systems and methods for self-intersection avoidance in ray tracing
US8472455B2 (en) 2010-01-08 2013-06-25 Nvidia Corporation System and method for traversing a treelet-composed hierarchical structure
US8780112B2 (en) 2011-06-08 2014-07-15 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US20130033507A1 (en) 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
CN105957134B (zh) * 2011-08-05 2019-11-08 想象技术有限公司 用于3-d场景加速结构创建和更新的方法和装置
GB2545589A (en) * 2012-11-02 2017-06-21 Imagination Tech Ltd On demand geometry and acceleration structure creation
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
US20140340412A1 (en) 2013-05-14 2014-11-20 The Provost, Fellows, Foundation Scholars, & the other members of Board, et al. Hardware unit for fast sah-optimized bvh constrution
US10331632B2 (en) 2013-06-10 2019-06-25 Nvidia Corporation Bounding volume hierarchies through treelet restructuring
KR102164541B1 (ko) * 2013-10-22 2020-10-12 삼성전자 주식회사 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
US10347042B2 (en) 2014-03-13 2019-07-09 Pixar Importance sampling of sparse voxel octrees
US9990758B2 (en) 2014-03-31 2018-06-05 Intel Corporation Bounding volume hierarchy generation using a heterogeneous architecture
US9697640B2 (en) * 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
KR102244619B1 (ko) * 2014-09-30 2021-04-26 삼성전자 주식회사 가속 구조를 생성 및 탐색하는 방법
CN105117533B (zh) * 2015-08-03 2018-05-22 常州赞云软件科技有限公司 家装设计软件中光线跟踪算法的加速方法

Also Published As

Publication number Publication date
KR20180050124A (ko) 2018-05-14
US20180130249A1 (en) 2018-05-10
CN108022284A (zh) 2018-05-11
EP3319047A1 (en) 2018-05-09
JP2018073427A (ja) 2018-05-10
CN108022284B (zh) 2023-06-02
US10460506B2 (en) 2019-10-29
EP3319047B1 (en) 2021-12-01

Similar Documents

Publication Publication Date Title
KR102604737B1 (ko) 가속 구조를 생성하는 방법 및 장치
JP6948226B2 (ja) 加速構造を生成する方法及びその装置
JP6476090B2 (ja) 加速構造の生成及び探索を行う方法並びに装置
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR20180069461A (ko) 가속 구조를 생성하는 방법 및 장치
TWI546770B (zh) 圖形處理單元中3d加速結構之完全並列原地建構
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
US10586374B2 (en) Bounding volume hierarchy using virtual grid
KR20150039496A (ko) 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR102252374B1 (ko) 광선 추적 유닛 및 광선 데이터를 처리하는 방법
JP2018073427A5 (ja)
KR20150136347A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR102537530B1 (ko) 가속 구조를 생성하는 방법 및 장치
KR20150034062A (ko) 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR101228118B1 (ko) 다각형 중요도에 기반을 둔 교차 검사 가속화 자료 구조 구성 방법
KR20130124125A (ko) 공간 가속 구조 탐색 장치 및 방법
Domaradzki et al. Fracturing sparse-voxel-octree objects using dynamical voronoi patterns
Wang Accelerating Ray Tracing with Range Query Data Structures
KR20160133358A (ko) 트리 구조를 생성하는 장치 및 방법
Christoph Gpu-based visualisation of viewshed from roads or areas in a 3d environment
Forstmann et al. Visualizing large procedural volumetric terrains using nested clip-boxes
Patil et al. Web-based Visualization Tools to Demonstrate the Working of Sorting and Pathfinding Algorithms
Hanson Adaptive level-of-detail representations for real-time simulation of natural environments

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201030

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210812

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210917

R150 Certificate of patent or registration of utility model

Ref document number: 6948226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150