KR20170064977A - System and Method for constructing a Bounding Volume Hierarchy Tree - Google Patents

System and Method for constructing a Bounding Volume Hierarchy Tree Download PDF

Info

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
Application number
KR1020160061424A
Other languages
Korean (ko)
Other versions
KR102570584B1 (en
Inventor
안쿠르 데시왈
비카시 쿠마르
케샤반 바라다라잔
파리크시트 콜리파카
소마 콜리
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170064977A publication Critical patent/KR20170064977A/en
Application granted granted Critical
Publication of KR102570584B1 publication Critical patent/KR102570584B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

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 트리를 구성하기 위한 방법 및 시스템{System and Method for constructing a Bounding Volume Hierarchy Tree}System and Method for Constructing a Bounding Volume Hierarchy Tree [

본 개시는 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 system 100 for constructing a BVH tree, according to one embodiment. System 100 represents a pipeline that constitutes a BVH tree for hybrid rendering. According to one embodiment, the system 100 may include a GPU 102, a CPU 104, and a storage 106. GPU 102 may include a binning pass 108, a rasterization pass 110, and a ray tracing pass 112.

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)에서 수행될 수 있다.CPU 104 may perform one or more steps to configure the BVH tree. The CPU 104 may independently configure the BVH tree, or the CPU 104 may configure the BVH tree with the GPU 102. In generating the BVH tree, a portion of the BVH tree may be configured in the CPU 104 and another portion of the BVH tree may be configured in the GPU 102. [ According to one embodiment, an upper tree creation may be performed at the GPU 102 or the 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 storage 106 may be configured to store one or more primitives in the image. In accordance with one embodiment, GPU 102 and CPU 104 may communicate with storage 106 to obtain one or more primitives. The storage 106 may include one or more computer-readable storage media. The storage 106 may include non-volatile storage elements. Examples of non-volatile storage elements include, but are not limited to, magnetic hard disks, optical discs, floppy discs, flash memories, electrically programmable memories (EPROM) And electrically erasable and programmable memories (EEPROM) types. Additionally, according to one example, storage 106 may be a non-transitory storage medium. The term "non-transitory" may mean that it is not implemented in a carrier wave or a propagated signal. However, the term non-temporal can not be construed as meaning that the storage unit 106 is not movable. In some examples, the storage 10 may be configured to store a significant amount of information over memory. In certain embodiments, the non-volatile storage medium may store data that varies over time (e.g., RAM (Random Access Memory) or cache).

일 실시예에 따라, 도 1에 도시되지는 않았지만, 비닝 패스(108)는 복수의 2D 타일들을 생성하기 위해 다양한 구성요소들을 포함할 수 있다. 비닝 패스(108)에서, 복수의 프리미티브들이 입력으로써 수신될 수 있다. 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 각 프리미티브가 다른 빈(bin)들로 분류됨에 따라, 복수의 2D 타일들이 생성될 수 있다. 따라서, 비닝 패스(108)의 입력은 복수의 프리미티브들을 포함할 수 있고, 비닝 패스(108)의 출력은 복수의 2D 타일들을 포함할 수 있다. 비닝 패스(108)의 다양한 구성요소들은 도 3에서 살펴보기로 한다.According to one embodiment, although not shown in FIG. 1, the binning pass 108 may include various components to create a plurality of 2D tiles. In binning pass 108, a plurality of primitives may be received as input. Based on the location of the vertices of a plurality of primitives, as each primitive is classified into different bins, a plurality of 2D tiles can be generated. Thus, the input of the binning pass 108 may comprise a plurality of primitives, and the output of the binning pass 108 may comprise a plurality of 2D tiles. The various components of the binning pass 108 will now be described with reference to FIG.

비닝 패스(108)를 통해 생성된 복수의 2D 타일들은 래스터화 패스(110)에서 이용될 수 있다. 래스터화 패스(110)는, 레이 트레이싱 패스(112)를 위한 광선들을 생성하기 위해, 광선 생성 블록(미도시)에 의해 사용되는 데이터를 생성할 수 있다. A plurality of 2D tiles generated through the binning pass 108 may be used in the rasterization pass 110. The rasterization pass 110 may generate data used by a ray generation block (not shown) to generate rays for the ray tracing path 112.

복수의 2D 타일들이 포함될 수 있는, 비닝 패스(108)의 출력은, BVH 트리 생성에 대한 입력으로써 제공될 수 있다. 하위 트리 생성과 상위 트리 생성에 있어서, 각 2D 타일은 복수의 3D 타일들로 변환될 수 있다. 일 실시예에 따라, BVH 트리(다시 말해, 하위 트리 및 상위 트리)는 복수의 3D 타일들에 기초하여 생성될 수 있다.The output of the binning pass 108, which may include a plurality of 2D tiles, may be provided as input to the BVH tree generation. In the subtree creation and parent tree creation, each 2D tile can be converted into a plurality of 3D tiles. According to one embodiment, a BVH tree (i.e., a subtree and a super-tree) may be generated based on a plurality of 3D tiles.

일 실시예에 따라, 복수의 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 pass 108 to construct a BVH tree. The upper layer of the BVH tree may be configured in the CPU 104 or the GPU shader core. The lower layer of the BVH tree can be configured in the GPU using cache based fixed function hardware.

일 실시예에 따라, 캐시 기반 고정 기능 하드웨어를 이용하여, 각 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 ray tracing path 112. Unlike conventional systems and methods, the BVH tree may be configured using GPU 102 and CPU 104. [ In accordance with the method proposed herein, the BVH configuration may be distributed to the GPU 102 and the CPU 104. [ Unlike conventional systems, BVH generation may be performed in parallel with the rasterization pass 110.

도 1에 도시된 시스템(100)은 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 시스템(100) 내의 GPU(102)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.The system 100 shown in FIG. 1 is only shown in the components associated with this embodiment. Therefore, it will be understood by those skilled in the art that other general-purpose components other than the components shown in FIG. 1 may be further included. In addition, GPUs 102 within system 100 may include units or sub-units capable of communicating with each other. Similarly, the functions of one or more units may be integrated by a single unit and may be distributed to different units in different ways.

도 2는 일 실시예에 따른 GPU(102)의 다양한 구성요소들을 개시한다. 일 실시예에 따라, GPU(102)는 비닝 유닛(202), BVH 유닛(204), 래스터화 유닛(206), 및 레이 트레이싱 유닛(208)을 포함할 수 있다.FIG. 2 discloses various components of the GPU 102 in accordance with one embodiment. According to one embodiment, the GPU 102 may include a binning unit 202, a BVH unit 204, a rasterization unit 206, and a ray tracing unit 208.

일 실시예에 따라, 비닝 유닛(202)은 복수의 2D 타일들을 생성하도록 구성될 수 있다. 비닝 유닛(202)은 복수의 프리미티브들을 수신하도록 구성될 수 있다. 비닝 유닛(202)은, 각 프리미티브의 버텍스들의 위치에 기초하여 각 프리미티브을 다른 빈들로 분류하여, 복수의 2D 타일들을 생성하도록 구성될 수 있다. 각 2D 타일은 타일에 속하는 복수의 프리미티브들의 정보를 포함할 수 있다. 또한, 비닝 유닛(202)은 복수의 2D 타일들 중 각 2D 타일을 복수의 3D 타일들로 변환시키도록 구성될 수 있다.According to one embodiment, the binning unit 202 may be configured to generate a plurality of 2D tiles. The binning unit 202 may be configured to receive a plurality of primitives. The binning unit 202 may be configured to classify each primitive into different bins based on the location of the vertices of each primitive to generate a plurality of 2D tiles. Each 2D tile may contain information of a plurality of primitives belonging to a tile. In addition, the binning unit 202 may be configured to convert each 2D tile of the plurality of 2D tiles into a plurality of 3D tiles.

BVH 유닛(204)은 BVH 트리를 구성하기 위해 하나 이상의 단계들을 수행하도록 구성될 수 있다. BVH 트리는, 비닝 유닛(202)으로부터 수신된 복수의 3D 타일들에 기초하여, 구성될 수 있다. BVH 유닛(204)은 BVH 트리를 구성하기 위한 다양한 구성요소들을 포함할 수 있다. BVH 유닛(204)의 다양한 구성요소에 대해서는 도 4에서 살펴보기로 한다.The BVH unit 204 may be configured to perform one or more steps to configure the BVH tree. The BVH tree may be configured based on a plurality of 3D tiles received from the binning unit 202. [ The BVH unit 204 may comprise various components for constructing a BVH tree. Various components of the BVH unit 204 will be described with reference to FIG.

일 실시예에 따라, 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 BVH unit 204 may be configured to sequentially receive a plurality of 3D tiles to construct a BVH tree. The BVH unit 204 may be configured to receive candidate primitives from one or more 3D tiles. The BVH unit 204 may be configured to construct a leaf node corresponding to an upper layer of the BVH tree based on the received candidate primitive. The BVH unit 204 may be configured to generate a parent node corresponding to the leaf node. Each parent node may be associated with a parent node identifier. The BVH unit 204 may be configured to determine the availability of the parent node identifier in the BVH cache. In addition, the BVH unit 204 may be configured to configure the lower layer of the BVH tree based on the availability of the parent node identifiers.

일 실시예에 따라, 래스터화 유닛(206)은 레이 트레이싱 패스(112)를 위한 광선 생성에 이용되는 데이터를 생성하도록 구성될 수 있다.According to one embodiment, the rasterization unit 206 may be configured to generate data used for ray generation for the ray tracing path 112.

일 실시예에 따라, 레이 트레이싱 유닛(208)은 이미지를 생성하도록 구성될 수 있다. 이미지는 BVH 유닛(204)에 의해 구성되는 BVH 트리를 이용하여 생성될 수 있다. 레이 트레이싱 유닛(208)은 BVH 유닛(204)로부터 BVH 트리를 수신하도록 구성될 수 있다.According to one embodiment, the ray tracing unit 208 may be configured to generate an image. The image may be generated using a BVH tree configured by BVH unit 204. [ Ray tracing unit 208 may be configured to receive the BVH tree from BVH unit 204. [

도 2에 도시된 GPU(102)는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 시스템(100) 내의 GPU(102)는 서로 통신 가능한 유닛들 또는 서브 유닛들을 포함할 수 있다. 마찬가지로, 하나 이상의 유닛들의 기능들은, 단일 유닛에 의해 통합될 수 있고, 다른 방식으로 서로 다른 유닛들에 분배될 수 있다.The GPU 102 shown in Fig. 2 shows only the components related to the present embodiment. Accordingly, it will be understood by those skilled in the art that other general-purpose components other than the components shown in FIG. 2 may be further included. In addition, GPUs 102 within system 100 may include units or sub-units capable of communicating with each other. Similarly, the functions of one or more units may be integrated by a single unit and may be distributed to different units in different ways.

도 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 pass 108 may include an attribute fetch unit 302, a vertex shader unit 304, a primitive transformation block 306, and a binning unit 202. Figure 3 illustrates various steps in the binning pass 108 of the tile-based rendering.

일 실시예에 따라, 속성 인출 유닛(302)은 저장부(106)로부터 버텍스들의 속성을 인출하도록 구성될 수 있다.According to one embodiment, the attribute fetch unit 302 may be configured to fetch the attributes of the vertices from the store 106.

일 실시예에 따라, 버텍스 쉐이더 유닛(304)은 가상 공간상의 프리미티브의 각 버텍스의 3차원 위치를 2차원 좌표로 변환하도록 구성될 수 있다. 버텍스 쉐이더 유닛(304)은 위치, 색, 프리미티브의 텍스처 좌표와 같은 다양한 성질을 조작하도록 구성될 수 있지만, 프리미티브에 대한 새로운 버텍스들을 생성할 수는 없다.According to one embodiment, the vertex shader unit 304 may be configured to transform the three-dimensional position of each vertex of the primitive in virtual space into two-dimensional coordinates. The vertex shader unit 304 can be configured to manipulate various properties such as location, color, texture coordinates of primitives, but can not create new vertices for primitives.

일 실시예에 따라, 프리미티브 변환 블록(306)은 복수의 프리미티브들을 타일들로 변환하도록 구성될 수 있다.According to one embodiment, the primitive transformation block 306 may be configured to transform a plurality of primitives into tiles.

비닝 패스(108)에서, 복수의 프리미티브들(예로, 삼각형들)은 버텍스 쉐이터 유닛(304)으로부터 수신될 수 있다.In binning pass 108, a plurality of primitives (e.g., triangles) may be received from the vertex shader unit 304.

일 실시예에 따라, 비닝 유닛(202)은 복수의 프리미티브들을 수신하도록 구성될 수 있다. 또한, 비닝 유닛(202)은 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 각 프리미티브를 다른 빈들에 분류함으로써, 복수의 2D 타일들을 생성하도록 구성될 수 있다. 생성된 복수의 2D 타일들 중 각 2D 타일은 2D 타일에 포함되는 프리미티브들의 정보를 포함할 수 있다.According to one embodiment, the binning unit 202 may be configured to receive a plurality of primitives. In addition, the binning unit 202 can be configured to generate a plurality of 2D tiles by classifying each primitive into different bins based on the location of the vertices of the plurality of primitives. Each 2D tile of the generated plurality of 2D tiles may include information of primitives included in the 2D tile.

도 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 unit 204 may include cache based fixed functionality hardware. The cache based fixed function hardware includes an address calculation unit 402, a BVH cache 404, an L2 cache 406, a dynamic random access memory (DRAM) 408, and a bounding box merge 410 can do. The address calculation unit 402 and the bounding box merging unit 410 may be fixed function hardware.

일 실시예에 따라, BVH 캐시(404)는 태그들(404a), 데이터(404b), 비트맵(404c), 및 MSHR(Miss State Handle Register)(404d)를 포함할 수 있다.According to one embodiment, the BVH cache 404 may include tags 404a, data 404b, bitmap 404c, and Miss State Handle Register (MSHR) 404d.

복수의 프리미티브들은 캐시 기반 고정 기능 하드웨어에 제공될 수 있다. 일 실시예에 다라, 복수의 프리미티브들은 몰턴 코드(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 unit 204 may be configured to receive candidate primitives from one or more 3D tiles. According to one embodiment, a plurality of 3D tiles may be obtained by the BVH unit 204. [ The various steps of obtaining a plurality of 3D tiles will be described with reference to FIG.

일 실시예에 따라, 리프 노드는 후보 프리미티브에 기초하여 구성될 수 있다. 구성된 리프 노드는 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 BVH unit 204.

도 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 address calculation unit 402 calculates the address of the leaf node using the base address and the offset, based on the position of the leaf node in the BVH tree / RTI > After the address computation of the leaf node, the address computation unit 402 may be configured to communicate an L2 write request (L2 write request) to the L2 cache 406 according to the computed leaf node address. The address calculation unit 402 may also send the leaf node to the BVH cache 404 to create a parent node corresponding to the leaf node. According to one embodiment, each parent node may be uniquely identified with a leaf node and a corresponding parent node identifier. The address calculation unit 402 may also receive the intermediate node I from the bounding box merger 410 and forward it to the BVH cache 404 until the last node is created.

일 실시예에 따라, BVH 캐시(404) 내의 부모 노드의 가용성은 BVH 캐시(404)를 부모 노드 식별자로 쿼리(query)하여 결정될 수 있다. According to one embodiment, the availability of the parent node in the BVH cache 404 may be determined by querying the BVH cache 404 with the parent node identifier.

일 실시예에 따라, 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 cache 404 may be determined based on a bit vector. The bit vector may be determined to ascertain the availability of the parent node in the BVH cache 404. If a bit vector is set, it may indicate that the first child node of the parent node is available in the L2 cache 406 (e.g., if the bit vector is set to one). In other words, when the bit vector is set, the first child node corresponding to the parent node may be evicted from the BVH cache 404 to the L2 cache 406 before the arrival of the second child node corresponding to the parent node. Thus, the BVH cache 404 may forward a read request for the parent node to the L2 cache 406, and an entry may be generated at the MSHR 404d.

BVH 캐시(404)로부터 제 1 자식 노드를 인출한 후에, 리프 노드는 부모 노드에 대응되는 제 2 자식 노드로 선언될 수 있다. 또한, BVH 캐시(404)는 제 1 자식 노드 및 제 2 자식 노드를 바운딩 박스 병합부(410)로 전송할 수 있다. 바운딩 박스 병합부(410)는 부모 노드와 대응되는 제 1 자식 노드 및 제 2 자식 노드를 수신할 수 있다.After fetching the first child node from the BVH cache 404, the leaf node may be declared as the second child node corresponding to the parent node. Also, the BVH cache 404 may send the first child node and the second child node to the bounding box merger 410. The bounding box merging unit 410 may receive the first child node and the second child node corresponding to the parent node.

부모 노드에 대응되는 비트 벡터가 미설정된 경우, 두가지 시나리오가 가능할 수 있다. 첫번째 시나리오를 살펴보면, 부모 노드 식별자가 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 cache 404. If the parent node identifier is available in the BVH cache 404, the first child node corresponding to the parent node may be fetched from the BVH cache 404. After fetching the first child node from the BVH cache 404, the leaf node may be declared as the second child node corresponding to the parent node. Also, the BVH cache 404 may send the first child node and the second child node to the bounding box merger 410. The bounding box merging unit 410 may receive the first child node and the second child node corresponding to the parent node.

두번째 시나리오를 살펴보면, 부모 노드 식별자가 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 BVH cache 404. If the parent node identifier is not available in the BVH cache 404, the leaf node may be declared as the first child node corresponding to the parent node. In addition, the BVH cache 404 may store information of the first child node corresponding to the parent node. According to one embodiment, an entry may be made in the BVH cache 404 for the parent node. If all entries are exhausted in the cache, eviction in the BVH cache 404 may occur.

또한, DRAM(408)은 각 타일마다 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다. 예로, DRAM(408)은 타일 T0에 대한 리프 노드 및 중간 노드 각각의 어레이, 및 타일 T1에 대한 리프 노드 및 중간 노드 각각의 어레이를 포함할 수 있다.In addition, the DRAM 408 may include an array of leaf nodes and each of the intermediate nodes for each tile. By way of example, DRAM 408 may include an array of leaf nodes and intermediate nodes, respectively, for tile T0, and an array of leaf nodes and intermediate nodes for tile T1.

도 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 binning pass 108 may be used to construct a lower layer of the BVH tree. The pipeline for constructing the lower layer of the BVH tree is shown in Fig. From Fig. 5, a plurality of 2D tiles can be obtained from the binning unit 202, and a plurality of 2D tiles in the BVH unit 204 can be converted into a plurality of 3D tiles.

도 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 step 602, the method 600 may comprise receiving a plurality of primitives. The binning unit 202 may receive a plurality of primitives. In step 604, the method 600 may include classifying each primitive to generate a plurality of 2D tiles. The binning unit 202 may classify each primitive to produce a plurality of 2D tiles.

단계 606에서, 방법(600)은 각 2D 타일을 복수의 3D 타일들로 전환하는 단계를 포함할 수 있다. 비닝 유닛(202) 또는 BVH 유닛(204)은 각 2D 타일을 복수의 3D 타일들로 전환할 수 있다. 단계 608에서, 방법(600)은 복수의 3D 타일들에 기초하여 BVH 트리를 구성하는 단계를 포함할 수 있다. 방법(600)에서의 각 단계들은 도 6에 도시된 순서 이외에도 다른 순서에 의해 수행될 수 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 6의 일부 단계들이 수정되거나 생략될 수 있다.In step 606, the method 600 may include the step of converting each 2D tile into a plurality of 3D tiles. The binning unit 202 or BVH unit 204 may convert each 2D tile into a plurality of 3D tiles. In step 608, the method 600 may comprise constructing a BVH tree based on a plurality of 3D tiles. The steps in method 600 may be performed in a different order other than the order shown in FIG. 6, or may be performed simultaneously. Also, in accordance with some embodiments, some steps of FIG. 6 may be modified or omitted to the extent that they do not depart from the scope of the present invention.

도 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 step 702, the method 700 may include receiving a plurality of primitives. The binning unit 202 may receive a plurality of primitives. In step 704, the method 700 may include classifying each primitive to generate a plurality of 2D tiles. The binning unit 202 may classify each primitive to produce a plurality of 2D tiles.

단계 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 step 706, the method 700 may include transforming each 2D tile into a plurality of 3D tiles. The binning unit 202 or the BVH unit 204 may convert each 2D tile into a plurality of 3D tiles. In step 708, the method 700 may include receiving a candidate primitive from one or more 3D tiles. BVH unit 204 may receive a candidate primitive from one or more 3D tiles. In step 710, the method 700 may comprise constructing a leaf node corresponding to an upper layer of the BVH tree based on the candidate primitive. The BVH unit 204 may configure a leaf node corresponding to an upper layer of the BVH tree based on the candidate primitive. Each step in method 700 may be performed in a different order other than the order shown in FIG. 7, or may be performed simultaneously. Also, in accordance with some embodiments, some steps of FIG. 7 may be modified or omitted to the extent that they do not depart from the scope of the present invention.

도 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 step 802, the method 800 may include receiving a leaf node corresponding to an upper layer of the BVH tree. The BVH unit 204 may receive a leaf node corresponding to an upper layer of the BVH tree.

단계 804에서, 방법(800)은 리프 노드에 대응되는 부모 노드를 생성하는 단계를 포함할 수 있다. BVH 유닛(204)은 리프 노드에 대응되는 부모 노드를 생성할 수 있다. 각 생성된 부모 노드는 부모 노드 식별자와 연관될 수 있다. 단계 806에서, 방법(800)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정하는 단계를 허용할 수 있다. BVH 유닛(204)은 BVH 캐시(404) 내의 부모 노드 식별자의 가용성을 결정할 수 있다. 일 실시예에 따라, 비트 벡터를 결정 또는 확인함에 따라, BVH 캐시(404) 내의 부모 노드 식별자의 가용성이 결정될 수 있다.In step 804, the method 800 may include generating a parent node corresponding to the leaf node. The BVH unit 204 may generate a parent node corresponding to the leaf node. Each generated parent node may be associated with a parent node identifier. At step 806, the method 800 may allow determining the availability of the parent node identifier in the BVH cache 404. The BVH unit 204 may determine the availability of the parent node identifier in the BVH cache 404. In accordance with one embodiment, the availability of the parent node identifier in the BVH cache 404 may be determined by determining or verifying the bit vector.

단계 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 step 808, the method 800 may include determining whether a bit vector is set. The BVH unit 204 may determine whether a bit vector has been set. If it is determined that the bit vector is set, at step 810, the method 800 may include fetching information of the first child node corresponding to the parent node from the BVH cache 404. The BVH unit 204 may fetch the information of the first child node corresponding to the parent node from the BVH cache 404. In step 812, the method 800 may declare the leaf node as the second child node corresponding to the parent node. The BVH unit 204 may declare the leaf node as the second child node corresponding to the parent node. In step 814, the method 800 may include merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node. The BVH unit 204 may merge the bounding box corresponding to the first child node and the bounding box corresponding to the second child node.

단계 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 step 808, then in step 816, the method 800 may include determining whether the parent node identifier is available in the BVH cache 404. The BVH unit 204 may determine whether the parent node identifier is available within the BVH cache 404. At step 818, the method 800 may include fetching information of the first child node corresponding to the parent node from the BVH cache 404. The BVH unit 204 may fetch the information of the first child node corresponding to the parent node from the BVH cache 404. In step 820, the method 800 may include declaring a leaf node as a second child node corresponding to a parent node. The BVH unit 204 may declare the leaf node as the second child node corresponding to the parent node. At step 822, the method 800 may include merging a bounding box corresponding to the first child node and a bounding box corresponding to the second child node. The BVH unit 204 may merge the bounding box corresponding to the first child node and the bounding box corresponding to the second child node.

단계 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 BVH cache 404, referring to FIG. 9, in step 824, the method 800 determines whether the BVH cache 404 has an invalid entry Step < / RTI > The BVH unit 204 may determine whether the BVH cache 404 has an invalid entry. If the BVH cache has an invalid entry, then at step 826, the method 800 may declare the leaf node as the first child node corresponding to the parent node. The BVH unit 204 may declare the leaf node as the first child node corresponding to the parent node. In step 828, the method 800 may include storing the information of the first child node in the BVH cache 404. The BVH unit 204 may store the information of the first child node in the BVH cache 404.

단계 824에서, BVH 캐시(404)가 유효하지 않은 엔트리를 갖지 않은 경우, 방법(800)은 정책(policy)을 이용하여 캐시 라인을 쫓아내고, 비트 라인에 엔트리를 마킹하는 단계를 포함할 수 있다. BVH 유닛(204)은 정책(policy)을 이용하여 캐시 라인을 쫓아내고, 비트 라인에 엔트리를 마킹할 수 있다.At step 824, if the BVH cache 404 does not have an invalid entry, the method 800 may include using a policy to drive out the cache line and mark the entry on the bit line . The BVH unit 204 may use a policy to drive out the cache line and mark the entry on the bit line.

방법(800)에서의 각 단계들은, 도 8 및 도 9에 도시된 순서 이외에도 다른 순서에 의해 수행될 있고, 또는 동시에 수행될 수 있다. 또한, 일부 실시예에 따라, 본 발명의 범위를 벗어나지 않는 정도에서, 도 8 및 도 9의 일부 단계들이 수정되거나 생략될 수 있다.Each step in the method 800 may be performed in a different order other than the order shown in Figs. 8 and 9, or may be performed at the same time. Also, in accordance with some embodiments, some steps of FIGS. 8 and 9 may be modified or omitted to the extent that they do not depart from the scope of the present invention.

도 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 computing environment 902 includes at least one processing unit 908, a memory 910, a storage 912, a plurality of processing units (not shown) Networking devices 916 and a plurality of input / output devices 914. [ The processing unit 908 may process algorithm instructions. The processing unit 908 may receive instructions from the control unit 904 to perform processing. In addition, logic and arithmetic operations involved in the execution of the instructions may be computed by the ALU 906. [

전체적인 컴퓨팅 환경(902)은 다수의 동종(homogeneous) 및/또는 이종(heterogeneous) 코어들, 다수의 서로 다른 CPU들, 특수 미디어 및 다른 가속기로 구성될 수 있다. 프로세싱 유닛(908)은 알고리즘의 명령어들을 처리할 수 있다. 또한, 복수의 프로세싱 유닛(908)들은 단일 칩 또는 다수의 칩들 상에 위치할 수 있다.The overall computing environment 902 may be comprised of a number of homogeneous and / or heterogeneous cores, a number of different CPUs, special media, and other accelerators. The processing unit 908 may process the instructions of the algorithm. In addition, the plurality of processing units 908 may be located on a single chip or multiple chips.

실행을 위해 요구되는 명령어들 및 코드들로 이루어진 알고리즘은 메모리(910) 및 저장부(912) 중 적어도 하나에 저장될 수 있다. 명령어들은 메모리(910) 또는 저장부(912)로부터 인출되어서, 프로세싱 유닛(908)에 의해 실행될 수 있다.An algorithm consisting of the instructions and codes required for execution may be stored in at least one of memory 910 and storage 912. The instructions may be fetched from the memory 910 or storage 912 and executed by the processing unit 908. [

하드웨어 구현의 경우, 네트워킹 유닛과 입출력 장치 유닛을 통한 구현을 지원하기 위해, 다양한 네트워킹 장치들(916) 또는 외부 입출력 장치들(914)이 컴퓨팅 환경에서 연결될 수 있다.In the case of a hardware implementation, various networking devices 916 or external input / output devices 914 may be connected in a computing environment to support implementation through networking units and input / output device units.

본 개시에 따른 실시예들은, 적어도 하나의 하드웨어 장치들 상에서 동작하고 엘리먼트들을 제어하는 네트워크 관리 기능들을 수행하는, 적어도 하나의 소프트웨어 프로그램을 통해 수행될 수 있다. 엘리먼트들은 도 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)

BVH 트리(Bounded Volume Hierarchy tree)를 구성하는 방법에 있어서,
복수의 프리미티브들을 포함하는 복수의 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.
제 1 항에 있어서,
상기 BVH 트리를 구성하기 위해, 상기 복수의 3D 타일들이 순차적으로 수신되는, 방법.
The method according to claim 1,
Wherein the plurality of 3D tiles are received sequentially to construct the BVH tree.
제 1 항에 있어서,
상기 생성하는 단계는,
상기 복수의 프리미티브들을 수신하는 단계; 및
상기 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 상기 복수의 프리미티브들 각각을 다른 빈(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.
제 1 항에 있어서,
상기 구성하는 단계는,
적어도 하나의 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.
제 4 항에 있어서,
상기 하위 레이어를 구성하는 단계는,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정된 경우, 상기 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.
제 4 항에 있어서,
상기 하위 레이어를 구성하는 단계는,
비트 벡터가 미설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정된 경우, 상기 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.
제 4 항에 있어서,
상기 하위 레이어를 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정되는 경우, 상기 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 트리(Bounded Volume Hierarchy tree)를 구성하는 방법에 있어서,
상기 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.
제 8 항에 있어서,
상기 부모 노드 식별자의 가용성을 나타내는 비트 벡터가 설정되었는지 여부를 결정하는 단계;
상기 비트 벡터가 설정된 경우, 상기 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.
제 8 항에 있어서,
상기 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정되는 경우, 상기 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.
제 8 항에 있어서,
상기 구성하는 단계는,
비트 벡터가 설정되었는지 여부를 판단하는 단계;
상기 비트 벡터가 미설정된 경우, 상기 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.
제 8 항에 있어서,
상기 BVH 트리를 구성하기 위해, 상기 리프 노드가 순차적으로 수신되는, 방법.
9. The method of claim 8,
Wherein the leaf nodes are received sequentially to construct the BVH tree.
BVH 트리(Bounded Volume Hierarchy 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.
제 13 항에 있어서,
상기 BVH 트리를 구성하기 위해, 상기 복수의 3D 타일들이 순차적으로 수신되는, 시스템.
14. The method of claim 13,
Wherein the plurality of 3D tiles are sequentially received to construct the BVH tree.
제 13 항에 있어서,
상기 비닝 유닛은,
상기 복수의 프리미티브들을 수신하고,
상기 복수의 프리미티브들의 버텍스들의 위치에 기초하여, 상기 복수의 프리미티브들 각각을 다른 빈(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.
제 13 항에 있어서,
상기 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.
제 16 항에 있어서,
상기 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.
제 16 항에 있어서,
상기 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.
제 16 항에 있어서,
상기 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 트리(Bounded Volume Hierarchy tree)를 구성하는 시스템에 있어서,
상기 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.
제 20 항에 있어서,
상기 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.
제 20 항에 있어서,
상기 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.
제 20 항에 있어서,
상기 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.
제 20 항에 있어서,
상기 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.
제 20 항에 있어서,
상기 BVH 트리를 구성하기 위해, 상기 리프 노드가 순차적으로 수신되는, 시스템.
21. The method of claim 20,
To construct the BVH tree, the leaf nodes are received sequentially.
제 1 항 내지 제 12 항 중의 어느 한 항에 기재된 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.A computer-readable recording medium storing a program for executing the method according to any one of claims 1 to 12.
KR1020160061424A 2015-12-02 2016-05-19 System and Method for constructing a Bounding Volume Hierarchy Tree KR102570584B1 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
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