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

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

Info

Publication number
KR20170083891A
KR20170083891A KR1020160003355A KR20160003355A KR20170083891A KR 20170083891 A KR20170083891 A KR 20170083891A KR 1020160003355 A KR1020160003355 A KR 1020160003355A KR 20160003355 A KR20160003355 A KR 20160003355A KR 20170083891 A KR20170083891 A KR 20170083891A
Authority
KR
South Korea
Prior art keywords
primitive
size
bounding box
acceleration structure
binary
Prior art date
Application number
KR1020160003355A
Other languages
English (en)
Other versions
KR102604737B1 (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 KR1020160003355A priority Critical patent/KR102604737B1/ko
Priority to US15/403,612 priority patent/US10580193B2/en
Publication of KR20170083891A publication Critical patent/KR20170083891A/ko
Application granted granted Critical
Publication of KR102604737B1 publication Critical patent/KR102604737B1/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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

광선 추적에 사용되는 가속 구조(Acceleration Structure)를 생성하는 방법에 있어서, 3차원 공간에 포함된 프리미티브(primitive)의 위치를 결정하는 단계; 프리미티브의 크기를 결정하는 단계; 프리미티브의 위치를 나타내는 하나 이상의 정보 및 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드(Morton code)를 생성하는 단계; 모튼 코드에 포함된, 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 3차원 공간에 포함된 프리미티브들을 바운딩 박스(bounding box)들로 구분하는 단계; 및 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성하는 단계를 포함하는, 가속 구조 생성 방법이 개시된다.

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)를 생성하는 방법은, 3차원 공간에 포함된 프리미티브(primitive)의 위치를 결정하는 단계; 프리미티브의 크기를 결정하는 단계; 프리미티브의 위치를 나타내는 하나 이상의 정보 및 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드(Morton code)를 생성하는 단계; 모튼 코드에 포함된, 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 3차원 공간에 포함된 프리미티브들을 바운딩 박스(bounding box)들로 구분하는 단계; 및 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성하는 단계를 포함한다.
또한, 구분하는 단계는, 3차원 공간에 포함된 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스 및 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분할 수 있다.
또한, 프리미티브의 크기를 결정하는 단계는, 프리미티브를 포함하는 바운딩 박스의 크기를 결정하는 단계; 및 바운딩 박스의 크기를 이용하여 프리미티브의 크기를 나타내는 단계를 포함할 수 있다.
또한, 바운딩 박스의 크기를 결정하는 단계는, 바운딩 박스의 대각선 길이를 계산하는 단계; 를 포함하고, 대각선 길이를 이용하여 바운딩 박스의 크기를 결정하는 것을 특징으로 할 수 있다.
또한, 프리미티브의 크기를 나타내는 하나 이상의 정보는, 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트인 것을 특징으로 할 수 있다.
또한, 프리미티브들을 바운딩 박스들로 구분하는 단계는, 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분하는 것을 특징으로 할 수 있다.
또한, 가속 구조를 생성하는 단계는, 제1 바운딩 박스에 대응되는 제1 노드를 생성하는 단계; 제2 바운딩 박스에 대응되는 제2 노드를 생성하는 단계; 및 제1 노드 및 제2 노드를 3차원 공간에 대응되는 제3 노드의 자식 노드로서 가속 구조에 추가하는 단계; 를 포함할 수 있다.
또한, 프리미티브의 위치를 결정하는 단계는, 프리미티브의 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정하는 단계; 를 포함하고, 프리미티브의 위치를 나타내는 하나 이상의 정보는, x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함할 수 있다.
또한, 모튼 코드를 생성하는 단계는, x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 모튼 코드를 생성할 수 있다.
광선 추적에 사용되는 가속 구조를 생성하는 장치는, 가속 구조 및 3차원 공간에 대한 정보가 저장된 메모리; 및 3차원 공간에 포함된 프리미티브의 위치를 결정하고, 프리미티브의 크기를 결정하고, 프리미티브의 위치를 나타내는 하나 이상의 정보 및 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드를 생성하고, 모튼 코드에 포함된, 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 3차원 공간에 포함된 프리미티브들을 바운딩 박스들로 구분하고, 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성하는 프로세서를 포함한다.
또한, 프로세서는, 3차원 공간에 포함된 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스 및 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분할 수 있다.
또한, 프로세서는, 프리미티브를 포함하는 바운딩 박스의 크기를 결정하고, 바운딩 박스의 크기를 이용하여 프리미티브의 크기를 나타낼 수 있다.
또한, 프로세서는, 바운딩 박스의 대각선 길이를 계산하고, 대각선 길이를 이용하여 바운딩 박스의 크기를 결정할 수 있다.
또한, 프리미티브의 크기를 나타내는 하나 이상의 정보는, 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트일 수 있다.
또한, 프로세서는, 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분할 수 있다.
또한, 프로세서는, 제1 바운딩 박스에 대응되는 제1 노드를 생성하고, 제2 바운딩 박스에 대응되는 제2 노드를 생성하고, 제1 노드 및 제2 노드를 3차원 공간에 대응되는 제3 노드의 자식 노드로서 가속 구조에 추가할 수 있다.
또한, 프로세서는, 프리미티브의 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정하고, 프리미티브의 위치를 나타내는 하나 이상의 정보는, x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함할 수 있다.
또한, 프로세서는, x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 모튼 코드를 생성할 수 있다.
일 실시 예에 따른 가속 구조 생성 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공된다.
도 1은 광선 추적을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 동작을 설명하기 위한 도면이다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 가속 구조 생성 장치를 설명하기 위한 블록도이다.
도 7은 일 실시 예에 따른 가속 구조를 생성하는 방법을 설명하기 위한 순서도이다.
도 8은 일 실시 예에 따라 모튼 코드를 생성하는 방법을 설명하기 위한 도면이다.
도 9는 프리미티브의 크기에 따라 모튼 코드를 분류하는 이유를 설명하기 위한 도면이다.
도 10은 프리미티브의 크기를 고려하여 생성된 모튼 코드를 이용하여 가속 구조를 생성하는 방법의 예시를 도시한 도면이다.
도 11은 일 실시 예에 따라 3차원 공간의 특성을 분석하는 방법을 도시한 도면이다.
도 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화면(422)에 대한 렌더링을 수행할 수 있다. 예를 들어, 제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차원 공간에 대한 정보를 포함할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 GPU(Graphic Processing Unit)일 수 있다.
프로세서(210)는 3차원 공간에 포함된 프리미티브의 위치를 결정한다. 프로세서(210)는 프리미티브의 3차원 공간 내에서의 x축, y축 및 z축 좌표를 결정할 수 있다.
프로세서(210)는 3차원 공간을 복수의 그리드(grid)로 분할할 수 있다. 예를 들어, 프로세서(210)는 3차원 공간을 x축, y축 및 z축 방향의 균일한 간격으로 분할할 수 있다.
프리미티브의 위치는 프리미티브가 포함된 그리드의 위치로 표현될 수 있다. 프리미티브가 복수의 그리드에 포함되어 있는 경우, 프리미티브의 위치는 프리미티브의 중점이 포함된 그리드의 위치로 표현될 수 있다. 프리미티브의 위치를 결정 및 표현하는 구체적인 방법은 도 8 내지 도 9 에서 후술할 것이다.
또한, 프로세서(210)는 프리미티브의 크기를 결정한다. 프로세서(210)는 프리미티브의 각 모서리 길이의 평균을 계산하여 프리미티브의 크기를 나타낼 수 있다. 프로세서(210)는 프리미티브의 모서리 길이의 평균을 프리미티브의 크기로 결정할 수 있다. 다른 실시 예에서, 프로세서(210)는 프리미티브의 표면의 넓이를 계산하여 프리미티브의 크기를 나타낼 수 있다. 프로세서(210)는 프리미티브의 표면의 넓이를 프리미티브의 크기로 결정할 수 있다.
프로세서(210)는 프리미티브를 포함하는 바운딩 박스의 크기를 결정할 수 있다. 예를 들어, 프로세서(210)는 프리미티브를 포함하는 바운딩 박스의 대각선 길이를 계산할 수 있다. 프로세서(210)는 프리미티브를 포함하는 바운딩 박스의 대각선 길이를 프리미티브의 크기로 결정할 수 있다.
또한, 프로세서(210)는 프리미티브의 위치를 나타내는 하나 이상의 정보 및 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드를 생성할 수 있다.
프리미티브의 위치는 2진수 좌표로 표현될 수 있다. 이 경우, 프리미티브의 위치를 나타내는 하나 이상의 정보는 프리미티브의 위치를 나타내는 2진수 좌표에 포함된 하나 이상의 2진 비트를 의미할 수 있다.
구체적으로, 프로세서(210)는 프리미티브의 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정할 수 있다. 이 경우, 프리미티브의 위치를 나타내는 하나 이상의 정보는 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함할 수 있다.
프리미티브의 크기 또한 2진수로 표현될 수 있다. 이 경우, 프리미티브의 크기를 나타내는 하나 이상의 정보는 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 의미할 수 있다.
프로세서(210)는 프리미티브의 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 프리미티브의 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 프리미티브의 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 모튼 코드를 생성할 수 있다.
모튼 코드를 생성하기 위하여 2진 비트들을 조합하는 순서는 3차원 공간에 포함된 프리미티브들의 분포에 따라 변경될 수 있다. 또한, 모튼 코드를 생성하는 데 이용되는 x축 좌표, y축 좌표, z축 좌표 및 프리미티브의 크기를 나타내는 2진 비트의 수는 각각 다르게 설정될 수 있다.
프로세서(210)는 3차원 공간을 모튼 코드를 이용하여 분할할 수 있다. 예를 들어, 프로세서(210)는 3차원 공간을 LBVH 또는 AAC방법으로 분할할 수 있으나, 3차원 공간을 분할하기 위하여 사용되는 알고리즘은 이에 제한되지 않는다.
프로세서(210)는 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 프리미티브들을 바운딩 박스들로 구분할 수 있다. 예를 들어, 프로세서(210)는 프리미티브들을 기 설정된 크기를 초과하는 프리미티브들의 집합 및 기 설정된 크기를 초과하지 않는 프리미티브들의 집합으로 구분할 수 있다.
프로세서(210)는 구분된 프리미티브들을 포함하는 두 개의 바운딩 박스를 이용하여 프리미티브들을 분류할 수 있다. 프로세서(210)는 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스와, 기 설정된 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분할 수 있다.
또한, 프로세서(210)는 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성할 수 있다. 각각의 바운딩 박스들은 가속 구조에 포함된 각각의 노드에 대응될 수 있다.
예를 들어, 프로세서(210)는 프리미티브들을 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분할 수 있다. 프로세서(210)는 제1 바운딩 박스에 대응되는 제1 노드를 생성하고, 제2 바운딩 박스에 대응되는 제2 노드를 생성할 수 있다.
각각의 노드는 구조체(struct), 유니언(union), 클래스(class) 등의 자료구조로 구성될 수 있으나, 이에 제한되지 않는다.
프로세서(210)는, 제1 노드 및 제2 노드를 3차원 공간에 대응되는 제3 노드의 자식 노드로서 가속 구조에 추가할 수 있다.
가속 구조에 있어서, 부모 노드에 대응되는 바운딩 박스는 자식 노드에 대응되는 바운딩 박스를 포함할 수 있다. 각각의 바운딩 박스는 두 개의 바운딩 박스로 구분될 수 있다. 따라서, 일반적으로 가속 구조는 이진 트리 형태로 생성된다.
도 7은 일 실시 예에 따라 가속 구조를 생성하는 방법을 나타낸 흐름도이다. 일 실시 예에 따라 가속 구조를 생성하는 방법은 도 6에서 설명한 일 실시 예에 따른 가속 구조 생성 장치(200)를 통하여 수행될 수 있으며, 가속 구조 생성 장치(200)의 동작과 동일한 동작을 수행할 수 있다.
단계 710에서, 가속 구조 생성 장치(200)는 프리미티브의 위치를 결정한다. 가속 구조 생성 장치(200)는 프리미티브의 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정할 수 있다.
단계 720에서, 가속 구조 생성 장치(200)는 프리미티브의 크기를 결정한다. 가속 구조 생성 장치(200)는 프리미티브를 포함하는 바운딩 박스의 크기를 결정할 수 있다. 가속 구조 생성 장치(200)는 바운딩 박스의 크기를 이용하여 프리미티브의 크기를 나타낼 수 있다. 가속 구조 생성 장치(200)는 바운딩 박스의 크기를 프리미티브의 크기로 결정할 수 있다.
예를 들어, 가속 구조 생성 장치(200)는 바운딩 박스의 대각선 길이를 계산할 수 있다. 가속 구조 생성 장치(200)는 대각선의 길이를 이용하여 바운딩 박스의 크기를 결정할 수 있다. 가속 구조 생성 장치(200)는 바운딩 박스의 대각선의 길이를 프리미티브의 크기로서 나타낼 수 있다. 가속 구조 생성 장치(200)는 바운딩 박스의 대각선의 길이를 프리미티브의 크기로 결정할 수 있다.
단계 730에서, 가속 구조 생성 장치(200)는 프리미티브의 위치를 나타내는 하나 이상의 정보 및 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드를 생성한다.
프리미티브의 위치를 나타내는 하나 이상의 정보는, 프리미티브의 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 프리미티브의 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 프리미티브의 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함할 수 있다.
또한, 프리미티브의 크기를 나타내는 하나 이상의 정보는, 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함할 수 있다.
가속 구조 생성 장치(200)는 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 모튼 코드를 생성할 수 있다.
단계 740에서, 가속 구조 생성 장치(200)는 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 프리미티브들을 바운딩 박스들로 구분한다.
가속 구조 생성 장치(200)는 3차원 공간에 포함된 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스 및 기 설정된 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분할 수 있다.
단계 750에서, 가속 구조 생성 장치(200)는 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성한다.
가속 구조 생성 장치(200)는 3차원 공간에 포함된 프리미티브들을 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분할 수 있다.
가속 구조 생성 장치(200)는 제1 바운딩 박스에 대응되는 제1 노드를 생성하고, 제2 바운딩 박스에 대응되는 제2 노드를 생성할 수 있다. 가속 구조 생성 장치(200)는 제1 노드 및 제2 노드를 3차원 공간에 대응되는 제3 노드의 자식 노드로서 가속 구조에 추가할 수 있다.
도 8은 일 실시 예에 따라 모튼 코드를 생성하는 방법을 설명하기 위한 도면이다. 설명의 편의를 위하여, 3차원 공간(800)은 2차원으로 단순화하여 도시하였다.
가속 구조 생성 장치(200)는 모튼 코드를 이용하여 3차원 공간에 포함된 프리미티브들의 위치를 선형적으로 나타낼 수 있다.
도 8을 참조하면, 가속 구조 생성 장치(200)는 3차원 공간(800)의 x축 및 y축을 각각 4개로 균일하게 분할할 수 있다. 따라서, 가속 구조 생성 장치(200)는 총 16개의 그리드로 분할될 수 있다.
가속 구조 생성 장치(200)는 프리미티브가 포함된 그리드의 좌표를 이용하여 프리미티브의 위치를 나타낼 수 있다. 가속 구조 생성 장치(200)는 프리미티브가 포함된 그리드의 좌표 정보를 조합하여 모튼 코드를 생성할 수 있다.
예를 들어, 프리미티브(808)의 x축 좌표는 01이고, y축 좌표는 10이다. 가속 구조 생성 장치(200)는 프리미티브의 x축 좌표 및 y축 좌표에 포함된 2진 비트를 조합하여 모튼 코드를 생성할 수 있다.
예를 들어, 프리미티브의 x축 좌표가 X1X2로 표현되고, y축 좌표가 Y1Y2로 표현될 수 있다. X1, X2, Y1 및 Y2 는 x축 좌표 및 y축 좌표를 이진수로 나타낸 값의 각 자리수를 나타내는 이진 비트일 수 있다.
예를 들어, 프리미티브(808)의 경우 x축 좌표가 01이고, y축 좌표가 10이므로, X1 = 0, X2 = 1, Y1 = 1, Y2 = 0 이다.
프리미티브의 모튼 코드는 X1Y1X2Y2 로 표현될 수 있다. 예를 들어, 프리미티브(808)의 모튼 코드는 0110으로 표현될 수 있다.
또한, 프리미티브의 z축 좌표가 Z1Z2로 표현되는 경우, 3차원 공간에서 프리미티브의 모튼 코드는 X1Y1Z1X2Y2Z2로 표현될 수 있다. Z1및 Z2는 프리미티브의 z축 좌표를 2진수로 나타낸 값의 각 자리수를 나타내는 이진 비트일 수 있다.
다른 예를 들어, 프리미티브(812)는 복수의 그리드에 포함되어 있다. 따라서, 프리미티브(812)의 중점이 위치한 그리드를 확인하여야 할 수 있다. 프리미티브(812)의 중점이 위치한 그리드의 x축 좌표는 01이고, y축 좌표는 01이다. 따라서, 프리미티브(812)의 모튼 코드는 0011으로 표현될 수 있다.
가속 구조 생성 장치(200)는 프리미티브의 크기를 나타내는 2진 비트를 이용하여 모튼 코드를 생성할 수 있다.
예를 들어, 프리미티브의 크기가 S1S2로 표현될 수 있다. S1및 S2는 프리미티브의 크기를 2진수로 나타낸 값의 각 자리수를 나타내는 이진 비트일 수 있다. 프리미티브의 모튼 코드는 X1Y1Z1S1X2Y2Z2S2로 표현될 수 있다.
도 8을 참조하면, 설명의 편의를 위하여 3차원 공간(800)을 2차원으로 단순화하였으므로, 프리미티브의 모튼 코드는 X1Y1S1X2Y2S2로 표현될 수 있다.
예를 들어, 프리미티브(808)의 크기는 01이고, 프리미티브(812)의 크기는 10으로 표현될 수 있다. 이 경우, 프리미티브(808)의 모튼 코드는 010101으로 표현될 수 있다. 또한, 프리미티브(812)의 모튼 코드는 001110으로 표현될 수 있다.
도 8을 참조하면, 3차원 공간(800)에 포함된 각 프리미티브의 모튼 코드는 다음 표 1과 같이 표현될 수 있다. 단, 프리미티브(802, 804)의 크기는 11으로 표현되고, 프리미티브(812)의 크기는 10으로 표현되며, 그 외의 프리미티브의 크기는 01으로 표현된다고 가정한다.
프리미티브 x축 좌표 y축 좌표 크기 모튼 코드
802 01 10 11 011101
804 01 10 11 011101
806 00 11 01 010011
808 01 10 01 010101
810 00 10 01 010001
812 01 01 10 001110
814 00 00 01 000001
816 11 11 01 110111
818 11 10 01 110101
820 11 01 01 100111
822 10 00 01 100001
도 9는 프리미티브의 크기에 따라 모튼 코드를 분류하는 이유를 설명하기 위한 도면이다.
도 9를 참조하면, 3차원 공간(800)에 포함된 프리미티브(802 및 808) 및 그리드(910)가 도시되어 있다. 그리드(910)의 x좌표는 01이고, y좌표는 10일 수 있다.
프리미티브가 복수의 그리드에 포함되어 있는 경우, 가속 구조 생성 장치(200)는 프리미티브의 중점이 포함되어 있는 그리드의 위치를 이용하여 프리미티브의 위치를 나타낼 수 있다.
도 9를 참조하면, 프리미티브(808)는 그리드(910)에 포함되어 있다. 따라서, 프리미티브(808)의 중점(912) 또한 그리드(910)에 포함되어 있다. 또한, 프리미티브(802)의 중점(914)은 그리드(910)에 포함되어 있다.
만일 프리미티브의 위치만을 고려하여 모튼 코드를 생성한다면, 프리미티브(802)와 프리미티브(808)는 동일한 모튼 코드를 부여받는다. 이 경우, 프리미티브(802) 및 프리미티브(808)는 동일한 바운딩 박스에 포함될 수 있다.
특히, 두 프리미티브의 모튼 코드가 완전히 동일하므로, 프리미티브(802)와 프리미티브(808)는 가속 구조의 루트 노드에서부터 리프 노드에 이르기까지 계속해서 동일한 바운딩 박스에 포함된다. 이 경우, 프리미티브(808)가 단순히 하나의 노드에서만이 아니라, 가속 구조 전체에 있어 과도하게 큰 바운딩 박스에 포함될 수 있다.
프리미티브가 포함된 바운딩 박스의 크기가 프리미티브의 크기에 비해 클수록, 가속 구조를 탐색하는 과정에서 프리미티브를 찾기 어려워진다. 따라서, 프리미티브의 크기에 비해 바운딩 박스의 크기가 클수록 가속 구조의 품질이 떨어질 수 있다.
따라서, 가속 구조 생성 장치(200)는 가속 구조를 생성함에 있어 프리미티브의 크기를 고려함으로써, 특히 작은 크기의 프리미티브들을 처리하는 품질을 향상시킬 수 있다.
도 8의 표 1을 참조하면, 프리미티브의 크기를 고려하여 모튼 코드를 생성할 경우 프리미티브(802)의 모튼 코드는 011101이고, 프리미티브(808)의 모튼 코드는 010101이다. 따라서, 최상위 비트(MSB)로부터 세 번째 이진 비트를 이용하여 프리미티브를 분류하는 단계에서 프리미티브(802)와 프리미티브(808)는 서로 다른 바운딩 박스로 구분될 수 있다.
도 10은 프리미티브의 크기를 고려하여 생성된 모튼 코드를 이용하여 가속 구조를 생성하는 방법의 예시를 도시한 도면이다.
가속 구조(1000)는 이진 트리의 형태로 표현될 수 있다. 가속 구조(1000)는 하나 이상의 노드를 포함하며, 각각의 노드는 3차원 공간(800)을 구분하는 각각의 바운딩 박스에 대응될 수 있다.
도 10을 참조하면, 루트 노드(1010)는 3차원 공간(800) 전체를 포함하는 바운딩 박스에 대응된다. 루트 노드의 다음 레벨(1020)에서, 가속 구조 생성 장치(200)는 모튼 코드의 최상위비트(MSB) 에 기초하여 프리미티브들을 구분할 수 있다.
도 10에 개시된 실시 예를 참조하면, 가속 구조 생성 장치(200)는 레벨(1020)에서 y축 좌표를 기준으로 프리미티브들을 구분할 수 있다. 따라서, 프리미티브들은 y축 좌표의 최상위 비트가 1인 프리미티브들과 y축 좌표의 최상위 비트가 0인 프리미티브들로 구분될 수 있다.
레벨(1020)에서, 노드(1022)는 y축 좌표의 최상위 비트가 1인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다. 또한, 노드(1024)는 y축 좌표의 최상위 비트가 0인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다.
레벨(1030)에서, 가속 구조 생성 장치(200)는 x축 좌표를 기준으로 프리미티브들을 구분할 수 있다. 따라서, 프리미티브들은 x축 좌표의 최상위 비트가 1인 프리미티브들과 x축 좌표의 최상위 비트가 0인 프리미티브들로 구분될 수 있다.
레벨(1030)에서, 노드(1032)는 y축 좌표의 최상위 비트가 1이고, x축 좌표의 최상위 비트가 0인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다. 또한, 노드(1034)는 y축 좌표의 최상위 비트가 1이고, x축 좌표의 최상위 비트가 1인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다.
또한, 레벨(1030)에서, 노드(1036)는 y축 좌표의 최상위 비트가 0이고, x축 좌표의 최상위 비트가 0인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다. 또한, 노드(1038)는 y축 좌표의 최상위 비트가 0이고, x축 좌표의 최상위 비트가 1인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다.
레벨(1040)에서, 가속 구조 생성 장치(200)는 프리미티브의 크기를 기준으로 프리미티브들을 구분할 수 있다. 따라서, 프리미티브들은 크기의 최상위 비트가 1인 프리미티브들과 크기의 최상위 비트가 0인 프리미티브들로 구분될 수 있다.
레벨(1040)에서, 노드(1042)는 y축 좌표의 최상위 비트가 1이고, x축 좌표의 최상위 비트가 0이며, 크기의 최상위 비트가 1인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다. 마찬가지로, 노드(1044)는 y축 좌표의 최상위 비트가 1이고, x축 좌표의 최상위 비트가 0이며, 크기의 최상위 비트가 0인 프리미티브들을 포함하는 바운딩 박스에 대응될 수 있다.
단계(1050)에서, 가속 구조 생성 장치(200)는 노드(1042)에 대응되는 바운딩 박스에 포함된 프리미티브들을 y축 좌표를 기준으로 구분할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 y축 좌표의 상위 두 번째 비트가 1인 프리미티브들과 y축 좌표의 상위 두 번째 비트가 0인 프리미티브들을 구분하여 노드(1052)와 노드(1054)를 생성할 수 있다.
레벨(1040)에서 프리미티브의 크기를 기준으로 하여 프리미티브들을 분류함으로써, 가속 구조 생성 장치(200)는 각 프리미티브의 크기에 적합한 바운딩 박스를 생성할 수 있다.
도 11은 일 실시 예에 따라 3차원 공간의 특성을 분석하는 방법을 도시한 도면이다.
도 11을 참조하면, 3차원 공간(1110)에는 높은 산(1100)이 포함되어 있을 수 있다. 이 경우, 가속 구조 생성 장치(200)는 3차원 공간(1110)전체를 대상으로 하여 가속 구조를 생성할 수 있다.
예를 들어 설명하면, 3차원 공간(1110)의 경우 3차원 공간(1110) 전체에 프리미티브가 분포되어 있는 것으로 볼 수 있다. 따라서, 가속 구조 생성 장치(200)는 3차원 공간(1110) 전체에 대하여 그리드를 생성하고, 프리미티브들의 모튼 코드를 생성하여야 할 수 있다.
반면에, 3차원 공간(1130)에는 낮은 산(1120)이 포함되어 있을 수 있다. 따라서, 3차원 공간(1130)의 대부분이 하늘을 포함하고 있을 수 있다. 이 경우, 가속 구조 생성 장치(200)는 3차원 공간 의 일부(1140)만을 대상으로 하여 가속 구조를 생성할 수도 있다.
예를 들어 설명하면, 3차원 공간(1130)의 경우, 프리미티브들이 일부에만 밀집하여 있는 것으로 볼 수 있다. 따라서, 가속 구조 생성 장치(200)는 프리미티브들이 밀집하여 있는 3차원 공간의 일부(1140)에 대해서만 그리드를 생성하고, 프리미티브들의 모튼 코드를 생성할 수 있다.
이 경우, 프리미티브의 각 좌표에 포함된 2진 비트의 수가 서로 다를 수 있다. 따라서, 모튼 코드에 포함된 2진 비트의 수 또한 서로 다를 수 있다.
예를 들어, 3차원 공간(1140)에 포함된 프리미티브의 x축 좌표와 y축 좌표는 각각 X1X2X3X4 및 Y1Y2Y3Y4로 표현되고, z축 좌표는 Z1Z2로 표현될 수 있다. 이 경우, 프리미티브의 모튼 코드는 X1Y1Z1X2Y2Z2X3Y3X4Y4로 표현될 수 있다.
가속 구조 생성 장치(200)는 프리미티브의 크기를 포함하는 모튼 코드를 생성할 수 있다. 예를 들어, 프리미티브의 크기는 S1S2S3로 표현될 수 있다. 이 경우, 프리미티브의 모튼 코드는 X1Y1Z1S1X2Y2Z2S2X3Y3S3X4Y4 와 같이 표현될 수 있다.
모튼 코드를 생성하기 위해 x축, y축 및 z축 및 프리미티브의 크기에 포함된 이진 비트를 조합하는 개수 및 순서는 제한되지 않는다. 일 실시 예에 따르면, 3차원 공간에 포함된 프리미티브의 분포에 따라 실험적으로 최적의 조합을 결정할 수 있다.
도 12는 일 실시 예에 따라 3차원 공간에 포함된 프리미티브들의 특성을 분석하는 방법을 도시한 도면이다.
도 12를 참조하면, 3차원 공간(1210)에는 프리미티브가 비교적 고루 분포되어 있는 반면, 3차원 공간(1260)에는 프리미티브가 비교적 x축 방향으로 편향되어 있는 것을 알 수 있다.
가속 구조 생성 장치(200)는, 모튼 코드를 생성함에 있어 이러한 프리미티브의 분포를 고려할 수 있다. 예를 들어, 프리미티브들이 x축 방향으로 편향되어 있는 경우, 가속 구조 생성 장치(200)는 x축 좌표를 중심으로 모튼 코드를 생성할 수 있다.
예를 들어, 가속 구조 생성 장치(200)는 x축 좌표를 나타내는 2진수에 포함된 2진 비트들을 다른 2진 비트들에 비해 모튼 코드의 상위 비트에 위치시킬 수 있다. 또한, 가속 구조 생성 장치(200)는 x축 좌표를 나타내는 2진수에 포함된 2진 비트들을 다른 2진 비트들보다 모튼 코드에 많이 포함시킬 수 있다.
다른 실시 예에서, 가속 구조 생성 장치(200)는 3차원 공간에 포함된 프리미티브들의 크기를 고려할 수 있다. 예를 들어, 3차원 공간(1200 및 1250)에 포함된 프리미티브들의 경우, 도 8에 도시된 3차원 공간(800)에 포함된 프리미티브들에 비해 프리미티브들 사이의 크기 차이가 크지 않다.
따라서, 3차원 공간(1200 및 1250)에 포함된 프리미티브들에 대한 모튼 코드를 생성하는 경우, 도 8의 3차원 공간(800)에 포함된 프리미티브들에 대한 모튼 코드를 생성하는 경우에 비해 프리미티브의 크기를 나타내는 2진수에 포함된 2진 비트들을 상대적으로 적게 사용할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
100: 레이 트레이싱 코어
110: 광선 생성 유닛
120: TRV 유닛
130: IST 유닛
140: 쉐이딩 유닛
200: 가속 구조 생성 장치
210: 가속 구조 생성부
220: 오버랩 표시부

Claims (19)

  1. 광선 추적에 사용되는 가속 구조(Acceleration Structure)를 생성하는 방법에 있어서,
    3차원 공간에 포함된 프리미티브(primitive)의 위치를 결정하는 단계;
    상기 프리미티브의 크기를 결정하는 단계;
    상기 프리미티브의 위치를 나타내는 하나 이상의 정보 및 상기 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드(Morton code)를 생성하는 단계;
    상기 모튼 코드에 포함된, 상기 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 상기 3차원 공간에 포함된 프리미티브들을 바운딩 박스(bounding box)들로 구분하는 단계; 및
    상기 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성하는 단계를 포함하는, 가속 구조 생성 방법.
  2. 제1 항에 있어서, 상기 구분하는 단계는,
    상기 3차원 공간에 포함된 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스 및 상기 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분하는 것을 특징으로 하는, 가속 구조 생성 방법.
  3. 제1 항에 있어서, 상기 프리미티브의 크기를 결정하는 단계는,
    상기 프리미티브를 포함하는 바운딩 박스의 크기를 결정하는 단계; 및
    상기 바운딩 박스의 크기를 이용하여 상기 프리미티브의 크기를 나타내는 단계를 포함하는, 가속 구조 생성 방법.
  4. 제3 항에 있어서, 상기 바운딩 박스의 크기를 결정하는 단계는,
    상기 바운딩 박스의 대각선 길이를 계산하는 단계; 를 포함하고,
    상기 대각선 길이를 이용하여 상기 바운딩 박스의 크기를 결정하는 것을 특징으로 하는, 가속 구조 생성 방법.
  5. 제1 항에 있어서, 상기 프리미티브의 크기를 나타내는 하나 이상의 정보는, 상기 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트인 것을 특징으로 하는, 가속 구조 생성 방법.
  6. 제5 항에 있어서, 상기 프리미티브들을 바운딩 박스들로 구분하는 단계는,
    상기 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 상기 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분하는 것을 특징으로 하는, 가속 구조 생성 방법.
  7. 제6 항에 있어서, 상기 가속 구조를 생성하는 단계는,
    상기 제1 바운딩 박스에 대응되는 제1 노드를 생성하는 단계;
    상기 제2 바운딩 박스에 대응되는 제2 노드를 생성하는 단계; 및
    상기 제1 노드 및 상기 제2 노드를 상기 3차원 공간에 대응되는 제3 노드의 자식 노드로서 상기 가속 구조에 추가하는 단계; 를 포함하는, 가속 구조 생성 방법.
  8. 제5 항에 있어서, 상기 프리미티브의 위치를 결정하는 단계는,
    상기 프리미티브의 상기 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정하는 단계; 를 포함하고,
    상기 프리미티브의 위치를 나타내는 하나 이상의 정보는,
    상기 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 상기 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함하는 것을 특징으로 하는, 가속 구조 생성 방법.
  9. 제8 항에 있어서, 상기 모튼 코드를 생성하는 단계는,
    상기 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 상기 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 상기 모튼 코드를 생성하는 것을 특징으로 하는, 가속 구조 생성 방법.
  10. 광선 추적에 사용되는 가속 구조를 생성하는 장치에 있어서,
    상기 가속 구조 및 3차원 공간에 대한 정보가 저장된 메모리; 및
    상기 3차원 공간에 포함된 프리미티브의 위치를 결정하고, 상기 프리미티브의 크기를 결정하고, 상기 프리미티브의 위치를 나타내는 하나 이상의 정보 및 상기 프리미티브의 크기를 나타내는 하나 이상의 정보를 포함하는 모튼 코드를 생성하고, 상기 모튼 코드에 포함된, 상기 프리미티브의 크기를 나타내는 하나 이상의 정보를 이용하여 상기 3차원 공간에 포함된 프리미티브들을 바운딩 박스들로 구분하고, 상기 바운딩 박스들의 포함 관계를 나타내는 가속 구조를 생성하는 프로세서를 포함하는, 가속 구조 생성 장치.
  11. 제10 항에 있어서, 상기 프로세서는,
    상기 3차원 공간에 포함된 프리미티브들을, 기 설정된 임계값을 초과하는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스 및 상기 임계값을 초과하지 않는 크기를 갖는 프리미티브들을 포함하는 바운딩 박스로 구분하는, 가속 구조 생성 장치.
  12. 제11 항에 있어서, 상기 프로세서는,
    상기 프리미티브를 포함하는 바운딩 박스의 크기를 결정하고, 상기 바운딩 박스의 크기를 이용하여 상기 프리미티브의 크기를 나타내는, 가속 구조 생성 장치.
  13. 제12 항에 있어서, 상기 프로세서는,
    상기 바운딩 박스의 대각선 길이를 계산하고, 상기 대각선 길이를 이용하여 상기 바운딩 박스의 크기를 결정하는, 가속 구조 생성 장치.
  14. 제10 항에 있어서, 상기 프리미티브의 크기를 나타내는 하나 이상의 정보는, 상기 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트인 것을 특징으로 하는, 가속 구조 생성 장치.
  15. 제14 항에 있어서, 상기 프로세서는,
    상기 2진 비트가 1인 프리미티브들을 포함하는 제1 바운딩 박스 및 상기 2진 비트가 0인 프리미티브들을 포함하는 제2 바운딩 박스로 구분하는, 가속 구조 생성 장치.
  16. 제15 항에 있어서, 상기 프로세서는,
    상기 제1 바운딩 박스에 대응되는 제1 노드를 생성하고, 상기 제2 바운딩 박스에 대응되는 제2 노드를 생성하고, 상기 제1 노드 및 상기 제2 노드를 상기 3차원 공간에 대응되는 제3 노드의 자식 노드로서 상기 가속 구조에 추가하는, 가속 구조 생성 장치.
  17. 제14 항에 있어서, 상기 프로세서는,
    상기 프리미티브의 상기 3차원 공간 내에서의 x축 좌표, y축 좌표 및 z축 좌표를 결정하고,
    상기 프리미티브의 위치를 나타내는 하나 이상의 정보는,
    상기 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 상기 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 포함하는 것을 특징으로 하는, 가속 구조 생성 장치.
  18. 제17 항에 있어서, 상기 프로세서는,
    상기 x축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 y축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트, 상기 z축 좌표를 나타내는 2진수에 포함된 하나 이상의 2진 비트 및 상기 프리미티브의 크기를 나타내는 2진수에 포함된 하나 이상의 2진 비트를 기 설정된 순서에 따라 조합하여 상기 모튼 코드를 생성하는, 가속 구조 생성 장치.
  19. 제1 항 내지 제9 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160003355A 2016-01-11 2016-01-11 가속 구조를 생성하는 방법 및 장치 KR102604737B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160003355A KR102604737B1 (ko) 2016-01-11 2016-01-11 가속 구조를 생성하는 방법 및 장치
US15/403,612 US10580193B2 (en) 2016-01-11 2017-01-11 Method and apparatus for rendering using locations and sizes of primitives

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160003355A KR102604737B1 (ko) 2016-01-11 2016-01-11 가속 구조를 생성하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170083891A true KR20170083891A (ko) 2017-07-19
KR102604737B1 KR102604737B1 (ko) 2023-11-22

Family

ID=59275022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160003355A KR102604737B1 (ko) 2016-01-11 2016-01-11 가속 구조를 생성하는 방법 및 장치

Country Status (2)

Country Link
US (1) US10580193B2 (ko)
KR (1) KR102604737B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180069461A (ko) * 2016-12-15 2018-06-25 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
JP7161154B2 (ja) * 2018-12-21 2022-10-26 公立大学法人会津大学 階層バウンディングボリューム生成方法、コンピュータプログラム及びコンピュータ装置
CN112534405A (zh) 2019-03-15 2021-03-19 英特尔公司 用于脉动阵列上的块稀疏操作的架构
US12007935B2 (en) 2019-03-15 2024-06-11 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11398072B1 (en) * 2019-12-16 2022-07-26 Siemens Healthcare Gmbh Method of obtaining a set of values for a respective set of parameters for use in a physically based path tracing process and a method of rendering using a physically based path tracing process
CN114667542A (zh) * 2019-12-26 2022-06-24 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置以及点云数据接收方法
US11302056B2 (en) * 2020-06-10 2022-04-12 Nvidia Corporation Techniques for traversing data employed in ray tracing
US11704859B2 (en) * 2020-08-20 2023-07-18 Sony Interactive Entertainment LLC System and method for accelerated ray tracing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes
US20130113800A1 (en) * 2011-08-05 2013-05-09 James Alexander McCombe Systems and methods for 3-d scene acceleration structure creation and updating
US20140362074A1 (en) * 2013-06-10 2014-12-11 Nvidia Corporation Splitting bounding volumes of primitives

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539519B1 (en) 2000-05-31 2003-03-25 Mark D. Meeker Spatial characteristic and logical hierarchy based manner for compactly storing IC design data and related operations
US7952583B2 (en) * 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
US8749552B2 (en) * 2008-10-17 2014-06-10 Imagination Technologies Limited Synthetic acceleration shapes for use in ray tracing
US8248401B2 (en) * 2009-03-19 2012-08-21 International Business Machines Corporation Accelerated data structure optimization based upon view orientation
US8669977B2 (en) * 2009-10-01 2014-03-11 Intel Corporation Hierarchical mesh quantization that facilitates efficient ray tracing
US8780112B2 (en) 2011-06-08 2014-07-15 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US20130033507A1 (en) 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
US9224235B2 (en) * 2013-03-20 2015-12-29 Nvidia Corporation System, method, and computer program product for compression of a bounding volume hierarchy
KR20150057868A (ko) * 2013-11-20 2015-05-28 삼성전자주식회사 레이 트레이싱 시스템에서의 이진트리 탐색 방법 및 장치
US8842117B1 (en) * 2014-02-13 2014-09-23 Raycast Systems, Inc. Computer hardware architecture and data structures for lookahead flags to support incoherent ray traversal
US9697640B2 (en) * 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
KR102467031B1 (ko) * 2015-08-31 2022-11-14 삼성전자주식회사 가속 구조를 생성 및 탐색하는 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes
US20130113800A1 (en) * 2011-08-05 2013-05-09 James Alexander McCombe Systems and methods for 3-d scene acceleration structure creation and updating
US20140362074A1 (en) * 2013-06-10 2014-12-11 Nvidia Corporation Splitting bounding volumes of primitives

Also Published As

Publication number Publication date
US20170200303A1 (en) 2017-07-13
KR102604737B1 (ko) 2023-11-22
US10580193B2 (en) 2020-03-03

Similar Documents

Publication Publication Date Title
KR102604737B1 (ko) 가속 구조를 생성하는 방법 및 장치
JP6476090B2 (ja) 加速構造の生成及び探索を行う方法並びに装置
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
US7499053B2 (en) Real-time precision ray tracing
US10497167B2 (en) Method and apparatus for generating acceleration structure
US9576389B2 (en) Method and apparatus for generating acceleration structure in ray tracing system
KR102161749B1 (ko) 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치.
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
CN103649856A (zh) 通过工具的动作模拟物体的加工的方法及其系统和计算机程序产品
KR20170036416A (ko) 트리를 탐색하는 장치 및 방법
KR20150051477A (ko) 레이 트레이싱 처리 장치 및 방법
JP6948226B2 (ja) 加速構造を生成する方法及びその装置
KR20150039496A (ko) 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR20160125172A (ko) 레이 트레이싱 장치 및 방법
KR102252374B1 (ko) 광선 추적 유닛 및 광선 데이터를 처리하는 방법
KR20160005490A (ko) 렌더링 시스템 및 이의 렌더링 방법
KR20150136347A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR102537530B1 (ko) 가속 구조를 생성하는 방법 및 장치
US9728000B2 (en) Apparatus and method of using acceleration structure in ray tracing
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR20150034062A (ko) 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치
KR100843292B1 (ko) 룩업 테이블을 이용한 레이 트레이싱 장치 및 방법
KR102051903B1 (ko) 공간 가속 구조 탐색 장치 및 방법
KR101228118B1 (ko) 다각형 중요도에 기반을 둔 교차 검사 가속화 자료 구조 구성 방법
KR20160133358A (ko) 트리 구조를 생성하는 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right