KR102252374B1 - 광선 추적 유닛 및 광선 데이터를 처리하는 방법 - Google Patents

광선 추적 유닛 및 광선 데이터를 처리하는 방법 Download PDF

Info

Publication number
KR102252374B1
KR102252374B1 KR1020140119375A KR20140119375A KR102252374B1 KR 102252374 B1 KR102252374 B1 KR 102252374B1 KR 1020140119375 A KR1020140119375 A KR 1020140119375A KR 20140119375 A KR20140119375 A KR 20140119375A KR 102252374 B1 KR102252374 B1 KR 102252374B1
Authority
KR
South Korea
Prior art keywords
ray
ray data
unit
output
attribute
Prior art date
Application number
KR1020140119375A
Other languages
English (en)
Other versions
KR20160029601A (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 KR1020140119375A priority Critical patent/KR102252374B1/ko
Priority to US14/642,837 priority patent/US9754403B2/en
Publication of KR20160029601A publication Critical patent/KR20160029601A/ko
Application granted granted Critical
Publication of KR102252374B1 publication Critical patent/KR102252374B1/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/60Memory management
    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Abstract

일 실시 예에 따른 광선 데이터 처리 방법은 입력 버퍼들에 저장된 광선 데이터 중에서 어느 하나의 광선 데이터를 수신하는 단계; 상기 광선 데이터의 교차 탐색 결과에 따라 상기 광선 데이터의 속성을 업데이트하는 단계; 및 상기 광선 데이터의 속성에 따라 상기 광선 데이터를 출력 버퍼 또는 상기 입력 버퍼들 중 피드백 버퍼로 출력하는 단계를 포함하고, 상기 출력하는 단계는 상기 출력 버퍼에 상기 광선 데이터를 저장할 공간이 부족한 경우, 상기 출력 버퍼로 출력할 광선 데이터를 상기 피드백 버퍼로 출력하는 것을 특징으로 한다.

Description

광선 추적 유닛 및 광선 데이터를 처리하는 방법{Ray-tracing Unit and Method for processing ray data}
광선 추적 유닛 및 광선 데이터를 처리 방법에 관한 것이다.
3D 렌더링은 3차원 객체 데이터를 주어진 카메라의 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리 과정이다. 광선 추적 방법은 렌더링의 대상이 되는 씬 오브젝트(scene object)들과 광선이 교차되는 지점을 추적하는 과정이다. 광선 추적(ray-tracing)은 가속 구조(acceleration structure)의 탐색(traversal)과 광선-프리미티브(ray-primitive) 간의 교차 검사(intersection test) 과정을 포함한다. 이때, 탐색과 교차 검사 과정에서 많은 연산량(computation) 및 넓은 메모리 대역폭(memory bandwidth)을 필요로 한다.
파이프라인의 스톨을 방지하기 위한 광선 추적 유닛 및 광선 데이터를 처리하는 방법을 제공하는 데 있다.
광선 추적 유닛들의 데드락(deadlock)이 발생하는 것을 방지하기 위한 레이 트레이싱 코어 및 광선 데이터의 흐름 관리 방법을 제공하는 데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 광선 데이터 처리 방법은 입력 버퍼들에 저장된 광선 데이터 중에서 어느 하나의 광선 데이터를 수신하는 단계; 상기 광선 데이터의 교차 탐색 결과에 따라 상기 광선 데이터의 속성을 업데이트하는 단계; 및 상기 광선 데이터의 속성에 따라 상기 광선 데이터를 출력 버퍼 또는 상기 입력 버퍼들 중 피드백 버퍼로 출력하는 단계를 포함하고, 상기 출력하는 단계는 상기 출력 버퍼에 상기 광선 데이터를 저장할 공간이 부족한 경우, 상기 출력 버퍼로 출력할 광선 데이터를 상기 피드백 버퍼로 출력하는 것을 특징으로 한다.
일 실시 예에 따른 광선 추적 유닛은 출력 버퍼에 저장 공간이 부족한 경우, 파이프라인을 버퍼로 이용할 수 있다.
일 실시 예에 따른 레이 트레이싱 코어는 광선 추적 유닛에서 처리하는 광선 데이터의 수를 제어할 수 있다.
도 1은 광선 추적을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 동작을 설명하기 위한 도면이다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 레이 트레이싱 코어를 설명하기 위한 구성도이다.
도 7은 일 실시 예에 따른 TRV 유닛이 광선 데이터를 처리하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 IST 유닛이 광선 데이터를 처리하는 방법을 설명하기 위한 도면이다.
도 9는 일 실시 예에 따른 광선 데이터 처리 방법을 설명하기 위한 순서도 이다.
도 10은 또 다른 실시 예에 따른 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 11은 일 실시 예에 따른 광선 데이터의 흐름을 관리하는 방법을 설명하기 위한 순서도이다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 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을 참조하면, 레이 트레이싱 코어(100)는 RAY-FIFO(150, 160), TRV 유닛(120) 및 IST 유닛(130)을 포함한다. TRV 유닛(120) 또는 IST 유닛(130)은 광선 추적 유닛을 나타낸다.
RAY-FIFO(150, 160)는 광선 데이터를 저장하는 버퍼 또는 메모리이다. RAY-FIFO(150, 160)는 먼저 입력된 광선 데이터를 먼저 출력할 수 있다. RAY-FIFO(150)는 TRV 유닛(120)에 입력되는 광선 데이터를 저장하는 입력 버퍼로서의 기능을 수행한다. RAY-FIFO(160)는 TRV 유닛(120)으로부터 출력되는 광선 데이터를 저장하는 출력 버퍼로서의 기능을 수행한다. 또한, RAY-FIFO(160)는 IST 유닛(130)에 입력되는 광선 데이터를 저장하는 입력 버퍼로서의 기능을 수행한다.
TRV 유닛(120)은 RAY-FIFO(150, 160)으로 광선 데이터를 출력할 수 있다. IST 유닛(130)도 RAY-FIFO(150, 160)으로 광선 데이터를 출력할 수 있다.
RAY-FIFO(150)은 광선 생성 유닛(110)으로부터 수신된 광선 데이터, TRV 유닛(120)으로부터 수신된 광선 데이터 및 IST 유닛(130)으로부터 수신된 광선 데이터를 구분하여 저장할 수 있다.
RAY-FIFO(160)은 TRV 유닛(120)으로부터 수신된 광선 데이터 및 IST 유닛(130)으로부터 수신된 광선 데이터를 구분하여 저장할 수 있다.
TRV 유닛(120)은 RAY-FIFO(160)로 출력할 광선 데이터를 RAY-FIFO(150)으로 출력할 수 있다. RAY-FIFO(160)에 더 이상 광선 데이터를 저장할 공간이 없는 경우, TRV 유닛(120)은 광선 데이터를 RAY-FIFO(150)으로 출력하여 TRV 유닛(120)이 스톨되는 것을 방지할 수 있다. 이 때, TRV 유닛(120)은 광선 데이터의 속성을 변경하여 RAY-FIFO(150)으로 광선 데이터를 출력한다. 구체적으로, TRV 유닛(120)은 광선 데이터의 속성을 Bypass로 변경할 수 있다.
광선 데이터의 속성이 Bypass인 경우, TRV 유닛(120)은 광선 데이터에 대한 탐색을 수행하지 않는다. 즉, TRV 유닛(120)은 광선 데이터의 속성이 Bypass인 광선 데이터에 대해서는 파이프라인을 버퍼로 이용할 뿐, 아무런 연산을 수행하지 않는다.
TRV 유닛(120)은 속성이 Bypass인 광선 데이터가 파이프라인으로부터 출력될 때, RAY-FIFO(160)이 광선 데이터를 저장할 수 있는지 확인한다. RAY-FIFO(160)이 광선 데이터를 저장할 수 있으면, TRV 유닛(120)은 속성이 Bypass인 광선 데이터의 속성을 IST RAY로 변경하여 RAY-FIFO(160)으로 출력한다. 속성이 IST RAY인 광선 데이터는 IST 유닛(130)에서 교차 테스트가 수행되어야 하는 광선 데이터를 나타낸다.
광선 데이터의 속성은 광선의 타입을 정의하는 필드를 통해 구분할 수 있다. 즉, 광선 데이터의 특정 필드 값에 따라, 광선의 타입이 결정된다.
도 7은 일 실시 예에 따른 TRV 유닛이 광선 데이터를 처리하는 방법을 설명하기 위한 도면이다. 도 7을 참조하면, TRV 유닛(120)은 입력 버퍼들(710 내지 730), 파이프라인(740)을 포함한다.
IST 입력 버퍼(710)는 IST 유닛(130)으로부터 광선 데이터를 수신하고, RG 입력 버퍼(720)는 광선 생성 유닛(110)으로부터 광선 데이터를 수신한다. TRV 입력 버퍼(730)는 TRV 유닛(120)의 파이프라인(740)으로부터 광선 데이터를 수신한다. TRV 입력 버퍼(730)는 피드백 버퍼이다.
파이프라인(740)은 입력 버퍼들(710 내지 730)에 저장된 광선 데이터의 속성에 따라 우선적으로 처리할 광선 데이터를 수신한다. 파이프라인(740)은 속성이 바이패스인 광선 데이터를 최우선으로 수신할 수 있다. 속성이 바이패스인 광선 데이터는 파이프라인(740)의 각 스테이지들을 탐색 과정 없이 통과한다. 속성이 바이패스인 광선 데이터가 파이프라인(740)으로부터 출력될 때, 출력 버퍼(750)에 저장 공간이 있는 경우, 파이프라인(740)은 광선 데이터의 속성을 IST RAY로 업데이트하고, 광선 데이터를 출력 버퍼(750)로 출력한다.
파이프라인(740)은 입력된 광선 데이터에 대한 가속 구조 탐색을 수행한다. 파이프라인(740)은 복수의 스테이지들(stages)을 포함하며, 복수의 스테이지들은 독립적으로 연산을 수행한다. 파이프라인(740)의 각 스테이지들은 광선 데이터가 바운딩 박스 또는 오브젝트에 히트되었는지 여부를 판단한다.
광선 데이터의 속성은 바이패스, IST RAY 또는 TRV RAY 등으로 표현될 수 있다. 바이패스는 가속 구조의 탐색 또는 교차 테스트의 대상이 아닌 광선 데이터임을 나타낸다. IST RAY는 IST 유닛(130)으로 출력될 광선 데이터를 나타낸다. TRV RAY는 TRV 유닛(120)으로 출력될 광선 데이터를 나타낸다.
파이프라인(740)은 광선 데이터의 속성이 바이패스인 경우, 광선 데이터에 대한 가속 구조 탐색을 수행하지 않는다. 다시 말해서, 속성이 바이패스인 광선 데이터의 경우, 광선 데이터는 각 스테이지들에 순차적으로 통과할 뿐, 파이프라인(740)은 광선 데이터와 바운딩 박스 또는 오브젝트와의 교차 여부를 판단하지 않는다.
파이프라인(740)은 탐색 결과에 따라 광선 데이터의 속성을 변경할 수 있다. 파이프라인(740)은 출력 조건을 만족한 광선 데이터(701)의 속성을 TRV RAY에서 IST RAY로 변경한다. 속성이 IST RAY인 광선 데이터(701)는 출력 버퍼(750)로 출력된다. 출력 버퍼(750)는 IST 유닛(130)의 입력 버퍼 중 하나일 수 있다.
파이프라인(740)은 출력 버퍼(750)에 광선 데이터를 저장할 공간이 부족한 경우, 출력 버퍼(750)로 출력할 광선 데이터를 입력 버퍼들(710 내지 730) 중 피드백 버퍼(730)로 출력한다. 예를 들어, 광선 데이터(701)는 속성이 IST RAY인 광선 데이터이다. 광선 데이터(701)는 출력 버퍼(750)로 출력되어야 하지만, 출력 버퍼(750)에 광선 데이터(701)를 저장할 공간이 부족하므로, 파이프라인(740)은 광선 데이터(701)의 속성을 변경하여 피드백 버퍼(730)으로 출력한다. 광선 데이터(702)는 속성이 변경된 광선 데이터(701)를 나타낸다.
도 8은 일 실시 예에 따른 IST 유닛이 광선 데이터를 처리하는 방법을 설명하기 위한 도면이다. 도 8을 참조하면, IST 유닛(130)은 입력 버퍼들(810 내지 820), 파이프라인(830)을 포함한다.
TRV 입력 버퍼(810)는 TRV 유닛(120)으로부터 광선 데이터를 수신하고, IST 입력 버퍼(820)는 IST 유닛(130)의 파이프라인(830)으로부터 광선 데이터를 수신한다. IST 입력 버퍼(820)는 피드백 버퍼이다.
파이프라인(740)은 입력 버퍼들(810, 820)에 저장된 광선 데이터의 속성에 따라 우선적으로 처리할 광선 데이터를 수신한다. 파이프라인(830)은 속성이 바이패스인 광선 데이터를 최우선으로 수신할 수 있다. 속성이 바이패스인 광선 데이터는 파이프라인(830)의 각 스테이지들을 탐색 과정 없이 통과한다. 속성이 바이패스인 광선 데이터가 파이프라인(830)으로부터 출력될 때, 출력 버퍼(840)에 저장 공간이 있는 경우, 파이프라인(830)은 광선 데이터의 속성을 SHADING RAY로 업데이트하고, 광선 데이터를 출력 버퍼(840)로 출력한다. 속성이 SHADING RAY인 광선 데이터는 쉐이딩 유닛(140)으로 출력될 광선 데이터이다.
파이프라인(830)은 입력된 광선 데이터에 대한 교차 탐색을 수행한다. 파이프라인(830)은 복수의 스테이지들(stages)을 포함하며, 복수의 스테이지들은 독립적으로 연산을 수행한다. 파이프라인(830)의 각 스테이지들은 광선 데이터와 프리미티브(primitive)의 교차 테스트(intersection test)를 수행한다.
IST 유닛(130)에서 처리되는 광선 데이터의 속성은 바이패스, IST RAY 또는 SHADING RAY 등으로 표현될 수 있다. 바이패스는 교차 테스트의 대상이 아닌 광선 데이터임을 나타낸다. IST RAY는 IST 유닛(130)으로 피드백될 광선 데이터를 나타낸다. SHADING RAY는 쉐이딩 유닛(140)으로 출력될 광선 데이터를 나타낸다.
파이프라인(830)은 광선 데이터의 속성이 바이패스인 경우, 광선 데이터에 대한 교차 테스트를 수행하지 않는다. 다시 말해서, 속성이 바이패스인 광선 데이터의 경우, 광선 데이터는 각 스테이지들에 순차적으로 통과할 뿐, 파이프라인(830)은 광선 데이터와 프리미티브의 교차 여부를 판단하지 않는다.
파이프라인(830)은 교차 테스트 결과에 따라 광선 데이터의 속성을 변경할 수 있다. 파이프라인(830)은 출력 조건을 만족한 광선 데이터(801)의 속성을 IST RAY에서 TRV RAY 또는 SHADING RAY로 변경한다. 속성이 TRV RAY 또는 SHADING RAY인 광선 데이터는 출력 버퍼(840)로 출력된다. 출력 버퍼(840)는 TRV 유닛(120) 또는 쉐이딩 유닛(140)의 입력 버퍼 중 하나일 수 있다.
파이프라인(830)은 출력 버퍼(840)에 광선 데이터를 저장할 공간이 부족한 경우, 출력 버퍼(840)로 출력할 광선 데이터를 입력 버퍼들(810, 820) 중 피드백 버퍼(820)로 출력한다. 예를 들어, 광선 데이터(801)는 속성이 SHADING RAY인 광선 데이터이다. 광선 데이터(801)는 출력 버퍼(840)로 출력되어야 하지만, 출력 버퍼(840)에 광선 데이터(801)를 저장할 공간이 부족하므로, 파이프라인(830)은 광선 데이터(801)의 속성을 변경하여 피드백 버퍼(820)으로 출력한다. 광선 데이터(802)는 속성이 변경된 광선 데이터(801)를 나타낸다.
도 9는 일 실시 예에 따른 광선 데이터 처리 방법을 설명하기 위한 순서도 이다. 도 9를 참조하면, 910단계에서, 광선 추적 유닛은 입력 버퍼들에 저장된 광선 데이터 중에서 어느 하나의 광선 데이터를 수신한다. 광선 추적 유닛은 TRV 유닛(120) 또는 IST 유닛(130) 중 어느 하나를 나타낸다.
920단계에서, 광선 추적 유닛은 광선 데이터의 가속 구조 탐색 또는 교차 테스트 결과에 따라 광선 데이터의 속성을 업데이트한다.
930단계에서, 광선 추적 유닛은 광선 데이터의 속성에 따라 광선 데이터를 출력 버퍼 또는 피드백 버퍼 중 어느 버퍼로 출력할지를 판단한다. 만약, 광선 데이터를 피드백 버퍼로 출력하는 경우, 950단계로 진행한다. 광선 데이터를 출력 버퍼로 출력하는 경우, 940단계로 진행한다. 출력 버퍼는 현재 광선 데이터를 처리 중인 유닛과 다른 유닛의 입력 버퍼일 수 있다. 예를 들어, TRV 유닛(120)이 광선 데이터를 출력하는 경우, 출력 버퍼는 IST 유닛(130)의 입력 버퍼일 수 있다. 또한, IST 유닛(130)이 광선 데이터를 출력하는 경우, 출력 버퍼는 TRV 유닛(120) 또는 쉐이딩 유닛(140)의 입력 버퍼일 수 있다.
940단계에서, 광선 추적 유닛은 출력 버퍼에 광선 데이터를 저장할 공간이 부족한지를 판단한다. 만약, 출력 버퍼에 광선 데이터를 저장할 공간이 부족한 경우, 950단계로 진행한다. 그렇지 않으면, 960단계로 진행한다.
950단계에서, 광선 추적 유닛은 피드백 버퍼로 광선 데이터를 출력한다.
960단계에서, 광선 추적 유닛은 출력 버퍼로 광선 데이터를 출력한다.
상술한 방법을 통해, 파이프라인을 버퍼로서 사용함으로써 광선 추적 유닛의 스톨을 방지할 수 있다.
도 10은 또 다른 실시 예에 따른 레이 트레이싱 코어를 설명하기 위한 도면이다. 도 10을 참조하면, 레이 트레이싱 코어(100)는 입력 리미터(1010), 인 레이 카운터(1020) 및 아웃 레이 카운터(1030)를 포함한다.
인 레이 카운터(1020)는 TRV 유닛(120)에 입력된 광선 데이터의 수를 계수한다. 인 레이 카운터(1020)는 계수 결과를 입력 리미터(1010)로 출력한다.
아웃 레이 카운터(1030)는 IST 유닛(130)으로부터 출력된 광선 데이터의 수를 계수한다. 아웃 레이 카운터(1030)는 계수 결과를 입력 리미터(1010)로 출력한다.
입력 리미터(1010)는 광선 생성 유닛(110)으로부터 TRV 유닛(120)으로 출력되는 광선 데이터를 제어한다. 입력 리미터(1010)는 인 레이 카운터(1020) 및 아웃 레이 카운터(1030)로부터 계수 결과를 수신하여, TRV 유닛 및 IST 유닛에서 처리 중인 광선 데이터의 수를 계산한다. 입력 리미터(1010)는 인 레이 카운터(1020)에서 계수한 광선 데이터의 수에서 아웃 레이 카운터(1030)에서 계수한 광선 데이터의 수의 차를 계산하여, TRV 유닛 및 IST 유닛에서 처리 중인 광선 데이터의 수를 획득할 수 있다.
입력 리미터(1010)는 처리 중인 광선 데이터의 수가 최대 광선 데이터의 수를 넘지 않을 때 광선 생성 유닛에서 TRV 유닛(120)으로 광선 데이터를 출력한다.
입력 리미터(1010)는 TRV 유닛(120) 및 IST 유닛(130)의 전체 스테이지의 수 및 TRV 유닛(120) 및 IST 유닛(130)의 피드백 버퍼가 저장 가능한 광선 데이터의 수에 따라 최대 광선 데이터의 수를 설정한다. 예를 들어, 다음의 수학식 1과 같이, 입력 리미터(1010)는 TRV 유닛(120) 및 IST 유닛(130)의 전체 스테이지의 수와 TRV 유닛(120) 및 IST 유닛(130)의 피드백 버퍼가 저장 가능한 광선 데이터의 수를 더한 수에서 1을 뺀 수를 최대 광선 데이터의 수로 설정할 수 있다. 수학식 1에서는 전체 스테이지의 수와 피드백 버퍼가 저장 가능한 광선 데이터의 수에서 1을 뺐으나, 1보다 큰 자연수를 뺄 수도 있다.
Figure 112014085593942-pat00001
도 11은 일 실시 예에 따른 광선 데이터의 흐름을 관리하는 방법을 설명하기 위한 순서도이다. 도 11을 참조하면, 레이 트레이싱 코어(100)는 데드락(deadlock)이 발생하는 것을 방지하기 위해, TRV 유닛(120)에 입력되는 광선 데이터를 제어한다.
1110단계에서, 레이 트레이싱 코어(100)는 TRV 유닛(120)에 입력된 광선 데이터의 수를 계수한다.
1120단계에서, 레이 트레이싱 코어(100)는 IST 유닛(130)으로부터 출력된 광선 데이터의 수를 계수한다. IST 유닛(130)으로부터 출력된 광선 데이터는 IST 유닛(130)이나 TRV 유닛(120)으로 피드백 되는 광선 데이터가 아닌, 쉐이딩 유닛(140)으로 출력된 광선 데이터이다.
1130단계에서, 레이 트레이싱 코어(100)는 처리 중인 광선 데이터의 수와 최대 광선 데이터의 수를 비교한다. 만약, 처리 중인 광선 데이터의 수가 최대 광선 데이터의 수보다 작으면 1140단계로 진행하고, 그렇지 않으면 1110단계로 진행한다. 레이 트레이싱 코어(100)는 1110단계 및 1120단계에서의 계수 결과를 이용하여 TRV유닛(120) 및 IST 유닛(130)에서 처리 중인 광선 데이터의 수를 알 수 있다. 다시 말해서, 레이 트레이싱 코어(100)는 광선 생성 유닛(110)에서 TRV 유닛(120)에 입력된 광선 데이터의 수에서 IST 유닛(130)에서 쉐이딩 유닛(140)으로 출력된 광선 데이터의 수를 빼서 처리 중인 광선 데이터의 수를 계수할 수 있다.
처리 중인 광선 데이터의 수가 최대 광선 데이터의 수보다 작으면, TRV 유닛(120) 및 IST 유닛(130)이 광선 데이터를 추가로 수신하여도 데드락이 발생하지 않을 것이므로, 입력 리미터(1010)는 TRV 유닛(120)에 광선 데이터를 출력한다. 하지만, 처리 중인 광선 데이터의 수가 최대 광선 데이터의 수보다 크거나 같으면, 데드락이 발생할 수 있으므로, 입력 리미터(1010)는 TRV 유닛(120)으로 출력되는 광선 데이터를 제한한다.
1140단계에서, 레이 트레이싱 코어(100)는 광선 생성 유닛(110)으로부터 TRV 유닛(120)으로 광선 데이터를 출력한다.
레이 트레이싱 코어(100)는 가속 구조 탐색 및 교차 테스트 중인 광선 데이터의 수를 제한함으로써, TRV 유닛(120) 및 IST 유닛(130)의 동작이 멈추는 데드락이 발생하지 않도록 광선 데이터의 흐름을 제어할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
100: 레이 트레이싱 코어
110: 광선 생성 유닛
120: TRV 유닛
130: IST 유닛
140: 쉐이딩 유닛
150: RAY-FIFO

Claims (15)

  1. 광선 추적 유닛이 광선 데이터를 처리하는 방법에 있어서,
    입력 버퍼들에 저장된 광선 데이터 중에서 어느 하나의 광선 데이터를 수신하는 단계;
    상기 광선 데이터의 교차 탐색 결과에 따라 상기 광선 데이터의 속성을 업데이트하는 단계; 및
    상기 광선 데이터의 속성에 따라 상기 광선 데이터를 출력 버퍼 또는 상기 입력 버퍼들 중 피드백 버퍼로 출력하는 단계를 포함하고,
    상기 출력하는 단계는,
    상기 출력 버퍼에 상기 광선 데이터를 저장할 공간이 부족한 경우, 상기 출력 버퍼로 출력할 광선 데이터의 속성을 바이패스(bypass)로 업데이트하고, 상기 피드백 버퍼로 출력하고,
    상기 출력 버퍼에 속성이 바이패스인 광선 데이터를 저장할 공간이 있는 경우, 상기 광선 데이터의 속성을 바이패스에서 상기 출력 버퍼를 나타내는 속성으로 업데이트하고, 상기 출력 버퍼로 출력하고,
    속성이 바이패스인 광선 데이터에 대해서는 교차탐색을 수행하지 않고, 파이프라인의 각 스테이지를 통과시키는 것을 특징으로 하는 광선 데이터 처리 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서, 상기 광선 데이터를 수신하는 단계는,
    상기 입력 버퍼들에 저장된 광선 데이터의 속성에 따라 우선적으로 처리할 광선 데이터를 수신하는 것을 특징으로 하는 광선 데이터 처리 방법.
  5. 제 4 항에 있어서, 상기 광선 데이터를 수신하는 단계는,
    상기 입력 버퍼들에 저장된 광선 데이터 중에서 속성이 바이패스로 설정된 광선 데이터를 최우선으로 수신하는 것을 특징으로 하는 광선 데이터 처리 방법.
  6. 유닛들로부터 출력된 광선 데이터를 구분하여 저장하는 입력 버퍼들; 및
    상기 입력 버퍼들로부터 수신된 어느 하나의 광선 데이터의 교차 탐색을 수행하고, 상기 교차 탐색 결과에 따라 상기 광선 데이터의 속성을 업데이트하는 파이프라인을 포함하고,
    상기 파이프라인은,
    출력 버퍼에 광선 데이터를 저장할 공간이 부족한 경우, 상기 출력 버퍼로 출력할 광선 데이터를 속성을 바이패스로 업데이트하고, 상기 입력 버퍼들 중 피드백 버퍼로 출력하고,
    상기 출력 버퍼에 속성이 바이패스인 광선 데이터를 저장할 공간이 있는 경우, 상기 광선 데이터의 속성을 바이패스에서 상기 출력 버퍼를 나타내는 속성으로 업데이트하고, 상기 출력 버퍼로 출력하고,
    속성이 바이패스인 광선 데이터에 대해서는 교차 탐색을 수행하지 않고, 파이프라인의 각 스테이지를 통과시키는 것을 특징으로 하는 광선 추적 유닛.
  7. 삭제
  8. 삭제
  9. 제 6 항에 있어서,
    상기 파이프라인은 상기 입력 버퍼들에 저장된 광선 데이터의 속성에 따라 우선적으로 처리할 광선 데이터를 수신하는 것을 특징으로 하는 광선 추적 유닛.
  10. 제 9 항에 있어서,
    상기 파이프라인은 상기 입력 버퍼들에 저장된 광선 데이터 중에서 속성이 바이패스로 설정된 광선 데이터를 최우선으로 수신하는 것을 특징으로 하는 광선 추적 유닛.
  11. 제1항, 제4항 및 제5항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  12. TRV 유닛에 입력된 광선 데이터의 수를 계수하는 단계;
    IST 유닛으로부터 출력된 광선 데이터의 수를 계수하는 단계;
    상기 계수 결과에 기초하여 상기 TRV 유닛 및 상기 IST 유닛에서 처리 중인 광선 데이터의 수를 계산하고, 상기 처리 중인 광선 데이터의 수가 상기 최대 광선 데이터의 수를 넘지 않을 때 광선 생성 유닛에서 상기 TRV 유닛으로 광선 데이터를 출력하는 단계; 및
    상기 TRV 유닛 및 상기 IST 유닛의 전체 스테이지의 수 및 상기 TRV 유닛 및 상기 IST 유닛의 피드백 버퍼가 저장 가능한 광선 데이터의 수에 따라 상기 최대 광선 데이터의 수를 설정하는 단계를 더 포함하는 것을 특징으로 하는 광선 데이터의 흐름 관리 방법.
  13. 삭제
  14. TRV 유닛에 입력된 광선 데이터의 수를 계수하는 인 레이 카운터(In Ray Counter);
    IST 유닛으로부터 출력된 광선 데이터의 수를 계수하는 아웃 레이 카운터(Out Ray Counter); 및
    상기 인 레이 카운터 및 상기 아웃 레이 카운터로부터 계수 결과를 수신하여 상기 TRV 유닛 및 상기 IST 유닛에서 처리 중인 광선 데이터의 수를 계수하고, 상기 처리 중인 광선 데이터의 수가 상기 최대 광선 데이터의 수를 넘지 않을 때 광선 생성 유닛에서 상기 TRV 유닛으로 광선 데이터를 출력하는 입력 리미터(input limiter)를 포함하고,
    상기 입력 리미터는 상기 TRV 유닛 및 상기 IST 유닛의 전체 스테이지의 수 및 상기 TRV 유닛 및 상기 IST 유닛의 피드백 버퍼가 저장 가능한 광선 데이터의 수에 따라 상기 최대 광선 데이터의 수를 설정하는 것을 특징으로 하는 레이 트레이싱 코어.
  15. 삭제
KR1020140119375A 2014-09-05 2014-09-05 광선 추적 유닛 및 광선 데이터를 처리하는 방법 KR102252374B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140119375A KR102252374B1 (ko) 2014-09-05 2014-09-05 광선 추적 유닛 및 광선 데이터를 처리하는 방법
US14/642,837 US9754403B2 (en) 2014-09-05 2015-03-10 Ray tracing unit and method for processing ray data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140119375A KR102252374B1 (ko) 2014-09-05 2014-09-05 광선 추적 유닛 및 광선 데이터를 처리하는 방법

Publications (2)

Publication Number Publication Date
KR20160029601A KR20160029601A (ko) 2016-03-15
KR102252374B1 true KR102252374B1 (ko) 2021-05-14

Family

ID=55437970

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140119375A KR102252374B1 (ko) 2014-09-05 2014-09-05 광선 추적 유닛 및 광선 데이터를 처리하는 방법

Country Status (2)

Country Link
US (1) US9754403B2 (ko)
KR (1) KR102252374B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9679398B2 (en) * 2015-10-19 2017-06-13 Chaos Software Ltd. Rendering images using color contribution values of render elements
US10332303B2 (en) 2016-04-26 2019-06-25 Imagination Technologies Limited Dedicated ray memory for ray tracing in graphics systems
KR102151444B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 Mimd 기반의 t&i 스케줄링을 이용한 레이 트레이싱 장치
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
US11282261B2 (en) * 2020-06-10 2022-03-22 Nvidia Corporation Ray tracing hardware acceleration with alternative world space transforms

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140063016A1 (en) * 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100196517B1 (ko) 1996-10-25 1999-06-15 김영환 파이프라인 프로세서에서 바이패스 경로를 지원하는 레지스터 파일
US8089486B2 (en) 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
US8134566B1 (en) 2006-07-28 2012-03-13 Nvidia Corporation Unified assembly instruction set for graphics processing
US7940261B2 (en) 2007-01-10 2011-05-10 Qualcomm Incorporated Automatic load balancing of a 3D graphics pipeline
US7676633B1 (en) 2007-01-31 2010-03-09 Network Appliance, Inc. Efficient non-blocking storage of data in a storage server victim cache
KR20140023615A (ko) * 2012-08-16 2014-02-27 삼성전자주식회사 병렬 파이프라인을 사용하는 그래픽 처리 방법 및 장치
US9305370B2 (en) * 2013-07-31 2016-04-05 Qualcomm Incorporated Graphical rendering with implicit surfaces

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140063016A1 (en) * 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Also Published As

Publication number Publication date
KR20160029601A (ko) 2016-03-15
US20160071309A1 (en) 2016-03-10
US9754403B2 (en) 2017-09-05

Similar Documents

Publication Publication Date Title
KR102244619B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR102116981B1 (ko) 광선 추적 가속 방법 및 장치
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR102161749B1 (ko) 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치.
US9754405B1 (en) System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure
EP2869273B1 (en) Ray tracing method and apparatus
KR102604737B1 (ko) 가속 구조를 생성하는 방법 및 장치
KR102252374B1 (ko) 광선 추적 유닛 및 광선 데이터를 처리하는 방법
KR102370617B1 (ko) 적응적 샘플링을 수행하여 영상을 처리하는 방법 및 장치.
US10580195B2 (en) Ray-triangle intersection testing with tetrahedral planes
US10586375B2 (en) Hybrid raytracing approach for modeling light reflection
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
KR20150039496A (ko) 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR20180069461A (ko) 가속 구조를 생성하는 방법 및 장치
US10460506B2 (en) Method and apparatus for generating acceleration structure
KR102166426B1 (ko) 렌더링 시스템 및 이의 렌더링 방법
WO2017164924A1 (en) System for gpu based depth reprojection for accelerating depth buffer generation
KR102537530B1 (ko) 가속 구조를 생성하는 방법 및 장치
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR102051903B1 (ko) 공간 가속 구조 탐색 장치 및 방법
WO2017164923A1 (en) Gpu batch occlusion query with spatial update
KR20160133358A (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