KR102161749B1 - 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. - Google Patents
화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. Download PDFInfo
- Publication number
- KR102161749B1 KR102161749B1 KR1020130125545A KR20130125545A KR102161749B1 KR 102161749 B1 KR102161749 B1 KR 102161749B1 KR 1020130125545 A KR1020130125545 A KR 1020130125545A KR 20130125545 A KR20130125545 A KR 20130125545A KR 102161749 B1 KR102161749 B1 KR 102161749B1
- Authority
- KR
- South Korea
- Prior art keywords
- ray
- rays
- identification information
- secondary rays
- generated
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
화상의 렌더링(rendering)을 위하여 광선 추적(ray tracing)을 수행하는 방법은, 생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여, 교차 검사(intersection test)를 수행하는 단계; 상기 교차 검사의 수행 결과에 기초하여, 적어도 하나 이상의 종류에 대응하는 2차 광선들을 생성하는 단계; 상기 생성된 2차 광선들을 상기 종류별로 분류하여 상기 2차 광선의 출발점 및 방향을 나타내는 식별 정보를 저장하는 단계; 및 상기 저장된 식별 정보를 이용하여 교차 검사 및 쉐이딩(shading)을 수행하는 단계;를 포함한다.
Description
화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치에 관한다.
3D 렌더링은 3차원 객체 데이터를 주어진 카메라의 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리 과정이다. 광선 추적 방법은 렌더링의 대상이 되는 씬 오브젝트(scene object)들과 광선이 교차되는 지점을 추적하는 과정이다.
광선 추적(ray-tracing)은 가속 구조(acceleration structure)의 탐색(traversal)과 광선-프리미티브(ray-primitive) 간의 교차 검사(intersection test) 과정을 포함한다. 이때, 탐색과 교차 검사 과정에서 많은 연산량(computation)을 넓은 메모리 대역폭(memory bandwidth)을 필요로 한다. 따라서, 탐색 및 교차 검사 과정에서 수행되는 연산량 및 대역폭을 줄이기 위한 방법들이 연구되고 있다.
화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시예에 따른 화상의 렌더링(rendering)을 위하여 광선 추적(ray tracing)을 수행하는 방법은, 생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여, 교차 검사(intersection test)를 수행하는 단계; 상기 교차 검사의 수행 결과에 기초하여, 적어도 하나 이상의 종류에 대응하는 2차 광선들을 생성하는 단계; 상기 생성된 2차 광선들을 상기 종류별로 분류하여 상기 2차 광선의 출발점 및 방향을 나타내는 식별 정보를 저장하는 단계; 및 상기 저장된 식별 정보를 이용하여 교차 검사 및 쉐이딩(shading)을 수행하는 단계;를 포함한다.
다른 실시예에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 실시예에 따른 화상의 렌더링(rendering)을 위하여 광선 추적(ray tracing)을 수행하는 장치는, 생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여 교차 검사(intersection test)를 수행하고, 상기 교차 검사의 수행 결과에 기초하여 적어도 하나 이상의 종류에 대응하는 2차 광선들을 생성하는 프로세서; 및 상기 생성된 2차 광선들을 상기 종류별로 분류하여 상기 2차 광선의 출발점 및 방향을 나타내는 식별 정보를 저장하는 메모리;를 포함하고, 상기 프로세서는 상기 저장된 식별 정보를 이용하여 수행된 상기 가속 구조의 탐색 결과에 기초하여 상기 교차 검사를 수행하고, 상기 교차 검사의 결과에 기초하여 쉐이딩(shading)을 수행한다.
상술한 바에 따르면, 레이 트레이싱을 수행하여 3차원 화상을 렌더링할 때 동적으로 생성되는 2차 광선에 대한 정보가 버퍼의 오버 플로우(overflow)로 인하여 유실되는 것을 방지할 수 있다.
또한, 2차 광선에 대한 가속 구조 탐색, 교차 검사 및 쉐이딩의 수행시에 광선의 로컬리티(locality)를 높일 수 있는바, 처리 속도를 향상시킬 수 있다.
도 1은 일 실시예에 따른 광선 추적을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 레이 트레이싱 시스템의 일 예를 도시한 구성도이다.
도 3은 일 실시예에 따른 레이 트레이싱 코어가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 온 칩 메모리 내에 할당된 버퍼의 일 예를 도시한 도면이다.
도 5는 일 실시예에 따른 외부 메모리 내에 할당된 버퍼의 일 예를 도시한 도면이다.
도 6은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 7은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 다른 예를 설명하기 위한 흐름도이다.
도 8은 일 실시예에 따른 레이 트레이싱 시스템의 다른 예를 도시한 구성도이다.
도 9는 일 실시예에 따른 레이 트레이싱 코어가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 2는 일 실시예에 따른 레이 트레이싱 시스템의 일 예를 도시한 구성도이다.
도 3은 일 실시예에 따른 레이 트레이싱 코어가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 온 칩 메모리 내에 할당된 버퍼의 일 예를 도시한 도면이다.
도 5는 일 실시예에 따른 외부 메모리 내에 할당된 버퍼의 일 예를 도시한 도면이다.
도 6은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 7은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 다른 예를 설명하기 위한 흐름도이다.
도 8은 일 실시예에 따른 레이 트레이싱 시스템의 다른 예를 도시한 구성도이다.
도 9는 일 실시예에 따른 레이 트레이싱 코어가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
이하에서는 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 하기 실시예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도 1은 일 실시예에 따른 광선 추적을 설명하기 위한 도면이다.
도 1을 참조하면, 3차원 모델링에서, 레이 트레이싱 코어는 시점(10)을 결정하고, 시점에 따라 화면(20)을 결정한다. 시점(10)과 화면(20)이 결정되면, 레이 트레이싱 코어는 시점(10)으로부터 화면(20)의 각 픽셀들에 대하여 광선을 생성한다.
도 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차 광선(secondary ray)이라고 한다. 씬 오브젝트(70)는 화면(20)에 대한 렌더링의 대상이 되는 오브젝트를 나타낸다. 씬 오브젝트(70)는 복수의 프리미티브들을 포함한다.
한편, 도 1에는 광원(80)이 하나인 것으로 도시하였으나, 이에 한정되지 않는다. 다시 말해, 렌더링될 화상의 조건에 따라 광원(80)의 개수는 복수 개가 될 수도 있고, 광원(80)이 존재하지 않을 수도 있다.
레이 트레이싱 코어는 1차 광선(30), 2차 광선들(40, 50, 60) 및 2차 광선들로부터 파생되는 광선들(즉, 각각의 2차 광선들(40, 50, 60)을 1차 광선으로 하여 발생되는 2차 광선들)을 분석한다. 레이 트레이싱 코어는 분석 결과에 기초하여 화면(20)을 구성하는 픽셀들의 색상 값을 결정한다. 이때, 레이 트레이싱 코어는 씬 오브젝트(70)의 특성을 고려하여 픽셀들의 색상 값을 결정한다.
도 2는 일 실시예에 따른 레이 트레이싱 시스템의 일 예를 도시한 구성도이다.
도 2를 참조하면, 레이 트레이싱 시스템은 레이 트레이싱 코어(100), 가속 구조 생성 장치(200) 및 외부 메모리(250)를 포함한다. 여기에서, 레이 트레이싱 코어(100)는 광선 생성 유닛(110), TRV 유닛(120), IST 유닛(130), 쉐이딩 유닛(140) 및 온 칩 메모리(on-chip memory, 150)를 포함한다.
도 2에서는 TRV 유닛(120), IST 유닛(130)이 레이 트레이싱 코어(100)에 포함되는 것으로 도시되었으나, TRV 유닛(120), IST 유닛(130)은 별도의 하드웨어로 구현될 수 있다.
도 2에 도시된 레이 트레이싱 코어(100)는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 2에 도시된 레이 트레이싱 코어(100)의 광선 생성 유닛(110), TRV 유닛(120), IST 유닛(130) 및 쉐이딩 유닛(140)은 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
레이 트레이싱 코어(100)는 생성된 광선들과 3차원 공간에 위치한 오브젝트들의 교차점을 추적하고, 화면을 구성하는 픽셀들의 색상 값을 결정한다. 다시 말해, 레이 트레이싱 코어(100)는 광선들과 오브젝트들의 교차점을 찾고, 교차점에서의 오브젝트의 특성에 따라 2차 광선을 생성하고 교차점의 색상의 값을 결정한다.
광선 생성 유닛(110)은 1차 광선을 생성한다. 다시 말해, 광선 생성 유닛(110)은 시점으로부터 씬 오브젝트를 향하여 1차 광선을 생성한다.
이하의 설명에서, 광선 생성 유닛(110)이 1차 광선을 생성하고, 쉐이딩 유닛(120)이 2차 광선을 생성하는 것으로 가정하여 설명한다. 그러나, 1차 광선은 쉐이딩 유닛(140)에 의하여 생성될 수도 있다. 다시 말해, 1차 광선 및 2차 광선이 모두 광선 생성 유닛(110)에 의하여 생성될 수도 있고, 쉐이딩 유닛(140)에 의하여 생성될 수도 있다. 1차 광선 및 2차 광선이 모두 쉐이딩 유닛(140)에 의하여 생성되는 경우, 광선 생성 유닛(110)은 레이 트레이싱 코어(100)에 필수적으로 포함되지 않을 수도 있다.
광선 생성 유닛(110)이 1차 광선을 생성하는 경우, 온 칩 메모리(150)는 온 칩 메모리(150) 내에 소정의 버퍼를 할당한다. 다시 말해, 광선 생성 유닛(110)은 온 칩 메모리(150) 내에 할당된 소정의 버퍼를 이용하여 1차 광선을 생성한다.
후술할 TRV 유닛(120) 및 IST 유닛(130)은 생성된 1차 광선을 이용하여 교차 검사(intersection test)를 수행한다. 이하, TRV 유닛(120) 및 IST 유닛(130)이 교차 검사를 수행하는 일 예를 설명한다.
TRV 유닛(120)은 광선 생성 유닛(110)으로부터 생성된 광선에 대한 정보를 수신한다. 예를 들어, TRV 유닛(120)은 생성된 광선의 시점 및 방향에 대한 정보를 수신할 수 있다. 광선의 시점은 좌표로 표현될 수 있으며, 방향은 벡터로 표현될 수 있다.
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 유닛(120)은 바운딩 박스에 포함된 오브젝트들 중에서 어느 오브젝트에 광선이 히트되었는지 판단한다. TRV 유닛(120)은 온 칩 메모리(150)에 히트된 오브젝트에 대한 정보를 저장한다. 예를 들어, 바운딩 박스는 복수의 오브젝트 또는 프리미티브들을 포함하는 단위를 나타낸다. 바운딩 박스는 가속 구조에 따라 다른 형태로 표현될 수 있다.
한편, TRV 유닛(120)이 가속 구조를 탐색하는 경우, 온 칩 메모리(150)는 일정 버퍼(도 5의 작업 버퍼(154))를 할당한다. 다시 말해, TRV 유닛(120)은 온 칩 메모리(150) 내에 할당된 일정 버퍼(도 5의 작업 버퍼(154))를 이용하여 가속 구조를 탐색한다. TRV 유닛(120)이 가속 구조를 탐색할 때 이용되는 버퍼(도 5의 작업 버퍼(154))에 대한 구체적인 내용은 도 5를 참조하여 후술한다.
IST 유닛(130)은 TRV 유닛(120)로부터 광선이 히트된 오브젝트 또는 리프 노드를 수신한다.
IST 유닛(130)은 외부 메모리(250)로부터 히트된 오브젝트에 포함된 프리미티브들에 대한 정보를 독출(read)한다. 독출된 프리미티브들에 대한 정보는 온 칩 메모리(150) 내에 할당된 일정 버퍼(도 5의 작업 버퍼(154))에 저장될 수 있다. 온 칩 메모리(150) 내에 할당된 일정 버퍼(도 5의 작업 버퍼(154))는 교차 검색 과정에서 IST 유닛(130)이 사용하는 데이터를 일시적으로 저장하기 위한 버퍼를 나타낸다.
IST 유닛(130)은 광선과 프리미티브 간의 교차 검사를 수행하여, 광선이 히트된 프리미티브 및 교차점을 출력한다. IST 유닛(130)은 TRV 유닛(120)으로부터 광선이 히트된 오브젝트가 무엇인지를 수신한다. IST 유닛(130)은 히트된 오브젝트에 포함된 복수의 프리미티브들 중에서 어느 프리미티브에 광선이 히트되었는지를 검사한다. IST 유닛(130)은 광선이 히트된 프리미티브를 찾고, 히트된 프리미티브의 어느 지점과 광선이 교차하였는지를 나타내는 교차점을 출력한다. 교차점은 좌표 형태로 쉐이딩 유닛(140)으로 출력될 수 있다.
쉐이딩 유닛(140)은 IST 유닛(130)으로부터 수신된 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 픽셀의 색상 값을 결정한다. 쉐이딩 유닛(140)은 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여 픽셀의 색상 값을 결정한다.
또한, 쉐이딩 유닛(140)은 교차 검사의 수행 결과에 기초하여 적어도 하나 이상의 종류에 대응하는 이차 광선들을 생성한다. 여기에서, 2차 광선들의 종류에는 반사 광선, 굴절 광선 및 쉐도우 광선이 포함된다.
다시 말해, 쉐이딩 유닛(140)은 교차점에 대한 물질 정보에 기초하여 2차 광선을 생성할 수 있다. 구체적으로, 씬 오브젝트에 포함된 물질의 특성에 따라 광의 반사, 굴절 등의 현상이 달라지므로, 쉐이딩 유닛(140)은 물질의 특성에 따라 반사, 굴절 등의 2차 광선을 생성할 수 있다. 또한, 쉐이딩 유닛(140)은 광원의 위치에 기초하여 쉐도우 광선을 생성할 수 있다.
쉐이딩 유닛(140)은 정해진 횟수 내에서 반사, 굴절, 쉐도우 광선을 생성하거나, 오브젝트의 특성에 따라 반사, 굴절, 쉐도우 광선의 생성 횟수를 결정할 수 있다. 예를 들어, 광원의 개수를 M개, 처리할 교차점의 배치(batch)의 개수를 N개라고 가정하면, 쉐이딩 유닛(140)은 하나의 1차 광선에 대하여 반사 광선을 최대 N개, 굴절 광선을 최대 N개, 쉐도우 광선을 최대 M*N개 생성할 수 있다.
본 발명의 일 실시예에 따른 쉐이딩 유닛(140)은 교차 검사의 수행 결과 및 광원의 개수에 기초하여 적어도 하나 이상의 쉐도우 광선을 생성하고, 쉐도우 광선이 생성된 이후에 교차 검사의 수행 결과를 이용하여 반사 광선 및/또는 굴절 광선을 생성한다.
다시 말해, 쉐이딩 유닛(140)은 광원의 개수 및 위치에 따라 쉐도우 광선을 먼저 생성하고, TRV 유닛(120) 및 IST 유닛(130)은 생성된 쉐도우 광선을 이용하여 교차 검사를 수행한다. 그 후에, 쉐이딩 유닛(140)은 반사 광선을 생성하고, TRV 유닛(120) 및 IST 유닛(130)은 생성된 반사 광선을 이용하여 교차 검사를 수행한다. 그 후에, 쉐이딩 유닛(140)은 굴절 광선을 생성하고, TRV 유닛(120) 및 IST 유닛(130)은 생성된 굴절 광선을 이용하여 교차 검사를 수행한다. 여기에서, 반사 광선 및 굴절 광선의 생성 및 처리의 우선 순위는 바뀔 수 있다.
일반적으로, 반사 광선 및 굴절 광선은 교차 검사 후 해당 광선을 1차 광선으로 한 2차 광선이 다시 생성되나, 쉐도우 광선의 경우 교차 검사 후 추가적으로 2차 광선이 생성되지 않는다. 다시 말해, 쉐도우 광선은 광원의 개수 및 위치에 대응하여 생성되는 2차 광선이나, 쉐도우 광선을 1차 광선으로 한 새로운 2차 광선은 생성되지 않는다.
따라서, 본 발명의 일 실시예에 따른 쉐이딩 유닛(140)은 2차 광선의 종류들 중에서 쉐도우 광선을 우선적으로 생성하고, TRV 유닛(120) 및 IST 유닛(130)은 생성된 쉐도우 광선을 이용하여 교차 검사를 우선적으로 수행함으로써 신속하게 레이 트레이싱을 수행할 수 있다.
한편, 쉐이딩 유닛(140)이 2차 광선을 생성하는 경우, 온 칩 메모리(150)는 일정 버퍼를 할당한다. 다시 말해, 쉐이딩 유닛(140)은 온 칩 메모리(150) 내에 할당된 일정 버퍼를 이용하여 2차 광선을 생성한다. 쉐이딩 유닛(140)이 광선을 생성할 때 이용되는 버퍼에 대한 구체적인 내용은 도 5를 참조하여 후술한다.
도 5는 일 실시예에 따른 온 칩 메모리(150) 내에 할당된 버퍼를 도시한 도면이다.
본 발명의 일 실시예에 따르면, 온 칩 메모리(150)는 2차 광선들의 종류에 따라 버퍼를 할당한다. 여기에서, 2차 광선들의 종류에는 반사 광선, 굴절 광선 및 쉐도우 광선이 포함된다. 따라서, 온 칩 메모리(150)에는 굴절 광선 버퍼(151), 반사 광선 버퍼 (152) 및 쉐도우 광선 버퍼(153)가 할당된다.
예를 들어, 광원의 개수를 M, 처리될 교차점의 배치(batch)의 개수를 N, 반사 광선의 최대 깊이(depth)를 D1, 굴절 광선의 최대 깊이를 D2라고 가정하면, 온 칩 메모리(150)는 굴절 광선 버퍼(151) 및 반사 광선 버퍼(152)의 크기를 N, 쉐도우 광선 버퍼(153)의 크기를 2N으로 할당한다. 굴절 광선 버퍼(151), 반사 광선 버퍼 (152) 및 쉐도우 광선 버퍼(153)는 쉐이딩 유닛(140)이 2차 광선을 생성할 때 이용된다.
여기에서, 쉐이딩 유닛(140)은 각각의 광원 별로 쉐도우 광선을 생성한다. 이때, 쉐이딩 유닛(140)이 쉐도우 광선을 생성하는 작업과 온 칩 메모리(150)이 생성된 쉐도우 광선을 외부 메모리로 이동하는 작업은 중첩되어 진행된다. 따라서, 온 칩 메모리(150)는 쉐도우 광선 버퍼(153)의 크기를 2N으로 할당한다.
쉐이딩 유닛(140)이 2차 광선의 생성 작업을 마친 경우, 쉐이딩 유닛(140)은 생성된 광선에 대한 식별 정보를 외부 메모리(250)로 전송한다.
한편, 온 칩 메모리(150)는 TRV 유닛(120) 및 IST 유닛(130)이 수행하는 교차 검사와 쉐이딩 유닛(140)이 수행하는 픽셀의 색상 값을 결정하는 작업시에 이용되는 작업 버퍼(154)의 크기를 2N으로 할당한다.
다시 도 2를 참조하면, 레이 트레이싱 코어(100)는 외부 메모리(250)로부터 광선 추적에 필요한 데이터를 수신한다. 외부 메모리(250)에는 가속 구조 또는 기하 데이터(geometry data)를 저장한다. 가속 구조는 가속 구조 생성 장치(200)에 의해 생성되고 외부 메모리(250)에 저장된다. 기하 데이터는 프리미티브들에 대한 정보를 나타낸다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함된 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다.
또한, 외부 메모리(250)는 생성된 이차 광선들을 종류별로 분류하여 이차 광선의 출발점 및 방향을 나타내는 식별 정보를 저장한다. 구체적으로, 외부 메모리(250)는 이차 광선의 종류에 대응하여 버퍼의 크기를 서로 다르게 할당함으로써 식별 정보를 저장한다.
여기에서, 외부 메모리(250)가 할당하는 버퍼의 크기는 광원의 개수, 이차 광선에 포함된 반사 광선의 깊이에 대응하는 횟수 및 이차 광선에 포함된 굴절 광선의 깊이에 대응하는 횟수에 기초하여 할당된다. 이하, 도 5를 참조하여 외부 메모리(250) 내에 버퍼가 할당되는 일 예를 설명한다.
도 5는 일 실시예에 따른 외부 메모리 내에 할당된 버퍼의 일 예를 도시한 도면이다.
도 5를 참조하면, 외부 메모리(250)는 외부 메모리(250) 내에 굴절 광선 버퍼(251), 반사 광선 버퍼(252) 및 쉐도우 광선 버퍼(253)를 할당한다. 그리고, 외부 메모리(250)는 2차 광선들을 할당된 버퍼에 대응하는 종류별로 분류하여 저장한다.
예를 들어, 광원의 개수를 M, 처리될 교차점의 배치(batch)의 개수를 N, 반사 광선의 최대 깊이(depth)를 D1, 굴절 광선의 최대 깊이를 D2라고 가정하면, 외부 메모리(250)는 굴절 광선 버퍼(251)의 크기를 (D1 + D2 + 1)*N로 할당하고, 반사 광선 버퍼(252)의 크기를 N+N으로 할당하고, 쉐도우 광선 버퍼(253)의 크기를 M*N+N으로 할당할 수 있다. 각각의 버퍼(251, 252, 253)들의 크기가 상술한 바와 같이 할당되는 이유는 다음과 같다.
반사 광선의 경우, 쉐이딩 유닛(140)은 반사 광선을 1차 광선으로 한 2차 광선으로서 반사 광선만을 재생성한다. 그리고, N만큼의 여분의 버퍼가 요구된다. 따라서, 외부 메모리(250)는 반사 광선 버퍼(252)의 크기를 N+N으로 할당한다.
굴절 광선의 경우, 쉐이딩 유닛(140)은 굴절 광선을 1차 광선으로 한 2차 광선으로서 반사 광선 뿐만 아니라 굴절 광선을 재생성한다. 그리고, N만큼의 여분의 버퍼가 요구된다. 따라서, 외부 메모리(250)는 반사 광선 버퍼(252)의 크기를 (D1 + D2 + 1)*N으로 할당한다.
쉐도우 광선의 경우, 쉐이딩 유닛(140)은 광원의 개수에 기초하여 최대 M*N개의 쉐도우 광선을 생성한다. 그리고, N만큼의 여분의 버퍼가 요구된다. 따라서, 외부 메모리(250)는 반사 광선 버퍼(252)의 크기를 M*N+N으로 할당한다.
상술한 바에 따르면, 외부 메모리(250)가 2차 광선을 종류별로 분류하여 저장하고, 레이 트레이싱 코어(100)는 2차 광선의 종류별로 외부 메모리(250)로부터 식별 정보를 독출하여 교차 검사 및 쉐이딩을 수행함으로써, 교차 검사 및 쉐이딩 작업 시에 데이터의 로컬리티(locality)를 증가시킬 수 있다.
다시 도 2를 참조하면, 가속 구조 생성 장치(200)는 3차원 공간상의 오브젝트들의 위치 정보를 포함하는 가속 구조를 생성한다. 다시 말해, 가속 구조 생성 장치(200)는 3차원 공간을 계층적 트리 형태로 분할한다. 가속 구조 생성 장치(200)는 여러 가지 형태의 가속 구조를 생성할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 BVH 또는 KD-tree를 적용하여 3차원 공간상의 오브젝트들의 관계를 나타내는 가속 구조를 생성할 수 있다. 가속 구조 생성 장치(200)는 리프 노드의 최대 프리미티브의 수 및 트리 깊이(tree depth)를 결정하고, 결정에 기초하여 가속 구조를 생성할 수 있다.
도 3은 일 실시예에 따른 레이 트레이싱 코어(100)가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 3은 도 2를 참조하여 상술한 레이 트레이싱 코어(100)의 동작을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 레이 트레이싱 코어(100)에 관하여 이상에서 기술된 내용은 도 3의 광선 추적 방법에도 적용된다.
310단계에서, 레이 트레이싱 코어(100)는 1차 광선을 생성한다. 구체적으로, 광선 생성 유닛(110)은 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된 정보를 이용하여 1차 광선을 생성한다.
320단계에서, 레이 트레이싱 코어(100)는 가속 구조를 탐색한다. 구체적으로, TRV 유닛(120)은 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된 정보를 이용하여 가속 구조를 탐색한다.
가속 구조(251)는 외부 메모리(250)로부터 독출된다. 레이 트레이싱 코어(100)는 생성된 광선들의 시점 및 방향에 기초하여 가속 구조(251)를 탐색하여 광선이 히트된 바운딩 박스를 검출한다. 또한, 레이 트레이싱 코어(100)는 히트된 바운딩 박스에 포함된 오브젝트를 중에서 광선이 히트된 오브젝트를 검출한다. 레이 트레이싱 코어(100)는 히트된 오브젝트를 검출할 때까지 가속 구조(251)를 탐색하는 것을 반복하여 수행한다. 즉, 레이 트레이싱 코어(100)는 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색된 경로 상의 리프 노드에 광선이 히트되지 않았으면, 다른 경로로 가속 구조를 탐색한다.
330단계에서, 레이 트레이싱 코어(100)는 교차 검사를 수행한다. 구체적으로, IST 유닛(120)은 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된 정보를 이용하여 교차 검사를 수행한다.
레이 트레이싱 코어(100)는 프리미티브들의 기하 데이터(252)를 외부 메모리(250)로부터 독출한다. 레이 트레이싱 코어(100)는 독출된 기하 데이터(252)에 기초하여 교차 검사를 수행한다. 레이 트레이싱 코어(100)는 레이 트레이싱 코어(100)는 히트된 프리미티브를 검출할 때까지 교차 검사를 반복하여 수행한다. 즉, 레이 트레이싱 코어(100)는 어느 하나의 프리미티브에 대한 교차 검사를 하고, 프리미티브에 광선이 히트되지 않았으면, 다른 프리미티브에 대한 교차 검사를 한다.
340단계에서, 레이 트레이싱 코어(100)는 교차 검사에 기초하여 픽셀의 쉐이딩을 수행한다. 구체적으로, 쉐이딩 유닛(140)은 작업 버퍼(154)에 저장된 정보를 이용하여 픽셀의 색상 값을 결정한다.
또한, 쉐이딩 유닛(140)은 굴절 광선 버퍼(151), 반사 광선 버퍼(152) 및 쉐도우 광선 버퍼(153)을 이용하여 2차 광선을 생성한다. 여기에서, 쉐이딩 유닛(140)은 쉐도우 광선 버퍼(153)을 이용하여 쉐도우 광선을 먼저 생성한다. 그 후에, 생성된 쉐도우 광선에 대한 가속 구조 탐색, 교차 검사 및 쉐이딩 작업이 종료되면, 쉐이딩 유닛(140)은 반사 광선 버퍼(152)를 이용하여 반사 광선 생성한다. 그 후에, 생성된 반사 광선에 대한 가속 구조 탐색, 교차 검사 및 쉐이딩 작업이 종료되면, 쉐이딩 유닛(140)은 굴절 광선 버퍼(151)를 이용하여 굴절 광선 생성한다. 이때, 쉐이딩 유닛(140)이 반사 광선 및 굴절 광선을 생성하는 순서는 서로 바뀌어도 무방하다.
쉐이딩 유닛(140)은 생성된 2차 광선을 외부 메모리(250) 내의 굴절 광선 버퍼(251), 반사 광선 버퍼(252), 쉐도우 광선 버퍼(253) 각각에 저장한다.
레이 트레이싱 코어(100)는 340단계가 종료하면, 310단계로 진행한다. 레이 트레이싱 코어(100)는 310 내지 340단계를 화면을 구성하는 모든 픽셀들에 대해 반복적으로 수행한다.
한편, 상술한 바와 같이, 생성된 2차 광선에 대한 정보들은 외부 메모리(250)로 전송되어 저장되고, 레이 트레이싱 코어(100)는 외부 메모리(250)로부터 생성된 2차 광선들에 대한 식별 정보를 2차 광선의 종류별로 독출하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행한다. 이하, 도 6을 참조하여 상술한 과정을 구체적으로 설명한다.
도 6은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 일 예를 도시한 흐름도이다.
도 6은 도 2를 참조하여 상술한 레이 트레이싱 코어(100)의 동작을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 레이 트레이싱 코어(100)에 관하여 이상에서 기술된 내용은 도 6의 광선 추적 방법에도 적용된다.
610 단계에서, 레이 트레이싱 코어(100)는 2차 광선을 생성한다. 구체적으로, 레이 트레이싱 코어(100)는 2차 광선들 중 쉐도우 광선을 먼저 생성한다.
620 단계에서, 외부 메모리(250)는 생성된 쉐도우 광선에 대한 식별 정보를 쉐도우 광선 버퍼(253)에 저장한다.
630 단계에서, 외부 메모리(250)는 레이 트레이싱 코어(100)로부터 전송된 신호에 기초하여 쉐도우 광선에 대한 식별 정보를 독출하고, 독출된 정보를 레이 트레이싱 코어(100)로 전송한다. 전송된 정보는 레이 트레이싱 코어(100)의 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된다.
640 단계 및 650 단계에서, 레이 트레이싱 코어(100)는 독출된 정보를 이용하여 가속 구조를 탐색하고, 교차 검사를 수행한다.
660 단계에서, 레이 트레이싱 코어(100)는 교차 검사 결과에 기초하여 쉐이딩을 수행한다. 다시 말해, 레이 트레이싱 코어(100)는 교차 검사의 결과에 기초하여 픽셀의 색상 값을 결정한다.
레이 트레이싱 코어(100)는 660단계가 종료하면, 610단계로 진행한다. 다시 말해, 레이 트레이싱 코어(100)는 반사 광선을 생성한다. 그리고, 620 단계 내지 660 단계를 다시 진행한다. 다시 말해, 레이 트레이싱 코어(100)는 생성된 반사 광선에 대응하는 식별 정보를 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩을 수행한다.
그 후에, 레이 트레이싱 코어(100)는 610단계로 다시 진행한다. 다시 말해, 레이 트레이싱 코어(100)는 굴절 광선을 생성한다. 그리고, 620 단계 내지 660 단계를 다시 진행한다. 다시 말해, 레이 트레이싱 코어(100)는 생성된 굴절 광선에 대응하는 식별 정보를 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩을 수행한다.
다만, 레이 트레이싱 코어(100)가 반사 광선을 생성하고 처리하는 과정과 굴절 광선을 생성하고 처리하는 과정은 우선 순위가 바뀌어도 무방하다.
도 7은 일 실시예에 따른 레이 트레이싱 코어가 2차 광선을 생성하고, 생성된 2차 광선을 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩 작업을 수행하는 다른 예를 설명하기 위한 흐름도이다.
도 7은 도 2를 참조하여 상술한 레이 트레이싱 코어(100)의 동작을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 레이 트레이싱 코어(100)에 관하여 이상에서 기술된 내용은 도 7의 광선 추적 방법에도 적용된다.
710 단계에서, 레이 트레이싱 코어(100)는 온 칩 메모리(150)에 포함된 굴절 광선 버퍼(151), 반사 광선 버퍼(152) 또는 쉐도우 광선 버퍼(153)를 이용하여 2차 광선을 생성한다.
720 단계에서, 레이 트레이싱 코어(100)는 생성된 2차 광선에 대한 식별 정보(즉, 광선의 출발점 및 방향에 대한 정보)를 외부 메모리(250)로 전송한다. 외부 메모리(250)는 전송된 식별 정보를 2차 광선의 종류별로 분류하여 저장한다. 여기에서, 외부 메모리(250)는 전송된 식별 정보를 배치 단위로 모아서 저장할 수 있다.
730 단계에서, 외부 메모리(250)는 2차 광선의 우선 순위에 따라 식별 정보를 레이 트레이싱 코어(100)의 온 칩 메모리(150) 내의 작업 버퍼(154)로 전송한다. 이때, 외부 메모리(250)는 배치(batch) 단위로 식별 정보를 전송할 수 있다. 여기에서, 2차 광선의 우선 순위는 '쉐도우 광선 → 반사 광선 → 굴절 광선'이 될 수도 있고, '쉐도우 광선 → 굴절 광선 → 반사 광선'이 될 수도 있다.
예를 들어, 외부 메모리(250)는 내부에 카운팅부(미도시)를 포함할 수 있고, 카운팅부(미도시)는 외부 메모리에 저장된 식별 정보가 나타내는 2차 광선들의 개수를 계수(counting)할 수 있다. 여기에서, 카운팅부(미도시)는 외부 메모리(250)가 아닌 레이 트레이싱 코어(100)에 포함될 수도 있다.
카운팅부(미도시)는 레이 트레이싱 코어(100)로부터 외부 메모리(250)로 전송되는 2차 광선들의 개수(즉, 2차 광선의 식별 정보의 개수)를 계수한다.
카운팅부(미도시)는 계수된 2차 광선들의 개수가 단위 배치의 개수와 같거나 많을 경우, 외부 메모리(250)에 저장된 식별 정보를 배치 단위로 작업 버퍼(154)로 전송할 것을 요청하는 신호를 생성한다. 그 후에, 외부 메모리(250)는 카운팅부(미도시)가 생성한 신호를 이용하여, 저장된 식별 정보를 배치 단위로 작업 버퍼(154)로 전송한다.
카운팅부(미도시)는 계수된 2차 광선들의 개수가 단위 배치의 개수보다 적을 경우, 레이 트레이싱 코어(100)에 1차 광선을 재생성할 것을 요청하는 신호를 재생성한다. 그 후에, 레이 트레이싱 코어(100)(구체적으로, 광선 생성 유닛(110))는 카운팅부(미도시)가 생성한 신호를 이용하여, 1차 광선을 재생성한다. 그리고, 재생성된 1차 광선은 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된다. 여기에서, 재생성된 1차 광선은 도 2를 참조하여 상술한 광선 생성 유닛(110)이 생성한 1차 광선과 다른 정보를 포함하는 1차 광선을 의미한다.
만약, 광선 생성 유닛(110)이 재생성할 1차 광선이 없는 경우, 광선 생성 유닛(110)은 카운팅부(미도시)로 재생성할 1차 광선이 없음을 의미하는 신호를 전송한다. 그 후에, 카운팅부(미도시)는 외부 메모리(250)에 저장된 식별 정보를 작업 버퍼(154)로 전송할 것을 요청하는 신호를 생성한다. 그 후에, 외부 메모리(250)는 카운팅부(미도시)가 생성한 신호를 이용하여, 저장된 식별 정보를 배치 단위로 작업 버퍼(154)로 전송한다.
740 단계에서, 레이 트레이싱 코어(100)는 온 칩 메모리(150) 내의 작업 버퍼(154)에 저장된 식별 정보를 이용하여 가속 구조 탐색, 교차 검사 및 쉐이딩을 수행한다.
상술한 바에 따르면, 외부 메모리(250)는 2차 광선의 종류별로 버퍼를 할당하고, 저장된 2차 광선들의 식별 정보를 배치 단위로 레이 트레이싱 코어(100)로 전송할 수 있다. 따라서, 레이 트레이싱 코어(100)가 가속 구조 탐색, 교차 검사 및 쉐이딩을 수행할 때 데이터의 로컬리티(locality)가 증가하는바, 처리 속도가 향상될 수 있다.
도 8은 일 실시예에 따른 레이 트레이싱 시스템의 다른 예를 도시한 구성도이다.
도 8을 참조하면, 도 2에 도시된 레이 트레이싱 코어(100)의 온 칩 메모리(150) 내의 일정 영역에 임시 버퍼(155)가 포함되어 있다. 또한, 레이 트레이싱 코어(100) 및 외부 메모리(250) 사이에 임시 캐쉬(300)가 더 포함되어 있다. 여기에서, 임시 버퍼(155) 및 임시 캐쉬(300)는 어느 하나만 구비되어 있는 것도 가능하다.
임시 버퍼(155) 또는 임시 캐쉬(300)는 레이 트레이싱 코어(100)와 외부 메모리(250) 사이에 데이터가 송수신될 때 발생하는 오버헤드(overhead)를 저감한다. 다시 말해, 레이 트레이싱 코어(100)와 외부 메모리(250) 사이에 데이터가 송수신되는 횟수에 비례하여 시스템의 오버헤드가 증가한다. 본 발명의 일 실시예에 따른 임시 버퍼(155) 또는 임시 캐쉬(300)는 배치 단위로 2차 광선에 대한 식별 정보를 모을 수 있고, 모아진 식별 정보를 레이 트레이싱 코어(100) 또는 외부 메모리(250)로 전송할 수 있다. 따라서, 레이 트레이싱 코어(100)와 외부 메모리(250) 사이에 데이터가 송수신되는 횟수가 감소될 수 있는바, 시스템의 오버헤드도 감소될 수 있다.
도 9는 일 실시예에 따른 레이 트레이싱 코어(100)가 광선 추적을 수행하는 일 예를 설명하기 위한 흐름도이다.
도 9를 참조하면, 광선 추적을 수행하는 방법은 도 2 및 도 8에 도시된 레이 트레이싱 시스템에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 2 및 도 8에 도시된 레이 트레이싱 시스템 또는 도 3 및 도 6에 도시된 흐름도에 관하여 이상에서 기술된 내용은 도 9의 광선 추적을 수행하는 방법에도 적용됨을 알 수 있다.
910 단계에서, 레이 트레이싱 코어(100)는 생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여 교차 검사를 수행한다. 구체적으로, TRV 유닛(120)은 생성된 1차 광선의 가속 구조를 탐색한다. 그리고, IST 유닛(130)은 가속 구조의 탐색 결과에 기초하여 교차 검사를 수행한다.
920 단계에서, 쉐이딩 유닛(140)은 교차 검사의 수행 결과에 기초하여, 적어도 하나 이상의 종류에 대응하는 2차 광선들을 생성한다.
930 단계에서, 외부 메모리(250)는 생성된 2차 광선들을 종류별로 분류하여 2차 광선의 출발점 및 방향을 나타내는 식별 정보를 저장한다.
940 단계에서, 레이 트레이싱 코어(100)는 저장된 식별 정보를 이용하여 교차 검사 및 쉐이딩(shading)을 수행한다. 구체적으로, TRV 유닛(120)은 저장된 식별 정보를 이용하여 가속 구조를 탐색한다. 그리고, IST 유닛(130)은 가속 구조의 탐색 결과에 기초하여 상기 교차 검사를 수행한다. 그리고, 쉐이딩 유닛(140)은 교차 검사의 수행 결과에 기초하여 쉐이딩(shading)을 수행한다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등), PC 인터페이스(PC Interface)(예를 들면, PCI, PCI-express, Wifi 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 레이 트레이싱 코어
110: 광선 생성 유닛
120: TRV 유닛
130: IST 유닛
140: 쉐이딩 유닛
150: 온 칩 메모리
200: 가속 구조 생성 장치
250: 외부 메모리
110: 광선 생성 유닛
120: TRV 유닛
130: IST 유닛
140: 쉐이딩 유닛
150: 온 칩 메모리
200: 가속 구조 생성 장치
250: 외부 메모리
Claims (19)
- 렌더링(rendering)된 화상을 생성하기 위하여 광선 추적(ray tracing)을 수행하는 방법에 있어서,
생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여, 제1 교차 검사(intersection test)를 수행하는 단계;
상기 제1 교차 검사의 수행 결과에 기초하여, 2차 광선들을 생성하는 단계;
상기 생성된 2차 광선들을 종류별로 분류하여 상기 2차 광선들의 각각의 출발점 및 방향을 나타내는 식별 정보를 저장하는 단계;
상기 생성된 2차 광선들의 개수에 따라 상기 1차 광선들을 재생성할지 여부를 결정하고, 상기 1차 광선이 재생성된 경우에 상기 재생성된 1차 광선의 식별 정보를 저장하는 단계;
상기 저장된 상기 2차 광선들의 식별 정보를 이용하여 제2 교차 검사를 수행하는 단계;
상기 제2 교차 검사의 결과에 기초하여 쉐이딩을 수행함으로써 화상에 포함된 픽셀들 각각의 컬러 값을 생성하는 단계; 및
상기 생성된 컬러 값들을 반영하여 상기 렌더링된 화상을 생성하는 단계;를 포함하는 방법. - 제 1 항에 있어서,
상기 2차 광선들의 종류는 반사(reflection) 광선, 굴절(refraction) 광선 및 쉐도우(shadow) 광선 중 적어도 어느 하나를 포함하는 방법. - 제 1 항에 있어서,
상기 2차 광선들을 생성하는 단계는 광원의 개수에 기초하여 적어도 하나 이상의 쉐도우 광선을 생성하고, 상기 제2 교차 검사의 수행 결과를 이용하여 반사 광선 및/또는 굴절 광선을 생성하는 방법. - 제 1 항에 있어서,
상기 제2 교차 검사를 수행하는 단계는 상기 2차 광선들 중에서 쉐도우 광선에 대응하는 상기 식별 정보를 이용하여 상기 제2 교차 검사를 수행하고,
상기 방법은,
상기 쉐도우 광선에 대한 상기 제2 교차 검사 및 상기 쉐이딩이 수행된 이후에 상기 2차 광선들 중에서 반사 광선에 대응하는 상기 식별 정보를 이용하여 제3 교차 검사를 수행하는 단계;를 더 포함하는 방법. - 제 1 항에 있어서,
상기 제2 교차 검사를 수행하는 단계는 상기 2차 광선들 중에서 쉐도우 광선에 대응하는 상기 식별 정보를 이용하여 상기 제2 교차 검사를 수행하고,
상기 방법은,
상기 쉐도우 광선에 대한 상기 2차 교차 검사 및 상기 쉐이딩이 수행된 이후에 상기 2차 광선들 중에서 굴절 광선에 대응하는 상기 식별 정보를 이용하여 상기 교차 검사를 수행하는 방법. - 제 1 항에 있어서,
상기 2차 광선들의 각각의 출발점 및 방향을 나타내는 식별 정보를 저장하는 단계는 상기 2차 광선들 각각의 상기 종류에 대응하여 버퍼의 크기를 서로 다르게 할당함으로써 상기 식별 정보를 저장하는 방법. - 제 6 항에 있어서,
상기 2차 광선들의 각각의 출발점 및 방향을 나타내는 식별 정보를 저장하는 단계는 광원의 개수, 상기 2차 광선들에 포함된 반사 광선의 깊이(depth)에 대응하는 횟수 및 상기 2차 광선에 포함된 굴절 광선의 깊이에 대응하는 횟수 중 적어도 하나에 기초하여 상기 버퍼의 크기를 할당하는 방법. - 제 1 항에 있어서,
상기 저장된 식별 정보가 나타내는 상기 2차 광선들의 개수를 계수(counting)하는 단계;를 더 포함하고,
상기 제2 교차 검사를 수행하는 단계는 상기 계수된 2차 광선들의 개수가 배치의 개수와 같거나 많을 경우에 상기 저장된 식별 정보를 이용하여 상기 제2 교차 검사를 수행하는 방법. - 삭제
- 제 1 항 내지 제 8 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 렌더링(rendering)된 화상을 생성하기 위하여 광선 추적(ray tracing)을 수행하는 장치에 있어서,
생성된 1차 광선의 가속 구조의 탐색 결과에 기초하여 제1 교차 검사(intersection test)를 수행하고, 상기 제1 교차 검사의 수행 결과에 기초하여 2차 광선들을 생성하는 프로세서; 및
상기 생성된 2차 광선들을 종류별로 분류하여 상기 2차 광선들의 각각의 출발점 및 방향을 나타내는 식별 정보를 저장하는 메모리;를 포함하고,
상기 프로세서는 상기 생성된 2차 광선들의 개수에 따라 상기 1차 광선을 재생성할지 여부를 결정하고, 상기 저장된 상기 2차 광선들의 식별 정보를 이용하여 수행된 상기 가속 구조의 탐색 결과에 기초하여 제2 교차 검사를 수행하고, 상기 제2 교차 검사의 결과에 기초하여 쉐이딩(shading)을 수행함으로써 화상에 포함된 픽셀들 각각의 컬러 값을 생성하고, 상기 생성된 컬러 값들을 반영하여 상기 렌더링된 화상을 생성하고,
상기 메모리는 상기 1차 광선이 재생성된 경우에 상기 재생성된 1차 광선의 식별 정보를 저장하는 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130125545A KR102161749B1 (ko) | 2013-10-21 | 2013-10-21 | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. |
US14/263,488 US9619921B2 (en) | 2013-10-21 | 2014-04-28 | Method and apparatus for performing ray tracing for rendering image |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130125545A KR102161749B1 (ko) | 2013-10-21 | 2013-10-21 | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150045817A KR20150045817A (ko) | 2015-04-29 |
KR102161749B1 true KR102161749B1 (ko) | 2020-10-05 |
Family
ID=52825776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130125545A KR102161749B1 (ko) | 2013-10-21 | 2013-10-21 | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. |
Country Status (2)
Country | Link |
---|---|
US (1) | US9619921B2 (ko) |
KR (1) | KR102161749B1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102493461B1 (ko) * | 2015-08-31 | 2023-01-30 | 삼성전자 주식회사 | 렌더링 시스템 및 방법 |
US10297068B2 (en) | 2017-06-06 | 2019-05-21 | Adshir Ltd. | Method for ray tracing augmented objects |
US10614614B2 (en) | 2015-09-29 | 2020-04-07 | Adshir Ltd. | Path tracing system employing distributed accelerating structures |
US10565776B2 (en) | 2015-12-12 | 2020-02-18 | Adshir Ltd. | Method for fast generation of path traced reflections on a semi-reflective surface |
US10262456B2 (en) * | 2015-12-19 | 2019-04-16 | Intel Corporation | Method and apparatus for extracting and using path shading coherence in a ray tracing architecture |
US12008704B2 (en) | 2016-01-28 | 2024-06-11 | Snap Inc. | System for photo-realistic reflections in augmented reality |
US10614612B2 (en) | 2018-06-09 | 2020-04-07 | Adshir Ltd. | Fast path traced reflections for augmented reality |
US10332303B2 (en) * | 2016-04-26 | 2019-06-25 | Imagination Technologies Limited | Dedicated ray memory for ray tracing in graphics systems |
KR101955552B1 (ko) | 2017-11-29 | 2019-03-07 | 세종대학교 산학협력단 | 사운드 트레이싱 코어 및 이를 포함하는 사운드 트레이싱 시스템 |
US10699468B2 (en) | 2018-06-09 | 2020-06-30 | Adshir Ltd. | Method for non-planar specular reflections in hybrid ray tracing |
US20200193685A1 (en) * | 2018-12-13 | 2020-06-18 | Advanced Micro Devices, Inc. | Water tight ray triangle intersection without resorting to double precision |
KR102226120B1 (ko) | 2019-11-04 | 2021-03-11 | 주식회사 세종피아 | 다중 코어 사운드 트레이싱 장치 및 방법 |
US11017581B1 (en) | 2020-01-04 | 2021-05-25 | Adshir Ltd. | Method for constructing and traversing accelerating structures |
US11790593B2 (en) | 2020-03-13 | 2023-10-17 | Advanced Micro Devices, Inc. | Ray-tracing multi-sample anti-aliasing |
CN111402388A (zh) * | 2020-04-03 | 2020-07-10 | 山东大学 | 一种基于众核处理器的光线并行求交方法及光路追踪系统 |
US20230334750A1 (en) * | 2022-03-31 | 2023-10-19 | Imagination Technologies Limited | Methods and hardware logic for loading ray tracing data into a shader processing unit of a graphics processing unit |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7969434B2 (en) * | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US7782318B2 (en) * | 2006-11-22 | 2010-08-24 | International Business Machines Corporation | Method for reducing network bandwidth by delaying shadow ray generation |
US8063902B2 (en) | 2007-10-12 | 2011-11-22 | Caustic Graphics, Inc. | Method and apparatus for increasing efficiency of transmission and/or storage of rays for parallelized ray intersection testing |
KR100939212B1 (ko) * | 2007-12-15 | 2010-01-28 | 한국전자통신연구원 | 광선 집합을 이용한 병렬 광선 추적 방법 및 시스템 |
KR100924122B1 (ko) * | 2007-12-17 | 2009-10-29 | 한국전자통신연구원 | 픽셀 단위 처리 요소 기반의 광선 추적 장치 및 방법 |
KR101511281B1 (ko) * | 2008-12-29 | 2015-04-13 | 삼성전자주식회사 | 레이 트레이싱 고속화 방법 및 장치 |
KR20110059037A (ko) | 2009-11-27 | 2011-06-02 | 삼성전자주식회사 | 멀티 레벨 커널을 사용하는 레이 트레이싱 장치 및 방법 |
-
2013
- 2013-10-21 KR KR1020130125545A patent/KR102161749B1/ko active IP Right Grant
-
2014
- 2014-04-28 US US14/263,488 patent/US9619921B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9619921B2 (en) | 2017-04-11 |
US20150109302A1 (en) | 2015-04-23 |
KR20150045817A (ko) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102161749B1 (ko) | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. | |
JP6476090B2 (ja) | 加速構造の生成及び探索を行う方法並びに装置 | |
KR102493461B1 (ko) | 렌더링 시스템 및 방법 | |
KR102197067B1 (ko) | 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치 | |
KR101697238B1 (ko) | 영상 처리 장치 및 방법 | |
KR102224845B1 (ko) | 하이브리드 렌더링 방법 및 장치 | |
KR102604737B1 (ko) | 가속 구조를 생성하는 방법 및 장치 | |
KR100924122B1 (ko) | 픽셀 단위 처리 요소 기반의 광선 추적 장치 및 방법 | |
EP3147867A1 (en) | Apparatus for and method of traversing tree | |
KR20150046643A (ko) | 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법 | |
KR102242566B1 (ko) | 레이 트레이싱 처리 장치 및 방법 | |
EP2950275B1 (en) | Apparatus and method of traversing acceleration structure in ray tracing system | |
KR20160126329A (ko) | 적응적 샘플링을 수행하여 영상을 처리하는 방법 및 장치. | |
CN111788608A (zh) | 用于建模光反射的混合射线跟踪方法 | |
US20150091894A1 (en) | Method and apparatus for tracing ray using result of previous rendering | |
KR102166426B1 (ko) | 렌더링 시스템 및 이의 렌더링 방법 | |
KR102252374B1 (ko) | 광선 추적 유닛 및 광선 데이터를 처리하는 방법 | |
JP2018073427A (ja) | 加速構造を生成する方法及びその装置 | |
KR102193683B1 (ko) | 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 | |
KR102467031B1 (ko) | 가속 구조를 생성 및 탐색하는 방법 | |
KR102537530B1 (ko) | 가속 구조를 생성하는 방법 및 장치 | |
KR20110051315A (ko) | 영상 처리 장치 및 방법 | |
WO2023244734A1 (en) | Volume intersection using rotated bounding volumes | |
US20150186288A1 (en) | Apparatus and method of operating cache memory | |
Olsson et al. | Improved ray hierarchy alias free shadows |
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 |