KR20170064977A - System and Method for constructing a Bounding Volume Hierarchy Tree - Google Patents
System and Method for constructing a Bounding Volume Hierarchy Tree Download PDFInfo
- Publication number
- KR20170064977A KR20170064977A KR1020160061424A KR20160061424A KR20170064977A KR 20170064977 A KR20170064977 A KR 20170064977A KR 1020160061424 A KR1020160061424 A KR 1020160061424A KR 20160061424 A KR20160061424 A KR 20160061424A KR 20170064977 A KR20170064977 A KR 20170064977A
- Authority
- KR
- South Korea
- Prior art keywords
- bvh
- node
- parent node
- cache
- child node
- Prior art date
Links
Images
Classifications
-
- 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/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- 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/08—Volume rendering
-
- 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
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)
Abstract
복수의 2D 타일들로부터 전환된 복수의 3D 타일들에 기초하여, BVH 트리를 구성하는 방법 및 시스템을 제공한다.A method and system for constructing a BVH tree based on a plurality of 3D tiles converted from a plurality of 2D tiles.
Description
본 개시는 BVH 트리를 구성하기 위한 방법 및 시스템에 관한 것이다.The present disclosure relates to a method and system for constructing a BVH tree.
논리적 트리 구조들(logical tree structures)과 같은 계층적 구조들(hierarchical structures)은 다양한 기술적 분야에 공지되었고, 정보의 저장 및 검색을 용이하게 하기 위해 논리적 형태로 정보를 구성하는 데 이용될 수 있다. 전형적인 구현에서, 논리적 트리의 최상위 노드 또는 '루트'(root)는 가장 일반적인 정보를 포함할 수 있고, 논리적 트리의 후손 노드들(예로, 자식 노드들 또는 손자 노드들)은 특정 형태의 추가적인 정보를 제공할 수 있다. 정보를 저장 및 검색하기 위해 최단 시간에서 최단 경로를 통해 논리적 트리를 탐색하는 것이 바람직하다.Hierarchical structures, such as logical tree structures, are known in various technical fields and can be used to construct information in a logical form to facilitate the storage and retrieval of information. In a typical implementation, the top node or " root " of the logical tree may contain the most general information, and the descendant nodes of the logical tree (e.g., child nodes or grandchild nodes) . It is desirable to search the logical tree through the shortest path in the shortest time to store and retrieve information.
그래픽스 프로세싱 및 렌더링에서, 레이 트레이싱은, 정보를 조직하기 위해, 계층적 구조들을 사용하는 분야를 의미한다. 레이 트레이싱은 그래픽스 어플리케이션의 시각적 경험을 향상시키기 위해 전도 유망한 기술이 될 수 있다. 레이 트레이싱은 공간상의 주어진 지점(예로, 눈, 카메라 관점)으로부터 객체(예로, 기하학적 프리미티브)의 가시성을 결정하기 위한 기술을 포함한다. 렌더링될 특정 장면의 프리미티브들은 일반적으로 노드들 내에 위치하고, 노드들은 계층적 트리 내에 조직화될 수 있다. 레이 트레이싱은, 프리미티브들을 갖는 노드들을 찾기 위한 시도에서 특정 방식으로 트리의 노드들을 탐색하는 "노드 탐색"의 제 1 동작을 포함할 수 있고, 특정 시각 효과를 제공하기 위해, 노드 내에서 하나 이상의 프리미티브들과 광선이 교차되는 "프리미티브 교차"의 제 2 동작을 포함할 수 있다. In graphics processing and rendering, ray tracing refers to an area that uses hierarchical structures to organize information. Ray tracing can be a promising technology to enhance the visual experience of graphics applications. Ray tracing includes a technique for determining the visibility of an object (e.g., a geometric primitive) from a given point in space (e.g., eye, camera viewpoint). The primitives of a particular scene to be rendered are generally located within the nodes, and the nodes may be organized in a hierarchical tree. Ray tracing may include a first operation of "node search" to search for nodes of the tree in a particular way in an attempt to find nodes with primitives, and to provide a particular visual effect, one or more primitives Quot; primitive crossing "in which the light rays intersect with each other.
노드 탐색 및 프리미티브 교차를 대비하여, 계층적 구조가 효율적으로 객체들을 조직화하기 위해 구성될 수 있고, 계층적 구조는 높은 레벨의 노드(예로, 부모 노드)를 둘 이상의 낮은 레벨의 노드(예로, 자식 노드)로 분할하여 구성될 수 있다. 자식 노드는, 부모 노드에 비해, 연속적으로 더 작은 공간을 정의하고, 연속적으로 더 적은 객체들을 포함할 수 있다. 분할 방식은 자식 노드들 각각에 대해 되풀이 될 수 있고, 각 자식 노드는 2 이상의 손자 노드들로 분할될 수 있다. 각 손자 노드는 자식 노드에 비해, 연속적으로 더 작은 공간을 정의하고, 연속적으로 더 적은 객체들을 포함할 수 있다.In contrast to node search and primitive intersection, a hierarchical structure may be configured to organize objects efficiently, and a hierarchical structure may be defined by a higher level node (e.g., a parent node) with two or more lower level nodes Node). A child node can define successively smaller space and contain fewer objects in succession than a parent node. The partitioning scheme can be repeated for each of the child nodes, and each child node can be divided into two or more grandchild nodes. Each grandchild node can define successively smaller spaces and contain fewer objects in succession than child nodes.
레이 트레이싱 기술이 높은 퀄리티의 그래픽 렌더링을 제공할 수 있으나, 높은 계산적인 비용 및 요건들로 인해, 레이 트레이싱은 오프라인 렌더링에 한정되었다. 사용 가능한 계산 파워에서의 최근 발전에 따라, 레이 트레이싱은 상호적인 프레임 레이트, 심지어 모바일 플랫폼에서 가능한 것으로 설명되고 있다. 심지어, 하이브리드 렌더링의 형태로 상업적인 모바일 제품에 집적 가능하다. 그래픽스 렌더링을 위해, 하이브리드 렌더링은 래스터화(rasterization) 및 레이 트레이싱 기술의 사용을 의미할 수 있다. 레이 트레이싱의 종래 시스템들은 BVH 트리(Bounded Volume Hierarchy tree), KD 트리(K-dimensional tree)와 같은 가속 구조들을 사용하였다. 종래 시스템에 있어서, BVH와 같은 구조들은 CPU 등을 활용하여 생성될 수 있다. 그러나, 병렬 프로세서 아키텍처(예로, GPU)를 활용하여 구조들을 생성하는 시도들이 발생하고 있다.Ray tracing technology can provide high quality graphics rendering, but due to the high computational cost and requirements, ray tracing has been limited to offline rendering. With recent advances in computational power available, ray tracing has been described as possible at a reciprocal frame rate, even on a mobile platform. It is even possible to integrate into commercial mobile products in the form of hybrid rendering. For graphics rendering, hybrid rendering can mean the use of rasterization and ray tracing techniques. Conventional systems of ray tracing used accelerated structures such as a BVH tree (Bounded Volume Hierarchy tree) and a KD tree (K-dimensional tree). In conventional systems, structures such as BVH may be created utilizing a CPU or the like. However, attempts have been made to create structures utilizing a parallel processor architecture (e.g., a GPU).
BVH 트리를 구성하기 위한 방법 및 시스템을 제공하는 데 있다. And to provide a method and system for constructing a BVH tree.
본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.The technical problem to be solved by this embodiment is not limited to the above-mentioned technical problems, and other technical problems can be deduced from the following embodiments.
일 측면에 따라, BVH 트리를 구성하는 방법은, 복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하는 단계; 2D 타일들 각각을 복수의 3D 타일들로 전환하는 단계; 및 복수의 3D 타일들에 기초하여, BVH 트리를 구성하는 단계를 포함할 수 있다.According to an aspect, a method of constructing a BVH tree comprises: generating a plurality of 2D (two dimensional) tiles comprising a plurality of primitives; Converting each of the 2D tiles into a plurality of 3D tiles; And constructing a BVH tree based on the plurality of 3D tiles.
다른 측면에 따라, BVH 트리를 구성하는 방법은, BVH 트리의 상위 레이어에 대응되는, 리프 노드를 수신하는 단계; 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하는 단계; BVH 캐시 내의 부모 노드 식별자의 가용성을 결정하는 단계; 및 부모 노드 식별자의 가용성에 기초하여, BVH 트리의 하위 레이어를 구성하는 단계를 포함할 수 있다.According to another aspect, a method of constructing a BVH tree comprises: receiving a leaf node corresponding to an upper layer of a BVH tree; Generating a parent node, corresponding to a leaf node, associated with a parent node identifier; Determining availability of a parent node identifier in the BVH cache; And configuring a lower layer of the BVH tree based on the availability of the parent node identifier.
또 다른 측면에 따라, BVH 트리(Bounded Volume Hierarchy tree)를 구성하는 시스템은, 복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하고, 2D 타일들 각각을 복수의 3D 타일들로 전환하는 비닝 유닛; 및 복수의 3D 타일들에 기초하여, BVH 트리를 구성하는 BVH 유닛을 포함하는 GPU(Graphics Processing Unit)을 포함할 수 있다.According to another aspect, a system for constructing a BVH tree (Bounded Volume Hierarchy tree) comprises generating a plurality of 2D tiles comprising a plurality of primitives, converting each of the 2D tiles into a plurality of 3D tiles ; And a Graphics Processing Unit (GPU) comprising a BVH unit that constitutes a BVH tree, based on the plurality of 3D tiles.
또 다른 측면에 따라, BVH 트리(Bounded Volume Hierarchy tree)를 구성하는 시스템은, BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신하고, 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하고, BVH 캐시 내의 부모 노드 식별자의 가용성을 결정하고, 부모 노드 식별자의 가용성에 기초하여, BVH 트리의 하위 레이어를 구성하는 BVH 유닛을 포함하는 GPU(Graphics Processing Unit)을 포함할 수 있다.According to another aspect, a system comprising a BVH tree (Bounded Volume Hierarchy tree) receives a leaf node corresponding to an upper layer of the BVH tree and generates a parent node associated with the parent node identifier corresponding to the leaf node , And a graphics processing unit (GPU) that includes a BVH unit that determines the availability of a parent node identifier in the BVH cache and configures a lower layer of the BVH tree based on the availability of the parent node identifier.
또 다른 측면에 따라, 전술한 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.According to another aspect, there is provided a computer-readable recording medium on which a program for implementing the above-described method is recorded.
도 1은 일 실시예에 따라, BVH 트리를 구성하기 위한 시스템을 나타낸다.
도 2는 일 실시예에 따른 GPU의 다양한 구성요소들을 개시한다.
도 3은 일 실시예에 따라, 2D 타일들의 생성을 위해 비닝 패스 동안 수행되는 과정을 도시한다.
도 4는 일 실시예에 따라, BVH 트리를 구성하는 하드웨어 구조를 도시한다.
도 5는 일 실시예 따라, BVH 트리의 하위 레이어를 구성하기 위한 하위 트리 전도 파이프라인(lower tree conduction pipeline)을 개시한다.
도 6은 일 실시예에 따라 BVH 트리를 구성하기 위한 방법을 도시한다.
도 7은 일 실시예에 따라, BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 방법을 도시한다.
도 8 및 도 9는 일 실시예에 따라, BVH 트리의 하위 레이어를 구성하는 방법을 나타낸다.
도 10은 일 실시예에 따라, 슬라이스 세그먼트들(slice segments)의 병렬 코딩(parallel coding)을 위한 방법을 실행하는 컴퓨팅 환경을 도시한다.Figure 1 shows a system for constructing a BVH tree, according to one embodiment.
2 discloses various components of a GPU according to one embodiment.
FIG. 3 illustrates a process performed during a binning pass for the generation of 2D tiles, in accordance with one embodiment.
4 shows a hardware structure that constitutes a BVH tree, according to one embodiment.
Figure 5 discloses a lower tree conduction pipeline for constructing a lower layer of a BVH tree, according to one embodiment.
6 illustrates a method for constructing a BVH tree according to one embodiment.
7 illustrates a method of constructing a leaf node corresponding to an upper layer of a BVH tree, according to an embodiment.
Figures 8 and 9 illustrate a method for constructing a lower layer of a BVH tree, according to one embodiment.
10 illustrates a computing environment for implementing a method for parallel coding of slice segments, in accordance with one embodiment.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.Although the terms used in the present embodiments have been selected in consideration of the functions in the present embodiments and are currently available in common terms, they may vary depending on the intention or the precedent of the technician working in the art, the emergence of new technology . Also, in certain cases, there are arbitrarily selected terms, and in this case, the meaning will be described in detail in the description part of the embodiment. Therefore, the terms used in the embodiments should be defined based on the meaning of the terms, not on the names of simple terms, and on the contents of the embodiments throughout.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 실시예들에 기재된 "...부", "...모듈"의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.In the descriptions of the embodiments, when a part is connected to another part, it includes not only a case where the part is directly connected but also a case where the part is electrically connected with another part in between . Also, when a component includes an element, it is understood that the element may include other elements, not the exclusion of any other element unless specifically stated otherwise. The term " ... ", "module ", as used in the embodiments, means a unit for processing at least one function or operation, and may be implemented in hardware or software, or a combination of hardware and software Can be implemented.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.It should be noted that the terms such as "comprising" or "comprising ", as used in these embodiments, should not be construed as necessarily including the various components or stages described in the specification, Some steps may not be included, or may be interpreted to include additional components or steps.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다.The following description of the embodiments should not be construed as limiting the scope of the present invention and should be construed as being within the scope of the embodiments of the present invention.
종래의 시스템 및 방법들과는 달리, 본 개시에 따른 방법은 CPU(Central Processing Unit) 및 GPU(Graphics Processing Unit)를 이용하여, BVH (Bounded Volume Hierarchy tree) 구성(construction)을 최적화하기 위해 이용될 수 있다. 본 개시에 따르면, BVH 구성은, 타일 기반 모바일 GPU에서 이용되는 계산 및 메모리 읽기/쓰기를 재사용하기 위해, CPU, GPU 및 가속기(accelerator)에 분배될 수 있다. 일 실시예에 따라, 계층적 선형 BVH(hierarchical linear BVH) 기술은 상위 레이어 및 하위 레이러를 포함하는 2 레이어 BVH 트리를 구성하기 위해 사용될 수 있다. BVH 트리의 상위 레이어는 SAH(Surface Area Heuristic)을 이용하여 구성될 수 있고, 하위 레이어는 LBVH(Linear BVH)를 이용하여 구성될 수 있다. 일 실시예에 따라, GPU의 컴퓨트 쉐이어(compute shader)에 따라 운영되는 가속기의 구조는 BVH 트리의 하위 레이어를 구성하기 위해 제공될 수 있다.Unlike conventional systems and methods, the method according to the present disclosure can be used to optimize a BVH (Bounded Volume Hierarchy tree) construction using a Central Processing Unit (CPU) and a Graphics Processing Unit (GPU) . According to the present disclosure, a BVH configuration can be distributed to a CPU, a GPU, and an accelerator to reuse computation and memory reads / writes used in tile-based mobile GPUs. According to one embodiment, a hierarchical linear BVH (HVL) technique may be used to construct a two-layer BVH tree that includes upper layers and lower layers. The upper layer of the BVH tree may be configured using SAH (Surface Area Heuristic), and the lower layer may be configured using LBVH (Linear BVH). According to one embodiment, the structure of an accelerator operated according to a compute shader of a GPU may be provided to construct a lower layer of the BVH tree.
본 개시에 따른 방법 및 시스템은 BVH 트리를 구성하기 위해 캐시 기반 고정 기능 하드웨어(cache based fixed function hardware)를 활용할 수 있다. 일 실시예에 따라, BVH 트리는 캐시 기반 고정 기능 하드웨어를 이용하여 구성될 수 있다. 종래 방법과는 달리, BVH 트리를 구성하기 위해, 캐시 기반 고정 기능 하드웨어는 복수의 3D(3 Dimensional) 타일들을 순차적으로 수신할 수 있다. 따라서, BVH 트리 구성 및 바운딩 볼륨 갱신은 캐시 기반 고정 기능 하드웨어에서 수행될 수 있다. 또한, 본 개시에 따른 캐시 기반 고정 기능 하드웨어는, "Fast and Simple Agglomerative LBVH"를 활용하여, LBVH 구성을 향상 시킬 수 있다.The method and system according to the present disclosure may utilize cache based fixed function hardware to construct a BVH tree. According to one embodiment, the BVH tree may be configured using cache-based fixed functionality hardware. Unlike the conventional method, in order to construct the BVH tree, the cache-based fixed function hardware may sequentially receive a plurality of 3D (3 Dimensional) tiles. Thus, the BVH tree configuration and the bounding volume update can be performed in cache-based fixed functionality hardware. In addition, cache based fixed functionality hardware according to this disclosure may utilize "Fast and Simple Agglomerative LBVH" to improve LBVH configuration.
종래 방법과는 달리, 본 개시에 따른 방법 및 시스템은, BVH 트리 구성(다시 말해, 하위 트리 생성과 상위 트리 생성)이 래스터화 패스(rasterization pass)와 병렬적으로 수행되는, 하이브리드 렌더링(hybrid rendering)을 위해, BVH 트리 구성을 위한 다른 파이프라인을 제공할 수 있다. 일 실시예에 따라, BVH 트리의 상위 레이어는 CPU 또는 GPU 쉐이더 코어들에서 구성될 수 있다. BVH 트리의 하위 레이어는 캐시 기반 고정 기능 하드웨어를 이용하여 GPU에서 구성될 수 있다. 따라서, 본 개시에 따른 파이프라인은, 타일 기반 모바일 GPU 아키텍처를 위해, 하이브리드 렌더링의 맥락에서 BVH 구성의 효과적인 실행을 위해, CPU, 및 GPU 내의 캐시 기반 고정 기능 하드웨어를 활용할 수 있다.Unlike the conventional method, the method and system according to the present disclosure is based on hybrid rendering, in which the BVH tree configuration (i.e., subtree generation and parent tree generation) is performed in parallel with a rasterization pass, ), We can provide another pipeline for BVH tree construction. According to one embodiment, the upper layer of the BVH tree may be configured in CPU or GPU shader cores. The lower layers of the BVH tree can be configured in the GPU using cache-based fixed hardware. Thus, the pipeline according to the present disclosure can utilize cache-based fixed functionality hardware within the CPU and GPU for efficient execution of the BVH configuration in the context of hybrid rendering, for tile-based mobile GPU architectures.
이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Exemplary embodiments will now be described in detail with reference to the accompanying drawings.
도 1은 일 실시예에 따라, BVH 트리를 구성하기 위한 시스템(100)을 나타낸다. 시스템(100)은 하이브리드 렌더링(hybrid rendering)을 위해 BVH 트리를 구성하는 파이프라인을 나타낸다. 일 실시예에 따라, 시스템(100)은 GPU(102), CPU(104), 및 저장부(106)를 포함할 수 있다. GPU(102)는 비닝 패스(a binning pass)(108), 래스터화 패스(a rasterization pass)(110), 및 레이 트레이싱 패스(ray tracing pass)(112)를 포함할 수 있다.Figure 1 shows a
CPU(104)는 BVH 트리를 구성하기 위해 하나 이상의 단계들을 수행할 수 있다. CPU(104)는 독립적으로 BVH 트리를 구성할 수 있고, 또는, CPU(104)는 GPU(102)와 함께 BVH 트리를 구성할 수 있다. BVH 트리를 생성함에 있어서, BVH 트리의 일부는 CPU(104)에서 구성될 수 있고, BVH 트리의 다른 일부는 GPU(102)에서 구성될 수 있다. 일 실시예에 따라, 상위 트리 생성(upper tree creation)은 GPU(102) 또는 CPU(104)에서 수행될 수 있다.
저장부(106)는 이미지 내의 하나 이상의 프리미티브들을 저장하도록 구성될 수 있다. 일 실시예에 따라, 하나 이상의 프리미티브들을 획득하기 위하여, GPU(102) 및 CPU(104)는 저장부(106)와 통신할 수 있다. 저장부(106)는 하나 이상의 컴퓨터로 읽혀지는 저장 미디어(computer-readable storage media)를 포함할 수 있다. 저장부(106)는 비 휘발성 저장 요소들(non-volatile storage elements)을 포함할 수 있다. 비 휘발성 저장 요소들의 예들은 마그네틱 하드 디스크들(magnetic hard dics), 광학 디스크들(optical discs), 플로피 디스크들(floppy discs), 플래쉬 메모리들(flash memories), EPROM(electrically programmable memories) 종류들 또는 EEPROM(electrically erasable and programmable memories) 종류들을 포함할 수 있다. 추가로, 일 예시에 따라, 저장부(106)는 비 일시적 저장 매체(non-transitory storage medium)가 될 수 있다. 비 일시적("non-transitory")이라는 용어는, 반송파(carrier wave) 또는 전파 신호(propagated signal)에서 구현되지 않는다는 것을 의미할 수 있다. 하지만, 비 일시적이라는 용어가 저장부(106)가 이동 가능하지 않는다는 의미로 해석될 수는 없을 것이다. 일부 예에서, 저장부(10)는 메모리보다 상당한 양의 정보를 저장하도록 구성될 수 있다. 특정 실시예에서, 비 일시적 저장 매체는 시간에 따라 변하는 데이터를 저장할 수 있다.(예로, RAM(Random Access Memory) 또는 캐시(cache))The
일 실시예에 따라, 도 1에 도시되지는 않았지만, 비닝 패스(108)는 복수의 2D 타일들을 생성하기 위해 다양한 구성요소들을 포함할 수 있다. 비닝 패스(108)에서, 복수의 프리미티브들이 입력으로써 수신될 수 있다. 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 각 프리미티브가 다른 빈(bin)들로 분류됨에 따라, 복수의 2D 타일들이 생성될 수 있다. 따라서, 비닝 패스(108)의 입력은 복수의 프리미티브들을 포함할 수 있고, 비닝 패스(108)의 출력은 복수의 2D 타일들을 포함할 수 있다. 비닝 패스(108)의 다양한 구성요소들은 도 3에서 살펴보기로 한다.According to one embodiment, although not shown in FIG. 1, the binning
비닝 패스(108)를 통해 생성된 복수의 2D 타일들은 래스터화 패스(110)에서 이용될 수 있다. 래스터화 패스(110)는, 레이 트레이싱 패스(112)를 위한 광선들을 생성하기 위해, 광선 생성 블록(미도시)에 의해 사용되는 데이터를 생성할 수 있다. A plurality of 2D tiles generated through the binning
복수의 2D 타일들이 포함될 수 있는, 비닝 패스(108)의 출력은, BVH 트리 생성에 대한 입력으로써 제공될 수 있다. 하위 트리 생성과 상위 트리 생성에 있어서, 각 2D 타일은 복수의 3D 타일들로 변환될 수 있다. 일 실시예에 따라, BVH 트리(다시 말해, 하위 트리 및 상위 트리)는 복수의 3D 타일들에 기초하여 생성될 수 있다.The output of the
일 실시예에 따라, 복수의 3D 타일들이, BVH 트리를 구성하기 위해, 비닝 패스(108)로부터 순차적으로 수신될 수 있다. BVH 트리의 상위 레이어는 CPU(104)또는 GPU 쉐이더 코어에서 구성될 수 있다. BVH 트리의 하위 레이어는, 캐시 기반의 고정 기능 하드웨어(cache based fixed function hardware)를 이용하여, GPU에서 구성될 수 있다.According to one embodiment, a plurality of 3D tiles may be sequentially received from the binning
일 실시예에 따라, 캐시 기반 고정 기능 하드웨어를 이용하여, 각 3D 타일은 BVH 트리의 하위 레이어로 전환될 수 있다. 캐시 기반의 고정 기능 하드웨어는 도 4에서 설명하기로 한다.In accordance with one embodiment, each 3D tile can be converted to a lower layer of the BVH tree using cache-based fixed functionality hardware. The cache-based fixed function hardware will be described in FIG.
일 실시예에 따라, 하나 이상의 3D 타일들로부터 후보 프리미티브가 수신될 수 있고, 리프 노트가 후보 프리미티브에 기초하여 구성될 수 있다. 리프 노드는 BVH 트리의 상위 레이어와 대응될 수 있다.According to one embodiment, candidate primitives may be received from one or more 3D tiles, and leaf notes may be constructed based on candidate primitives. The leaf node may correspond to an upper layer of the BVH tree.
따라서, BVH 트리 생성은 하위 트리 생성 및 상위 트리 생성을 포함할 수 있고, 이미지 생성을 위해, 생성된 BVH 트리는 레이 트레이싱 패스(112)에 의해 이용될 수 있다. 종래 시스템 및 방법들과 달리, BVH 트리는 GPU(102) 및 CPU(104)를 이용하여 구성될 수 있다. 본 명세서에서 제안되는 방법에 따라, BVH 구성은 GPU(102) 및 CPU(104)에 분배될 수 있다. 종래 시스템과 달리, BVH 생성은 래스터화 패스(110)와 병렬적으로 수행될 수 있다.Thus, the BVH tree generation may include subtree generation and parent tree generation, and for image generation, the generated BVH tree may be used by the
도 1에 도시된 시스템(100)은 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 시스템(100) 내의 GPU(102)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.The
도 2는 일 실시예에 따른 GPU(102)의 다양한 구성요소들을 개시한다. 일 실시예에 따라, GPU(102)는 비닝 유닛(202), BVH 유닛(204), 래스터화 유닛(206), 및 레이 트레이싱 유닛(208)을 포함할 수 있다.FIG. 2 discloses various components of the
일 실시예에 따라, 비닝 유닛(202)은 복수의 2D 타일들을 생성하도록 구성될 수 있다. 비닝 유닛(202)은 복수의 프리미티브들을 수신하도록 구성될 수 있다. 비닝 유닛(202)은, 각 프리미티브의 버텍스들의 위치에 기초하여 각 프리미티브을 다른 빈들로 분류하여, 복수의 2D 타일들을 생성하도록 구성될 수 있다. 각 2D 타일은 타일에 속하는 복수의 프리미티브들의 정보를 포함할 수 있다. 또한, 비닝 유닛(202)은 복수의 2D 타일들 중 각 2D 타일을 복수의 3D 타일들로 변환시키도록 구성될 수 있다.According to one embodiment, the
BVH 유닛(204)은 BVH 트리를 구성하기 위해 하나 이상의 단계들을 수행하도록 구성될 수 있다. BVH 트리는, 비닝 유닛(202)으로부터 수신된 복수의 3D 타일들에 기초하여, 구성될 수 있다. BVH 유닛(204)은 BVH 트리를 구성하기 위한 다양한 구성요소들을 포함할 수 있다. BVH 유닛(204)의 다양한 구성요소에 대해서는 도 4에서 살펴보기로 한다.The
일 실시예에 따라, BVH 유닛(204)은 BVH 트리를 구성하기 위해, 복수의 3D 타일들을 순차적으로 수신하도록 구성할 수 있다. BVH 유닛(204)은 하나 이상의 3D 타일들로부터 후보 프리미티브(candidate primitive)를 수신하도록 구성될 수 있다. BVH 유닛(204)은 수신된 후보 프리미티브에 기초하여, BVH 트리의 상위 레이어에 대응되는 리프 노트(leaf node)를 구성하도록 구성될 수 있다. BVH 유닛(204)은 리프 노드에 대응되는 부모 노드(parent node)를 생성하도록 구성될 수 있다. 각 부모 노드는 부모 노드 식별자(parent node identifier)와 연관될 수 있다. BVH 유닛(204)은 BVH 캐시 내의 부모 노드 식별자의 가용성(availability)을 결정하도록 구성될 수 있다. 또한, BVH 유닛(204)은 부모 노드 식별자의 가용성에 기초하여 BVH 트리의 하위 레이어를 구성하도록 구성될 수 있다.According to one embodiment, the
일 실시예에 따라, 래스터화 유닛(206)은 레이 트레이싱 패스(112)를 위한 광선 생성에 이용되는 데이터를 생성하도록 구성될 수 있다.According to one embodiment, the
일 실시예에 따라, 레이 트레이싱 유닛(208)은 이미지를 생성하도록 구성될 수 있다. 이미지는 BVH 유닛(204)에 의해 구성되는 BVH 트리를 이용하여 생성될 수 있다. 레이 트레이싱 유닛(208)은 BVH 유닛(204)로부터 BVH 트리를 수신하도록 구성될 수 있다.According to one embodiment, the
도 2에 도시된 GPU(102)는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 시스템(100) 내의 GPU(102)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.The
도 3은 일 실시예에 따라, 2D 타일들의 생성을 위해 비닝 패스 동안 수행되는 과정을 도시한다. 일 실시예에 따라, 비닝 패스(108)는 속성 인출 유닛(attribute fetch unit)(302), 버텍스 쉐이더 유닛(304), 프리미티브 변환 블록(306), 및 비닝 유닛(202)을 포함할 수 있다. 도 3은 타일 기반 렌더링의 비닝 패스(108)에서의 다양한 단계들을 도시한다.FIG. 3 illustrates a process performed during a binning pass for the generation of 2D tiles, in accordance with one embodiment. According to one embodiment, the binning
일 실시예에 따라, 속성 인출 유닛(302)은 저장부(106)로부터 버텍스들의 속성을 인출하도록 구성될 수 있다.According to one embodiment, the attribute fetch
일 실시예에 따라, 버텍스 쉐이더 유닛(304)은 가상 공간상의 프리미티브의 각 버텍스의 3차원 위치를 2차원 좌표로 변환하도록 구성될 수 있다. 버텍스 쉐이더 유닛(304)은 위치, 색, 프리미티브의 텍스처 좌표와 같은 다양한 성질을 조작하도록 구성될 수 있지만, 프리미티브에 대한 새로운 버텍스들을 생성할 수는 없다.According to one embodiment, the
일 실시예에 따라, 프리미티브 변환 블록(306)은 복수의 프리미티브들을 타일들로 변환하도록 구성될 수 있다.According to one embodiment, the
비닝 패스(108)에서, 복수의 프리미티브들(예로, 삼각형들)은 버텍스 쉐이터 유닛(304)으로부터 수신될 수 있다.In
일 실시예에 따라, 비닝 유닛(202)은 복수의 프리미티브들을 수신하도록 구성될 수 있다. 또한, 비닝 유닛(202)은 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 각 프리미티브를 다른 빈들에 분류함으로써, 복수의 2D 타일들을 생성하도록 구성될 수 있다. 생성된 복수의 2D 타일들 중 각 2D 타일은 2D 타일에 포함되는 프리미티브들의 정보를 포함할 수 있다.According to one embodiment, the
도 4는 일 실시예에 따라, BVH 트리를 구성하는 하드웨어 구조를 도시한다. 일 실시예에 따라, BVH 유닛(204)은 캐시 기반 고정 기능 하드웨어를 포함할 수 있다. 캐시 기반 고정 기능 하드웨어는 주소 계산 유닛(402), BVH 캐시(404), L2 캐시(406), DRAM(Dynamic Random Access Memory)(408) 및 바운딩 박스 병합부(Bounding Box Merge)(410)를 포함할 수 있다. 주소 계산 유닛(402) 및 바운딩 박스 병합부(410)는 고정 기능 하드웨어(fixed function hardware)일 수 있다.4 shows a hardware structure that constitutes a BVH tree, according to one embodiment. According to one embodiment, the
일 실시예에 따라, BVH 캐시(404)는 태그들(404a), 데이터(404b), 비트맵(404c), 및 MSHR(Miss State Handle Register)(404d)를 포함할 수 있다.According to one embodiment, the
복수의 프리미티브들은 캐시 기반 고정 기능 하드웨어에 제공될 수 있다. 일 실시예에 다라, 복수의 프리미티브들은 몰턴 코드(Morton code)를 이용하여 분류될 수 있다. BVH 유닛(204)은 하나 이상의 3D 타일들로부터 후보 프리미티브를 수신하도록 구성될 수 있다. 일 실시예에 따라, 복수의 3D 타일들은 BVH 유닛(204)에 의해 획득될 수 있다. 복수의 3D 타일들을 획득하는 다양한 단계들은 도 5에서 설명하기로 한다.A plurality of primitives may be provided to the cache-based fixed functionality hardware. According to one embodiment, a plurality of primitives may be classified using Morton codes.
일 실시예에 따라, 리프 노드는 후보 프리미티브에 기초하여 구성될 수 있다. 구성된 리프 노드는 BVH 트리의 상위 레이어에 대응될 수 있다. 따라서, 각 프리미티브는 BVH 유닛(204)에서 리프 노드로써 구성될 수 있다.According to one embodiment, a leaf node may be configured based on a candidate primitive. The configured leaf node may correspond to an upper layer of the BVH tree. Thus, each primitive can be configured as a leaf node in the
도 4에서, 리프 노드(L)가 수신되는 경우, 주소 계산 유닛(402)은, BVH 트리 내의 리프 노드의 위치를 기초로, 기준 주소(base address) 및 오프셋을 이용하여, 리프 노드의 주소를 계산하도록 구성될 수 있다. 리프 노드의 주소 계산 후에, 주소 계산 유닛(402)은 계산된 리프 노드의 주소에 따라 L2 쓰기 요청(L2 write request)을 L2 캐시(406)에 전달하도록 구성될 수 있다. 또한, 주소 계산 유닛(402)은, 리프 노드에 대응되는 부모 노드를 생성하기 위해, 리프 노드를 BVH 캐시(404)에 전송할 수 있다. 일 실시예에 따라, 각 부모 노드는 리프 노드와 대응되는 부모 노드 식별자로 고유하게(uniquely) 식별될 수 있다. 또한, 주소 계산 유닛(402)은 바운딩 박스 병합부(410)로부터 중간 노드(I)(Intermediate node)를 수신하여, 마지막 노드가 생성될 때까지, BVH 캐시(404)로 전달할 수 있다.4, when the leaf node L is received, the
일 실시예에 따라, BVH 캐시(404) 내의 부모 노드의 가용성은 BVH 캐시(404)를 부모 노드 식별자로 쿼리(query)하여 결정될 수 있다. According to one embodiment, the availability of the parent node in the
일 실시예에 따라, BVH 캐시(404) 내의 부모 노드 식별자의 가용성은 비트 벡터(bit vector)에 기초하여 결정될 수 있다. 비트 벡터는 BVH 캐시(404) 내의 부모 노드의 가용성을 확인하기 위해 결정될 수 있다. 비트 벡터가 설정된다면,(예를 들어, 비트 벡터가 1로 설정된다면,) 부모 노드의 제 1 자식 노드가 L2 캐시(406)에서 가용적이라는 것을 나타낼 수 있다. 다시 말해, 비트 벡터가 설정될 때, 부모 노드에 대응되는 제 2 자식 노드의 도착 전에, 부모 노드에 대응되는 제 1 자식 노드는 BVH 캐시(404)로부터 L2 캐시(406)로 쫓겨날 수 있다. 따라서, BVH 캐시(404)는 부모 노드를 위한 읽기 요청을 L2 캐시(406)로 전달할 수 있고, MSHR(404d)에서 엔트리가 생성될 수 있다.According to one embodiment, the availability of the parent node identifier in the
BVH 캐시(404)로부터 제 1 자식 노드를 인출한 후에, 리프 노드는 부모 노드에 대응되는 제 2 자식 노드로 선언될 수 있다. 또한, BVH 캐시(404)는 제 1 자식 노드 및 제 2 자식 노드를 바운딩 박스 병합부(410)로 전송할 수 있다. 바운딩 박스 병합부(410)는 부모 노드와 대응되는 제 1 자식 노드 및 제 2 자식 노드를 수신할 수 있다.After fetching the first child node from the
부모 노드에 대응되는 비트 벡터가 미설정된 경우, 두가지 시나리오가 가능할 수 있다. 첫번째 시나리오를 살펴보면, 부모 노드 식별자가 BVH 캐시(404) 내에서 가용적인지 여부가 확인될 수 있다. 부모 노드 식별자가 BVH 캐시(404) 내에서 가용적인 경우, 부모 노드에 대응되는 첫번째 자식 노드는 BVH 캐시(404)로부터 인출될 수 있다. 첫번째 자식 노드를 BVH 캐시(404)로부터 인출한 후에, 리프 노드는 부모 노드에 대응되는 제 2 자식 노드로 선언될 수 있다. 또한, BVH 캐시(404)는 제 1 자식 노드 및 제 2 자식 노드를 바운딩 박스 병합부(410)로 전송할 수 있다. 바운딩 박스 병합부(410)는 부모 노드에 대응되는 제 1 자식 노드 및 제 2 자식 노드를 수신할 수 있다.If the bit vector corresponding to the parent node is not set, two scenarios may be possible. Looking at the first scenario, it can be verified whether the parent node identifier is available in the
두번째 시나리오를 살펴보면, 부모 노드 식별자가 BVH 캐시(404)에서 가용적인지 여부가 확인될 수 있다. 부모 노드 식별자가 BVH 캐시(404)에서 비가용적인 경우, 리프 노드는 부모 노드에 대응되는 제 1 자식 노드로써 선언될 수 있다. 또한, BVH 캐시(404)는 부모 노드에 대응되는 제 1 자식 노드의 정보를 저장할 수 있다. 일 실시예에 따라, 엔트리는 부모 노드를 위해 BVH 캐시(404)에서 만들어질 수 있다. 모든 엔트리들이 캐시 내에서 다 차는 경우, BVH 캐시(404)에서의 쫓겨남(eviction)이 발생할 수 있다.Looking at the second scenario, it can be verified whether the parent node identifier is available in the
또한, DRAM(408)은 각 타일마다 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다. 예로, DRAM(408)은 타일 T0에 대한 리프 노드 및 중간 노드 각각의 어레이, 및 타일 T1에 대한 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다.In addition, the
도 5는 일 실시예 따라, BVH 트리의 하위 레이어를 구성하기 위한 하위 트리 전도 파이프라인(lower tree conduction pipeline)을 개시한다. 비닝 패스(108)에서 생성되는 (복수의 2D 타일들을 포함할 수 있는) 비닝 데이터는 BVH 트리의 하위 레이어를 구성하기 위해 이용될 수 있다. BVH 트리의 하위 레이어를 구성하기 위한 파이프라인은 도 5에 도시된다. 도 5로부터, 복수의 2D 타일들이 비닝 유닛(202)으로부터 획득되고, BVH 유닛(204)에서 복수의 2D 타일들이 복수의 3D 타일들로 전환될 수 있다.Figure 5 discloses a lower tree conduction pipeline for constructing a lower layer of a BVH tree, according to one embodiment. The binning data (which may include a plurality of 2D tiles) generated in the
도 5를 살펴보면, 복수의 2D 타일들이 각 빈으로부터 획득될 수 있다. 2D 타일들에 대한 프리미티브들을 획득하고, (래스터화에서 요구되는) 버텍스 쉐이딩 및 프리미티브 어셈블리 단계들이 수행된 후에, 컴퓨트 쉐이더(compute shader)가 실행될 수 있고, 이에 따라 모든 프리미티브들이 몰턴 코드에 기초하여 분류될 수 있다. 이어서, Z 비닝 유닛은, 복수의 3D 타일들을 출력하기 위해, Z에 따라 복수의 2D 타일들을 전환시킬 수 있다. 이러한 3D 타일들은 BVH 트리를 구성하기 위한 캐시 기반 고정 기능 하드웨어에 입력으로써 제공될 수 있다.Referring to FIG. 5, a plurality of 2D tiles may be obtained from each bin. After obtaining the primitives for the 2D tiles and performing the vertex shading and primitive assembly steps (required in rasterization), a compute shader can be executed, so that all primitives are based on the Morton code Can be classified. The Z binning unit may then switch a plurality of 2D tiles according to Z to output a plurality of 3D tiles. These 3D tiles may be provided as input to cache-based fixed functionality hardware to construct a BVH tree.
도 6은 일 실시예에 따라 BVH 트리를 구성하기 위한 방법을 도시한다. 일 실시예에 따라, 단계 602에서, 방법(600)은 복수의 프리미티브들을 수신하는 단계를 포함할 수 있다. 비닝 유닛(202)이 복수의 프리미티브들을 수신할 수 있다. 단계 604에서, 방법(600)은 각 프리미티브를 분류하여 복수의 2D 타일들을 생성하는 단계를 포함할 수 있다. 비닝 유닛(202)은 각 프리미티브를 분류하여 복수의 2D 타일들을 생성할 수 있다.6 illustrates a method for constructing a BVH tree according to one embodiment. According to one embodiment, at
단계 606에서, 방법(600)은 각 2D 타일을 복수의 3D 타일들로 전환하는 단계를 포함할 수 있다. 비닝 유닛(202) 또는 BVH 유닛(204)은 각 2D 타일을 복수의 3D 타일들로 전환할 수 있다. 단계 608에서, 방법(600)은 복수의 3D 타일들에 기초하여 BVH 트리를 구성하는 단계를 포함할 수 있다. 방법(600)에서의 각 단계들은 도 6에 도시된 순서 이외에도 다른 순서에 의해 수행될 수 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 6의 일부 단계들이 수정되거나 생략될 수 있다.In
도 7은 일 실시예에 따라, BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 방법을 도시한다. 단계 702에서, 방법(700)은 복수의 프리미티브들을 수신하는 단계를 포함할 수 있다. 비닝 유닛(202)은 복수의 프리미티브들을 수신할 수 있다. 단계 704에서, 방법(700)은 각 프리미티브를 분류하여 복수의 2D 타일들을 생성하는 단계를 포함할 수 있다. 비닝 유닛(202)은 각 프리미티브를 분류하여 복수의 2D 타일들을 생성할 수 있다.7 illustrates a method of constructing a leaf node corresponding to an upper layer of a BVH tree, according to an embodiment. In
단계 706에서, 방법(700)은 각 2D 타일을 복수의 3D 타일들로 변환하는 단계를 포함할 수 있다. 비닝 유닛(202) 또는 BVH 유닛(204)은 각 2D 타일을 복수의 3D 타일들로 변환할 수 있다. 단계 708에서, 방법(700)은 하나 이상의 3D 타일들로부터 후보 프리미티브를 수신하는 단계를 포함할 수 있다. BVH 유닛(204)은 하나 이상의 3D 타일들로부터 후보 프리미티브를 수신할 수 있다. 단계 710에서, 방법(700)은 후보 프리미티브에 기초하여 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 단계를 포함할 수 있다. BVH 유닛(204)은 후보 프리미티브에 기초하여 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성할 수 있다. 방법(700)에서의 각 단계들은 도 7에 도시된 순서 이외에도 다른 순서에 의해 수행될 수 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 7의 일부 단계들이 수정되거나 생략될 수 있다.In
도 8 및 도 9는 일 실시예에 따라, BVH 트리의 하위 레이어를 구성하는 방법을 나타낸다. Figures 8 and 9 illustrate a method for constructing a lower layer of a BVH tree, according to one embodiment.
먼저 도 8에서, 단계 802에서, 방법(800)은 BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신하는 단계를 포함할 수 있다. BVH 유닛(204)은 BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신할 수 있다.First, in Figure 8, at
단계 804에서, 방법(800)은 리프 노드에 대응되는 부모 노드를 생성하는 단계를 포함할 수 있다. BVH 유닛(204)은 리프 노드에 대응되는 부모 노드를 생성할 수 있다. 각 생성된 부모 노드는 부모 노드 식별자와 연관될 수 있다. 단계 806에서, 방법(800)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정하는 단계를 허용할 수 있다. BVH 유닛(204)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정할 수 있다. 일 실시예에 따라, 비트 벡터를 결정 또는 확인함에 따라, BVH 캐시(404) 내의 부모 노드 식별자의 가용성이 결정될 수 있다.In
단계 808에서, 방법(800)은 비트 벡터가 설정되었는지 여부를 결정하는 단계를 포함할 수 있다. BVH 유닛(204)은 비트 벡터가 설정되었는지 여부를 결정할 수 있다. 비트 벡터가 설정된 것으로 결정되는 경우, 단계 810에서, 방법(800)은 BVH 캐시(404)로부터 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출하는 단계를 포함할 수 있다. BVH 유닛(204)은 BVH 캐시(404)로부터 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출할 수 있다. 단계 812에서, 방법(800)은 리프 노드를 부모 노드에 대응되는 제 2 자식 노드로써 선언할 수 있다. BVH 유닛(204)은 리프 노드를 부모 노드에 대응되는 제 2 자식 노드로써 선언할 수 있다. 단계 814에서, 방법(800)은 제 1 자식 노드에 대응되는 바운딩 박스와 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계를 포함할 수 있다. BVH 유닛(204)은 제 1 자식 노드에 대응되는 바운딩 박스와 제 2 자식 노드에 대응되는 바운딩 박스를 병합할 수 있다.In
단계 808에서 비트 벡터가 미설정된 경우, 단계 816에서, 방법(800)은 부모 노드 식별자가 BVH 캐시(404) 내에서 가용적인지 여부를 결정하는 단계를 포함할 수 있다. BVH 유닛(204)은 부모 노드 식별자가 BVH 캐시(404) 내에서 가용적인지 여부를 결정할 수 있다. 단계 818에서, 방법(800)은 BVH 캐시(404)로부터 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출하는 단계를 포함할 수 있다. BVH 유닛(204)이 BVH 캐시(404)로부터 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출할 수 있다. 단계 820에서, 방법(800)은 리프 노드를 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계를 포함할 수 있다. BVH 유닛(204)은 리프 노드를 부모 노드에 대응되는 제 2 자식 노드로 선언할 수 있다. 단계 822에서, 방법(800)은 제 1 자식 노드에 대응되는 바운딩 박스와 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계를 포함할 수 있다. BVH 유닛(204)은 제 1 자식 노드에 대응되는 바운딩 박스와 제 2 자식 노드에 대응되는 바운딩 박스를 병합할 수 있다.If the bit vector is not set in
단계 816에서, 부모 노드 식별자가 BVH 캐시(404)에서 가용적이지 않은 경우, 도 9를 살펴보면, 단계 824에서, 방법(800)은 BVH 캐시(404)가 유효하지 않는 엔트리를 갖는지 여부를 결정하는 단계를 포함할 수 있다. BVH 유닛(204)은 BVH 캐시(404)가 유효하지 않는 엔트리를 갖는지 여부를 결정할 수 있다. BVH 캐시가 유효하지 않는 엔트리를 갖는 경우, 단계 826에서, 방법(800)은 리프 노드를 부모 노드에 대응되는 제 1 자식 노드로 선언할 수 있다. BVH 유닛(204)은 리프 노드를 부모 노드에 대응되는 제 1 자식 노드로 선언할 수 있다. 단계 828에서, 방법(800)은 제 1 자식 노드의 정보를 BVH 캐시(404)에 저장하는 단계를 포함할 수 있다. BVH 유닛(204)은 제 1 자식 노드의 정보를 BVH 캐시(404)에 저장할 수 있다.In step 816, if the parent node identifier is not available in the
단계 824에서, BVH 캐시(404)가 유효하지 않은 엔트리를 갖지 않은 경우, 방법(800)은 정책(policy)을 이용하여 캐시 라인을 쫓아내고, 비트 라인에 엔트리를 마킹하는 단계를 포함할 수 있다. BVH 유닛(204)은 정책(policy)을 이용하여 캐시 라인을 쫓아내고, 비트 라인에 엔트리를 마킹할 수 있다.At
방법(800)에서의 각 단계들은, 도 8 및 도 9에 도시된 순서 이외에도 다른 순서에 의해 수행될 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 8 및 도 9의 일부 단계들이 수정되거나 생략될 수 있다.Each step in the
도 10은 일 실시예에 따라, 슬라이스 세그먼트들(slice segments)의 병렬 코딩(parallel coding)을 위한 방법을 실행하는 컴퓨팅 환경을 도시한다. 도 9에서, 컴퓨팅 환경(902)은 제어부(904) 및 ALU(Arithmetic Logic Unit)(906)와 함께 장착된 적어도 하나의 프로세싱 유닛(908), 메모리(910), 저장부(912), 복수의 네트워킹 장치들(916) 및 복수의 입출력 장치들(914)을 포함할 수 있다. 프로세싱 유닛(908)은 알고리즘 명령어를 처리할 수 있다. 프로세싱 유닛(908)은 프로세싱을 수행하기 위하여 제어부(904)로부터 명령들을 수신할 수 있다. 또한, 명령어들의 실행에 포함된 로직 및 연산 동작들이 ALU(906)에 의해 계산될 수 있다.10 illustrates a computing environment for implementing a method for parallel coding of slice segments, in accordance with one embodiment. 9, a
전체적인 컴퓨팅 환경(902)은 다수의 동종(homogeneous) 및/또는 이종(heterogeneous) 코어들, 다수의 서로 다른 CPU들, 특수 미디어 및 다른 가속기로 구성될 수 있다. 프로세싱 유닛(908)은 알고리즘의 명령어들을 처리할 수 있다. 또한, 복수의 프로세싱 유닛(908)들은 단일 칩 또는 다수의 칩들 상에 위치할 수 있다.The
실행을 위해 요구되는 명령어들 및 코드들로 이루어진 알고리즘은 메모리(910) 및 저장부(912) 중 적어도 하나에 저장될 수 있다. 명령어들은 메모리(910) 또는 저장부(912)로부터 인출되어서, 프로세싱 유닛(908)에 의해 실행될 수 있다.An algorithm consisting of the instructions and codes required for execution may be stored in at least one of
하드웨어 구현의 경우, 네트워킹 유닛과 입출력 장치 유닛을 통한 구현을 지원하기 위해, 다양한 네트워킹 장치들(916) 또는 외부 입출력 장치들(914)이 컴퓨팅 환경에서 연결될 수 있다.In the case of a hardware implementation,
본 개시에 따른 실시예들은, 적어도 하나의 하드웨어 장치들 상에서 동작하고 엘리먼트들을 제어하는 네트워크 관리 기능들을 수행하는, 적어도 하나의 소프트웨어 프로그램을 통해 수행될 수 있다. 엘리먼트들은 도 1 및 10 내의 적어도 하나의 하드웨어 장치, 또는 하드웨어 장치 및 소프트웨어 모듈의 조합이 될 수 있는 블록들이 될 수 있다.Embodiments in accordance with the present disclosure may be implemented through at least one software program that performs network management functions that operate on and control the at least one hardware devices. Elements may be at least one hardware device in Figures 1 and 10, or a block that may be a combination of a hardware device and a software module.
상기 살펴 본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다. The apparatus according to the above embodiments may include a processor, a memory for storing and executing program data, a permanent storage such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, The same user interface device, and the like. Methods implemented with software modules or algorithms may be stored on a computer readable recording medium as computer readable codes or program instructions executable on the processor. Here, the computer-readable recording medium may be a magnetic storage medium such as a read-only memory (ROM), a random-access memory (RAM), a floppy disk, a hard disk, ), And a DVD (Digital Versatile Disc). The computer-readable recording medium may be distributed over networked computer systems so that computer readable code can be stored and executed in a distributed manner. The medium is readable by a computer, stored in a memory, and executable on a processor.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.This embodiment may be represented by functional block configurations and various processing steps. These functional blocks may be implemented in a wide variety of hardware and / or software configurations that perform particular functions. For example, embodiments may include integrated circuit components such as memory, processing, logic, look-up tables, etc., that may perform various functions by control of one or more microprocessors or other control devices Can be employed. Similar to how components may be implemented with software programming or software components, the present embodiments may be implemented in a variety of ways, including C, C ++, Java (" Java), an assembler, and the like. Functional aspects may be implemented with algorithms running on one or more processors. In addition, the present embodiment can employ conventional techniques for electronic environment setting, signal processing, and / or data processing. Terms such as "mechanism", "element", "means", "configuration" may be used broadly and are not limited to mechanical and physical configurations. The term may include the meaning of a series of routines of software in conjunction with a processor or the like.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. The specific implementations described in this embodiment are illustrative and do not in any way limit the scope of the invention. For brevity of description, descriptions of conventional electronic configurations, control systems, software, and other functional aspects of such systems may be omitted. Also, the connections or connecting members of the lines between the components shown in the figures are illustrative of functional connections and / or physical or circuit connections, which may be replaced or additionally provided by a variety of functional connections, physical Connection, or circuit connections.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.In this specification (particularly in the claims), the use of the terms "above" and similar indication words may refer to both singular and plural. In addition, when a range is described, it includes the individual values belonging to the above range (unless there is a description to the contrary), and the individual values constituting the above range are described in the detailed description. Finally, if there is no explicit description or contradiction to the steps constituting the method, the steps may be performed in an appropriate order. It is not necessarily limited to the description order of the above steps. The use of all examples or exemplary terms (e. G., The like) is merely intended to be illustrative of technical ideas and is not to be limited in scope by the examples or the illustrative terminology, except as by the appended claims. It will also be appreciated by those skilled in the art that various modifications, combinations, and alterations may be made depending on design criteria and factors within the scope of the appended claims or equivalents thereof.
Claims (26)
복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하는 단계;
상기 2D 타일들 각각을 복수의 3D 타일들로 전환하는 단계; 및
상기 복수의 3D 타일들에 기초하여, 상기 BVH 트리를 구성하는 단계를 포함하는, 방법.A method for constructing a BVH tree (Bounded Volume Hierarchy tree)
Creating a plurality of 2D dimensional tiles comprising a plurality of primitives;
Converting each of the 2D tiles into a plurality of 3D tiles; And
And constructing the BVH tree based on the plurality of 3D tiles.
상기 BVH 트리를 구성하기 위해, 상기 복수의 3D 타일들이 순차적으로 수신되는, 방법.The method according to claim 1,
Wherein the plurality of 3D tiles are received sequentially to construct the BVH tree.
상기 생성하는 단계는,
상기 복수의 프리미티브들을 수신하는 단계; 및
상기 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 상기 복수의 프리미티브들 각각을 다른 빈(bin)들로 분류하여 상기 복수의 2D 타일들을 생성하는 단계를 포함하는, 방법.The method according to claim 1,
Wherein the generating comprises:
Receiving the plurality of primitives; And
And classifying each of the plurality of primitives into different bins based on a location of vertices of the plurality of primitives to generate the plurality of 2D tiles.
상기 구성하는 단계는,
적어도 하나의 3D 타일로부터 후보 프리미티브를 수신하는 단계;
상기 후보 프리미티브에 기초하여 상기 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 단계;
상기 리프 노드에 대응되는, 부모 노드 식별자(parent node identifier)와 연관된, 부모 노드를 생성하는 단계;
BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하는 단계; 및
상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는 단계;를 포함하는, 방법.The method according to claim 1,
Wherein the configuring comprises:
Receiving a candidate primitive from at least one 3D tile;
Constructing a leaf node corresponding to an upper layer of the BVH tree based on the candidate primitive;
Generating a parent node, associated with a parent node identifier, corresponding to the leaf node;
Determining availability of the parent node identifier in the BVH cache; And
And configuring a lower layer of the BVH tree based on availability of the parent node identifier.
상기 하위 레이어를 구성하는 단계는,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.5. The method of claim 4,
Wherein configuring the lower layer comprises:
Determining whether a bit vector indicating the availability of the parent node identifier is set;
Fetching information of a first child node corresponding to the parent node from the BVH cache when the bit vector is set;
Declaring the leaf node as a second child node corresponding to the parent node; And
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 하위 레이어를 구성하는 단계는,
비트 벡터가 미설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하는 단계;
상기 부모 노드 식별자가 가용적인 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.5. The method of claim 4,
Wherein configuring the lower layer comprises:
Determining whether a bit vector is not set;
Determining if the parent node identifier is available in the BVH cache if the bit vector is not set;
Fetching information of a first child node corresponding to the parent node from the BVH cache if the parent node identifier is available;
Declaring the leaf node as a second child node corresponding to the parent node; And
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 하위 레이어를 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정되는 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하는 단계;
상기 부모 노드 식별자가 가용적이지 않은 경우, 상기 부모 노드에 대응되는 제 1 자식 노드를 상기 리프 노드로 선언하는 단계; 및
상기 제 1 자식 노드의 정보를 상기 BVH 캐시에 저장하는 단계;를 포함하는, 방법.5. The method of claim 4,
Wherein configuring the lower layer comprises:
Determining whether a bit vector is set;
If the bit vector is not set, determining whether the parent node identifier is available in the BVH cache;
If the parent node identifier is not available, declaring a first child node corresponding to the parent node as the leaf node; And
And storing information of the first child node in the BVH cache.
상기 BVH 트리의 상위 레이어에 대응되는, 리프 노드를 수신하는 단계;
상기 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하는 단계;
BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하는 단계; 및
상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는 단계;를 포함하는, 방법,A method for constructing a BVH tree (Bounded Volume Hierarchy tree)
Receiving a leaf node corresponding to an upper layer of the BVH tree;
Generating a parent node, corresponding to the leaf node, associated with a parent node identifier;
Determining availability of the parent node identifier in the BVH cache; And
And constructing a lower layer of the BVH tree based on availability of the parent node identifier.
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.9. The method of claim 8,
Determining whether a bit vector indicating the availability of the parent node identifier is set;
Fetching information of a first child node corresponding to the parent node from the BVH cache when the bit vector is set;
Declaring the leaf node as a second child node corresponding to the parent node; And
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정되는 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하는 단계;
상기 부모 노드 식별자가 가용적인 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.9. The method of claim 8,
Wherein the configuring comprises:
Determining whether a bit vector is set;
If the bit vector is not set, determining whether the parent node identifier is available in the BVH cache;
Fetching information of a first child node corresponding to the parent node from the BVH cache if the parent node identifier is available;
Declaring the leaf node as a second child node corresponding to the parent node; And
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하는 단계;
상기 부모 노드 식별자가 가용적이지 않은 경우, 상기 부모 노드에 대응되는 제 1 자식 노드를 상기 리프 노드로 선언하는 단계;
상기 제 1 자식 노드의 정보를 상기 BVH 캐시에 저장하는 단계;를 포함하는, 방법.9. The method of claim 8,
Wherein the configuring comprises:
Determining whether a bit vector is set;
Determining if the parent node identifier is available in the BVH cache if the bit vector is not set;
If the parent node identifier is not available, declaring a first child node corresponding to the parent node as the leaf node;
And storing information of the first child node in the BVH cache.
상기 BVH 트리를 구성하기 위해, 상기 리프 노드가 순차적으로 수신되는, 방법.9. The method of claim 8,
Wherein the leaf nodes are received sequentially to construct the BVH tree.
복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하고, 상기 2D 타일들 각각을 복수의 3D 타일들로 전환하는 비닝 유닛; 및 상기 복수의 3D 타일들에 기초하여, 상기 BVH 트리를 구성하는 BVH 유닛을 포함하는 GPU(Graphics Processing Unit)을 포함하는, 시스템.A system for constructing a BVH tree (Bounded Volume Hierarchy tree)
A binning unit for generating a plurality of 2D tiles including a plurality of primitives and converting each of the 2D tiles into a plurality of 3D tiles; And a GPU (Graphics Processing Unit) comprising BVH units that make up the BVH tree, based on the plurality of 3D tiles.
상기 BVH 트리를 구성하기 위해, 상기 복수의 3D 타일들이 순차적으로 수신되는, 시스템.14. The method of claim 13,
Wherein the plurality of 3D tiles are sequentially received to construct the BVH tree.
상기 비닝 유닛은,
상기 복수의 프리미티브들을 수신하고,
상기 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 상기 복수의 프리미티브들 각각을 다른 빈(bin)들로 분류하여 상기 복수의 2D 타일들을 생성하는, 시스템.14. The method of claim 13,
The binning unit includes:
Receiving the plurality of primitives,
And classifying each of the plurality of primitives into different bins based on a location of vertices of the plurality of primitives to generate the plurality of 2D tiles.
상기 BVH 유닛은,
적어도 하나의 3D 타일로부터 후보 프리미티브를 수신하고,
상기 후보 프리미티브에 기초하여 상기 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하고,
상기 리프 노드에 대응되는, 부모 노드 식별자(parent node identifier)와 연관된, 부모 노드를 생성하고,
BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하고,
상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는, 시스템.14. The method of claim 13,
The BVH unit includes:
Receiving a candidate primitive from at least one 3D tile,
Constructing a leaf node corresponding to an upper layer of the BVH tree based on the candidate primitive,
Generating a parent node, associated with a parent node identifier, corresponding to the leaf node,
Determining availability of the parent node identifier in the BVH cache,
And configuring a lower layer of the BVH tree based on availability of the parent node identifier.
상기 BVH 유닛은,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하고,
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하고,
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하고,
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는, 시스템.17. The method of claim 16,
The BVH unit includes:
Determining whether a bit vector indicating the availability of the parent node identifier is set,
Fetching information of a first child node corresponding to the parent node from the BVH cache when the bit vector is set,
Declaring the leaf node as a second child node corresponding to the parent node,
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 BVH 유닛은,
비트 벡터가 설정되었는지 여부를 판단하고,
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하고,
상기 부모 노드 식별자가 가용적인 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하고,
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하고,
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는, 시스템.17. The method of claim 16,
The BVH unit includes:
It is determined whether or not a bit vector is set,
If the bit vector is not set, determining whether the parent node identifier is available in the BVH cache,
Fetching information of a first child node corresponding to the parent node from the BVH cache when the parent node identifier is available,
Declaring the leaf node as a second child node corresponding to the parent node,
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 BVH 유닛은,
비트 벡터가 설정되었는지 여부를 판단하고,
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적이지 않는지 여부를 판단하고,
상기 부모 노드 식별자가 가용적이지 않은 경우, 상기 부모 노드에 대응되는 제 1 자식 노드를 상기 리프 노드로 선언하고,
상기 제 1 자식 노드의 정보를 상기 BVH 캐시에 저장하는, 시스템.17. The method of claim 16,
The BVH unit includes:
It is determined whether or not a bit vector is set,
Determining whether the parent node identifier is not available in the BVH cache if the bit vector is not set;
If the parent node identifier is not available, declaring a first child node corresponding to the parent node as the leaf node,
And stores information of the first child node in the BVH cache.
상기 BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신하고, 상기 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하고, BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하고, 상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는 BVH 유닛을 포함하는 GPU(Graphics Processing Unit)을 포함하는, 시스템.A system for constructing a BVH tree (Bounded Volume Hierarchy tree)
Receiving a leaf node corresponding to an upper layer of the BVH tree, generating a parent node associated with the parent node identifier corresponding to the leaf node, determining availability of the parent node identifier in the BVH cache, And a Graphics Processing Unit (GPU) comprising a BVH unit that constitutes a lower layer of the BVH tree, based on availability of the identifier.
상기 BVH 유닛은,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하고,
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하고,
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하고,
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는, 시스템.21. The method of claim 20,
The BVH unit includes:
Determining whether a bit vector indicating the availability of the parent node identifier is set,
Fetching information of a first child node corresponding to the parent node from the BVH cache when the bit vector is set,
Declaring the leaf node as a second child node corresponding to the parent node,
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 BVH 유닛은,
비트 벡터가 설정되었는지 여부를 판단하고,
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하고,
상기 부모 노드 식별자가 가용적인 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하고,
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하고,
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는, 시스템.21. The method of claim 20,
The BVH unit includes:
It is determined whether or not a bit vector is set,
If the bit vector is not set, determining whether the parent node identifier is available in the BVH cache,
Fetching information of a first child node corresponding to the parent node from the BVH cache when the parent node identifier is available,
Declaring the leaf node as a second child node corresponding to the parent node,
Merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
상기 BVH 유닛은,
비트 벡터가 설정되었는지 여부를 판단하고,
상기 비트 벡터가 미설정된 경우, 상기 BVH 캐시 내에서 상기 부모 노드 식별자가 가용적인지 여부를 판단하고,
상기 부모 노드 식별자가 가용적이지 않은 경우, 상기 부모 노드에 대응되는 제 1 자식 노드를 상기 리프 노드로 선언하고,
상기 제 1 자식 노드의 정보를 상기 BVH 캐시에 저장하는, 시스템.21. The method of claim 20,
The BVH unit includes:
It is determined whether or not a bit vector is set,
If the bit vector is not set, determining whether the parent node identifier is available in the BVH cache,
If the parent node identifier is not available, declaring a first child node corresponding to the parent node as the leaf node,
And stores information of the first child node in the BVH cache.
상기 3D 타일들은, 비닝 유닛에 의해, 2D 타일로부터 결정되고, 상기 2D 타일은 복수의 프리미티브들을 포함하는, 시스템.21. The method of claim 20,
Wherein the 3D tiles are determined from a 2D tile by a binning unit, and wherein the 2D tile comprises a plurality of primitives.
상기 BVH 트리를 구성하기 위해, 상기 리프 노드가 순차적으로 수신되는, 시스템.21. The method of claim 20,
To construct the BVH tree, the leaf nodes are received sequentially.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN6474CH2015 | 2015-12-02 | ||
IN6474/CHE/2015 | 2015-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170064977A true KR20170064977A (en) | 2017-06-12 |
KR102570584B1 KR102570584B1 (en) | 2023-08-24 |
Family
ID=59219707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160061424A KR102570584B1 (en) | 2015-12-02 | 2016-05-19 | System and Method for constructing a Bounding Volume Hierarchy Tree |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102570584B1 (en) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819675A (en) * | 2010-04-19 | 2010-09-01 | 浙江大学 | Method for quickly constructing bounding volume hierarchy (BVH) based on GPU |
US20130016109A1 (en) * | 2011-07-15 | 2013-01-17 | Kirill Garanzha | Out-of-core ray tracing with memory-efficient page generation |
KR20130016120A (en) * | 2011-08-04 | 2013-02-14 | 엔비디아 코포레이션 | System, method, and computer-readable recording medium for constructing an acceleration structure |
CN103021018A (en) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | Method for parallel ray tracing by building BVH tree based on graphics processing unit (GPU) |
US20130235049A1 (en) * | 2012-03-09 | 2013-09-12 | Nvidia Corporation | Fully parallel in-place construction of 3d acceleration structures and bounding volume hierarchies in a graphics processing unit |
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 |
KR20150109276A (en) * | 2014-03-19 | 2015-10-01 | 에이알엠 리미티드 | Graphics processing systems |
US20150279092A1 (en) * | 2014-03-31 | 2015-10-01 | Per Ganestam | Bounding Volume Hierarchy Generation Using a Heterogeneous Architecture |
-
2016
- 2016-05-19 KR KR1020160061424A patent/KR102570584B1/en active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819675A (en) * | 2010-04-19 | 2010-09-01 | 浙江大学 | Method for quickly constructing bounding volume hierarchy (BVH) based on GPU |
US20130016109A1 (en) * | 2011-07-15 | 2013-01-17 | Kirill Garanzha | Out-of-core ray tracing with memory-efficient page generation |
KR20130016120A (en) * | 2011-08-04 | 2013-02-14 | 엔비디아 코포레이션 | System, method, and computer-readable recording medium for constructing an acceleration structure |
US20130235049A1 (en) * | 2012-03-09 | 2013-09-12 | Nvidia Corporation | Fully parallel in-place construction of 3d acceleration structures and bounding volume hierarchies in a graphics processing unit |
CN103021018A (en) * | 2012-11-07 | 2013-04-03 | 浙江工业大学 | Method for parallel ray tracing by building BVH tree based on graphics processing unit (GPU) |
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 |
KR20150109276A (en) * | 2014-03-19 | 2015-10-01 | 에이알엠 리미티드 | Graphics processing systems |
US20150279092A1 (en) * | 2014-03-31 | 2015-10-01 | Per Ganestam | Bounding Volume Hierarchy Generation Using a Heterogeneous Architecture |
Also Published As
Publication number | Publication date |
---|---|
KR102570584B1 (en) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3435336B1 (en) | Hybrid hierarchy for ray tracing | |
US9396512B2 (en) | Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit | |
US9721320B2 (en) | Fully parallel in-place construction of 3D acceleration structures and bounding volume hierarchies in a graphics processing unit | |
KR102546996B1 (en) | Operations with sparse volume data | |
US10706608B2 (en) | Tree traversal with backtracking in constant time | |
JP7421585B2 (en) | Method for determining differential data for rays of a ray bundle and graphics processing unit | |
KR102625415B1 (en) | Graphics processing method and system for processing sub-primitives | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
US9367949B2 (en) | Apparatus and method for scheduling of ray tracing | |
US9355491B2 (en) | Ray tracing apparatus and method | |
US9305392B2 (en) | Fine-grained parallel traversal for ray tracing | |
CN111445581A (en) | Mesh reconstruction using data-driven priors | |
US10559125B2 (en) | System and method of constructing bounding volume hierarchy tree | |
US20140168228A1 (en) | Fine-grained parallel traversal for ray tracing | |
KR102570584B1 (en) | System and Method for constructing a Bounding Volume Hierarchy Tree | |
US20150186288A1 (en) | Apparatus and method of operating cache memory | |
CN116385624A (en) | Stack buffer memory component for ray tracing hardware accelerator and application method thereof | |
CN113850895A (en) | Hierarchical acceleration structure for ray tracing system | |
CN113850897A (en) | Hierarchical acceleration structure for ray tracing system | |
GB2596363A (en) | Hierarchical acceleration structures for use in ray tracing systems | |
CN115935034A (en) | Isosurface map visualization method and system based on many-core processor cluster |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |