KR101560283B1 - 3d image building method, 3d image building machine performing the same and storage media storing the same - Google Patents

3d image building method, 3d image building machine performing the same and storage media storing the same Download PDF

Info

Publication number
KR101560283B1
KR101560283B1 KR1020140049254A KR20140049254A KR101560283B1 KR 101560283 B1 KR101560283 B1 KR 101560283B1 KR 1020140049254 A KR1020140049254 A KR 1020140049254A KR 20140049254 A KR20140049254 A KR 20140049254A KR 101560283 B1 KR101560283 B1 KR 101560283B1
Authority
KR
South Korea
Prior art keywords
node
sub
space
tree
spaces
Prior art date
Application number
KR1020140049254A
Other languages
Korean (ko)
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 세종대학교산학협력단
Priority to KR1020140049254A priority Critical patent/KR101560283B1/en
Priority to PCT/KR2015/004096 priority patent/WO2015163720A1/en
Application granted granted Critical
Publication of KR101560283B1 publication Critical patent/KR101560283B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Abstract

A 3D image building method may include the steps of: (a) dividing a given space into multiple sub-spaces (each sub-space forms a node of a KD-tree) after determining a division method for the given space; and (b) repeating the step (a) after setting each of the multiple sub-spaces as a given space. When the pertinent sub-space corresponds to an inside node of the KD-tree, the step (a) includes a step of checking whether the number of raw data in the inside node exceeds a threshold value.

Description

3차원 영상 생성 방법, 이를 수행하는 3차원 영상 생성 장치 및 이를 저장하는 기록매체{3D IMAGE BUILDING METHOD, 3D IMAGE BUILDING MACHINE PERFORMING THE SAME AND STORAGE MEDIA STORING THE SAME} BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a three-dimensional image generation method, a three-dimensional image generation apparatus and a recording medium storing the same,

본 발명은 3차원 영상 생성 기술에 관한 것으로, 보다 상세하게는, 3차원 영상에서 필요한 공간 분할을 효율적으로 수행할 수 있는 3차원 영상 생성 방법, 3차원 영상 생성 장치 및 이를 저장하는 기록매체에 관한 것이다.
The present invention relates to a three-dimensional image generation technique, and more particularly, to a three-dimensional image generation method, a three-dimensional image generation device, and a recording medium storing the three-dimensional image generation method, will be.

일반적으로, KD-tree(k-dimension tree)는 3차원 영상 생성시 사용되고 k-차원의 공간에 포인트들(즉, 데이터)을 정리하기 위한 공간-분할 데이터 구조를 가지는 k-차원 트리인 다차원 검색 트리로 정의될 수 있다. KD-tree는 다차원의 탐색 키(예를 들어, 범위 탐색 및 근접 탐색)를 이용하여 탐색을 하는 경우에 유용하게 사용될 수 있고 KD-tree는 BSP(binary space partitioning) 트리의 한 종류에 해당한다.In general, a k-dimension tree is a k-dimensional tree which is used in generating a three-dimensional image and has a space-division data structure for arranging points (i.e., data) in a k- Tree. ≪ / RTI > The KD-tree can be useful for searching using multi-dimensional search keys (eg, range search and proximity search), and the KD-tree is a kind of binary space partitioning (BSP) tree.

한국공개특허 제10-2011-0124834호는 하드웨어를 이용하여 KD-tree를 생성하는 방법에 관한 것으로, SAH(Surface area heuristic) 방식으로 노드의 코스트가 최소가 되는 위치를 찾아 이를 기준으로 KD-tree를 생성하는 방법을 개시한다. 이러한 KD-tree 생성 방법은 리스트 데이터의 인덱스를 참조하여 메모리로부터 읽어 들인 트라이앵글 데이터에 기초하여 SAH 방식으로 현재 노드의 코스트가 최소가 되는 위치를 찾아 리스트 데이터의 좌우를 분류하고, 현재 노드의 코스트가 최소가 되는 위치를 찾지 못한 경우에는 리프노드를 생성할 수 있다.Korean Patent Laid-Open No. 10-2011-0124834 relates to a method of generating a KD-tree using hardware, and a location where the cost of a node is minimized by SAH (surface area heuristic) Is generated. The KD-tree generation method refers to the index of the list data, classifies the left and right of the list data based on the triangle data read from the memory, finds the position where the cost of the current node becomes the minimum in the SAH method, If the minimum location is not found, a leaf node can be created.

한국공개특허 제10-2012-0090543호는 복셀의 가시성에 기반하여 KD-tree를 구축하기 위한 방법을 개시한다. 이러한 KD-tree를 구축하는 방법은 복셀의 가시성에 기반한 비용 함수가 KD-tree를 구성하기 위해 사용되고 비용 함수를 최소화 하는 평면을 사용하여 복셀을 2개의 부-복셀들로 분할함으로써 KD-tree가 구성될 수 있다.
Korean Patent Laid-Open No. 10-2012-0090543 discloses a method for constructing a KD-tree based on the visibility of a voxel. The method of constructing the KD-tree is to construct a KD-tree by dividing the voxel into two sub-voxels using a cost function based on the voxel visibility to construct the KD-tree and using a plane minimizing the cost function .

한국공개특허 제10-2011-0124834호Korean Patent Publication No. 10-2011-0124834 한국공개특허 제10-2012-0090543호Korean Patent Publication No. 10-2012-0090543

본 발명의 일 실시예는 상위 노드는 비닝(binning) 방식으로 생성하고 하위 노드는 정렬(sorting) 방식으로 병렬적으로 생성하여 트리의 질을 유지하면서 고속으로 트리를 생성할 수 있는 3차원 영상 생성 방법을 제공하고자 한다.One embodiment of the present invention is a method for generating a three-dimensional image capable of generating a tree at a high speed while maintaining the quality of a tree by generating an upper node in a binning manner and a lower node in a sorting manner in parallel Method.

본 발명의 일 실시예는 원시데이터의 개수를 기준으로 상위 노드 및 하위 노드를 구분하고, 원시데이터의 개수가 정렬방식이 수행될 수 있는 개수인 경우에는 정렬 방식을 이용하고 그렇지 않은 경우에는 비닝 방식을 이용하여 트리를 생성하는 것을 통해 트리의 질을 유지하면서 고속으로 트리를 생성할 수 있는 3차원 영상 생성 방법을 제공하고자 한다.In an embodiment of the present invention, an upper node and a lower node are distinguished based on the number of primitive data, and when the number of primitive data is the number in which an alignment method can be performed, an alignment method is used. Otherwise, To generate a tree at a high speed while maintaining the quality of the tree.

내부 메모리에 트리를 생성하는데 필요한 모든 데이터를 저장하여 트리 생성 시 외부 메모리로 접근하는 경우를 줄일 수 있는 3차원 영상 생성 방법을 제공하고자 한다.The present invention provides a method of generating a three-dimensional image by storing all the data necessary for generating a tree in the internal memory and reducing accessing to an external memory when a tree is created.

본 발명의 일 실시예는 노드의 탐색 순서대로 노드를 정렬하여 메모리에 저장하는 것을 통해 버스트 접근이 가능하게 하고 이를 통해 메모리 접근 효과를 최대로 얻을 수 있는 3차원 영상 생성 방법을 제공하고자 한다.
One embodiment of the present invention is to provide a three-dimensional image generation method capable of burst accessing by storing nodes in a memory in order of searching for nodes, and thereby achieving maximum memory access effect.

실시예들 중에서, 3차원 영상 생성 방법은 (a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하는 단계 및 (b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 단계를 포함하고, 상기 (a) 단계는 해당 서브 공간이 상기 KD-tree의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크하는 단계를 포함한다.Among the embodiments, a three-dimensional image generation method includes the steps of: (a) determining a partitioning method of a given space and dividing the given space into a plurality of sub-spaces (each forming a node of a KD-tree) ) Repeating the step (a) by setting each of the plurality of sub-spaces as the given space, and in the step (a), if the sub-space corresponds to an internal node of the KD-tree, And checking whether the number of primitive data in the node exceeds a threshold value.

일 실시예에서, 상기 임계치는 상기 해당 서브 공간을 정렬 방식으로 분할할 때 요구되는 내부 메모리의 크기를 기초로 결정될 수 있다.In one embodiment, the threshold may be determined based on the size of the internal memory required when the corresponding sub-space is divided in an alignment manner.

일 실시예에서, 상기 내부 노드는 상기 주어진 공간의 분할 면과 분할 면에 의해 분할된 복수의 서브공간으로 구성될 수 있다.In one embodiment, the internal node may be composed of a plurality of sub-spaces divided by a division plane and a division plane of the given space.

일 실시예에서, 상기 (a) 단계는 상기 원시 데이터의 개수가 상기 임계치를 초과한다면 상기 해당 서브 공간을 비닝(binning) 방식으로 분할하여 상기 복수의 서브 공간들을 생성하는 단계를 더 포함할 수 있다.In one embodiment, the step (a) may further include generating the plurality of sub spaces by dividing the sub space in a binning manner if the number of the raw data exceeds the threshold value .

일 실시예에서, 상기 (a) 단계는 상기 원시 데이터의 개수가 상기 임계치를 초과하지 않는다면 상기 해당 서브 공간을 정렬(sorting) 방식으로 분할하여 복수의 서브 공간들을 생성하는 단계를 더 포함할 수 있다.In one embodiment, the step (a) may further include, if the number of the raw data does not exceed the threshold, dividing the corresponding sub-space into a plurality of sub-spaces by sorting .

일 실시예에서, 상기 (a) 단계는 상기 해당 서브 공간에 대한 정렬 방식의 분할을 병렬적으로 수행하여 상기 복수의 서브 공간을 생성하는 단계를 포함할 수 있다.In one embodiment, the step (a) may include generating the plurality of sub-spaces by performing the division of the sorting scheme for the sub-space in parallel.

일 실시예에서, 상기 (a) 단계는 상기 복수의 서브 공간들의 분할 순서를 상기 KD-tree의 방문 순서로 변환하여 상기 복수의 서브 공간들을 메모리에 저장하는 단계를 포함할 수 있다.In one embodiment, the step (a) may include converting the division order of the plurality of sub-spaces into the visit order of the KD-tree, and storing the plurality of sub-spaces in a memory.

일 실시예에서, 상기 복수의 서브 공간들을 메모리에 저장하는 단계는 상기 주어진 공간의 분할을 통해 생성된 노드의 주소 및 노드의 데이터를 입력받는 단계 및 상기 노드의 데이터가 저장될 버스트 노드 엔트리(burst node entry)의 위치를 탐색하는 단계를 포함하고, 상기 버스트 노드 엔트리의 위치를 탐색하는 단계는 노드 주소와 버스트 주소를 비교하는 단계를 포함할 수 있다.In one embodiment, the step of storing the plurality of subspaces in a memory comprises the steps of receiving an address of the node and data of the node generated through the division of the given space, and a step of receiving a burst node entry node entry, wherein the step of searching for the location of the burst node entry may include comparing the node address to the burst address.

일 실시예에서, 상기 복수의 서브 공간들을 메모리에 저장하는 단계는 노드 데이터가 저장될 공간이 없는 버스트 노드 엔트리를 탐색하는 단계를 포함할 수 있다.In one embodiment, storing the plurality of sub-spaces in a memory may include searching for a burst node entry in which there is no room for node data to be stored.

실시예들 중에서, 3차원 영상 생성 장치는 (a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하고, (b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 트리 생성 유닛을 포함하고, 상기 트리 생성 유닛은 해당 서브 공간이 상기 KD-tree의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크한다.(A) dividing a given space into a plurality of sub-spaces (each of which forms a node of a KD-tree) by determining a partitioning mode of a given space; and (b) And a tree creation unit for setting the each of the plurality of sub-spaces as the given space and repeating the step (a) It is checked whether or not the number of the original data in the node exceeds the threshold value.

일 실시예에서, 상기 임계치는 상기 해당 서브 공간을 정렬 방식으로 분할할 때 요구되는 내부 메모리의 크기를 기초로 결정될 수 있다.In one embodiment, the threshold may be determined based on the size of the internal memory required when the corresponding sub-space is divided in an alignment manner.

일 실시예에서, 상기 내부 노드는 상기 주어진 공간의 분할 면과 분할 면에 의해 분할된 복수의 서브공간으로 구성될 수 있다.In one embodiment, the internal node may be composed of a plurality of sub-spaces divided by a division plane and a division plane of the given space.

일 실시예에서, 상기 트리 생성 유닛은 상기 원시 데이터의 개수가 상기 임계치를 초과한다면 상기 해당 서브 공간을 비닝(binning) 방식으로 분할하여 상기 복수의 서브 공간들을 생성하는 제1 트리 생성부를 포함할 수 있다.In one embodiment, the tree generating unit may include a first tree generating unit for generating the plurality of sub-spaces by dividing the corresponding sub-space in a binning manner when the number of the raw data exceeds the threshold value have.

일 실시예에서, 상기 트리 생성 유닛은 상기 원시 데이터의 개수가 상기 임계치를 초과하지 않는다면 상기 해당 서브 공간을 정렬(sorting) 방식으로 분할하여 복수의 서브 공간들을 생성하는 적어도 하나의 제2 트리 생성부를 포함할 수 있다.In one embodiment, the tree generating unit may include at least one second tree generating unit that generates a plurality of sub-spaces by dividing the corresponding sub-space in a sorting manner if the number of the raw data does not exceed the threshold value .

일 실시예에서, 제2 트리 생성부는 상기 해당 서브 공간에 대한 정렬 방식의 분할을 병렬적으로 수행하여 상기 복수의 서브 공간을 생성할 수 있다. In an embodiment, the second tree generating unit may generate the plurality of sub-spaces by performing the partitioning of the sorting scheme for the corresponding sub-space in parallel.

일 실시예에서, 상기 트리 생성 유닛은 상기 복수의 서브 공간들의 분할 순서를 상기 KD-tree의 방문 순서로 변환하여 상기 복수의 서브 공간들을 메모리에 저장하는 노드 스케줄러를 포함할 수 있다.In one embodiment, the tree creation unit may include a node scheduler that converts the division order of the plurality of sub-spaces into a visit order of the KD-tree and stores the plurality of sub-spaces in a memory.

일 실시예에서, 상기 노드 스케줄러는 상기 주어진 공간의 분할을 통해 생성된 노드의 주소 및 노드의 데이터를 입력받고 상기 노드의 데이터가 저장될 버스트 노드 엔트리(burst node entry)의 위치를 탐색하는 푸시 엔트리 선택부를 포함하고, 상기 푸시 엔트리 선택부는 노드 주소와 버스트 주소를 비교할 수 있다.In one embodiment, the node scheduler receives the address of the node and data of the node generated through the division of the given space, and receives the push node entry for searching the location of the burst node entry in which the data of the node is to be stored. And the push-entry selector may compare the node address and the burst address.

일 실시예에서, 상기 노드 스케줄러는 노드 데이터가 저장될 공간이 없는 버스트 노드 엔트리를 탐색하는 팝 엔트리 선택부를 포함할 수 있다.In one embodiment, the node scheduler may include a pop entry selector for searching for a burst node entry where there is no room for node data to be stored.

실시예들 중에서, 3차원 영상 생성 방법에 관한 컴퓨터 프로그램을 기록한 기록매체는 (a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하는 기능 및 (b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 기능을 포함하고, 상기 (a) 단계는 해당 서브 공간이 상기 KD-tree의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크하는 기능을 포함하는 3차원 영상 생성 방법에 관한 컴퓨터 프로그램을 기록한다.
Among the embodiments, a recording medium on which a computer program relating to a three-dimensional image generating method is recorded includes (a) a method of determining a division method of a given space and dividing the given space into a plurality of subspaces (each of which forms a node of a KD- (B) repeating the step (a) by setting each of the plurality of sub-spaces as the given space, and the step (a) And a function of checking whether the number of primitive data in the internal node exceeds a threshold value if it is an internal node of the internal node.

본 발명의 일 실시예에 따른 3차원 영상 생성 방법은 상위 노드는 비닝(binning) 방식으로 생성하고 하위 노드는 정렬(sorting) 방식으로 병렬로 생성하여 트리의 질을 유지하면서 고속으로 트리를 생성할 수 있다.In the method of generating a three-dimensional image according to an embodiment of the present invention, an upper node is generated in a binning manner and a lower node is generated in a sorting manner in parallel to generate a tree at a high speed while maintaining the quality of a tree .

본 발명의 일 실시예에 따른 3차원 영상 생성 방법은 원시데이터의 개수를 기준으로 상위 노드 및 하위 노드를 구분하고, 원시데이터의 개수가 정렬방식이 수행될 수 있는 개수인 경우에는 정렬 방식을 이용하고 그렇지 않은 경우에는 비닝 방식을 이용하여 트리를 생성하는 것을 통해 트리의 질을 유지하면서 고속으로 트리를 생성할 수 있다.According to an embodiment of the present invention, an upper node and a lower node are classified based on the number of primitive data, and when the number of primitive data is the number that can be performed, Otherwise, the tree can be generated at a high speed while maintaining the quality of the tree by generating a tree using the binning method.

본 발명의 일 실시예에 따른 3차원 영상 생성 방법은 내부 메모리에 트리를 생성하는데 필요한 모든 데이터를 저장하여 트리 생성시 외부 메모리로 접근하는 경우를 줄일 수 있다.The 3D image generation method according to an embodiment of the present invention can save all the data needed to generate a tree in the internal memory and reduce the case of accessing the external memory when generating the tree.

본 발명의 일 실시예에 따른 3차원 영상 생성 방법은 노드의 탐색 순서대로 노드를 정렬하여 메모리에 저장하는 것을 통해 버스트 접근이 가능하게 하고 이를 통해 메모리 접근 효과를 최대로 얻을 수 있다.
The three-dimensional image generation method according to an embodiment of the present invention enables burst access by storing nodes in a memory in order of searching for a node, thereby achieving the maximum memory access effect.

도 1은 본 발명의 일 실시예에 따른 트리 생성 유닛을 설명하는 블록도이다.
도 2(a)는 한 축에 대해서 비닝 방식으로 생성된 분할 면의 일 실시예이다.
도 2(b)는 한 축에 대해서 정렬 방식으로 생성된 분할 면의 일 실시예이다.
도 3는 도 1의 트리 생성 유닛을 포함하는 레이 트레이싱 장치를 설명하는 블록도이다.
도 4은 본 발명의 일 실시예에 따른 작업 메모리를 나타내는 블록도이다.
도 5(a)는 본 발명의 일 실시예에 따른 노드 스케쥴러 및 노드 메모리를 나타내는 블록도이다.
도 5(b)는 노드 스케쥴러의 실시예를 나타내는 블록도이다.
도 6는 레이 트레이싱의 과정을 설명하는 블록도이다.
도 7은 개시된 기술에서 사용되는 가속 구조와 기하학적 데이터를 설명하는 블록이다.
도 8은 본 발명의 일 실시예에 따른 트리 생성 유닛을 설명하는 흐름도이다.
1 is a block diagram illustrating a tree generating unit according to an embodiment of the present invention.
Fig. 2 (a) is an embodiment of a dividing plane generated in a binning manner for one axis.
Fig. 2 (b) is an embodiment of the dividing plane created by the alignment method for one axis.
3 is a block diagram illustrating a ray tracing apparatus including the tree generating unit of FIG.
4 is a block diagram illustrating a working memory in accordance with one embodiment of the present invention.
5A is a block diagram illustrating a node scheduler and a node memory according to an embodiment of the present invention.
5 (b) is a block diagram showing an embodiment of a node scheduler.
6 is a block diagram illustrating a process of ray tracing.
Figure 7 is a block illustrating geometry and acceleration structures used in the disclosed technique.
8 is a flowchart illustrating a tree generating unit according to an embodiment of the present invention.

본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.The description of the present invention is merely an example for structural or functional explanation, and the scope of the present invention should not be construed as being limited by the embodiments described in the text. That is, the embodiments are to be construed as being variously embodied and having various forms, so that the scope of the present invention should be understood to include equivalents capable of realizing technical ideas. Also, the purpose or effect of the present invention should not be construed as limiting the scope of the present invention, since it does not mean that a specific embodiment should include all or only such effect.

한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.Meanwhile, the meaning of the terms described in the present application should be understood as follows.

"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.The terms "first "," second ", and the like are intended to distinguish one element from another, and the scope of the right should not be limited by these terms. For example, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" to another element, it may be directly connected to the other element, but there may be other elements in between. On the other hand, when an element is referred to as being "directly connected" to another element, it should be understood that there are no other elements in between. On the other hand, other expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.It is to be understood that the singular " include " or "have" are to be construed as including the stated feature, number, step, operation, It is to be understood that the combination is intended to specify that it does not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.In each step, the identification code (e.g., a, b, c, etc.) is used for convenience of explanation, the identification code does not describe the order of each step, Unless otherwise stated, it may occur differently from the stated order. That is, each step may occur in the same order as described, may be performed substantially concurrently, or may be performed in reverse order.

본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The present invention can be embodied as computer-readable code on a computer-readable recording medium, and the computer-readable recording medium includes all kinds of recording devices for storing data that can be read by a computer system . Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like, and also implemented in the form of a carrier wave (for example, transmission over the Internet) . In addition, the computer-readable recording medium may be distributed over network-connected computer systems so that computer readable codes can be stored and executed in a distributed manner.

여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
All terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs, unless otherwise defined. Commonly used predefined terms should be interpreted to be consistent with the meanings in the context of the related art and can not be interpreted as having ideal or overly formal meaning unless explicitly defined in the present application.

도 1은 본 발명의 일 실시예에 따른 트리 생성 유닛을 설명하는 블록도이다.1 is a block diagram illustrating a tree generating unit according to an embodiment of the present invention.

도 1을 참조하면, 트리 생성 유닛(Tree Build Unit)(100)은 제1 트리 생성부(110) 및 적어도 하나의 제2 트리 생성부(120)를 포함할 수 있다.Referring to FIG. 1, a tree generating unit 100 may include a first tree generating unit 110 and at least one second tree generating unit 120.

제1 트리 생성부(110)에서는 비닝(binning) 방식을 이용하여 트리를 생성한다. 여기에서, 비닝 방식은 3개의 축(x, y, z)에 대해서 미리 정해진 수만큼 바운딩 박스(bounding box) 공간을 분할하여 분할 면에 대해서만 SAH(Surface area heuristic) 값의 계산을 수행한다. 여기에서, SAH는 광선 추적(ray-tracing)을 위한 가속 구조를 생성하는 방법으로서, 임의의 광선과 부딪치는 원시데이터(primitive)를 찾기 위한 값들(예를 들어, 노드 방문 횟수, 원시데이터와 교차되는지 여부를 계산하는 횟수 등)을 계산하여 계산 결과 중 가장 좋은 값을 가지는 분할 면을 기준으로 공간을 분할하는 방법이다. The first tree generating unit 110 generates a tree using a binning method. Here, the binning method divides the bounding box space by a predetermined number of times for the three axes (x, y, z) to calculate the surface area heuristic (SAH) value only for the divided surface. Here, the SAH is a method for generating an acceleration structure for ray-tracing, which includes values for searching for primitives encountering arbitrary light rays (for example, the number of node visits, The number of times to calculate whether or not it is possible to calculate the number of times of calculation), and divides the space based on the division plane having the best value among the calculation results.

적어도 하나의 제2 트리 생성부(120)에서는 정렬(sorting) 방식을 이용하여 트리를 생성한다. 여기에서, 정렬 방식은 3개의 축(x, y, z)에 대하여 전체 원시데이터의 시작 값 및 끝 값을 추출하고 3개 축을 시작 값 및 끝 값으로 분할하여 6개의 리스트 데이터를 생성한다. 여기에서, 리스트 데이터는 원시데이터의 인덱스로 구성된 배열이다. 리스트 데이터를 생성한 후에 각 리스트 데이터에 대하여 정렬을 하고 정렬된 원시데이터의 시작 값 및 끝 값에서 분할 면을 생성한다. 다음으로, 생성된 분할 면에서 SAH 값을 계산하여 가장 좋은 값을 가지는 분할 면을 기준으로 하여 공간을 분할하는 방법이다. At least one second tree generating unit 120 generates a tree using a sorting method. Here, the alignment method extracts the start value and the end value of the entire raw data for three axes (x, y, z) and divides the three axes into a start value and an end value to generate six pieces of list data. Here, the list data is an array composed of the indices of the raw data. After generating the list data, it is sorted for each list data, and the division plane is generated from the start value and the end value of the sorted original data. Next, the SAH value is calculated from the generated division plane, and the space is divided based on the division plane having the best value.

보다 구체적으로, 적어도 하나의 제2 트리 생성부(120)는 제1 트리 생성부(110)를 통하여 원시 데이터 정보를 얻고 복수의 제2 트리 생성부(120)가 병렬로 동작할 수 있으며, 출력은 중재기(arbiter)(140)와 연결되어 적어도 하나의 제2 트리 생성부(120)로부터 입력받은 노드 및 리스트 데이터들(AS 데이터)을 외부 메모리(External Memory)(340)에 저장한다.More specifically, the at least one second tree generating unit 120 may obtain raw data information through the first tree generating unit 110, the plurality of second tree generating units 120 may operate in parallel, And stores the node and list data (AS data) received from at least one second tree generating unit 120 in an external memory 340 in connection with an arbiter 140.

제1 트리 생성부(110) 및 적어도 하나의 제2 트리 생성부(120)에서 트리가 생성될 때 내부에 있는 작업 메모리(Working memory)(130)가 사용된다. 작업 메모리(130)에 대해서는 도 4을 참조하여 설명한다.
A working memory 130 is used when a tree is generated in the first tree generating unit 110 and the at least one second tree generating unit 120. The work memory 130 will be described with reference to FIG.

도 2(a)는 한 축에 대해서 비닝 방식으로 생성된 분할 면의 일 실시예이다. Fig. 2 (a) is an embodiment of a dividing plane generated in a binning manner for one axis.

도 2(a)를 참조하면, 바운딩 박스(210a)는 분할 면(220a) 및 원시데이터(230a)를 포함할 수 있다. 일 실시예에서, 분할 면(220a)은 5개의 분할 면들로 미리 정해져 있고, 6개의 원시데이터(230a)에 대하여 각 분할 면(220a)에서의 SAH 값을 계산할 수 있다. 계산 결과, 가장 좋은 값을 가지는 분할 면을 선택하여 바운딩 박스(210a)를 분할할 수 있다.
Referring to FIG. 2 (a), the bounding box 210a may include a dividing surface 220a and raw data 230a. In one embodiment, the dividing surface 220a is predetermined with five dividing surfaces, and the SAH value at each dividing surface 220a can be calculated for the six pieces of raw data 230a. As a result of calculation, it is possible to divide the bounding box 210a by selecting the dividing surface having the best value.

도 2(b)는 한 축에 대해서 정렬 방식으로 생성된 분할 면의 일 실시예이다.Fig. 2 (b) is an embodiment of the dividing plane created by the alignment method for one axis.

도 2(b)를 참조하면, 바운딩 박스(210b)는 분할 면(220b) 및 원시데이터(230b)를 포함할 수 있다. 일 실시예에서, 분할 면(220b)은 원시데이터(230b)의 정렬된 시작과 끝 값에서 생성되고, 원시데이터(230b)에 대하여 각 분할 면(220b)에서의 SAH 값을 계산할 수 있다. 계산 결과, 가장 좋은 값을 가지는 분할 면을 선택하여 바운딩 박스(210b)를 분할할 수 있다.
Referring to FIG. 2 (b), the bounding box 210b may include a dividing surface 220b and raw data 230b. In one embodiment, the dividing surface 220b is generated at the aligned start and end values of the raw data 230b and may calculate the SAH value at each dividing surface 220b for the raw data 230b. As a result of calculation, it is possible to divide the bounding box 210b by selecting the dividing surface having the best value.

도 3은 도 1의 트리 생성 유닛을 포함하는 레이 트레이싱 장치를 설명하는 블록도이다. 3 is a block diagram illustrating a ray tracing apparatus including the tree generating unit of FIG.

도 3을 참조하면, 레이 트레이싱 장치(300)는 CPU(Central Processing Unit)(310), 시스템 메모리(System Memory)(320), DRTX(Dynamic Ray Tracing Accelerator)(330) 및 외부 메모리(External Memory)(340)를 포함할 수 있다.3, the ray tracing apparatus 300 includes a central processing unit (CPU) 310, a system memory 320, a dynamic ray tracing accelerator (DRTX) 330, an external memory, (340).

CPU(310)는 3차원 어플리케이션을 처리할 수 있으며, 3차원 게임 엔진 등의 어플리케이션(311), API(Application Programming Interface)(312) 및 씬 매니저(Scene Manager)(313) 중 적어도 하나를 포함할 수 있다.The CPU 310 can process a 3D application and includes at least one of an application 311 such as a 3D game engine, an API (Application Programming Interface) 312, and a scene manager (Scene Manager) 313 .

시스템 메모리(320)는 3차원 어플리케이션에 필요한 그래픽 데이터 정보를 저장할 수 있으며, 원시 정적 씬(Primitive Static Scene)을 저장하는 PSS 영역(321), 원시 동적 씬(Primitive Dynamic Scene)을 저장하는 PDS 영역(322) 및 텍스처 매핑을 위한 밉맵(MIP-MAP)을 저장하는 텍스처 맵(Texture Map) 영역(323)을 포함할 수 있다. 여기에서, 원시 고정 씬은 전체 프래임에 대하여 변하지 않는 원시 데이터 정보이기 때문에 트리가 생성될 때 한번만 필요하므로, 3차원 어플리케이션 구동 시 트리 생성 결과인 고정 가속 구조는 DRTX(330)의 외부 메모리(340)로 보내진다. 또한, 동작 씬은 프래임마다 원시 데이터 정보가 변하기 때문에 매번 트리 생성 유닛(100)을 통해 트리를 생성하고 생성 결과인 동작 가속 구조는 DRTX(330)의 외부 메모리(340)로 보내진다. The system memory 320 can store graphics data information required for a 3D application and includes a PSS area 321 for storing a primitive static scene, a PDS area for storing a primitive dynamic scene 322 for storing texture maps, and a texture map area 323 for storing mip-maps (MIP-MAP) for texture mapping. Since the primitive fixed scene is the primitive data information that does not change with respect to the entire frame, it is needed only once when the tree is generated. Therefore, the fixed acceleration structure, which is the tree creation result when driving the 3D application, is stored in the external memory 340 of the DRTX 330, Lt; / RTI > Since the primitive data information changes in each frame of the operation scene, a tree is generated through the tree creation unit 100 every time, and a motion acceleration structure, which is a result of generation, is sent to the external memory 340 of the DRTX 330.

DRTX(330)는 도 1의 트리 생성 유닛(Tree Build Unit)(100)을 포함하며, 버스 인터페이스 유닛(Bus Interface Unit)(331), 프리미티브(Primitive)(332), 가속 구조 데이터(AS Data)(333), 작업 메모리(Working Memory)(130), 가속 구조 캐시(AS Cache)(335), 텍스처 캐시(Texture Cache)(336), 컬러 결과 버퍼(Color Result Buffer)(337), 스택 메모리(Stack Memory)(338) 및 광선 추적 유닛(Ray Tracing Unit)(339)를 더 포함할 수 있다. 일 실시예에서, 그래픽 데이터 정보를 기초로 공간 분할 구조체를 구축하고, 생성된 공간 분할 구조체를 기초로 레이 트레이싱을 수행하며, 수행된 레이 트레이싱의 결과를 CPU(310)로 전송하고, 레이 트레이싱 속도를 모니터링하여 그래픽 데이터 정보에 대한 공간 분할 구조체를 재구축할 수 있다.The DRTX 330 includes a tree build unit 100 of FIG. 1 and includes a bus interface unit 331, a primitive 332, acceleration structure data AS Data, A cache memory 333, a working memory 130, an AS cache 335, a texture cache 336, a color result buffer 337, a stack memory A stack memory 338, and a ray tracing unit 339. [0031] In one embodiment, a spatial segmentation structure is constructed based on the graphic data information, ray tracing is performed based on the generated spatial segmentation structure, the result of the performed ray tracing is transmitted to the CPU 310, So as to reconstruct the space division structure for the graphic data information.

외부 메모리(340)는 DRTX(330)에서 처리되는 정보를 임시로 저장할 수 있으며, 기하학적 정보 저장 영역(341), 정적 씬 가속 구조 저장 영역(342), 동적 씬 가속 구조 저장 영역(343), 텍스처 맵 저장 영역(344) 및 컬러 정보 저장 영역(345)을 포함할 수 있다.
The external memory 340 may temporarily store information processed in the DRTX 330 and may include a geometric information storage area 341, a static thin acceleration storage structure storage area 342, a dynamic thin acceleration storage structure storage area 343, A map storage area 344, and a color information storage area 345. [

도 4는 본 발명의 일 실시예에 따른 작업 메모리를 나타내는 블록도이다.4 is a block diagram illustrating a working memory according to one embodiment of the present invention.

도 4를 참조하면 작업 메모리(Working memory)(130)는 원시 데이터(Primitive data)(410), 원시 데이터 인덱스(Primitive index)(420), 임시 공간(Temporary space)(430) 및 가속 구조 데이터(Acceleration Structure data)(440)가 저장되는 메모리들을 포함할 수 있다.Referring to FIG. 4, a working memory 130 includes primitive data 410, a primitive index 420, a temporary space 430, Acceleration structure data 440 may be stored.

원시 데이터(410) 메모리에는 적어도 하나의 제2 트리 생성부(120)로부터 받은 원시 데이터의 x, y, z 좌표 정보가 저장되고, 원시 데이터 인덱스(420)메모리에는 원시 데이터를 정렬하는 과정에서 정렬된 순서대로 원시 데이터들의 인덱스 번호가 저장된다. 또한, 임시 공간(430) 메모리에는 분할 면을 기준으로 분류를 수행하면서 좌우로 분할된 원시 데이터의 인덱스 번호가 임시로 저장되고, 가속 구조 데이터(440) 메모리에는 적어도 하나의 제2 트리 생성부를 수행하면서 생성된 노드 및 리스트 데이터가 저장된다. 또한, 작업 메모리(130)는 내부 메모리에 해당한다.The x, y, and z coordinate information of the raw data received from the at least one second tree generator 120 is stored in the raw data 410 memory, and the x, y, The index numbers of the raw data are stored in the order of the indexes. Also, the index number of the raw data divided into left and right is temporarily stored in the memory of the temporary space 430 while the classification is performed on the basis of the division plane, and at least one second tree generating unit is performed in the memory of the acceleration structure data 440 And the generated node and list data are stored. The work memory 130 corresponds to an internal memory.

도 5(a)는 본 발명의 일 실시예에 따른 노드 스케쥴러 및 노드 메모리를 나타내는 블록도이다.5A is a block diagram illustrating a node scheduler and a node memory according to an embodiment of the present invention.

도 5(a)를 참조하면 노드 스케줄러(Node scheduler)(510)는 노드 데이터 매니저(Node Data Manager)(511), 푸시 엔트리 선택부(Push Entry Selector)(512) 및 팝 엔트리 선택부(Pop Entry Selector)(513)를 포함할 수 있고 노드 메모리(520)는 복수의 데이터 배열 필드(data array field)(521)를 포함할 수 있다. 버스트 노드 엔트리(530)는 노드 데이터 매니저(511)의 존재필드, 풀 필드 및 버스트 필드 및 데이터 배열 필드(521)를 포함할 수 있다.5A, a node scheduler 510 includes a Node Data Manager 511, a Push Entry Selector 512, and a Pop Entry Selector 513 and the node memory 520 may include a plurality of data array fields 521. [ The burst node entry 530 may include an existing field, a full field and a burst field and a data array field 521 of the node data manager 511.

노드 데이터 매니저(511)는 노드 메모리에 존재하는 데이터 배열 필드(521)들의 정보를 관리하는 작업을 수행하며 다수의 존재 필드(exist field), 풀 필드(full field) 및 버스트 필드(burst field)로 구성된다. 여기에서, 존재 필드는 데이터 배열 필드(521) 안에 노드 데이터가 존재하는지 여부에 대한 정보를 가지고, 풀 필드는 데이터 배열 필드(521)에 데이터를 더 저장할 수 없는지에 대한 정보를 가지고, 버스트 필드는 노드 데이터가 버스트 접근을 할 외부 메모리주소를 가진다. The node data manager 511 manages the information of the data array fields 521 existing in the node memory and manages information on a plurality of existing fields, a full field and a burst field . Herein, the presence field has information on whether or not node data exists in the data array field 521, and the full field has information on whether data can be further stored in the data array field 521, and the burst field The node data has an external memory address for burst access.

푸시 엔트리 선택부(512)는 제1 및 제2 트리 생성부(110 및 120)에서 생성된 노드 데이터가 저장될 버스트 노드 엔트리(burst node entry)(530)를 선택하고, 노드 스케쥴러(510)의 외부로부터 노드 데이터(node data) 및 노드 주소(node address)에 대한 정보를 받는다. 여기에서, 노드 주소는 노드 데이터가 노드의 탐색 순서대로 저장될 외부 메모리 주소를 의미한다. 또한, 푸시 엔트리 선택부(512)는 노드 스케쥴러(510) 내부에 있는 노드 데이터 매니저(511)로부터 각 버스트 노드 엔트리(530)의 정보를 입력받는다. 그리고 나서, 푸시 엔트리 선태부(512)는 입력된 데이터를 기반으로 노드 데이터가 저장될 버스트 노드 엔트리(530)의 위치를 결정하고, 위치가 선택되면 푸시 엔트리 선택부(512)는 노드 주소의 데이터 오프셋(data offset)을 확인한 후 해당 버스트 노드 엔트리(530)의 데이터 배열 필드(521)에 노드 데이터를 저장한다. 여기에서, 노드 주소는 버스트 주소와 데이터 주소를 포함하고, 데이터 오프셋은 데이터 배열 필드(521)에서 노드 데이터가 저장될 위치정보를 갖는다.The push entry selector 512 selects a burst node entry 530 in which the node data generated in the first and second tree generating units 110 and 120 is to be stored and outputs the burst node entry 530 to the node scheduler 510 And receives information on node data and node address from the outside. Here, the node address means an external memory address in which the node data is to be stored in the order of searching for the node. The push-entry selector 512 receives the information of each burst node entry 530 from the node data manager 511 in the node scheduler 510. Then, the push-entry selector 512 determines the position of the burst node entry 530 in which the node data is to be stored based on the input data. When the position is selected, the push-entry selector 512 selects the push- After the data offset is confirmed, the node data is stored in the data array field 521 of the corresponding burst node entry 530. Here, the node address includes the burst address and the data address, and the data offset has the position information in the data array field 521 where the node data is to be stored.

팝 엔트리 선택부(513)는 선택된 버스트 노드 엔트리(530)의 데이터 배열 필드(521)를 외부로 출력시킨다. 보다 구체적으로, 팝 엔트리 선택부(513)는 노드 데이터 매니저(511)로부터 모든 버스트 노드 엔트리(530)의 풀 필드에 있는 정보를 받고, 유효한 정보가 존재하는지 확인한다. 유효한 정보가 존재할 경우, 해당 버스트 노드 엔트리(530)의 버스트 필드와 데이터 배열 필드(521)를 외부로 출력시킨다. The pop entry selector 513 outputs the data array field 521 of the selected burst node entry 530 to the outside. More specifically, the pop entry selection unit 513 receives information in the full field of all the burst node entries 530 from the node data manager 511, and confirms whether there is valid information. If there is valid information, the burst field and data array field 521 of the corresponding burst node entry 530 are output to the outside.

데이터 배열 필드(521)은 복수의 노드 데이터를 저장할 수 있는 메모리 공간으로서 외부 메모리(340)의 버스트 접근 사이즈(burst access size)와 동일한 크기를 가진다. 또한, 노드 데이터 매니저(511)의 존재 필드, 풀 필드 및 버스트 필드는 노드 메모리(520)의 데이터 배열 필드(521)와 함께 하나의 버스트 노드 엔트리(530)를 구성한다.The data array field 521 has the same size as the burst access size of the external memory 340 as a memory space capable of storing a plurality of node data. The existence field, the full field, and the burst field of the node data manager 511 together with the data arrangement field 521 of the node memory 520 constitute one burst node entry 530.

보다 구체적으로, 노드 스케줄러(510)는 노드 주소와 노드 데이터를 입력으로 받고, 푸시 엔트리 선택부(512)에서 입력된 노드 데이터가 저장될 버스트 노드 엔트리(530)의 위치를 찾는다. 여기에서, 위치를 찾는 방법은 다음과 같다. 모든 존재 필드를 확인한 후 노드 데이터가 존재하는 버스트 노드 엔트리(530)들을 찾는다. 그 다음 버스트 노드 엔트리(530)들의 버스트 필드와 입력된 노드 주소의 버스트 주소를 비교하여 동일한 주소를 갖는 버스트 필드를 찾는다. 버스트 필드가 찾아진 경우, 푸시 데이터에서 해당 버스트 노드 엔트리(530)에 노드 데이터를 저장한다. 동일한 버스트 필드를 찾지 못한 경우, 노드 데이터가 존재하지 않는 버스트 노드 엔트리(530)를 선택하고 버스트 필드를 변경한다. 선택 방법은 존재 필드가 유효하지 않은 가장 상위의 버스트 노드 엔트리(530)를 우선으로 한다. 변경 방법은 선택된 버스트 노드 엔트리(530)의 버스트 필드에 입력된 노드 주소의 버스트 주소를 저장하는 것이다. 그 다음 푸시 데이터에서 초기화된 버스트 노드 엔트리(530)의 데이터 배열 필드(521)에 노드 데이터를 저장한다.More specifically, the node scheduler 510 receives the node address and the node data as input, and locates the burst node entry 530 in which the node data input from the push-entry selector 512 is to be stored. Here is how to find the location. After all the existence fields are checked, the burst node entries 530 in which the node data exists are searched. The burst field of the next burst node entries 530 is compared with the burst address of the input node address to find a burst field having the same address. If the burst field is found, node data is stored in the corresponding burst node entry 530 in the push data. If the same burst field is not found, the burst node entry 530 in which node data does not exist is selected and the burst field is changed. The selection method takes precedence over the highest burst node entry 530 where the presence field is not valid. The changing method is to store the burst address of the node address entered in the burst field of the selected burst node entry 530. [ And then stores the node data in the data array field 521 of the burst node entry 530 initialized in the push data.

노드 데이터의 저장이 완료되면 팝 엔트리 선택부(513)에서 모든 풀 필드 정보를 확인하여 더 이상 노드 데이터를 저장할 공간이 없는 버스트 노드 엔트리(530)를 찾는다. 만일 해당되는 버스트 노드 엔트리(530)가 존재하지 않는다면 노드 스케줄러(510)를 종료한다. 그렇지 않다면 해당 버스트 노드 엔트리(530)의 버스트 필드와 데이터 배열 필드(521)에 존재하는 데이터를 출력하고 노드 스케줄러(510)를 종료한다.
When the storage of the node data is completed, the pop-entry selecting unit 513 checks all the full-field information and finds the burst node entry 530 where there is no more space for storing the node data. If there is no corresponding burst node entry 530, the node scheduler 510 is terminated. Otherwise, the data present in the burst field and data array field 521 of the corresponding burst node entry 530 are output and the node scheduler 510 is terminated.

도 5(b)는 노드 스케쥴러의 실시예를 나타내는 블록도이다.5 (b) is a block diagram showing an embodiment of a node scheduler.

노드의 생성 순서인 0, 1, 2, 3,... 순서로 노드에 대한 정보가 노드 스케줄러(510)에 입력되면, 도 4(a)에서 설명한 과정을 거쳐 노드 메모리(520)에 노드의 탐색 순서에 따라 7, 3, 1, 0,... 순서로 저장될 수 있다. 또한, 버스트 접근 사이즈는 4이고, 이에 따라 하나의 데이터 배열 필드(521)에는 4개의 노드 데이터가 저장될 수 있다. 즉, 노드의 생성 순서는 0, 1, 2, 3,... 이지만 노드 메모리에 저장된 순서는 7, 3, 1, 0,...으로서 탐색 순서로 저장됨을 볼 수 있다.
When the node scheduler 510 receives the information on the nodes in the order of 0, 1, 2, 3, ..., the nodes are stored in the node memory 520 through the process described with reference to FIG. Can be stored in the order of 7, 3, 1, 0, ... according to the search order. In addition, the burst access size is 4, so four node data can be stored in one data array field 521. [ That is, the order of creation of the nodes is 0, 1, 2, 3, ..., but the order stored in the node memory is stored in the search order as 7, 3, 1, 0, ....

도 6는 레이 트레이싱의 과정을 설명하는 블록도이다.6 is a block diagram illustrating a process of ray tracing.

도 6를 참조하면, 각 픽셀(Pixel) 당 카메라(610) 위치로부터 최초 레이(Primary Ray)(P)를 생성하여 레이(P)와 만나는 물체(620)를 찾기 위한 계산을 수행한다. 해당 레이(P)와 만나게 된 물체가 굴절의 성질을 갖는 물체(620)나 반사의 성질을 갖는 물체(631)(632)인 경우에는, 해당 레이(P)와 물체가 만난 위치에서 굴절효과를 위한 굴절 레이(Refraction Ray)(F) 및 반사 효과를 위한 반사 레이(Reflection Ray)(R)를 생성하고, 라이트(650) 방향으로 그림자 레이(Shadow Ray)(S)를 생성할 수 있다. 일 실시예에서, 그림자 레이(S)가 다른 물체(640)와 만나면 해당 그림자 레이(S)가 생성된 지점에 그림자가 생성될 수 있다.
Referring to FIG. 6, a primary ray P is generated from a position of a camera 610 for each pixel, and a calculation for searching an object 620 to meet the ray P is performed. When the object to be encountered with the ray P is an object 620 having refracting properties or an object 631 and 632 having a reflecting property, the refraction effect is obtained at the position where the ray P and the object meet A reflection ray F for reflection and a reflection ray R for reflection can be generated and a shadow ray S can be generated in the direction of the light 650. [ In one embodiment, when the shadow ray S meets another object 640, a shadow may be generated at the point where the shadow ray S is generated.

도 7은 개시된 기술에서 사용되는 가속 구조와 기하학적 데이터를 설명하는 블록이다.Figure 7 is a block illustrating geometry and acceleration structures used in the disclosed technique.

도 7에서, 가속 구조(Acceleration Structure, AS)는 KD-tree를 사용한다고 가정하였다. KD-tree는 공간 분할 구조체(Spatial Partitioning Structure)의 일종으로, 레이-삼각형 교차 테스트(Ray-Triangle Intersection Test)를 위하여 사용될 수 있다. 예를 들어, KD-tree는 박스 노드(Box Node)(710), 내부 노드(Inner Node)(720) 및 리프 노드(Leaf Node)(730)를 포함할 수 있다. 일 실시예에서, 리프 노드(730)는 기하학적 데이터에 포함된 적어도 하나의 삼각형 정보를 포인팅 하기 위한 삼각형 리스트를 포함할 수 있다. 예를 들어, 삼각형 정보는 삼각형의 세 점에 대한 정점 좌표, 법선 벡터 및 텍스처 좌표를 포함할 수 있다. 일 실시예에서, 기하학적 데이터에 포함된 삼각형 정보가 배열로 구현된 경우에는 리프 노드에 포함된 삼각형 리스트는 배열 인덱스에 상응할 수 있다. 일 실시예에서, 내부 노드(720)는 바운딩 박스 기반의 공간 영역을 가지고 있고, 공간 영역은 다시 2개의 영역으로 나뉘어서 두개의 하위 노드에 할당 될 수 있다. 즉, 내부 노드(720)는 분할 면과 이를 통해 분할된 두개 영역의 서브트리로 구성되고, 리프 노드(730)는 일련의 원시 데이터만을 포함하게 된다. 공간을 분할하는 분할 면은 임의의 광선과 부딪치게 되는 원시데이터를 찾기 위한 값(예를 들어, 노드 방문 횟수, 원시데이터와 교차 되는지 여부를 계산하는 횟수 등)이 최소가 되는 지점을 찾아야 하고, SAH(Surface area heuristic)은 해당 지점을 찾기 위해 사용하는 방법에 해당할 수 있다.
In FIG. 7, it is assumed that the Acceleration Structure (AS) uses a KD-tree. The KD-tree is a kind of Spatial Partitioning Structure and can be used for Ray-Triangle Intersection Test. For example, the KD-tree may include a box node 710, an inner node 720, and a leaf node 730. In one embodiment, the leaf node 730 may include a triangle list for pointing at least one triangle information included in the geometric data. For example, the triangle information may include vertex coordinates, normal vectors, and texture coordinates for the three points of the triangle. In one embodiment, when the triangle information included in the geometric data is implemented as an array, the triangle list included in the leaf node may correspond to the array index. In one embodiment, the inner node 720 has a spatial area based on a bounding box, and the spatial area can be divided into two areas and allocated to two lower nodes. In other words, the internal node 720 is composed of a sub-tree of a divided area and two divided areas thereof, and the leaf node 730 includes only a series of raw data. The division plane dividing the space must find a point at which the value for finding the raw data to be hit with an arbitrary light ray (for example, the number of node visits, the number of times of calculating whether intersecting with the raw data, etc.) (Surface area heuristic) can be a method used to find the point.

도 8은 본 발명의 일 실시예에 따른 트리 생성 유닛을 설명하는 흐름도이다.8 is a flowchart illustrating a tree generating unit according to an embodiment of the present invention.

먼저, 원시 데이터의 개수가 임계치보다 많은지 여부를 확인한다(단계 S801). 여기에서, 임계치는 하나의 제2 트리 생성부(120)가 처리할 수 있는 최대 원시데이터의 개수이다. 확인 결과, 임계치보다 많은 경우 비닝 방식으로 공간을 분할하고(단계 S802), 분할한 공간에 대하여 단계 S801로 돌아가 원시데이터의 개수가 임계치보다 많은지 여부를 다시 확인한다.First, it is checked whether or not the number of primitive data is larger than a threshold value (step S801). Here, the threshold value is the maximum number of raw data that one second tree generating unit 120 can process. As a result of checking, if the number is greater than the threshold value, the space is divided by the binning method (step S802), and the divided space is returned to step S801 to check again whether or not the number of raw data is larger than the threshold value.

원시 데이터의 개수가 임계치보다 적은 경우에는 정렬 방식으로 공간을 분할한다(단계 S803). 분할을 수행하고 더 이상 분할할 공간이 없는지 여부(리프노드에 해당하는지 여부)를 확인하고(단계 S804), 없는 경우 종료되고, 있는 경우에는 단계 S803으로 돌아가서 다시 정렬 방식으로 공간을 분할한다.If the number of raw data is smaller than the threshold value, the space is divided by the sorting method (step S803). (Step S804). If there is no space for the leaf node (step S804), the process ends. If not, the process returns to step S803 and the space is divided again by the sorting method.

일 실시예에서, 공간을 분할한다는 것은 공간을 분할하는 위치인 분할 면을 찾는 것이고 분할 면은 광선과 부딪치는 원시 데이터를 찾기 위한 값(예를 들어, 노드 방문 횟수, 원시 데이터와 교차 되는지 여부를 계산하는 횟수 등)이 최소가 되는 지점을 의미할 수 있다. SAH(Surface area heuristic) 계산 방식을 이용하여 분할 면을 찾고, SAH 방식에는 비닝 및 정렬 방식이 있다.
In one embodiment, partitioning the space is to find a partition plane, which is the location for partitioning the space, and the partition plane is a value for finding raw data that collides with the ray (e.g., the number of node visits, The number of calculations, etc.) can be minimized. The surface area heuristic (SAH) calculation method is used to find the divided surface, and the SAH method has a binning and sorting method.

상기에서는 본 출원의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 출원을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit and scope of the present invention as defined by the following claims It can be understood that

100: 트리 생성 유닛 110: 제1 트리 생성부
120: 제2 트리 생성부 130: 작업 메모리
210a: 바운딩 박스 220a: 분할 면
230a: 원시데이터 210b: 바운딩 박스
220b: 분할 면 230b: 원시 데이터
300: 레이 트레이싱 장치 310: CPU(Central Processing Unit)
320: 시스템 메모리 330: DRTX(Dynamic Ray Tracing Accelerator)
340: 외부 메모리
410: 원시 데이터 420: 원시 데이터 인덱스
430: 임시 공간 440: 가속 구조 데이터
510: 노드 스케줄러 520: 노드 메모리
530: 버스트 노드 엔트리
610: 카메라 620: 물체
631: 물체 632: 물체
640: 물체 650: 라이트
710: 박스 노드 720: 내부 노드
730: 리프노드
100: tree generating unit 110: first tree generating unit
120: second tree generator 130: work memory
210a: Bounding box 220a:
230a: raw data 210b: bounding box
220b: splitting surface 230b: raw data
300: ray tracing device 310: CPU (Central Processing Unit)
320: System memory 330: Dynamic Ray Tracing Accelerator (DRTX)
340: External memory
410: raw data 420: raw data index
430: Temporary space 440: Accelerated structure data
510: Node Scheduler 520: Node Memory
530: burst node entry
610: Camera 620: Object
631: object 632: object
640: object 650: light
710: box node 720: internal node
730: leaf node

Claims (19)

(a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하는 단계; 및
(b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 단계를 포함하고,
상기 (a) 단계는 해당 서브 공간이 상기 KD-tree(K-Dimension tree)의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크하고 상기 서브 공간(KD-tree 노드)의 상기 원시 데이터 개수를 기초로 상기 서브 공간의 분할 방식을 결정하는 단계를 포함하는 KD-tree 생성 방법.
(a) determining a partitioning mode of a given space and dividing the given space into a plurality of sub-spaces (each forming a node of a KD-tree); And
(b) repeating the step (a) by setting each of the plurality of subspaces to the given space,
In step (a), if the corresponding sub-space corresponds to an internal node of the KD-tree (K-Dimension tree), it checks whether the number of raw data in the internal node exceeds a threshold, tree node based on the number of primitive data of the sub-space.
제1항에 있어서, 상기 임계치는
상기 해당 서브 공간을 정렬 방식으로 분할할 때 요구되는 내부 메모리의 크기를 기초로 결정되는 것을 특징으로 하는 KD-tree 생성 방법.
2. The method of claim 1, wherein the threshold is
And determining the size of the KD-tree based on the size of the internal memory required when the sub-space is divided by the sorting method.
제1항에 있어서, 상기 내부 노드는
상기 주어진 공간의 분할 면과 분할 면에 의해 분할된 복수의 서브공간으로 구성되는 것을 특징으로 하는 KD-tree 생성 방법.
2. The method of claim 1, wherein the internal node
And a plurality of sub-spaces divided by a division plane and a division plane of the given space.
제1항에 있어서, 상기 (a) 단계는
상기 원시 데이터의 개수가 상기 임계치를 초과한다면 상기 해당 서브 공간을 비닝(binning) 방식으로 분할하여 상기 복수의 서브 공간들을 생성하는 단계를 더 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
The method of claim 1, wherein step (a)
And generating the plurality of sub-spaces by dividing the sub-space in a binning manner if the number of the raw data exceeds the threshold value.
제1항에 있어서, 상기 (a) 단계는
상기 원시 데이터의 개수가 상기 임계치를 초과하지 않는다면 상기 해당 서브 공간을 정렬(sorting) 방식으로 분할하여 복수의 서브 공간들을 생성하는 단계를 더 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
The method of claim 1, wherein step (a)
And generating a plurality of sub-spaces by dividing the sub-space in a sorting manner if the number of the raw data does not exceed the threshold value.
제5항에 있어서, 상기 (a) 단계는
상기 해당 서브 공간에 대한 정렬 방식의 분할을 병렬적으로 수행하여 상기 복수의 서브 공간을 생성하는 단계를 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
6. The method of claim 5, wherein step (a)
And generating the plurality of sub-spaces by performing the partitioning of the sorting scheme for the sub-space in parallel.
제1항에 있어서, 상기 (a) 단계는
상기 복수의 서브 공간들의 분할 순서를 상기 KD-tree의 방문 순서로 변환하여 상기 복수의 서브 공간들을 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
The method of claim 1, wherein step (a)
And converting the division order of the plurality of sub-spaces into a visited order of the KD-tree, and storing the plurality of sub-spaces in a memory.
제7항에 있어서, 상기 복수의 서브 공간들을 메모리에 저장하는 단계는
상기 주어진 공간의 분할을 통해 생성된 노드의 주소 및 노드의 데이터를 입력 받는 단계; 및
상기 노드의 데이터가 저장될 버스트 노드 엔트리(burst node entry)의 위치를 탐색하는 단계를 포함하고,
상기 버스트 노드 엔트리의 위치를 탐색하는 단계는 노드 주소와 버스트 주소를 비교하는 단계를 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
8. The method of claim 7, wherein storing the plurality of sub-
Receiving address and node data of a node generated through division of the given space; And
Searching for a location of a burst node entry in which data of the node is to be stored,
Wherein the step of searching for the location of the burst node entry comprises comparing the node address to a burst address.
제7항에 있어서, 상기 복수의 서브 공간들을 메모리에 저장하는 단계는
노드 데이터가 저장될 공간이 없는 버스트 노드 엔트리를 탐색하는 단계를 포함하는 것을 특징으로 하는 KD-tree 생성 방법.
8. The method of claim 7, wherein storing the plurality of sub-
Searching for a burst node entry in which there is no space in which node data is to be stored.
(a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하고,
(b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 트리 생성 유닛을 포함하고,
상기 트리 생성 유닛은 해당 서브 공간이 상기 KD-tree의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크하고 상기 서브 공간(KD-tree 노드)의 상기 원시 데이터 개수를 기초로 상기 서브 공간의 분할 방식을 결정하는 단계를 포함하는 KD-tree 생성 장치.
(a) determining a partitioning method of a given space to divide the given space into a plurality of sub-spaces (each forming a node of a KD-tree)
(b) a tree generating unit for setting each of the plurality of sub-spaces to the given space and repeating the step (a)
If the corresponding sub-space corresponds to an internal node of the KD-tree, the tree generating unit checks whether the number of the original data in the internal node exceeds a threshold value, and checks whether the raw data of the sub-space (KD-tree node) And determining a division scheme of the sub-space based on the number of sub-spaces.
제10항에 있어서, 상기 임계치는
상기 해당 서브 공간을 정렬 방식으로 분할할 때 요구되는 내부 메모리의 크기를 기초로 결정되는 것을 특징으로 하는 KD-tree 생성 장치.
11. The method of claim 10, wherein the threshold is
And determining the size of the sub-space based on the size of the internal memory required when the sub-space is divided into the sub-spaces.
제10항에 있어서, 상기 내부 노드는
상기 주어진 공간의 분할 면과 분할 면에 의해 분할된 복수의 서브공간으로 구성되는 것을 특징으로 하는 KD-tree 생성 장치.
11. The method of claim 10, wherein the internal node
And a plurality of sub-spaces divided by a division plane and a division plane of the given space.
제10항에 있어서, 상기 트리 생성 유닛은
상기 원시 데이터의 개수가 상기 임계치를 초과한다면 상기 해당 서브 공간을 비닝(binning) 방식으로 분할하여 상기 복수의 서브 공간들을 생성하는 제1 트리 생성부를 포함하는 것을 특징으로 하는 KD-tree 생성 장치.
11. The apparatus of claim 10, wherein the tree generating unit
And a first tree generating unit for generating the plurality of sub-spaces by dividing the corresponding sub-space in a binning manner if the number of the raw data exceeds the threshold value.
제10항에 있어서, 상기 트리 생성 유닛은
상기 원시 데이터의 개수가 상기 임계치를 초과하지 않는다면 상기 해당 서브 공간을 정렬(sorting) 방식으로 분할하여 복수의 서브 공간들을 생성하는 적어도 하나의 제2 트리 생성부를 포함하는 것을 특징으로 하는 KD-tree 생성 장치.
11. The apparatus of claim 10, wherein the tree generating unit
And generating a plurality of sub-spaces by dividing the sub-space into a plurality of sub-spaces if the number of the raw data does not exceed the threshold. Device.
제14항에 있어서, 제2 트리 생성부는
상기 해당 서브 공간에 대한 정렬 방식의 분할을 병렬적으로 수행하여 상기 복수의 서브 공간을 생성하는 것을 특징으로 하는 KD-tree 생성 장치.
15. The apparatus of claim 14, wherein the second tree generator
Wherein the plurality of sub-spaces are generated by performing the division of the sorting scheme for the sub-space in parallel.
제10항에 있어서, 상기 트리 생성 유닛은
상기 복수의 서브 공간들의 분할 순서를 상기 KD-tree의 방문 순서로 변환하여 상기 복수의 서브 공간들을 메모리에 저장하는 노드 스케줄러를 포함하는 것을 특징으로 하는 KD-tree 생성 장치.
11. The apparatus of claim 10, wherein the tree generating unit
And a node scheduler for converting the division order of the plurality of sub-spaces into a visit order of the KD-tree and storing the plurality of sub-spaces in a memory.
제16항에 있어서, 상기 노드 스케줄러는
상기 주어진 공간의 분할을 통해 생성된 노드의 주소 및 노드의 데이터를 입력받고 상기 노드의 데이터가 저장될 버스트 노드 엔트리(burst node entry)의 위치를 탐색하는 푸시 엔트리 선택부를 포함하고,
상기 푸시 엔트리 선택부는 노드 주소와 버스트 주소를 비교하는 것을 특징으로 하는 KD-tree 생성 장치.
17. The system of claim 16, wherein the node scheduler
And a push entry selector for receiving a node address and data of a node generated through the division of the given space and searching for a location of a burst node entry in which data of the node is to be stored,
Wherein the push-entry selector compares a node address with a burst address.
제16항에 있어서, 상기 노드 스케줄러는
노드 데이터가 저장될 공간이 없는 버스트 노드 엔트리를 탐색하는 팝 엔트리 선택부를 포함하는 것을 특징으로 하는 KD-tree 생성 장치.
17. The system of claim 16, wherein the node scheduler
And a pop entry selector for searching for a burst node entry in which there is no space in which node data is to be stored.
(a) 주어진 공간의 분할 방식을 결정하여 상기 주어진 공간을 복수의 서브 공간들(각각은 KD-tree의 노드를 형성함)로 분할하는 기능; 및
(b) 상기 복수의 서브 공간들 각각을 상기 주어진 공간으로 설정하여 상기 단계 (a)를 반복하는 기능을 포함하고,
상기 (a) 단계는 해당 서브 공간이 상기 KD-tree의 내부 노드에 해당하면 상기 내부 노드에 있는 원시 데이터의 개수가 임계치를 초과하는지 여부를 체크하고 상기 서브 공간(KD-tree 노드)의 상기 원시 데이터 개수를 기초로 상기 서브 공간의 분할 방식을 결정하는 기능을 포함하는 KD-Tree 생성 방법에 관한 컴퓨터 프로그램을 기록한 기록매체.
(a) determining a partitioning mode of a given space to divide the given space into a plurality of sub-spaces (each forming a node of a KD-tree); And
(b) setting each of the plurality of sub-spaces as the given space, and repeating the step (a)
In step (a), if the corresponding sub-space corresponds to an internal node of the KD-tree, it is checked whether the number of raw data in the internal node exceeds a threshold, And determining a division method of the sub space based on the number of data.
KR1020140049254A 2014-04-24 2014-04-24 3d image building method, 3d image building machine performing the same and storage media storing the same KR101560283B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140049254A KR101560283B1 (en) 2014-04-24 2014-04-24 3d image building method, 3d image building machine performing the same and storage media storing the same
PCT/KR2015/004096 WO2015163720A1 (en) 2014-04-24 2015-04-24 Three-dimensional image creating method, three-dimensional image creating apparatus performing same, and recording medium storing same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140049254A KR101560283B1 (en) 2014-04-24 2014-04-24 3d image building method, 3d image building machine performing the same and storage media storing the same

Publications (1)

Publication Number Publication Date
KR101560283B1 true KR101560283B1 (en) 2015-10-15

Family

ID=54332804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140049254A KR101560283B1 (en) 2014-04-24 2014-04-24 3d image building method, 3d image building machine performing the same and storage media storing the same

Country Status (2)

Country Link
KR (1) KR101560283B1 (en)
WO (1) WO2015163720A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101807172B1 (en) 2016-12-28 2017-12-08 세종대학교 산학협력단 Ray tracing apparatus and method of the same
CN108171785A (en) * 2018-01-22 2018-06-15 中南大学 For the SAH-KD tree design methods of ray trace
KR102089269B1 (en) 2019-04-11 2020-03-17 주식회사 실리콘아츠 Buffering method in portable ray tracing system
KR20200120038A (en) 2019-04-11 2020-10-21 주식회사 실리콘아츠 Portable ray tracing apparatus

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109598095B (en) * 2019-01-07 2023-08-08 平安科技(深圳)有限公司 Method and device for establishing scoring card model, computer equipment and storage medium

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101004110B1 (en) * 2009-05-28 2010-12-27 주식회사 실리콘아츠 Ray tracing core and ray tracing chip having the same
KR101099443B1 (en) * 2010-03-05 2011-12-28 인하대학교 산학협력단 Efficient processing method of huge volume airborne LiDAR data using binary tree and virtual pyramid
KR101697238B1 (en) * 2010-08-26 2017-01-17 삼성전자주식회사 Image processing apparatus and method
KR101281156B1 (en) * 2012-07-24 2013-07-02 세종대학교산학협력단 Ray tracing core and processing mehtod for ray tracing

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101807172B1 (en) 2016-12-28 2017-12-08 세종대학교 산학협력단 Ray tracing apparatus and method of the same
CN108171785A (en) * 2018-01-22 2018-06-15 中南大学 For the SAH-KD tree design methods of ray trace
KR102089269B1 (en) 2019-04-11 2020-03-17 주식회사 실리콘아츠 Buffering method in portable ray tracing system
KR20200120038A (en) 2019-04-11 2020-10-21 주식회사 실리콘아츠 Portable ray tracing apparatus
US10846909B2 (en) 2019-04-11 2020-11-24 Siliconarts, Inc. Portable ray tracing apparatus
US10902666B2 (en) 2019-04-11 2021-01-26 Siliconarts, Inc. Buffering method in portable ray tracing system

Also Published As

Publication number Publication date
WO2015163720A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
US10789758B2 (en) Ray tracing in computer graphics using intersection testing at selective resolution
KR101560283B1 (en) 3d image building method, 3d image building machine performing the same and storage media storing the same
US9367949B2 (en) Apparatus and method for scheduling of ray tracing
KR101076807B1 (en) Ray tracing apparatus and method
US20020000986A1 (en) Mitigating the effects of object approximations
WO2009117691A2 (en) Architectures for parallelized intersection testing and shading for ray-tracing rendering
JP4858795B2 (en) Instant ray tracing
US7990380B2 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
EP3714433A1 (en) Ray-triangle intersection testing with tetrahedral planes
KR102151443B1 (en) Graphics processing apparatus based on hybrid gpu architecture
US8253738B2 (en) Data processing apparatus and method
US10460506B2 (en) Method and apparatus for generating acceleration structure
US20140347355A1 (en) Ray tracing core and method for processing ray tracing
KR101807172B1 (en) Ray tracing apparatus and method of the same
KR102193683B1 (en) Apparatus and method for traversing acceleration structure in a ray tracing system
KR101670930B1 (en) Apparatus and method for generating kd-tree using hardware
KR102269648B1 (en) Ray tracing device and method with improved performance
KR102151444B1 (en) Ray tracing device using mimd based t&i scheduling
US9519992B2 (en) Apparatus and method for processing image
KR102525084B1 (en) Multichip-based ray tracing device and method using frame division
KR102261257B1 (en) Ray tracing device and method for reducing the amount of data transmitted between devices
US20230169713A1 (en) Multichip ray tracing device and method
CN114202611A (en) Three-dimensional graph rendering method and device based on space-time tiles
Hermansson View-Dependent Collision Detection and Response Using Octrees

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181025

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190816

Year of fee payment: 5

R401 Registration of restoration