KR102570584B1 - 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
- KR102570584B1 KR102570584B1 KR1020160061424A KR20160061424A KR102570584B1 KR 102570584 B1 KR102570584 B1 KR 102570584B1 KR 1020160061424 A KR1020160061424 A KR 1020160061424A KR 20160061424 A KR20160061424 A KR 20160061424A KR 102570584 B1 KR102570584 B1 KR 102570584B1
- Authority
- KR
- South Korea
- Prior art keywords
- bvh
- node
- parent node
- cache
- tree
- 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 are provided.
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 organize information in a logical form to facilitate storage and retrieval of information. In a typical implementation, the topmost node or 'root' of the logical tree may contain the most general information, and descendant nodes (eg, child nodes or grandchild nodes) of the logical tree may contain some type of additional information. can provide It is desirable to traverse 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 the field of using hierarchical structures to organize information. Ray tracing can be a promising technology to improve the visual experience of graphics applications. Ray tracing includes techniques for determining the visibility of an object (eg, geometric primitive) from a given point in space (eg, eye, camera perspective). The primitives of a particular scene to be rendered are generally located within nodes, and nodes may be organized within a hierarchical tree. Ray tracing may include a first operation of "node tracing", traversing the nodes of the tree in a particular way in an attempt to find nodes with primitives, using one or more primitives within a node to provide a particular visual effect. It may include a second operation of "primitive intersection" in which the field and the ray intersect.
노드 탐색 및 프리미티브 교차를 대비하여, 계층적 구조가 효율적으로 객체들을 조직화하기 위해 구성될 수 있고, 계층적 구조는 높은 레벨의 노드(예로, 부모 노드)를 둘 이상의 낮은 레벨의 노드(예로, 자식 노드)로 분할하여 구성될 수 있다. 자식 노드는, 부모 노드에 비해, 연속적으로 더 작은 공간을 정의하고, 연속적으로 더 적은 객체들을 포함할 수 있다. 분할 방식은 자식 노드들 각각에 대해 되풀이 될 수 있고, 각 자식 노드는 2 이상의 손자 노드들로 분할될 수 있다. 각 손자 노드는 자식 노드에 비해, 연속적으로 더 작은 공간을 정의하고, 연속적으로 더 적은 객체들을 포함할 수 있다.In preparation for node traversal and primitive intersection, a hierarchical structure can be constructed to organize objects efficiently, in which a higher level node (e.g., a parent node) is separated from two or more lower level nodes (e.g., children). node) can be configured by dividing it into Child nodes may define contiguously smaller spaces and contain contiguously fewer objects than parent nodes. The splitting scheme can be repeated for each of the child nodes, and each child node can be split into two or more grandchild nodes. Each grandchild node can define contiguously smaller spaces and contain contiguously fewer objects than its child nodes.
레이 트레이싱 기술이 높은 퀄리티의 그래픽 렌더링을 제공할 수 있으나, 높은 계산적인 비용 및 요건들로 인해, 레이 트레이싱은 오프라인 렌더링에 한정되었다. 사용 가능한 계산 파워에서의 최근 발전에 따라, 레이 트레이싱은 상호적인 프레임 레이트, 심지어 모바일 플랫폼에서 가능한 것으로 설명되고 있다. 심지어, 하이브리드 렌더링의 형태로 상업적인 모바일 제품에 집적 가능하다. 그래픽스 렌더링을 위해, 하이브리드 렌더링은 래스터화(rasterization) 및 레이 트레이싱 기술의 사용을 의미할 수 있다. 레이 트레이싱의 종래 시스템들은 BVH 트리(Bounded Volume Hierarchy tree), KD 트리(K-dimensional tree)와 같은 가속 구조들을 사용하였다. 종래 시스템에 있어서, BVH와 같은 구조들은 CPU 등을 활용하여 생성될 수 있다. 그러나, 병렬 프로세서 아키텍처(예로, GPU)를 활용하여 구조들을 생성하는 시도들이 발생하고 있다.Although ray tracing technology can provide high quality graphics rendering, due to high computational cost and requirements, ray tracing has been limited to offline rendering. With recent advances in available computational power, ray tracing is being demonstrated as possible on interactive frame rates, even mobile platforms. It can even be integrated into commercial mobile products in the form of hybrid rendering. For graphics rendering, hybrid rendering can refer to the use of rasterization and ray tracing techniques. Conventional systems of ray tracing have used accelerated structures such as a BVH tree (Bounded Volume Hierarchy tree) and a KD tree (K-dimensional tree). In a conventional system, structures such as BVH may be created utilizing a CPU or the like. However, attempts are emerging to create structures utilizing parallel processor architectures (eg, GPUs).
BVH 트리를 구성하기 위한 방법 및 시스템을 제공하는 데 있다. It is to provide a method and system for constructing a BVH tree.
본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.The technical problem to be achieved by the present embodiment is not limited to the technical problems described above, and other technical problems can be inferred from the following embodiments.
일 측면에 따라, BVH 트리를 구성하는 방법은, 복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하는 단계; 2D 타일들 각각을 복수의 3D 타일들로 전환하는 단계; 및 복수의 3D 타일들에 기초하여, BVH 트리를 구성하는 단계를 포함할 수 있다.According to one aspect, a method of constructing a BVH tree includes generating a plurality of two dimensional (2D) tiles including 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 includes receiving a leaf node corresponding to an upper layer of the BVH tree; generating a parent node, associated with a parent node identifier, corresponding to the leaf node; determining the availability of parent node identifiers in the BVH cache; and constructing 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 constituting a BVH tree (Bounded Volume Hierarchy tree) generates a plurality of two dimensional (2D) tiles including a plurality of primitives, and converts each of the 2D tiles into a plurality of 3D tiles Binning unit to; and a graphics processing unit (GPU) including a BVH unit constituting a BVH tree based on a plurality of 3D tiles.
또 다른 측면에 따라, BVH 트리(Bounded Volume Hierarchy tree)를 구성하는 시스템은, BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신하고, 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하고, BVH 캐시 내의 부모 노드 식별자의 가용성을 결정하고, 부모 노드 식별자의 가용성에 기초하여, BVH 트리의 하위 레이어를 구성하는 BVH 유닛을 포함하는 GPU(Graphics Processing Unit)을 포함할 수 있다.According to another aspect, a system constituting 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 a parent node identifier corresponding to the leaf node. and a graphics processing unit (GPU) including a BVH unit constituting a lower layer of the BVH tree, determining the availability of a parent node identifier in the BVH cache, and based on the availability of the parent node identifier.
또 다른 측면에 따라, 전술한 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.According to another aspect, a computer-readable recording medium on which a program for implementing the above-described method is recorded is provided.
도 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)을 위한 방법을 실행하는 컴퓨팅 환경을 도시한다.1 shows a system for constructing a BVH tree, according to one embodiment.
2 discloses various components of a GPU according to one embodiment.
3 illustrates a process performed during a binning pass for generation of 2D tiles, according to one embodiment.
4 illustrates a hardware structure constituting a BVH tree, according to an embodiment.
5 discloses a lower tree conduction pipeline for constructing a lower layer of a BVH tree, according to an 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.
8 and 9 show a method of constructing a lower layer of a BVH tree according to an embodiment.
10 illustrates a computing environment implementing a method for parallel coding of slice segments, according to one embodiment.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.The terms used in the present embodiments have been selected from general terms that are currently widely used as much as possible while considering the functions in the present embodiments, but these may vary depending on the intention or precedent of a person skilled in the art, the emergence of new technologies, and the like. can In addition, there are terms selected arbitrarily in certain cases, and in this case, their meanings will be described in detail in the description of the corresponding embodiment. Therefore, the term used in the present embodiments should be defined based on the meaning of the term and the overall content of the present embodiment, not a simple name of the term.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 실시예들에 기재된 "...부", "...모듈"의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.In the descriptions of the embodiments, when a part is said to be connected to another part, this includes not only the case where it is directly connected, but also the case where it is electrically connected with another component interposed therebetween. . In addition, when a part includes a certain component, this means that it may further include other components without excluding other components unless otherwise stated. In addition, the terms "...unit" and "...module" described in the embodiments mean a unit that processes at least one function or operation, which is implemented as hardware or software or a combination of hardware and software. can be implemented
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.Terms such as "consisting of" or "comprising" used in the present embodiments should not be construed as necessarily including all of the various components or steps described in the specification, and some of them It should be construed that some steps may not be included, or may further include additional components or steps.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다.The description of the following embodiments should not be construed as limiting the scope of rights, and what can be easily inferred by a person skilled in the art should be construed as belonging to the scope of the embodiments.
종래의 시스템 및 방법들과는 달리, 본 개시에 따른 방법은 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 Bounded Volume Hierarchy tree (BVH) construction using a Central Processing Unit (CPU) and a Graphics Processing Unit (GPU). . According to the present disclosure, the BVH configuration can be distributed to CPUs, GPUs, and accelerators to reuse calculations and memory read/writes used in tile-based mobile GPUs. According to an embodiment, a hierarchical linear BVH (hierarchical linear BVH) technique may be used to construct a two-layer BVH tree including an upper layer and a lower layer. An upper layer of the BVH tree may be configured using Surface Area Heuristic (SAH), and a lower layer may be configured using Linear BVH (LBVH). According to an embodiment, a structure of an accelerator operated according to a compute shader of a GPU may be provided to configure 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 구성을 향상 시킬 수 있다.Methods and systems according to the present disclosure may utilize cache based fixed function hardware to construct the BVH tree. According to one embodiment, the BVH tree may be constructed using cache-based fixed function hardware. Unlike conventional methods, in order to construct a BVH tree, cache-based fixed function hardware may sequentially receive a plurality of 3 Dimensional (3D) tiles. Thus, BVH tree construction and bounding volume update can be performed in cache-based fixed function hardware. In addition, the cache-based fixed function hardware according to the present disclosure can improve the LBVH configuration by utilizing “Fast and Simple Agglomerative LBVH”.
종래 방법과는 달리, 본 개시에 따른 방법 및 시스템은, BVH 트리 구성(다시 말해, 하위 트리 생성과 상위 트리 생성)이 래스터화 패스(rasterization pass)와 병렬적으로 수행되는, 하이브리드 렌더링(hybrid rendering)을 위해, BVH 트리 구성을 위한 다른 파이프라인을 제공할 수 있다. 일 실시예에 따라, BVH 트리의 상위 레이어는 CPU 또는 GPU 쉐이더 코어들에서 구성될 수 있다. BVH 트리의 하위 레이어는 캐시 기반 고정 기능 하드웨어를 이용하여 GPU에서 구성될 수 있다. 따라서, 본 개시에 따른 파이프라인은, 타일 기반 모바일 GPU 아키텍처를 위해, 하이브리드 렌더링의 맥락에서 BVH 구성의 효과적인 실행을 위해, CPU, 및 GPU 내의 캐시 기반 고정 기능 하드웨어를 활용할 수 있다.Unlike conventional methods, the method and system according to the present disclosure are hybrid rendering, in which BVH tree construction (ie, lower tree generation and upper tree generation) is performed in parallel with the rasterization pass. ), another pipeline for BVH tree construction can be provided. According to one embodiment, the upper layer of the BVH tree may be constructed in CPU or GPU shader cores. The lower layers of the BVH tree can be constructed on the GPU using cache-based fixed function hardware. Thus, pipelines according to this disclosure may utilize cache-based fixed function hardware within the CPU and GPU for efficient execution of BVH constructs in the context of hybrid rendering, for tile-based mobile GPU architectures.
이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.Hereinafter, embodiments for illustrative purposes only will 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)를 포함할 수 있다.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))
일 실시예에 따라, 도 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)를 위한 광선들을 생성하기 위해, 광선 생성 블록(미도시)에 의해 사용되는 데이터를 생성할 수 있다. The plurality of 2D tiles generated through
복수의 2D 타일들이 포함될 수 있는, 비닝 패스(108)의 출력은, BVH 트리 생성에 대한 입력으로써 제공될 수 있다. 하위 트리 생성과 상위 트리 생성에 있어서, 각 2D 타일은 복수의 3D 타일들로 변환될 수 있다. 일 실시예에 따라, BVH 트리(다시 말해, 하위 트리 및 상위 트리)는 복수의 3D 타일들에 기초하여 생성될 수 있다.The output of binning
일 실시예에 따라, 복수의 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에서 설명하기로 한다.According to one embodiment, using cache-based fixed function hardware, each 3D tile may be converted to a lower layer of the BVH tree. Cache-based fixed function hardware is described in FIG. 4 .
일 실시예에 따라, 하나 이상의 3D 타일들로부터 후보 프리미티브가 수신될 수 있고, 리프 노트가 후보 프리미티브에 기초하여 구성될 수 있다. 리프 노드는 BVH 트리의 상위 레이어와 대응될 수 있다.According to one embodiment, a candidate primitive may be received from one or more 3D tiles, and a leaf note may be constructed based on the candidate primitive. A leaf node may correspond to a higher layer of the BVH tree.
따라서, BVH 트리 생성은 하위 트리 생성 및 상위 트리 생성을 포함할 수 있고, 이미지 생성을 위해, 생성된 BVH 트리는 레이 트레이싱 패스(112)에 의해 이용될 수 있다. 종래 시스템 및 방법들과 달리, BVH 트리는 GPU(102) 및 CPU(104)를 이용하여 구성될 수 있다. 본 명세서에서 제안되는 방법에 따라, BVH 구성은 GPU(102) 및 CPU(104)에 분배될 수 있다. 종래 시스템과 달리, BVH 생성은 래스터화 패스(110)와 병렬적으로 수행될 수 있다.Accordingly, BVH tree generation may include lower tree generation and upper tree generation, and for image generation, the generated BVH tree may be used by the
도 1에 도시된 시스템(100)은 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 시스템(100) 내의 GPU(102)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.In the
도 2는 일 실시예에 따른 GPU(102)의 다양한 구성요소들을 개시한다. 일 실시예에 따라, GPU(102)는 비닝 유닛(202), BVH 유닛(204), 래스터화 유닛(206), 및 레이 트레이싱 유닛(208)을 포함할 수 있다.2 discloses various components of
일 실시예에 따라, 비닝 유닛(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에서 살펴보기로 한다.
일 실시예에 따라, 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 an 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)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.In the
도 3은 일 실시예에 따라, 2D 타일들의 생성을 위해 비닝 패스 동안 수행되는 과정을 도시한다. 일 실시예에 따라, 비닝 패스(108)는 속성 인출 유닛(attribute fetch unit)(302), 버텍스 쉐이더 유닛(304), 프리미티브 변환 블록(306), 및 비닝 유닛(202)을 포함할 수 있다. 도 3은 타일 기반 렌더링의 비닝 패스(108)에서의 다양한 단계들을 도시한다.3 illustrates a process performed during a binning pass for generation of 2D tiles, according to one embodiment. According to one embodiment, the binning
일 실시예에 따라, 속성 인출 유닛(302)은 저장부(106)로부터 버텍스들의 속성을 인출하도록 구성될 수 있다.According to one embodiment, attribute fetch
일 실시예에 따라, 버텍스 쉐이더 유닛(304)은 가상 공간상의 프리미티브의 각 버텍스의 3차원 위치를 2차원 좌표로 변환하도록 구성될 수 있다. 버텍스 쉐이더 유닛(304)은 위치, 색, 프리미티브의 텍스처 좌표와 같은 다양한 성질을 조작하도록 구성될 수 있지만, 프리미티브에 대한 새로운 버텍스들을 생성할 수는 없다.According to one embodiment, the
일 실시예에 따라, 프리미티브 변환 블록(306)은 복수의 프리미티브들을 타일들로 변환하도록 구성될 수 있다.According to one embodiment,
비닝 패스(108)에서, 복수의 프리미티브들(예로, 삼각형들)은 버텍스 쉐이터 유닛(304)으로부터 수신될 수 있다.In the
일 실시예에 따라, 비닝 유닛(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 illustrates a hardware structure constituting a BVH tree, according to an embodiment. According to one embodiment,
일 실시예에 따라, 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 function hardware. According to one embodiment, a plurality of primitives may be classified using Morton code. The
일 실시예에 따라, 리프 노드는 후보 프리미티브에 기초하여 구성될 수 있다. 구성된 리프 노드는 BVH 트리의 상위 레이어에 대응될 수 있다. 따라서, 각 프리미티브는 BVH 유닛(204)에서 리프 노드로써 구성될 수 있다.According to one embodiment, leaf nodes may be constructed based on candidate primitives. The configured leaf node may correspond to a higher 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)로 전달할 수 있다.In Fig. 4, when a leaf node L is received, the
일 실시예에 따라, BVH 캐시(404) 내의 부모 노드의 가용성은 BVH 캐시(404)를 부모 노드 식별자로 쿼리(query)하여 결정될 수 있다. According to one embodiment, the availability of a 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 parent node identifiers 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 자식 노드를 수신할 수 있다.When the bit vector corresponding to the parent node is not set, two scenarios may be possible. Looking at the first scenario, it can be checked 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 checked whether the parent node identifier is available in the
또한, DRAM(408)은 각 타일마다 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다. 예로, DRAM(408)은 타일 T0에 대한 리프 노드 및 중간 노드 각각의 어레이, 및 타일 T1에 대한 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다.
도 5는 일 실시예 따라, BVH 트리의 하위 레이어를 구성하기 위한 하위 트리 전도 파이프라인(lower tree conduction pipeline)을 개시한다. 비닝 패스(108)에서 생성되는 (복수의 2D 타일들을 포함할 수 있는) 비닝 데이터는 BVH 트리의 하위 레이어를 구성하기 위해 이용될 수 있다. BVH 트리의 하위 레이어를 구성하기 위한 파이프라인은 도 5에 도시된다. 도 5로부터, 복수의 2D 타일들이 비닝 유닛(202)으로부터 획득되고, BVH 유닛(204)에서 복수의 2D 타일들이 복수의 3D 타일들로 전환될 수 있다.5 discloses a lower tree conduction pipeline for constructing a lower layer of a BVH tree, according to an embodiment. 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 after the vertex shading and primitive assembly steps (required for rasterization) are performed, the compute shader can be run, so that all primitives are created based on the Molton code. can be classified. Then, the Z binning unit can convert a plurality of 2D tiles according to Z to output a plurality of 3D tiles. These 3D tiles can be provided as input to cache-based fixed function hardware for constructing the 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의 일부 단계들이 수정되거나 생략될 수 있다.At
도 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. At
단계 706에서, 방법(700)은 각 2D 타일을 복수의 3D 타일들로 변환하는 단계를 포함할 수 있다. 비닝 유닛(202) 또는 BVH 유닛(204)은 각 2D 타일을 복수의 3D 타일들로 변환할 수 있다. 단계 708에서, 방법(700)은 하나 이상의 3D 타일들로부터 후보 프리미티브를 수신하는 단계를 포함할 수 있다. BVH 유닛(204)은 하나 이상의 3D 타일들로부터 후보 프리미티브를 수신할 수 있다. 단계 710에서, 방법(700)은 후보 프리미티브에 기초하여 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 단계를 포함할 수 있다. BVH 유닛(204)은 후보 프리미티브에 기초하여 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성할 수 있다. 방법(700)에서의 각 단계들은 도 7에 도시된 순서 이외에도 다른 순서에 의해 수행될 수 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 7의 일부 단계들이 수정되거나 생략될 수 있다.At
도 8 및 도 9는 일 실시예에 따라, BVH 트리의 하위 레이어를 구성하는 방법을 나타낸다. 8 and 9 show a method of constructing a lower layer of a BVH tree according to an embodiment.
먼저 도 8에서, 단계 802에서, 방법(800)은 BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신하는 단계를 포함할 수 있다. BVH 유닛(204)은 BVH 트리의 상위 레이어에 대응되는 리프 노드를 수신할 수 있다.First, in FIG. 8 , in
단계 804에서, 방법(800)은 리프 노드에 대응되는 부모 노드를 생성하는 단계를 포함할 수 있다. BVH 유닛(204)은 리프 노드에 대응되는 부모 노드를 생성할 수 있다. 각 생성된 부모 노드는 부모 노드 식별자와 연관될 수 있다. 단계 806에서, 방법(800)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정하는 단계를 허용할 수 있다. BVH 유닛(204)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정할 수 있다. 일 실시예에 따라, 비트 벡터를 결정 또는 확인함에 따라, BVH 캐시(404) 내의 부모 노드 식별자의 가용성이 결정될 수 있다.At
단계 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 자식 노드에 대응되는 바운딩 박스를 병합할 수 있다.At
단계 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 unset at
단계 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)에 저장할 수 있다.If, at step 816, 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 implementing a method for parallel coding of slice segments, according to one embodiment. In FIG. 9, the
전체적인 컴퓨팅 환경(902)은 다수의 동종(homogeneous) 및/또는 이종(heterogeneous) 코어들, 다수의 서로 다른 CPU들, 특수 미디어 및 다른 가속기로 구성될 수 있다. 프로세싱 유닛(908)은 알고리즘의 명령어들을 처리할 수 있다. 또한, 복수의 프로세싱 유닛(908)들은 단일 칩 또는 다수의 칩들 상에 위치할 수 있다.The
실행을 위해 요구되는 명령어들 및 코드들로 이루어진 알고리즘은 메모리(910) 및 저장부(912) 중 적어도 하나에 저장될 수 있다. 명령어들은 메모리(910) 또는 저장부(912)로부터 인출되어서, 프로세싱 유닛(908)에 의해 실행될 수 있다.An algorithm composed of instructions and codes required for execution may be stored in at least one of the
하드웨어 구현의 경우, 네트워킹 유닛과 입출력 장치 유닛을 통한 구현을 지원하기 위해, 다양한 네트워킹 장치들(916) 또는 외부 입출력 장치들(914)이 컴퓨팅 환경에서 연결될 수 있다.In the case of hardware implementation,
본 개시에 따른 실시예들은, 적어도 하나의 하드웨어 장치들 상에서 동작하고 엘리먼트들을 제어하는 네트워크 관리 기능들을 수행하는, 적어도 하나의 소프트웨어 프로그램을 통해 수행될 수 있다. 엘리먼트들은 도 1 및 10 내의 적어도 하나의 하드웨어 장치, 또는 하드웨어 장치 및 소프트웨어 모듈의 조합이 될 수 있는 블록들이 될 수 있다.Embodiments according to the present disclosure may be performed through at least one software program that operates on at least one hardware device and performs network management functions that control elements. Elements can be blocks, which can be at least one hardware device in FIGS. 1 and 10, or 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 device according to the present embodiments described above includes a processor, a memory for storing and executing program data, a permanent storage unit such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, a button, and the like. The same user interface device and the like may be included. Methods implemented as 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 includes magnetic storage media (e.g., read-only memory (ROM), random-access memory (RAM), floppy disk, hard disk, etc.) and optical reading media (e.g., CD-ROM) ), and DVD (Digital Versatile Disc). A computer-readable recording medium may be distributed among computer systems connected through a network, and computer-readable codes may be stored and executed in a distributed manner. The medium may be readable by a computer, stored in a memory, and executed by a processor.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.This embodiment can be presented as functional block structures and various processing steps. These functional blocks may be implemented with any number of hardware or/and software components that perform specific functions. For example, an embodiment is an integrated circuit configuration such as memory, processing, logic, look-up table, etc., which can execute various functions by control of one or more microprocessors or other control devices. can employ them. Similar to components that can be implemented as software programming or software elements, the present embodiments include data structures, processes, routines, or various algorithms implemented as combinations of other programming constructs, such as C, C++, Java ( It can be implemented in a programming or scripting language such as Java), assembler, or the like. Functional aspects may be implemented in an algorithm running on one or more processors. In addition, this embodiment may employ conventional techniques for electronic environment setting, signal processing, and/or data processing. Terms such as "mechanism", "element", "means", and "composition" may be used broadly and are not limited to mechanical and physical components. The term may include a meaning of a series of software routines in association with a processor or the like.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. Specific executions described in this embodiment are examples, and do not limit the technical scope in any way. For brevity of the specification, description of conventional electronic components, control systems, software, and other functional aspects of the systems may be omitted. In addition, the connection of lines or connecting members between the components shown in the drawings are examples of functional connections and / or physical or circuit connections, which can be replaced in actual devices or additional various functional connections, physical connection, or circuit connections.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.In this specification (particularly in the claims), the use of the term "the" and similar denoting terms may correspond to both the singular and the plural. In addition, when a range is described, it includes individual values belonging to the range (unless otherwise stated), as if each individual value constituting the range was described in the detailed description. Finally, unless an order is explicitly stated or stated to the contrary for the steps making up the method, the steps may be performed in any suitable order. It is not necessarily limited to the order of description of the steps. The use of all examples or exemplary terms (eg, etc.) is simply for explaining technical ideas in detail, and the scope is not limited by the examples or exemplary terms unless limited by the claims. In addition, those skilled in the art can appreciate that various modifications, combinations and changes can be made according to design conditions and factors within the scope of the appended claims or equivalents thereof.
Claims (26)
복수의 프리미티브들을 포함하는 복수의 2D(two dimensional) 타일들을 생성하는 단계;
상기 2D 타일들 각각을 복수의 3D 타일들로 전환하는 단계; 및
상기 복수의 3D 타일들에 기초하여, 상기 BVH 트리를 구성하는 단계를 포함하고,
상기 구성하는 단계는,
적어도 하나의 3D 타일로부터 후보 프리미티브를 수신하는 단계;
상기 후보 프리미티브에 기초하여 상기 BVH 트리의 상위 레이어에 대응되는 리프 노드를 구성하는 단계;
상기 리프 노드에 대응되는, 부모 노드 식별자(parent node identifier)와 연관된, 부모 노드를 생성하는 단계;
BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하는 단계; 및
상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는 단계;를 포함하는, 방법.In the method of constructing a BVH tree (Bounded Volume Hierarchy tree),
generating a plurality of two dimensional (2D) tiles including a plurality of primitives;
converting each of the 2D tiles into a plurality of 3D tiles; and
Constructing the BVH tree based on the plurality of 3D tiles;
The configuration step is
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 the availability of the parent node identifier in the BVH cache; and
and constructing a lower layer of the BVH tree based on the availability of the parent node identifier.
상기 BVH 트리를 구성하기 위해, 상기 복수의 3D 타일들이 순차적으로 수신되는, 방법.According to claim 1,
To construct the BVH tree, the plurality of 3D tiles are received sequentially.
상기 생성하는 단계는,
상기 복수의 프리미티브들을 수신하는 단계; 및
상기 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 상기 복수의 프리미티브들 각각을 다른 빈(bin)들로 분류하여 상기 복수의 2D 타일들을 생성하는 단계를 포함하는, 방법.According to claim 1,
The generating step is
receiving the plurality of primitives; and
and generating the plurality of 2D tiles by classifying each of the plurality of primitives into different bins based on positions of vertices of the plurality of primitives.
상기 하위 레이어를 구성하는 단계는,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.According to claim 1,
The step of configuring the lower layer,
determining whether a bit vector indicating 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
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 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.According to claim 1,
The step of configuring the lower layer,
determining whether a bit vector is not set;
determining whether the parent node identifier is available in the BVH cache when the bit vector is not set;
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; and
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 캐시에 저장하는 단계;를 포함하는, 방법.According to claim 1,
The step of configuring the lower layer,
determining whether a bit vector is set;
determining whether the parent node identifier is available in the BVH cache when the bit vector is not set;
declaring a first child node corresponding to the parent node as the leaf node when the parent node identifier is not available; and
and storing the information of the first child node in the BVH cache.
상기 BVH 트리의 상위 레이어에 대응되는, 리프 노드를 수신하는 단계;
상기 리프 노드에 대응되는, 부모 노드 식별자와 연관된, 부모 노드를 생성하는 단계;
상기 부모 노드에 대응되는 제1 자식 노드가 BVH 캐시로부터 L2 캐시로 축출된(evicted) 것을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정되었는지 여부에 기초하여, BVH 캐시 내의 상기 부모 노드 식별자의 가용성을 결정하는 단계; 및
상기 부모 노드 식별자의 가용성에 기초하여, 상기 BVH 트리의 하위 레이어를 구성하는 단계;를 포함하는, 방법,In the method of 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 a parent node identifier corresponding to the leaf node;
determining whether a bit vector indicating that a first child node corresponding to the parent node is evicted from the BVH cache to the L2 cache is set;
determining availability of the parent node identifier in the BVH cache based on whether the bit vector is set; and
Constructing a lower layer of the BVH tree based on the availability of the parent node identifier;
상기 비트 벡터가 설정된 경우, 상기 BVH 캐시로부터 상기 부모 노드에 대응되는 제 1 자식 노드의 정보를 인출(fetch)하는 단계;
상기 리프 노드를 상기 부모 노드에 대응되는 제 2 자식 노드로 선언하는 단계; 및
상기 제 1 자식 노드에 대응되는 바운딩 박스(bounding box) 및 상기 제 2 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.According to claim 8,
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
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 자식 노드에 대응되는 바운딩 박스를 병합하는 단계;를 포함하는, 방법.According to claim 8,
The configuration step is
determining whether the parent node identifier is available in the BVH cache when the bit vector is not set;
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; and
and merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node.
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 KR20170064977A (en) | 2017-06-12 |
KR102570584B1 true 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 (6)
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 |
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 |
US20150279092A1 (en) | 2014-03-31 | 2015-10-01 | Per Ganestam | Bounding Volume Hierarchy Generation Using a Heterogeneous Architecture |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130033507A1 (en) * | 2011-08-04 | 2013-02-07 | Nvidia Corporation | System, method, and computer program product for constructing an acceleration structure |
GB2524287B (en) * | 2014-03-19 | 2020-07-01 | Advanced Risc Mach Ltd | Graphics processing systems |
-
2016
- 2016-05-19 KR KR1020160061424A patent/KR102570584B1/en active IP Right Grant
Patent Citations (6)
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 |
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 |
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 |
---|---|
KR20170064977A (en) | 2017-06-12 |
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 | |
US10706608B2 (en) | Tree traversal with backtracking in constant time | |
US10025879B2 (en) | Tree data structures based on a plurality of local coordinate systems | |
JP7184503B2 (en) | Method and graphics processing unit for determining differential data for rays of a ray bundle | |
KR102625415B1 (en) | Graphics processing method and system for processing sub-primitives | |
US11756256B2 (en) | Dedicated ray memory for ray tracing in graphics systems | |
US9305392B2 (en) | Fine-grained parallel traversal for ray tracing | |
US10559125B2 (en) | System and method of constructing bounding volume hierarchy tree | |
US20170091898A1 (en) | Apparatus for and method of traversing tree | |
US20140168228A1 (en) | Fine-grained parallel traversal for ray tracing | |
US10083264B1 (en) | Systems and methods for implicit surface modeling | |
KR20120088783A (en) | Graphics rendering using a hierarchical acceleration structure | |
KR102570584B1 (en) | System and Method for constructing a Bounding Volume Hierarchy Tree | |
KR102282896B1 (en) | Image processing apparatus and method | |
GB2596363A (en) | Hierarchical acceleration structures for use in ray tracing systems | |
KR102303116B1 (en) | Method for performing connection information extraction algorithm by parallel processing for ray casting on unaligned lattice data | |
US11830123B2 (en) | Accelerated processing via a physically based rendering engine | |
US11704860B2 (en) | Accelerated processing via a physically based rendering engine | |
US20150186288A1 (en) | Apparatus and method of operating cache memory | |
CN116385624A (en) | Stack buffer memory component for ray tracing hardware accelerator and application method thereof | |
GB2596362A (en) | Hierarchical acceleration structures for use in ray tracing systems | |
GB2596364A (en) | Hierarchical acceleration structures for use in ray tracing systems |
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 |