KR20170048003A - 가속 구조를 생성하는 방법 및 장치 - Google Patents

가속 구조를 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR20170048003A
KR20170048003A KR1020150148826A KR20150148826A KR20170048003A KR 20170048003 A KR20170048003 A KR 20170048003A KR 1020150148826 A KR1020150148826 A KR 1020150148826A KR 20150148826 A KR20150148826 A KR 20150148826A KR 20170048003 A KR20170048003 A KR 20170048003A
Authority
KR
South Korea
Prior art keywords
morton
acceleration structure
space
primitive
node
Prior art date
Application number
KR1020150148826A
Other languages
English (en)
Other versions
KR102537530B1 (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 KR1020150148826A priority Critical patent/KR102537530B1/ko
Priority to US15/334,815 priority patent/US10115224B2/en
Publication of KR20170048003A publication Critical patent/KR20170048003A/ko
Application granted granted Critical
Publication of KR102537530B1 publication Critical patent/KR102537530B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

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

광선 추적에 사용되는 가속 구조(Acceleration Structure)를 생성하는 방법에 있어서, 제1 공간에 포함된 프리미티브(primitive)들 각각의 위치를 나타내는 모튼 코드(Morton code)를 획득하는 단계; 제1 공간에 포함된 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리(Morton distance)를 계산하는 단계; 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정하는 단계; 및 제1 공간에 대응하는 가속 구조의 제1 노드의 레벨이 기준 레벨 이하인 경우, 제1 공간을 제1 분할 방법으로 분할하고, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 제1 공간을 제2 분할 방법으로 분할하는 단계; 를 포함하는 방법이 개시된다.

Description

가속 구조를 생성하는 방법 및 장치 {METHOD AND APPARATUS FOR GENERATING ACCELERATION STRUCTURE}
광선 추적에 사용되는 가속 구조를 생성하는 방법 및 장치에 관한 것이다.
3D 렌더링은 3차원 객체 데이터를 주어진 카메라의 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리 과정이다. 광선 추적 방법은 렌더링의 대상이 되는 씬 오브젝트(scene object)들과 광선이 교차되는 지점을 추적하는 과정이다. 광선 추적(ray-tracing)은 가속 구조(acceleration structure)의 탐색(traversal)과 광선-프리미티브(ray-primitive) 간의 교차 검사(intersection test) 과정을 포함한다. 이때, 탐색과 교차 검사 과정에서 많은 연산량(computation) 및 넓은 메모리 대역폭(memory bandwidth)을 필요로 한다.
광선 추적에 사용되는 가속 구조를 생성하는 방법 및 장치에 있어서, 가속 구조의 품질을 유지하면서 빠르게 가속 구조를 생성할 수 있는 방법 및 장치가 제공된다.
일 실시 예에 따라 광선 추적에 사용되는 가속 구조(Acceleration Structure)를 생성하는 방법은, 제1 공간에 포함된 프리미티브(primitive)들 각각의 위치를 나타내는 모튼 코드(Morton code)를 획득하는 단계; 제1 공간에 포함된 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리(Morton distance)를 계산하는 단계; 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정하는 단계; 및 제1 공간에 대응하는 가속 구조의 제1 노드의 레벨이 기준 레벨 이하인 경우, 제1 공간을 제1 분할 방법으로 분할하고, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 제1 공간을 제2 분할 방법으로 분할하는 단계; 를 포함한다.
또한, 제1 분할 방법은 SAH 방법이고, 제2 분할 방법은 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 할 수 있다.
또한, 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고, 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 할 수 있다.
또한, 기준 레벨을 조정하는 단계는, 모튼 거리가 소정의 임계값보다 작은 경우, 기준 레벨을 감소시키고, 모튼 거리가 소정의 임계값보다 크거나 같은 경우, 기준 레벨을 증가시키는 단계를 포함할 수 있다.
또한, 분할하는 단계는, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 제1 노드에 포함되는 하위 노드들 각각에 대응하는 공간을 모튼 코드를 이용하여 분할하는 단계; 를 포함할 수 있다.
또한, 방법은, SAH 방법으로 제2 공간을 분할하여 제1 공간을 포함하는 복수의 서브 공간들을 획득하는 단계; 를 더 포함할 수 있다.
일 실시 예에 따라 광선 추적에 사용되는 가속 구조를 생성하는 방법은, 제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하는 단계; 제1 공간에 포함된 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하는 단계; 모튼 거리가 소정의 임계값 이하인 경우, 제1 공간을 제1 분할 방법으로 복수의 서브 공간들로 분할하고, 모튼 거리가 소정의 임계값을 초과하는 경우, 제1 공간을 제2 분할 방법으로 복수의 서브 공간들로 분할하는 단계; 및 분할된 서브 공간들 각각을 가속 구조에 포함되는 노드로 설정하여, 가속 구조를 생성하는 단계; 를 포함한다.
또한, 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고, 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 할 수 있다.
또한, 제1 분할 방법은 SAH 방법이고, 제2 분할 방법은 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 할 수 있다.
일 실시 예에 따라 광선 추적에 사용되는 가속 구조를 생성하는 장치는, 가속 구조에 대한 정보가 저장된 메모리; 및 제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하고, 제1 공간에 포함된 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하고, 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정하고, 제1 공간에 대응하는 가속 구조의 제1 노드의 레벨이 기준 레벨 이하인 경우, 제1 공간을 제1 분할 방법을 이용하여 분할하고, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 제1 공간을 제2 분할 방법을 이용하여 분할하는 프로세서; 를 포함한다.
또한, 제1 분할 방법은 SAH 방법이고, 제2 분할 방법은 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 할 수 있다.
또한, 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고, 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 할 수 있다.
또한, 프로세서는, 모튼 거리가 소정의 임계값보다 작은 경우, 기준 레벨을 감소시키고, 모튼 거리가 소정의 임계값보다 크거나 같은 경우, 기준 레벨을 증가시키는 것을 특징으로 할 수 있다.
또한, 프로세서는, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 제1 노드에 포함되는 하위 노드들 각각에 대응하는 공간을 모튼 코드를 이용하여 분할하는 것을 특징으로 할 수 있다.
또한, 프로세서는, SAH 방법으로 제2 공간을 분할하여 제1 공간을 포함하는 복수의 서브 공간들을 획득하는 것을 특징으로 할 수 있다.
일 실시 예에 따라 광선 추적에 사용되는 가속 구조를 생성하는 장치는, 가속 구조에 대한 정보가 저장된 메모리; 및 제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하고, 제1 공간에 포함된 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하고, 모튼 거리가 소정의 임계값 이하인 경우, 제1 공간을 제1 분할 방법으로 복수의 서브 공간들로 분할하고, 모튼 거리가 소정의 임계값을 초과하는 경우, 제1 공간을 제2 분할 방법으로 복수의 서브 공간들로 분할하고, 분할된 서브 공간들 각각을 가속 구조에 포함되는 노드로 설정하여, 가속 구조를 생성하는 프로세서; 를 포함한다.
또한, 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고, 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 할 수 있다.
또한, 제1 분할 방법은 SAH 방법이고, 제2 분할 방법은 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 할 수 있다.
일 실시 예에 따라 가속 구조를 생성하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
도 1은 광선 추적을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 동작을 설명하기 위한 도면이다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 가속 구조 생성 장치를 설명하기 위한 블록도이다.
도 7은 일 실시 예에 따른 가속 구조를 생성하는 방법을 설명하기 위한 순서도이다.
도 8은 다른 실시 예에 따른 가속 구조를 생성하는 방법을 설명하기 위한 순서도이다.
도 9는 일 실시 예에 따른 가속 구조 생성 방법을 구체적으로 도시한 순서도이다.
도 10은 가속 구조를 생성하는 방법의 예시를 도시한 도면이다.
도 11은 3차원 공간을 SAH 방법으로 분할하는 예시를 도시한 도면이다.
도 12는 3차원 공간을 모튼 코드를 이용하여 분할하는 예시를 도시한 도면이다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 1은 광선 추적을 설명하기 위한 도면이다. 도 1을 참조하면, 3차원 모델링에서, 레이 트레이싱 코어는 시점(10)을 결정하고, 시점(view point)에 따라 화면(image, 20)을 결정한다. 시점(10)과 화면(20)이 결정되면, 레이 트레이싱 코어(ray tracing core)는 시점(10)으로부터 화면(20)의 각 픽셀(pixel)들에 대하여 광선을 생성한다.
도 1의 구성들을 설명하면, 시점(10)으로부터 1차 광선(primary ray, 30)이 생성된다. 1차 광선(30)은 화면(20)을 지나 씬 오브젝트(scene object, 70)와 교차된다. 1차 광선(30)과 씬 오브젝트(70)의 교차점에서는 반사 광선(reflection ray, 40) 및 굴절 광선(refraction ray, 50)이 생성된다. 또한, 교차점에서 광원(80)의 방향으로 쉐도우 광선(shadow ray, 60)이 생성된다. 이때, 반사, 굴절, 쉐도우 광선들(40, 50, 60)을 2차 광선이라고 한다. 씬 오브젝트(70)는 화면(20)에 대한 렌더링의 대상이 되는 오브젝트를 나타낸다. 씬 오브젝트(70)는 복수의 프리미티브들을 포함한다.
레이 트레이싱 코어는 1차 광선(30), 2차 광선들(40, 50, 60) 및 2차 광선들로부터 파생되는 광선들을 분석한다. 레이 트레이싱 코어는 분석 결과에 기초하여 화면(20)을 구성하는 픽셀들의 색상 값을 결정한다. 이때, 레이 트레이싱 코어는 씬 오브젝트(70)의 특성을 고려하여 픽셀들의 색상 값을 결정한다.
도 2는 레이 트레이싱 코어(ray tracing core, 100)를 설명하기 위한 도면이다. 도 2를 참조하면, 레이 트레이싱 코어(100)는 광선 생성 유닛(110), TRV 유닛(120), IST 유닛(130) 및 쉐이딩 유닛(140)을 포함한다. 도 2에서는 TRV 유닛(120), IST 유닛(130)이 레이 트레이싱 코어(100)에 포함되는 것으로 도시되었으나, TRV 유닛(120), IST 유닛(130)은 별도의 하드웨어로 구현될 수 있다. 도 2에 도시된 레이 트레이싱 코어(100)는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
레이 트레이싱 코어(100)는 생성된 광선들과 3차원 공간에 위치한 오브젝트들의 교차점을 추적하고, 화면을 구성하는 픽셀들의 색상 값을 결정한다. 다시 말해서, 레이 트레이싱 코어(100)는 광선들과 오브젝트들의 교차점을 찾고, 교차점에서의 오브젝트의 특성에 따라 2차 광선을 생성하고 교차점의 색상의 값을 결정한다.
레이 트레이싱 코어(100)는 가속 구조를 탐색하고 교차 검사를 수행할 때, 이전 탐색의 결과 및 이전 교차 검사의 결과를 이용할 수 있다. 다시 말하면, 레이 트레이싱 코어(100)는 이전 렌더링 과정에서 수행된 결과를 현재 렌더링 과정에 적용함으로써, 현재 렌더링을 보다 빠르게 수행할 수 있다.
광선 생성 유닛(110)은 1차 광선 및 2차 광선을 생성한다. 광선 생성 유닛(110)은 시점으로부터 1차 광선을 생성하고, 1차 광선과 오브젝트의 교차점에서 반사, 굴절, 또는 쉐도우 2차 광선을 생성한다. 광선 생성 유닛(110)은 또한 2차 광선과 오브젝트의 교차점에서 또 다른 2차 광선을 생성할 수 있다. 광선 생성 유닛(110)은 정해진 횟수 내에서 반사, 굴절, 쉐도우 광선을 생성하거나, 오브젝트의 특성에 따라 반사, 굴절, 쉐도우 광선의 생성 횟수를 결정할 수 있다.
TRV 유닛(120)은 광선 생성 유닛(110)으로부터 생성된 광선에 대한 정보를 수신한다. 생성된 광선은 1차 광선, 2차 광선 및 2차 광선에 의해 파생된 광선을 모두 포함한다. 예를 들어, 1차 광선의 경우, TRV 유닛(120)은 생성된 광선의 시점 및 방향에 대한 정보를 수신할 수 있다. 또한, 2차 광선의 경우, TRV 유닛(120)은 2차 광선의 출발점 및 방향에 대한 정보를 수신할 수 있다. 2차 광선의 출발점은 1차 광선이 히트된 지점을 나타낸다. 시점 또는 출발점은 좌표로 표현될 수 있으며, 방향은 벡터로 표현될 수 있다.
TRV 유닛(120)은 외부 메모리(250)로부터 가속 구조에 대한 정보를 독출(read)한다. 가속 구조는 가속 구조 생성 장치(200)에 의해 생성되고, 생성된 가속 구조는 외부 메모리(250)에 저장된다. 가속 구조는 3차원 공간의 오브젝트들의 위치 정보를 포함하고 있는 구조를 나타낸다. 예를 들어, 가속 구조는 KD-tree(K-Dimensional tree), BVH(Bounding Volume Hierarchy) 등이 적용될 수 있다.
TRV 유닛(120)은 가속 구조를 탐색하여, 광선이 히트(hit)된 오브젝트 또는 리프 노드(leaf node)를 출력한다. 예를 들어, TRV 유닛(120)은 가속 구조에 포함된 노드들을 탐색하여, 노드들 중 최하위 노드인 리프 노드들 중에서 광선이 히트된 리프 노드를 IST 유닛(130)으로 출력한다. 다시 말해서, TRV 유닛(120)은 가속 구조를 구성하는 바운딩 박스(Bounding Box)들 중에서 어느 바운딩 박스에 광선이 히트되었는지 판단하고, 바운딩 박스에 포함된 오브젝트들 중에서 어느 오브젝트에 광선이 히트되었는지 판단한다. 히트된 오브젝트에 대한 정보는 TRV 캐쉬에 저장된다. 바운딩 박스는 복수의 오브젝트 또는 프리미티브들을 포함하는 단위를 나타낼 수 있으며 가속 구조에 따라 다른 형태로 표현될 수 있다. TRV 캐쉬는 TRV 유닛(120)이 탐색 과정에서 사용하는 데이터를 일시적으로 저장하기 위한 메모리를 나타낸다.
TRV 유닛(120)은 이전 렌더링의 결과를 이용하여 가속 구조를 탐색할 수 있다. TRV 유닛(120)은 TRV 캐쉬에 저장된 이전 렌더링의 결과를 이용하여 이전 렌더링과 동일한 경로로 가속 구조를 탐색할 수 있다. 예를 들어, TRV 유닛(120)이 입력된 광선에 대한 가속 구조를 탐색할 때, TRV 유닛(120)은 입력된 광선과 동일한 시점 및 방향을 갖는 이전 광선이 히트된 바운딩 박스에 대한 탐색을 우선적으로 수행할 수 있다. 또한, TRV 유닛(120)은 이전 광선에 대한 탐색 경로를 참조하여 가속 구조를 탐색할 수 있다.
IST 유닛(130)은 TRV 유닛(120)로부터 광선이 히트된 오브젝트 또는 리프 노드를 수신하고, 외부 메모리(250)로부터 히트된 오브젝트에 포함된 프리미티브들에 대한 정보를 독출(read)한다. 독출된 프리미티브들에 대한 정보는 IST 캐쉬에 저장될 수 있다. IST 캐쉬는 교차 검색 과정에서 IST 유닛(130)이 사용하는 데이터를 일시적으로 저장하기 위한 메모리를 나타낸다.
IST 유닛(130)은 광선과 프리미티브 간의 교차 검사를 수행하여, 광선이 히트된 프리미티브 및 교차점을 출력한다. TRV 유닛(120)으로부터 광선이 히트된 오브젝트가 무엇인지를 수신한 IST 유닛(130)은 히트된 오브젝트에 포함된 복수의 프리미티브들 중에서 어느 프리미티브에 광선이 히트되었는지를 검사한다. 광선이 히트된 프리미티브를 찾은 다음, IST 유닛(130)은 히트된 프리미티브의 어느 지점과 광선이 교차하였는지를 나타내는 교차점을 출력한다. 교차점은 좌표 형태로 쉐이딩 유닛(140)으로 출력될 수 있다.
IST 유닛(130)은 이전 렌더링의 결과를 이용하여 교차 검사를 수행할 수 있다. IST 유닛(130)은 IST 캐쉬에 저장된 이전 렌더링의 결과를 이용하여 이전 렌더링과 동일한 프리미티브에 대해 우선적으로 교차 검사를 수행할 수 있다. 예를 들어, 입력된 광선과 프리미티브에 대한 교차 검사를 수행할 때, IST 유닛(130)은 입력된 광선과 동일한 시점 및 방향을 갖는 이전 광선이 히트된 프리미티브에 대한 교차 검사를 우선적으로 수행할 수 있다.
쉐이딩 유닛(140)은 IST 유닛(130)으로부터 수신된 교차점에 대한 정보 및 교차점의 물질 특성에 기초하여 픽셀의 색상 값을 결정한다. 쉐이딩 유닛(140)은 교차점의 물질 기본 색상 및 광원에 의한 효과 등을 고려하여 픽셀의 색상 값을 결정한다.
레이 트레이싱 코어(100)는 외부 메모리(250)로부터 광선 추적에 필요한 데이터를 수신한다. 외부 메모리(250)에는 가속 구조 생성 장치(200)에 의해 생성된 가속 구조 또는 프리미티브들에 대한 정보를 나타내는 기하 데이터(geometry data)가 저장된다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함된 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다.
가속 구조 생성 장치(200)는 3차원 공간상의 오브젝트들의 위치 정보를 포함하는 가속 구조를 생성한다. 가속 구조 생성 장치(200)는 여러 가지 형태의 가속 구조를 생성할 수 있다. 예를 들어, 가속 구조는 3차원 공간이 계층적 트리로 분할된 형태일 수 있으며 가속 구조 생성 장치(200)는 BVH 또는 KD-tree를 적용하여 3차원 공간상의 오브젝트들의 관계를 나타내는 구조를 생성할 수 있다. 가속 구조 생성 장치(200)는 리프 노드의 최대 프리미티브의 수 및 트리 깊이(tree depth)를 결정하고, 결정에 기초하여 가속 구조를 생성할 수 있다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 동작을 설명하기 위한 도면이다. 레이 트레이싱 코어는, 예를 들어, 도 2에 도시된 레이 트레이싱 코어(100)의 구조를 가질 수 있다. 따라서, 이하 생략된 내용이라 하더라도 레이 트레이싱 코어(100)에 관하여 이상에서 기술된 내용은 도 3의 광선 추적 방법에도 적용된다.
310단계에서, 레이 트레이싱 코어(100)는 광선을 생성한다. 레이 트레이싱 코어(100)는 1차 광선, 2차 광선 및 2차 광선에 의해 파생된 광선들을 생성한다.
320단계에서, 레이 트레이싱 코어(100)는 외부 메모리(250)로부터 독출된 가속 구조를 탐색한다. 레이 트레이싱 코어(100)는 생성된 광선들의 시점 및 방향에 기초하여 가속 구조(251)를 탐색하여 광선이 히트된 바운딩 박스를 검출하고, 히트된 바운딩 박스에 포함된 오브젝트를 중에서 광선이 히트된 오브젝트를 검출한다. 레이 트레이싱 코어(100)는 히트된 오브젝트를 검출할 때까지 가속 구조(251)를 탐색하는 것을 반복하여 수행한다. 예를 들어, 레이 트레이싱 코어(100)는 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색된 경로 상의 리프 노드에 광선이 히트되지 않았으면, 다른 경로로 가속 구조를 탐색한다.
레이 트레이싱 코어(100)는 모든 경로를 순차적으로 탐색할 수 있지만, 이전 광선의 탐색 정보에 기초하여 특정 경로를 우선적으로 탐색할 수 있다. 예를 들어, 이전 광선의 시점과 방향이 현재 광선의 시점과 방향과 동일 또는 유사한 경우, 레이 트레이싱 코어(100)는 이전 광선에서 히트된 리프 노드가 포함된 경로를 우선적으로 탐색할 수 있다.
330단계에서, 레이 트레이싱 코어(100)는 교차 검사를 수행한다. 레이 트레이싱 코어(100)는 외부 메모리(250)로부터 독출된 프리미티브들의 기하 데이터(252)에 기초하여 교차 검사를 수행한다. 레이 트레이싱 코어(100)는 히트된 프리미티브를 검출할 때까지 교차 검사를 반복하여 수행한다. 예를 들어, 레이 트레이싱 코어(100)는 어느 하나의 프리미티브에 대한 교차 검사를 하고, 프리미티브에 광선이 히트되지 않았으면, 다른 프리미티브에 대한 교차 검사를 한다.
레이 트레이싱 코어(100)는 모든 프리미티브들을 순차적으로 교차 검사할 수 있지만, 이전 광선의 교차 검사 정보에 기초하여 특정 프리미티브를 우선적으로 교차 검사할 수 있다. 예를 들어, 이전 광선과 현재 광선의 시점과 방향이 동일 또는 유사한 경우, 레이 트레이싱 코어(100)는 이전 광선에서 히트된 프리미티브에 대한 교차 검사를 우선적으로 수행할 수 있다.
340단계에서, 레이 트레이싱 코어(100)는 교차 검사에 기초하여 픽셀의 쉐이딩을 수행한다. 레이 트레이싱 코어(100)는 340단계가 종료하면, 310단계로 진행한다. 레이 트레이싱 코어(100)는 310 내지 340단계를 화면을 구성하는 모든 픽셀들에 대해 반복적으로 수행한다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다. 도 4를 참조하면, 제1화면(412)은 t=0일 때 렌더링된 화면을 나타내고, 제2화면(422)은 t=1일 때 렌더링된 화면을 나타낸다. 제1화면(412)과 제2화면(422)에서 토끼(433)만이 이동하고 사각형(431)과 삼각형(432)은 움직임이 없기 때문에, 제1화면(412)과 제2화면(422)은 거의 유사하다. 따라서, 레이 트레이싱 코어(100)는 제1화면(412)에 대한 렌더링 결과를 이용하여 제2화면(421)에 대한 렌더링을 수행할 수 있다. 예를 들어, 제1시점(410)과 제2시점(420)의 위치가 동일하고, 제1광선(411)과 제2광선(421)의 방향이 동일하다면, 레이 트레이싱 코어(100)는 제1광선(411)에 대한 광선 추적의 결과를 제2광선(421)의 광선 추적에 적용하여, 제2광선(421)의 광선 추적을 가속할 수 있다. 예를 들어, 레이 트레이싱 코어(100)의 TRV 유닛(120)은 제2광선(421)에 대한 탐색을 수행할 때, 제1광선(411)이 히트된 바운딩 박스를 우선적으로 탐색할 수 있다. 또한, 레이 트레이싱 코어(100)의 IST 유닛(130)은 제2광선(421)에 대한 교차 검사할 때, 제1광선(411)이 히트된 삼각형(432)에 대해 우선적으로 교차 검사를 수행할 수 있다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다. 도 5를 참조하면, 가속 구조는 5개의 노드(1 내지 5)를 포함하고, 노드3 내지 노드5는 리프 노드를 나타낸다.
TRV 유닛(120)은 3가지 경로를 따라 가속 구조를 탐색할 수 있다. 첫째로, TRV 유닛(120)은 제1경로인 노드1, 노드2 및 노드3을 따라 가속 구조를 탐색할 수 있다. 둘째로, TRV 유닛(120)은 제2경로인 노드1, 노드2 및 노드4를 따라 가속 구조를 탐색할 수 있다. 셋째로, TRV 유닛(120)은 제3경로인 노드1 및 노드5를 따라 가속 구조를 탐색할 수 있다. 이때, TRV 유닛(120)이 제2광선(421)에 대한 탐색을 수행할 때, TRV 유닛(120)은 제1광선(411)이 히트된 삼각형(432)을 탐색하는 제2경로를 우선적으로 탐색한다. 따라서, TRV 유닛(120)이 제1경로 또는 제3경로를 탐색하는 과정을 생략할 수 있다.
도 6은 일 실시 예에 따른 가속 구조 생성 장치를 설명하기 위한 블록도이다. 도 6을 참조하면, 가속 구조 생성 장치(200)는 프로세서(210) 및 메모리(220)를 포함한다. 가속 구조 생성 장치(200)는 가속 구조에 대한 정보가 저장된 메모리(220)를 포함한다. 가속 구조에 대한 정보는 가속 구조가 나타내는 3차원 공간에 대한 정보를 포함할 수 있다.
프로세서(210)는 3차원 공간에 포함된 프리미티브들(primitives) 각각의 위치를 나타내는 모튼 코드(Morton code)를 획득한다. 모튼 코드는 3차원 공간에 포함된 프리미티브들의 위치를 선형적으로 나타낸다.
모튼 코드를 얻기 위해 모튼 커브(Morton curve)가 이용될 수 있다. 모튼 커브는 3차원 공간을 균일하게 분할한 각각의 그리드(grid)를 순차적으로 모두 방문??할 수 있는 형태의 선을 의미한다. 모튼 커브가 방문하는 순서에 따라 각각의 그리드에 숫자가 부여될 수 있다.
프리미티브들 각각의 모튼 코드는 각 프리미티브가 포함된 그리드에 부여된 숫자일 수 있다. 따라서, 두 프리미티브의 거리는 두 프리미티브 각각에 대응하는 모튼 코드의 차이로 표현될 수 있다. 예를 들어, 제1 프리미티브에 대응하는 제1 모튼 코드와 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 계산하여 제1 프리미티브와 제2 프리미티브 사이의 모튼 거리(Morton distance)를 구할 수 있다.
프로세서(210)는 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정한다. 가속 구조의 기준 레벨은 3차원 공간을 분할하는 데 이용되는 방법을 결정하는 기준이 될 수 있다. 예를 들어, 가속 구조의 루트 노드(root node)의 레벨을 1이라 하고, 가속 구조의 기준 레벨을 3이라 할 수 있다.
이 경우, 프로세서(210)는 레벨 1 내지 레벨 3에 포함된 노드들 각각에 대응하는 3차원 공간을 제1 분할 방법으로 분할할 수 있다. 또한, 프로세서(210)는 레벨 3을 초과하는 레벨에 포함된 노드들 각각에 대응하는 3차원 공간을 제2 분할 방법으로 분할할 수 있다.
예를 들어, 프로세서(210)는 레벨 1 내지 레벨 3에 포함된 노드들 각각에 대응하는 3차원 공간을 SAH(Surface Area Heuristic)방법으로 분할할 수 있다.
또한, 프로세서(210)는 레벨 3을 초과하는 레벨에 포함된 노드들 각각에 대응하는 3차원 공간을 모튼 코드를 이용하여 분할할 수 있다. 예를 들어, 프로세서(210)는 레벨 3을 초과하는 레벨에 포함된 노드들 각각에 대응하는 3차원 공간을 LBVH 또는 AAC방법으로 분할할 수 있다.
일 실시 예에서, 프로세서(210)는 가속 구조의 기준 레벨을 조정할 수 있다. 프로세서(210)는 3차원 공간의 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정할 수 있다. 일 실시 예에서, 모튼 거리는 3차원 공간에 포함된 프리미티브들 중 가장 큰 모튼 코드를 갖는 프리미티브와 가장 작은 모튼 코드를 갖는 프리미티브 사이의 모튼 코드의 차이를 나타낼 수 있다.
일 실시 예에서, 프로세서(210)는 모튼 코드를 이용하여 3차원 공간을 제1 서브 공간 및 제2 서브 공간을 포함하는 복수의 서브 공간으로 분할할 수 있다. 이 경우, 프로세서(210)는 제1 서브 공간 및 제2 서브 공간의 모튼 거리가 최소가 되도록 3차원 공간을 분할할 수 있다.
일 실시 예에서, 프로세서(210)는 SAH방법을 이용하여 3차원 공간을 제1 서브 공간 및 제2 서브 공간을 포함하는 복수의 서브 공간으로 분할할 수 있다. 이 경우, 프로세서(210)는 제1 서브 공간의 모튼 거리를 계산할 수 있다. 제1 서브 공간의 모튼 거리가 소정의 임계값보다 작은 경우, 프로세서(210)는 제1 서브 공간이 SAH 친화도가 있다고 결정할 수 있다.
SAH 친화도는 3차원 공간을 모튼 코드를 이용하여 분할한 결과가 3차원 공간을 SAH 방법으로 분할한 결과와 유사한지 여부를 나타내는 파라미터일 수 있다. 일 실시 예에서, 프로세서(210)는 3차원 공간의 모튼 거리가 소정의 임계값보다 작은 경우, 3차원 공간이 SAH 친화도가 있다고 결정할 수 있다.
일 실시 예에서, 제1 서브 공간의 모튼 거리가 소정의 임계값보다 작고, 제2 서브 공간의 모튼 거리가 소정의 임계값보다 크거나 같을 수 있다. 이 경우, 프로세서(210)는 제1 서브 공간은 SAH 친화도가 있고, 제2 서브 공간은 SAH 친화도가 없다고 결정할 수 있다.
일 실시 예에서, 제1 서브 공간이 SAH 친화도가 있는 경우, 프로세서(210)는 가속 구조의 기준 레벨을 감소시킬 수 있다. 또한, 제1 서브 공간이 SAH 친화도가 없는 경우, 프로세서(210)는 가속 구조의 기준 레벨을 증가시킬 수 있다.
제1 노드의 레벨이 기준 레벨 이하인 경우, 프로세서(210)는 제1 서브 공간을 제1 분할 방법으로 분할한다. 또한, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 프로세서(210)는 제1 서브 공간을 제2 분할 방법으로 분할한다.
예를 들어, 제1 노드의 레벨이 기준 레벨 이하인 경우, 프로세서(210)는 제1 서브 공간을 SAH 방법으로 분할할 수 있다. 또한, 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 프로세서(210)는 제1 서브 공간을 모튼 코드를 이용하여 분할할 수 있다. 예를 들어, 프로세서(210)는 제1 서브 공간을 LBVH 또는 AAC 방법으로 분할할 수 있다.
일 실시 예에서, 제1 서브 공간을 모튼 코드를 이용하여 분할한 경우, 프로세서(210)는 제1 노드를 루트로 하는 가속 구조에 포함된 각 서브 공간들을 모튼 코드를 이용하여 분할할 수 있다.
다른 실시 예에서, 3차원 공간의 모튼 거리가 소정의 임계값 이하인 경우, 프로세서(210)는 3차원 공간을 제1 분할 방법을 이용하여 분할한다. 또한, 3차원 공간의 모튼 거리가 소정의 임계값을 초과하는 경우, 프로세서(210)는 3차원 공간을 제2 분할 방법을 이용하여 분할한다.
예를 들어, 3차원 공간의 모튼 거리가 소정의 임계값 이하인 경우, 프로세서(210)는 3차원 공간을 SAH 방법으로 분할할 수 있다. 또한, 3차원 공간의 모튼 거리가 소정의 임계값을 초과하는 경우, 프로세서(210)는 3차원 공간을 모튼 코드를 이용하여 분할할 수 있다.
도 7은 일 실시 예에 따른 가속 구조를 생성하는 방법을 설명하기 위한 순서도이다. 도 7을 참조하면, 가속 구조 생성 장치(200)는 광선 추적에 사용되는 가속 구조를 생성할 수 있다.
단계 710에서, 가속 구조 생성 장치(200)는 3차원 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득한다. 모튼 코드는 3차원 공간에 포함된 프리미티브들의 위치를 선형적으로 나타낸다.
단계 720에서, 가속 구조 생성 장치(200)는 단계 710에서 획득한 모튼 코드를 이용하여 3차원 공간의 모튼 거리를 계산한다. 3차원 공간의 모튼 거리는 3차원 공간에 포함된 제1 프리미티브에 대응하는 제1 모튼 코드와 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타낸다.
일 실시 예에서, 모튼 거리는 3차원 공간에 포함된 프리미티브들 중 가장 큰 모튼 코드를 갖는 프리미티브와 가장 작은 모튼 코드를 갖는 프리미티브 사이의 모튼 코드의 차이를 나타낼 수 있다.
단계 730에서, 가속 구조 생성 장치(200)는 단계 720에서 계산한 모튼 거리에 기초하여 가속 구조의 기준 레벨을 조정한다. 3차원 공간의 모튼 거리가 소정의 임계값보다 작은 경우, 가속 구조 생성 장치(200)는 가속 구조의 기준 레벨을 감소시킬 수 있다.
또한, 3차원 공간의 모튼 거리가 소정의 임계값을 초과하는 경우, 가속 구조 생성 장치(200)는 가속 구조의 기준 레벨을 증가시킬 수 있다.
단계 740에서, 가속 구조 생성 장치(200)는 단계 730에서 조정된 기준 레벨과 제1 노드의 레벨을 비교한다. 제1 노드의 레벨이 기준 레벨 이하인 경우, 가속 구조 생성 장치(200)는 제1 분할 방법으로 3차원 공간을 분할한다. 제1 노드의 레벨이 기준 레벨을 초과하는 경우, 가속 구조 생성 장치(200)는 제2 분할 방법으로 3차원 공간을 분할한다.
단계 750에서, 가속 구조 생성 장치(200)는 제1 분할 방법으로 3차원 공간을 분할한다. 일 실시 예에서, 제1 분할 방법은 SAH 방법일 수 있다.
단계 760에서, 가속 구조 생성 장치(200)는 제2 분할 방법으로 3차원 공간을 분할한다. 일 실시 예에서, 제2 분할 방법은 모튼 코드를 이용하는 방법일 수 있다. 예를 들어, 제2 분할 방법은 LBVH 또는 AAC 일 수 있으나, 이에 제한되지 않는다.
도 8은 다른 실시 예에 따른 가속 구조를 생성하는 방법을 설명하기 위한 순서도이다. 도 8을 참조하면, 가속 구조 생성 장치(200)는 광선 추적에 사용되는 가속 구조를 생성할 수 있다.
단계 810에서, 가속 구조 생성 장치(200)는 3차원 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득한다. 모튼 코드는 3차원 공간에 포함된 프리미티브들의 위치를 선형적으로 나타낸다.
단계 820에서, 가속 구조 생성 장치(200)는 단계 810에서 획득한 모튼 코드를 이용하여 3차원 공간의 모튼 거리를 계산한다. 3차원 공간의 모튼 거리는 3차원 공간에 포함된 제1 프리미티브에 대응하는 제1 모튼 코드와 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타낸다.
단계 830에서, 가속 구조 생성 장치(200)는 단계 820에서 계산한 모튼 거리를 소정의 임계값과 비교한다. 3차원 공간의 모튼 거리가 소정의 임계값 이하인 경우, 가속 구조 생성 장치(200)는 3차원 공간을 제1 분할 방법을 이용하여 복수의 서브 공간들로 분할한다.
3차원 공간의 모튼 거리가 소정의 임계값을 초과하는 경우, 가속 구조 생성 장치(200)는 3차원 공간을 제2 분할 방법을 이용하여 복수의 서브 공간들로 분할한다.
단계 840에서, 가속 구조 생성 장치(200)는 제1 분할 방법으로 3차원 공간을 복수의 서브 공간들로 분할한다. 일 실시 예에서, 제1 분할 방법은 SAH 방법일 수 있다.
단계 850에서, 가속 구조 생성 장치(200)는 제2 분할 방법으로 3차원 공간을 복수의 서브 공간들로 분할한다. 일 실시 예에서, 제2 분할 방법은 모튼 코드를 이용하는 방법일 수 있다. 예를 들어, 제2 분할 방법은 LBVH 또는 AAC 일 수 있으나, 이에 제한되지 않는다.
단계 860에서, 가속 구조 생성 장치(200)는 단계 840 또는 단계 850에서 분할된 서브 공간들 각각을 가속 구조에 포함되는 노드로 설정하여, 가속 구조를 생성한다. 일 실시 예에서, 각각의 노드는 구조체(struct), 유니언(union), 클래스(class) 등의 자료구조로 구성될 수 있으나, 이에 제한되지 않는다.
도 9는 일 실시 예에 따른 가속 구조 생성 방법을 구체적으로 도시한 순서도이다. 도 9를 참조하면, 가속 구조 생성 장치(200)는 광선 추적에 사용되는 가속 구조를 생성할 수 있다.
가속 구조 생성 장치(200)는 가속 구조를 생성하기 전에 초기조건을 설정할 수 있다. 일 실시 예에서, 초기조건은 가속 구조의 기준 레벨 및 SAH 친화도를 포함할 수 있다. 예를 들어, 초기조건에서 기준 레벨은 3이고, SAH 친화도는 “No” 일 수 있다.
기준 레벨의 초기조건은 프레임에 따라 다르게 설정될 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 현재 프레임에 대한 가속 구조를 생성하기 위해 하나 이상의 근접 프레임에 대한 가속 구조 생성 결과를 참조할 수 있다.
근접 프레임과 현재 프레임은 유사할 가능성이 높으므로, 가속 구조 생성 장치(200)는 근접 프레임의 SAH 친화도 여부를 참조할 수 있다. 근접 프레임이 대체로 SAH 친화도가 있다면, 가속 구조 생성 장치(200)는 현재 프레임 또한 대체로 SAH 친화도가 있을 것으로 추정할 수 있다.
이 경우, 가속 구조 생성 장치(200)는 현재 프레임에 대한 SAH 친화도 여부를 확인하는 횟수를 줄일 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 현재 프레임의 기준 레벨의 초기 조건을 낮출 수 있다.
단계 900에서, 가속 구조 생성 장치(200)는 현재 레벨과 기준 레벨을 비교할 수 있다. 현재 레벨이 기준 레벨을 초과하지 않는다면, 가속 구조 생성 장치(200)는 단계 910으로 진행한다.
일 실시 예에서, 기준 레벨의 초기 조건이 0으로 설정될 수 있다. 예를 들어, 직전 프레임의 3차원 공간이 대체로 SAH 친화도가 있다면, 가속 구조 생성 장치(200)는 현재 프레임 또한 대체로 SAH 친화도가 있다고 추정할 수 있다. 이 경우, 가속 구조 생성 장치(200)는 기준 레벨의 초기조건을 0으로 설정하여 SAH 친화도를 확인하는 과정을 생략할 수 있다.
단계 910에서, 가속 구조 생성 장치(200)는 3차원 공간을 SAH 방식으로 분할할 수 있다. 일 실시 예에서, 가속 구조 생성 장치(200)는 3차원 공간을 제1 서브 공간 및 제2 서브 공간으로 분할할 수 있다.
단계 920에서, 가속 구조 생성 장치(200)는 단계 910에서 분할한 공간에 대한 모튼 거리를 계산할 수 있다. 일 실시 예에서, 가속 구조 생성 장치(200)는 제1 서브 공간에 대한 모튼 거리를 계산할 수 있다.
도 10을 참조하면, 3차원 공간(1000)을 SAH 방법으로 제1 서브 공간(1010) 및 제2 서브 공간(1020)으로 분할한 결과가 도시되어 있다.
제1 서브 공간(1010)에는 제1 프리미티브(1012) 및 제2 프리미티브(1014)를 포함하는 복수의 프리미티브들이 포함되어 있다. 제2 서브 공간(1020)에는 제3 프리미티브(1022) 및 제4 프리미티브(1024)를 포함하는 복수의 프리미티브들이 포함되어 있다.
가속 구조 생성 장치(200)는 3차원 공간에 포함된 복수의 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득할 수 있다. 도 10에서, 가속 구조 생성 장치(200)는 모튼 커브(1002)를 이용하여 모튼 코드를 획득할 수 있다.
모튼 커브는 3차원 공간을 균일하게 분할한 각각의 그리드를 순차적으로 모두 방문할 수 있는 형태의 선을 의미한다. 모튼 커브가 방문하는 순서에 따라 각각의 그리드에 숫자가 부여될 수 있다. 프리미티브들 각각의 모튼 코드는 각 프리미티브가 포함된 그리드에 부여된 숫자일 수 있다.
예를 들어, 제1 프리미티브(1012)의 모튼 코드는 이진수 0000이고, 제2 프리미티브(1014)의 모튼 코드는 이진수 0101일 수 있다. 또한, 제3 프리미티브(1022)의 모튼 코드는 이진수 0011이고, 제4 프리미티브(1024)의 모튼 코드는 이진수 1110일 수 있다.
일 실시 예에서, 제1 서브 공간(1010)의 모튼 거리는 가장 작은 모튼 코드를 갖는 제1 프리미티브(1012)의 모튼 코드와 가장 큰 모튼 코드를 갖는 제2 프리미티브(1014)의 모튼 코드의 차이를 계산하여 획득될 수 있다.
예를 들어, 제1 서브 공간(1010)의 모튼 거리는 제2 프리미티브(1014)의 모튼 거리에서 제1 프리미티브(1012)의 모튼 거리를 뺀 5일 수 있다. 또한, 제2 서브 공간(1020)의 모튼 거리는 제4 프리미티브(1024)의 모튼 거리에서 제3 프리미티브(1022)의 모튼 거리를 뺀 11일 수 있다.
단계 930에서, 가속 구조 생성 장치(200)는 단계 920에서 계산한 모튼 거리에 기초하여 단계 910에서 분할된 공간에 대한 SAH 친화도를 결정할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 제1 서브 공간에 대한 SAH 친화도를 결정할 수 있다.
SAH 친화도는 3차원 공간을 모튼 코드를 이용하여 분할한 결과가 3차원 공간을 SAH 방법으로 분할한 결과와 유사한지 여부를 나타내는 파라미터일 수 있다.
도 11을 참조하면, 3차원 공간(1100)을 모튼 코드를 이용하여 제1 서브 공간(1110) 및 제2 서브 공간(1120)으로 분할한 결과가 도시되어 있다. 제1 서브 공간(1110)은 제1 프리미티브(1112) 및 제2 프리미티브(1114)를 포함하는 복수의 프리미티브들을 포함할 수 있다. 또한, 제2 서브 공간(1120)은 제3 프리미티브(1122) 및 제4 프리미티브(1124)를 포함하는 복수의 프리미티브들을 포함할 수 있다.
도 11을 참조하면, 제1 서브 공간(1110)의 모튼 거리는 제2 프리미티브(1114)의 모튼 코드에서 제1 프리미티브(1112)의 모튼 코드를 뺀 6이다. 또한, 제2 서브 공간(1120)의 모튼 거리는 제4 프리미티브(1124)의 모튼 코드에서 제3 프리미티브(1122)의 모튼 코드를 뺀 2이다.
도 10 및 도 11 을 참조하면, 도 10의 제1 서브 공간(1010)과 도 11의 제1 서브 공간(1110)에 포함된 프리미티브의 수가 다르므로 분할 결과의 유사성을 직접적으로 판단하기는 어렵다. 하지만, SAH방법으로 분할된 공간의 모튼 거리가 작을수록, 모튼 코드를 이용하여 분할된 결과와 유사하다고 추정할 수 있다.
일 실시 예에서, 프로세서(210)는 3차원 공간의 모튼 거리가 소정의 임계값보다 작은 경우, 3차원 공간이 SAH 친화도가 있다고 결정할 수 있다.
도 10을 참조하면, 제1 서브 공간(1010)의 모튼 거리는 5이고, 제2 서브 공간(1020)의 모튼 거리는 11이다. 예를 들어, 소정의 임계값이 10이라면, 가속 구조 생성 장치(200)는 제1 서브 공간은 SAH 친화도가 있고, 제2 서브 공간은 SAH 친화도가 없다고 결정할 수 있다.
단계 940에서, 가속 구조 생성 장치(200)는 단계 930에서 결정한 SAH 친화도에 기초하여 가속 구조의 기준 레벨을 조정할 수 있다. 일 실시 예에서, 제1 서브 공간이 SAH 친화도가 없다면 가속 구조 생성 장치(200)는 단계 950을 수행할 수 있다.
단계 950에서, 가속 구조 생성 장치(200)는 가속 구조의 기준 레벨을 증가시킬 수 있다. 예를 들어, 제1 노드를 루트로 하는 가속 구조의 기준 레벨이 3에서 4로 증가할 수 있다. 기준 레벨의 조정이 완료되면, 가속 구조 생성 장치(200)는 단계 900을 수행할 수 있다.
일 실시 예에서, 제1 서브 공간이 SAH 친화도가 있다면 가속 구조 생성 장치(200)는 단계 960을 수행할 수 있다. 단계 960에서, 가속 구조 생성 장치(200)는 가속 구조의 기준 레벨을 감소시킬 수 있다.
예를 들어, 제1 노드를 루트로 하는 가속 구조의 기준 레벨이 3에서 2로 감소할 수 있다. 기준 레벨의 조정이 완료되면, 가속 구조 생성 장치(200)는 다시 단계 900을 수행할 수 있다.
가속 구조 생성 장치(200)는 다시 단계 900에서 현재 레벨과 기준 레벨을 비교할 수 있다. 만일 현재 레벨이 기준 레벨을 초과한다면, 가속 구조 생성 장치(200)는 단계 970을 수행할 수 있다.
단계 970에서, 가속 구조 생성 장치(200)는 모튼 코드를 이용하여 공간을 분할할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 LBVH 또는 AAC 방법을 이용하여 공간을 분할할 수 있으나, 이에 제한되지 않는다.
가속 구조 생성 장치(200)는 리프 노드에 도달할 때까지 단계 970 내지 단계 980을 반복하며 제1 노드에 포함되는 하위 노드들 각각에 대응하는 공간을 모튼 코드를 이용하여 분할할 수 있다. 만일 단계 980에서 리프 노드에 도달하면, 가속 구조 생성 장치(200)는.
단계 990에서, 가속 구조 생성 장치(200)는 다른 서브 트리에 대한 가속 구조를 생성할 수 있다. 예를 들어, 제1 서브 공간에 대응하는 제1 노드를 루트로 하는 가속 구조에 대한 생성 과정이 종료되면, 가속 구조 생성 장치(200)는 제2 서브 공간에 대응하는 제2 노드를 루트로 하는 가속 구조를 생성할 수 있다.
도 12는 가속 구조를 생성하는 방법의 예시를 도시한 도면이다. 일 실시 예에서, 기준 레벨의 초기조건은 3이고, SAH 친화도의 초기조건은 “No” 일 수 있다.
도 12를 참조하면, 루트 노드(1210)의 레벨은 1이고, 기준 레벨은 3이다. 일 실시 예에서, 가속 구조 생성 장치(200)는 루트 노드에 대응하는 3차원 공간을 SAH 방법을 이용하여 제1 서브 공간 및 제2 서브 공간으로 분할할 수 있다. 제1 서브 공간에 대응하는 노드(1220) 및 제2 서브 공간에 대응하는 노드(1250)가 루트 노드의 자식 노드가 될 수 있다.
가속 구조 생성 장치(200)는 제1 서브 공간의 SAH 친화도가 있다고 결정할 수 있다. 따라서, 노드(1220)의 레벨은 2이고, 노드(1220)를 루트 노드로 하는 서브트리의 기준레벨은 2로 감소할 수 있다.
가속 구조 생성 장치(200)는 제1 서브 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1230 및 1240)에 대응시킬 수 있다. 가속 구조 생성 장치(200)는 노드(1230)에 대응하는 공간의 SAH 친화도가 없다고 결정할 수 있다.
따라서, 노드(1230)의 레벨은 3이고, 노드(1230)를 루트 노드로 하는 서브트리의 기준레벨은 3으로 증가할 수 있다. 가속 구조 생성 장치(200)는 노드(1230)에 대응하는 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1232 및 1234)에 대응시킬 수 있다. 가속 구조 생성 장치(200)는 노드(1232)에 대응하는 공간의 SAH 친화도가 있다고 결정할 수 있다.
따라서, 노드(1232)의 레벨은 4이고, 노드(1232)를 루트로 하는 서브트리의 기준레벨은 2로 감소할 수 있다. 현재 레벨이 기준 레벨을 초과했으므로, 가속 구조 생성 장치(200)는 노드(1232)를 루트로 하는 서브트리에 포함된 노드들 각각에 대응하는 공간을 모튼 코드를 이용하여 분할할 수 있다.
노드(1232)를 루트로 하는 서브트리에 대한 가속 구조 생성이 종료되면, 가속 구조 생성 장치(200)는 다른 서브 트리로 이동할 수 있다. 도 12를 참조하면, 가속 구조 생성 장치(200)는 노드(1234)를 루트로 하는 서브트리에 대한 가속 구조를 생성할 수 있다.
가속 구조 생성 장치(200)는 노드(1234)에 대응하는 공간의 SAH 친화도가 없다고 결정할 수 있다. 따라서, 노드(1234)의 레벨은 4이고, 노드(1234)를 루트 노드로 하는 서브트리의 기준레벨은 2로 감소할 수 있다.
노드(1234)가 리프 노드이므로, 가속 구조 생성 장치(200)는 노드(1240)를 루트로 하는 서브트리로 이동할 수 있다. 가속 구조 생성 장치(200)는 노드(1240)에 대응하는 공간의 SAH 친화도가 없다고 결정할 수 있다. 따라서, 노드(1240)의 레벨은 3이고, 노드(1240)를 루트 노드로 하는 서브트리의 기준레벨은 3으로 증가할 수 있다.
가속 구조 생성 장치(200)는 노드(1240)에 대응하는 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1242 및 1244)에 대응시킬 수 있다. 노드(1242)가 리프 노드이므로, 가속 구조 생성 장치(200)는 노드(1244)를 루트로 하는 서브트리에 대한 가속 구조를 생성할 수 있다.
가속 구조 생성 장치(200)는 노드(1244)에 대응하는 공간의 SAH 친화도가 없다고 결정할 수 있다. 따라서, 노드(1244)의 레벨은 4이고, 노드(1244)를 루트로 하는 서브트리의 기준 레벨은 4로 증가할 수 있다.
가속 구조 생성 장치(200)는 노드(1244)에 대응하는 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1246 및 1248)에 대응시킬 수 있다. 노드(1246 및 1248)가 리프 노드이므로, 가속 구조 생성 장치(200)는 노드(1250)를 루트로 하는 서브트리에 대한 가속 구조를 생성할 수 있다.
가속 구조 생성 장치(200)는 노드(1250)에 대응하는 제2 서브 공간의 SAH 친화도가 있다고 결정할 수 있다. 따라서, 노드(1250)의 레벨은 2이고, 노드(1250)를 루트로 하는 서브트리의 기준 레벨은 2로 감소할 수 있다.
가속 구조 생성 장치(200)는 제2 서브 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1252 및 1254)에 대응시킬 수 있다. 일 실시 예에서, 가속 구조 생성 장치(200)는 노드(1252)에 대응하는 공간의 SAH 친화도가 있다고 결정할 수 있다.
따라서, 노드(1252)의 레벨은 3이고, 노드(1252)를 루트로 하는 서브 트리의 기준 레벨은 1로 감소할 수 있다. 현재 레벨이 기준 레벨을 초과했으므로, 가속 구조 생성 장치(200)는 노드(1252)를 루트로 하는 서브트리에 포함된 노드들 각각에 대응하는 공간을 모튼 코드를 이용하여 분할할 수 있다.
가속 구조 생성 장치(200)는 노드(1254)를 루트로 하는 서브트리에 대한 가속 구조를 생성할 수 있다. 가속 구조 생성 장치(200)는 노드(1254)에 대응하는 공간의 SAH 친화도가 없다고 결정할 수 있다.
따라서, 노드(1254)의 레벨은 3이고, 노드(1254)를 루트로 하는 서브트리의 기준 레벨은 3으로 증가할 수 있다. 가속 구조 생성 장치(200)는 노드(1254)에 대응하는 공간을 SAH 방법을 이용하여 두 개의 공간으로 분할하여, 각각의 노드(1256 및 1258)에 대응시킬 수 있다. 노드(1256 및 1258)가 리프 노드이므로, 가속 구조 생성 장치(200)는 가속 구조 생성을 종료할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
100: 레이 트레이싱 코어
110: 광선 생성 유닛
120: TRV 유닛
130: IST 유닛
140: 쉐이딩 유닛
200: 가속 구조 생성 장치
210: 가속 구조 생성부
220: 오버랩 표시부

Claims (19)

  1. 광선 추적에 사용되는 가속 구조(Acceleration Structure)를 생성하는 방법에 있어서,
    제1 공간에 포함된 프리미티브(primitive)들 각각의 위치를 나타내는 모튼 코드(Morton code)를 획득하는 단계;
    상기 제1 공간에 포함된 상기 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 상기 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리(Morton distance)를 계산하는 단계;
    상기 모튼 거리에 기초하여 상기 가속 구조의 기준 레벨을 조정하는 단계; 및
    상기 제1 공간에 대응하는 상기 가속 구조의 제1 노드의 레벨이 상기 기준 레벨 이하인 경우, 상기 제1 공간을 제1 분할 방법으로 분할하고, 상기 제1 노드의 레벨이 상기 기준 레벨을 초과하는 경우, 상기 제1 공간을 제2 분할 방법으로 분할하는 단계; 를 포함하는, 방법.
  2. 제1 항에 있어서, 상기 제1 분할 방법은 SAH 방법이고,
    상기 제2 분할 방법은 상기 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 하는, 방법.
  3. 제2 항에 있어서, 상기 분할하는 단계는,
    상기 제1 노드의 레벨이 상기 기준 레벨을 초과하는 경우,
    상기 제1 노드에 포함되는 하위 노드들 각각에 대응하는 공간을 상기 모튼 코드를 이용하여 분할하는 단계; 를 포함하는, 방법.
  4. 제2 항에 있어서, 상기 방법은,
    SAH 방법으로 제2 공간을 분할하여 상기 제1 공간을 포함하는 복수의 서브 공간들을 획득하는 단계;
    를 더 포함하는, 방법.
  5. 제1 항에 있어서, 상기 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고,
    상기 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 하는, 방법.
  6. 제1 항에 있어서, 상기 기준 레벨을 조정하는 단계는,
    상기 모튼 거리가 소정의 임계값보다 작은 경우, 상기 기준 레벨을 감소시키고, 상기 모튼 거리가 소정의 임계값보다 크거나 같은 경우, 상기 기준 레벨을 증가시키는 단계를 포함하는, 방법.
  7. 광선 추적에 사용되는 가속 구조를 생성하는 방법에 있어서,
    제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하는 단계;
    상기 제1 공간에 포함된 상기 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 상기 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하는 단계;
    상기 모튼 거리가 소정의 임계값 이하인 경우, 상기 제1 공간을 제1 분할 방법으로 복수의 서브 공간들로 분할하고, 상기 모튼 거리가 상기 소정의 임계값을 초과하는 경우, 상기 제1 공간을 제2 분할 방법으로 복수의 서브 공간들로 분할하는 단계; 및
    분할된 상기 서브 공간들 각각을 상기 가속 구조에 포함되는 노드로 설정하여, 가속 구조를 생성하는 단계; 를 포함하는, 방법.
  8. 제7 항에 있어서, 상기 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고,
    상기 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 하는, 방법.
  9. 제7 항에 있어서, 상기 제1 분할 방법은 SAH 방법이고,
    상기 제2 분할 방법은 상기 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 하는, 방법.
  10. 광선 추적에 사용되는 가속 구조를 생성하는 장치에 있어서,
    상기 가속 구조에 대한 정보가 저장된 메모리; 및
    제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하고, 상기 제1 공간에 포함된 상기 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 상기 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하고, 상기 모튼 거리에 기초하여 상기 가속 구조의 기준 레벨을 조정하고, 상기 제1 공간에 대응하는 상기 가속 구조의 제1 노드의 레벨이 상기 기준 레벨 이하인 경우, 상기 제1 공간을 제1 분할 방법을 이용하여 분할하고, 상기 제1 노드의 레벨이 상기 기준 레벨을 초과하는 경우, 상기 제1 공간을 제2 분할 방법을 이용하여 분할하는 프로세서; 를 포함하는, 장치.
  11. 제10 항에 있어서, 상기 제1 분할 방법은 SAH 방법이고,
    상기 제2 분할 방법은 상기 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 하는, 장치.
  12. 제11 항에 있어서, 상기 프로세서는,
    상기 제1 노드의 레벨이 상기 기준 레벨을 초과하는 경우,
    상기 제1 노드에 포함되는 하위 노드들 각각에 대응하는 공간을 상기 모튼 코드를 이용하여 분할하는 것을 특징으로 하는, 장치.
  13. 제11 항에 있어서, 상기 프로세서는,
    SAH 방법으로 제2 공간을 분할하여 상기 제1 공간을 포함하는 복수의 서브 공간들을 획득하는 것을 특징으로 하는, 장치.
  14. 제10 항에 있어서, 상기 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고,
    상기 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 하는, 장치.
  15. 제11 항에 있어서, 상기 프로세서는,
    상기 모튼 거리가 소정의 임계값보다 작은 경우, 상기 기준 레벨을 감소시키고, 상기 모튼 거리가 소정의 임계값보다 크거나 같은 경우, 상기 기준 레벨을 증가시키는 것을 특징으로 하는, 장치.
  16. 광선 추적에 사용되는 가속 구조를 생성하는 장치에 있어서,
    상기 가속 구조에 대한 정보가 저장된 메모리; 및
    제1 공간에 포함된 프리미티브들 각각의 위치를 나타내는 모튼 코드를 획득하고, 상기 제1 공간에 포함된 상기 프리미티브들 중 제1 프리미티브에 대응하는 제1 모튼 코드와 상기 프리미티브들 중 제2 프리미티브에 대응하는 제2 모튼 코드의 차이를 나타내는 모튼 거리를 계산하고, 상기 모튼 거리가 소정의 임계값 이하인 경우, 상기 제1 공간을 제1 분할 방법으로 복수의 서브 공간들로 분할하고, 상기 모튼 거리가 상기 소정의 임계값을 초과하는 경우, 상기 제1 공간을 제2 분할 방법으로 복수의 서브 공간들로 분할하고, 분할된 상기 서브 공간들 각각을 상기 가속 구조에 포함되는 노드로 설정하여, 가속 구조를 생성하는 프로세서; 를 포함하는, 장치.
  17. 제16 항에 있어서, 상기 제1 프리미티브는 가장 작은 모튼 코드를 갖는 프리미티브이고,
    상기 제2 프리미티브는 가장 큰 모튼 코드를 갖는 프리미티브인 것을 특징으로 하는, 장치.
  18. 제16 항에 있어서, 상기 제1 분할 방법은 SAH 방법이고,
    상기 제2 분할 방법은 상기 모튼 코드를 이용하여 분할하는 방법인 것을 특징으로 하는, 장치.
  19. 제 1 항 내지 제 9 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020150148826A 2015-10-26 2015-10-26 가속 구조를 생성하는 방법 및 장치 KR102537530B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150148826A KR102537530B1 (ko) 2015-10-26 2015-10-26 가속 구조를 생성하는 방법 및 장치
US15/334,815 US10115224B2 (en) 2015-10-26 2016-10-26 Method and apparatus generating acceleration structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150148826A KR102537530B1 (ko) 2015-10-26 2015-10-26 가속 구조를 생성하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170048003A true KR20170048003A (ko) 2017-05-08
KR102537530B1 KR102537530B1 (ko) 2023-05-26

Family

ID=58558635

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150148826A KR102537530B1 (ko) 2015-10-26 2015-10-26 가속 구조를 생성하는 방법 및 장치

Country Status (2)

Country Link
US (1) US10115224B2 (ko)
KR (1) KR102537530B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417807B2 (en) 2017-07-13 2019-09-17 Imagination Technologies Limited Hybrid hierarchy of bounding and grid structures for ray tracing
CN108414983B (zh) * 2017-12-13 2021-11-05 河海大学 一种基于逆时射线追踪方法的微地震定位技术
US11816792B2 (en) * 2021-12-16 2023-11-14 Advanced Micro Devices, Inc. Overlay trees for ray tracing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130016120A (ko) * 2011-08-04 2013-02-14 엔비디아 코포레이션 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체
US20130235050A1 (en) * 2012-03-09 2013-09-12 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8072460B2 (en) 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
US9965821B2 (en) * 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures 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
KR102164541B1 (ko) 2013-10-22 2020-10-12 삼성전자 주식회사 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130016120A (ko) * 2011-08-04 2013-02-14 엔비디아 코포레이션 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체
US20130235050A1 (en) * 2012-03-09 2013-09-12 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit

Also Published As

Publication number Publication date
US10115224B2 (en) 2018-10-30
KR102537530B1 (ko) 2023-05-26
US20170116774A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
KR102604737B1 (ko) 가속 구조를 생성하는 방법 및 장치
KR102244619B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR102161749B1 (ko) 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치.
KR102116981B1 (ko) 광선 추적 가속 방법 및 장치
KR102164541B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
KR102370617B1 (ko) 적응적 샘플링을 수행하여 영상을 처리하는 방법 및 장치.
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
KR20150051477A (ko) 레이 트레이싱 처리 장치 및 방법
KR20150039496A (ko) 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR20170036416A (ko) 트리를 탐색하는 장치 및 방법
KR20180069461A (ko) 가속 구조를 생성하는 방법 및 장치
KR102252374B1 (ko) 광선 추적 유닛 및 광선 데이터를 처리하는 방법
US10460506B2 (en) Method and apparatus for generating acceleration structure
KR102537530B1 (ko) 가속 구조를 생성하는 방법 및 장치
KR102166426B1 (ko) 렌더링 시스템 및 이의 렌더링 방법
KR20150136348A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR102219289B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR101585998B1 (ko) 영상 처리 장치 및 방법
KR102193683B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
CN114241052B (zh) 基于布局图的多物体场景新视角图像生成方法及系统
KR102051903B1 (ko) 공간 가속 구조 탐색 장치 및 방법
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant