KR102080851B1 - 레이 추적의 스케쥴링을 위한 장치 및 방법 - Google Patents

레이 추적의 스케쥴링을 위한 장치 및 방법 Download PDF

Info

Publication number
KR102080851B1
KR102080851B1 KR1020120102709A KR20120102709A KR102080851B1 KR 102080851 B1 KR102080851 B1 KR 102080851B1 KR 1020120102709 A KR1020120102709 A KR 1020120102709A KR 20120102709 A KR20120102709 A KR 20120102709A KR 102080851 B1 KR102080851 B1 KR 102080851B1
Authority
KR
South Korea
Prior art keywords
ray
sub
tree
search
unit
Prior art date
Application number
KR1020120102709A
Other languages
English (en)
Other versions
KR20140036519A (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 KR1020120102709A priority Critical patent/KR102080851B1/ko
Priority to US13/902,157 priority patent/US9367949B2/en
Publication of KR20140036519A publication Critical patent/KR20140036519A/ko
Application granted granted Critical
Publication of KR102080851B1 publication Critical patent/KR102080851B1/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

Landscapes

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

Abstract

레이 추적을 처리하는 장치 및 방법이 제공된다. 그래픽 처리 장치는 레이의 탐색을 처리하는 복수 개의 탐색 유닛들을 포함한다. 관리 유닛은 그래픽 처리 장치가 처리하는 레이의 데이터를 복수 개의 탐색 유닛들에게 분배한다. 복수 개의 탐색 유닛들 각각은 레이가 추적되는 전체 공간의 일부분에 대한 레이의 탐색을 처리한다.

Description

레이 추적의 스케쥴링을 위한 장치 및 방법{APPARATUS AND METHOD FOR SCHEDULING OF RAY TRACING}
아래의 실시예들은 그래픽 처리를 위한 장치 및 방법에 관한 것으로 보다 상세히는 레이 추적을 처리하는 장치 및 방법이 개시된다.
3차원(3Dimension; 3D) 렌더링(rending)은 3D 객체(object)의 데이터를 주어진 카메라의 시점(view point)에서 보이는 영상(image)으로 합성(synthesis)하는 영상 처리 과정일 수 있다.
렌더링을 위한 한 방법으로서, 3D 객체를 화면(screen)에 투영(projection)하면서 영상을 생성하는 레스터화(rasterization) 방법이 있다. 또한, 렌더링을 위한 다른 방법으로서, 카메라의 시점에서부터 영상의 각 픽셀을 향해 발사된 레이(ray)를 따라 입사하는 빛의 경로를 추적(trace)함으로써 영상을 생성하는 레이 추적(ray tracing)이 있다.
상기의 렌더링을 위한 방법들 중, 레이 추적은 반사, 굴절 및 투과 등과 같은 빛의 물리적 성질을 이용함으로써 고품질의 영상을 생성할 수 있다는 장점을 가질 수 있다. 그러나, 레이 추적을 위해 사용되는 연산의 양이 방대하기 때문에, 레이 추적은 고속으로 렌더링을 처리하기 어렵다는 단점을 가질 수 있다.
1) 가속 구조(Acceleration Structure; AS)의 탐색(traversal; TRV) 및 2) 레이 및 프리미티브(ray-primitive) 간 교차 검사(intersection test; IST)는 각각 레이 추적의 성능을 결정하는 가장 중요한 요소들 중 하나 일 수 있다. 상기의 가속 구조의 탐색 및 교차 검사는 레이들 각각에 대해 수 회 내지 수십 회까지 수행될 수 있다. 프리미티브는 씬 객체의 프리미티브일 수 있다. 프리미티브는 삼각형(triangle)일 수 있다.
상기의 가속 구조는 공간 분할 가속 구조일 수 있다. 가속 구조는 렌더링의 대상인 씬 객체(scene object)들을 공간적으로 분할하여 표현한 데이터 구조일 수 있다. 가속 구조로서, 그리드(grid), 케이디-트리(kd-tree), 바운딩 볼륨 하이어아키(Bounding Volume Hierarchy; BVH) 등의 자료 구조가 사용될 수 있다.
상기의 탐색 및 교차 검사는 레이 추적에 있어서 70% 이상의 연산량 및 90% 이상의 메모리 대역폭(bandwidth)을 점유할 수 있다. 탐색 또는 교차 검사를 수행하는 유닛은 일반적으로 캐쉬를 구비한다. 탐색 또는 교차 검사를 위해 요구되는 데이터가 캐쉬 내에 존재하지 않는 경우, 데이터를 외부 메모리로부터 읽어올 때 긴 지연시간(latency)이 발생할 수 있다. 상기의 지연 시간은 레이 추적 성능을 저하시킬 수 있다.
일 측에 따르면, 레이 추적을 처리하는 그래픽 처리 장치에 있어서, 레이의 탐색을 처리하는 복수 개의 탐색 유닛들 및 상기 그래픽 처리 장치가 처리하는 레이의 데이터를 상기 복수 개의 탐색 유닛들에게 분배하는 관리 유닛을 포함하고, 상기 복수 개의 탐색 유닛들 각각은 전체 공간의 일부분(sub-division)에 대한 레이의 탐색을 처리하는 그래픽 처리 장치가 제공될 수 있다.
상기 전체 공간은 레이 추적이 수행되는 공간일 수 있다.
레이 추적에 사용되는 트리 가속 구조 내의 노드는 상기 일부분을 나타낼 수 있다.
상기 일부분은 바운딩 박스일 수 있다.
상기 복수 개의 탐색 유닛들은 레이의 탐색을 위한 전역 스텍을 공유할 수 있다.
상기 복수 개의 탐색 유닛들 각각은 레이 추적에 사용되는 트리 가속 구조 중 할당된 핏 포인트가 나타내는 영역에 대한 레이 탐색을 처리할 수 있다.
상기 핏 포인트가 나타내는 영역은 상기 핏 포인트에 대응하는 노드가 루트 노드인 상기 트리 가속 구조의 서브-트리일 수 있다.
상기 핏 포인트는 상기 서브-트리의 하나 이상의 리프 노드들에 대응하는 하나 이상의 프리미티브들의 개수 및 상기 서브-트리의 하나 이상의 노드들의 개수 중 하나 이상에 기반하여 결정될 수 있다.
상기 핏 포인트는 상기 핏 포인트에 관련된 데이터의 크기 및 TRV 유닛의 캐쉬의 크기에 기반하여 결정될 수 있다.
상기 복수 개의 탐색 유닛들 각각은 상기 캐쉬를 포함할 수 있다.
상기 복수 개의 탐색 유닛들 각각은 상기 일부분을 나타내는 서브-트리에 대응할 수 있다.
상기 서브-트리는 레이 추척에 사용되는 트리 가속 구조의 일부일 수 있다.
상기 관리 유닛은 상기 레이의 데이터를 상기 복수 개의 탐색 유닛들 중 상기 레이가 방문하는 노드를 포함하는 서브-트리에 대응하는 탐색 유닛에게 분배할 수 있다.
상기 서브-트리는 하나 이상일 수 있다.
상기 하나 이상의 서브-트리들은 각각 상기 트리 가속 구조 내에서 중첩되지 않을 수 있다.
상기 하나 이상의 서브-트리들 중 상기 복수 개의 탐색 유닛들에 대응하지 않는 제1 서브-트리의 노드를 방문하는 레이의 데이터는 큐 내에 저장될 수 있다.
상기 관리 유닛은 상기 복수 개의 탐색 유닛들 중 제1 탐색 유닛을 상기 제1 서브-트리에게 할당하고, 상기 큐 내에 저장된 상기 제1 서브-트리의 노드를 방문하는 레이의 데이터를 상기 제1 탐색 유닛에게 분배할 수 있다.
상기 하나 이상의 서브-트리들 중 제2 서브-트리는 상기 복수 개의 탐색 유닛들 중 2 개 이상의 탐색 유닛들에 대응할 수 있다.
상기 관리 유닛은 부하 균형에 기반하여 상기 제2 서브-트리에 대응하는 2 개 이상의 탐색 유닛들 중 상기 제2 서브-트리의 노드를 방문하는 레이의 데이터를 전달할 탐색 유닛을 결정할 수 있다.
상기 그래픽 처리 장치는, 상기 레이의 교차 검사를 처리하는 하나 이상의의 교차 검사 유닛들을 더 포함할 수 있다.
상기 레이는 상기 복수 개의 레이 탐색 유닛들에 의해 트리 가속 구조 내에서 탐색된 레이일 수 있다.
상기 교차 검사에 의해 생성된 교차 점은 상기 하나 아상의 교차 검사 유닛들 별로 보관될 수 있다. 하나 이상의 주 레이들에 대한 레이 탐색이 완료되면 상기 교차 점에 대한 레이 생성이 수행됨에 의해 하나 이상의 2차 레이들이 일괄적으로 생성될 수 있다.
다른 일 측에 따르면, 레이 추적을 처리하는 그래픽 처리 방법에 있어서, 레이의 데이터를 복수 개의 탐색 유닛들에게 분배하는 단계 및 상기 복수 개의 탐색 유닛들이 상기 레이의 탐색을 처리하는 단계를 포함하고, 상기 복수 개의 탐색 유닛들 각각은 전체 공간의 일부분에 대한 레이 탐색을 처리하는 그래픽 처리 방법이 제공될 수 있다.
레이 추적에 사용되는 트리 가속 구조 내의 노드는 상기 일부분을 나타낼 수 있다.
상기 복수 개의 탐색 유닛들 각각은 상기 일부분을 나타내는 서브-트리에 대응할 수 있다.
상기 서브-트리는 레이 추척에 사용되는 트리 가속 구조의 일부일 수 있다.
상기 분배하는 단계는, 상기 레이의 데이터를 상기 복수 개의 탐색 유닛들 중 상기 레이가 방문하는 노드를 포함하는 서브-트리에 대응하는 탐색 유닛에게 분배할 수 있다.
도 1은 일 실시예에 따른 레이 추적을 설명한다.
도 2는 일 실시예에 따른 그래픽 처리 장치 및 그래픽 처리 장치와 관련된 개체들의 구조도이다.
도 3는 일 실시예에 따른 그래픽 처리 장치 및 그래픽 처리 장치와 관련된 개체들의 구조도이다.
도 4는 일 예에 따른 트리 AS의 분할 및 핏 포인트를 설명한다.
도 5 및 도 6은 일 예에 따른 큐를 사용하는 레이의 탐색을 설명한다.
도 5는 일 예에 따른 레이의 탐색의 데이터를 큐에 저장하는 방법을 설명한다.
도 6은 일 예에 따른 큐에 저장된 레이의 데이터를 처리하는 방법을 설명한다.
도 7은 일 예에 따른 서브-트리에 다수의 TRV 유닛들이 할당되는 구성을 설명한다.
도 8은 일 예에 따른 2차 레이 처리 방법의 흐름도이다.
도 9는 일 실시예에 따른 레이 추적을 처리하는 그래픽 처리 방법의 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서, 용어 "레이"는 레이 추적의 대상인 "레이 객체(object)", '레이를 나타내는 자료 구조(data structure), "레이의 정보", "레이의 데이터" 또는 "레이와 관련된 데이터"를 의미할 수 있으며, 상호 대체되어 사용될 수 있다.
이하에서, 용어 "쉐이딩 유닛(shading unit)"은 "쉐이더(shader)"로 대체될 수 있다.
도 1은 일 실시예에 따른 레이 추적을 설명한다.
AS 구축(110)은 전자 장치 내에서 AS(130)가 구축되는 동작(operation) 또는 과정을 나타낼 수 있다. AS 구축(110)은 레이 추적의 전처리(pre-processing)일 수 있다. AS(130)는 트리 AS일 수 있다. AS 구축(110)은 3차원(Dimension; D)의 공간을 나타내는 계층적 트리를 생성하는 것일 수 있다. 레이 추적의 대상이 되는 3D의 공간이 계층적 트리의 형태로 생성될 수 있다. 3D의 공간은 씬(scene)일 수 있다.
메모리(120)는 AS(130) 및 기하 데이터(140)를 포함, 저장 또는 제공할 수 있다.
AS(130)는 AS 구축(110)에 의해 생성된 AS일 수 있다. AS(130)는 트리 구조체(structure)를 사용하는 트리 AS일 수 있다. 예컨대, AS(130)는 kd 트리 또는 BVH일 수 있다. 또한, AS(130)는 그리드일 수 있다. AS 구축(110)은 3D의 공간 및 상기의 3D의 공간이 분할된 전체 공간의 일부분(sub-division)들을 계층적인 트리의 형태로 나타내기 위한 트리 구조체를 생성하는 것일 수 있다.
AS(130)는 이진 트리일 수 있다. AS(130)는 하나 이상의 노드들을 가질 수 있다. AS(130)의 하나 이상의 노드들 각각은 루트 노드, 내부(inner) 노드 또는 리프 노드일 수 있다. 노드의 타입(type)은 루트 노드, 내부 노드 및 리프 노드일 수 있다. 여기서, 루트 노드는 내부 노드로 간주될 수도 있다.
AS(130)의 노드들 각각은 공간을 나타낼 수 있다. 노드가 나타내는 공간은 전체 공간의 일부분(sub-division)일 수 있다. 노드가 나타내는 공간은 2 개의 점들로 표현되는 바운딩 박스(Bounding Box; BB) 또는 축 정렬된 바운딩 박스(Axis-Aligned Bounding Box; AABB)일 수 있다. 2 개의 점들은 바운딩 박스가 나타내는 육면체의 서로 대칭인 꼭지점들일 수 있다. 육면체의 면들은 각각 x 축, y 축, z 축 중 하나의 축에 평행할 수 있다. 예컨대, 전체 공간의 크기가 (X, Y, Z)일 때, AS의 루트 노드가 나타내는 공간은 전체 공간을 나타내는 점 (0, 0, 0) 및 점 (X, Y, Z)로 표현될 수 있다.
루트 노드 또는 내부 노드의 자식 노드들은 부모 노드가 나타내는 공간을 분할할 수 있다. 상기의 분할은 공간을 x 축, y 축 또는 z 축으로 분할하는 것일 수 있다. 예컨대, 루트 노드의 왼쪽 자식 노드 및 오른쪽 자식 노드는 루트 노드가 나타내는 공간을 x 축 상의 한 점을 기준으로 분할할 수 있다. 분할에 의해 전체 공간의 일부분들이 생성될 수 있다. x 축 상의 점 x0로 루트 노드가 나타내는 공간이 분할될 때, 루트 노드의 왼쪽 자식이 나타내는 공간은 점 (0, 0, 0) 및 점 (x0, Y, Z)로 표현될 수 있다. 또한, 루트 노드의 오른쪽 자식이 나타내는 공간은 점 (x0, Y, Z) 및 (X, Y, Z)로 표현될 수 있다.
노드가 나타내는 공간은 노드의 레벨에 따라 분할될 수 있다. 예컨대, 제3n+2 레벨의 자식 노드들은 제3n+1 레벨의 부모 노드가 나타내는 공간을 x 축 상의 한 점을 기준으로 분할할 수 있다. 제3n+3 레벨의 자식 노드들은 제3n+2 레벨의 부모 노드가 나타내는 공간을 y 축 상의 한 점을 기준으로 분할할 수 있다. 제3n+4 레벨의 자식 노드들은 제3n+3 레벨의 부모 노드가 나타내는 공간을 z 축 상의 한 점을 기준으로 분할할 수 있다. 여기서, n은 0 이상의 정수일 수 있고, 루트 노드는 제1 레벨의 노드일 수 있다.
기하 데이터(135)는 3D 공간 내의 씬 객체(objet)의 데이터일 수 있다. 씬 객체의 프리미티브(primitive)는 삼각형(triangle)일 수 있다. 또는, 씬 객체는 삼각형일 수 있다.
레이 트레이서(tracer)(140)는 레이 생성(150), AS 탐색(155), 교차 검사(160) 및 쉐이딩(165)을 처리할 수 있다.
레이 생성(150)에 의해, 기준 시점(viewpoint)으로부터 3D 공간을 향하는 레이가 생성될 수 있다. 레이는 기준 시점으로부터 2D 스크린(screen) 내의 특정한 픽셀을 향할 수 있다.
2D 스크린 내의 픽셀들 각각에 대해 레이 생성(150)이 반복(iterate)될 수 있다. 말하자면, 가상의 레이가 원점(origin)으로부터 2D 스크린 내의 각 픽셀로 발사될 수 있다.
AS 탐색(155)에 의해, AS를 사용하여 레이의 경로가 추적될 수 있다. AS 탐색(150)은 레이가 통과하는 AS의 트리의 노드들을 탐색해 나아가는 것일 수 있다. 여기서, 레이가 노드를 통과한다는 것은 레이가 노드가 나타내는 공간을 통과한다는 것을 의미할 수 있다.
AS 탐색(155)의 반복을 통해 AS의 리프 노드에 도달할 수 있다. AS의 리프 노드에 도달하면, 도달된 리프 노드에 대응하는 하나 이상의 씬 객체들이 특정될 수 있다. 여기서, 리프 노드에 대응하는 씬 객체는 리프 노드가 나타내는 공간 내에 위치하는 씬 객체일 수 있다. 말하자면, 리프 노드에 대응하는 씬 객체는 씬 내의 전체 씬 객체들 중 전부 또는 일부가 리프 노드가 나타내는 공간 내에 존재하는 씬 객체일 수 있다. 리프 노드의 데이터는 리프 노드에 대응하는 씬 객체의 데이터 또는 씬 객체의 프리미티브의 데이터를 포함할 수 있다. 말하자면, 리프 노드는 대응하는 씬 객체 또는 프리미티브을 포함할 수 있다. 또는, 리프 노드는 대응하는 씬 객체 또는 프리미티브를 가리킬 수 있다.
후술될 실시예에서, AS 탐색(155)은 복수 개의 서브-파이프라인 유닛들을 포함하는 레이 탐색(Traversal; TRV) 유닛에 의해 수행될 수 있다. 레이 탐색 유닛을 이하 TRV 유닛으로 약술한다. 복수 개의 TRV 유닛들은 각각 자신에게 입력된 레이의 탐색을 처리할 수 있다.
복수 개의 TRV 유닛들 각각에게는 레이 추적이 수행되는 전체 공간의 일부분이 할당될 수 있으며, 복수 개의 TRV 유닛들 각각은 자신에게 할당된 일부분에 대한 레이 탐색을 처리할 수 있다.
교차 검사(160)에 의해, 특정된 복수 개의 씬 객체들 각각이 레이와 교차하는지 여부가 검사될 수 있고, 레이와 교차하는 씬 객체가 가시(visible)인지 검사될 수 있다. 상기의 교차 검사 및 가시 검사를 위해 교차 검사(160)가 반복될 수 있다.
후술될 실시예에서, 교차 검사(160)는 레이 교차 검사(Intersection Test; IST) 유닛에 의해 수행될 수 있다. 교차 검사 유닛을 이하 IST 유닛으로 약술한다.
쉐이딩(165)에 의해, 레이와 교차하는 가시인 씬 객체의 컬러에 기반하여 레이가 항하는 2D 스크린 내의 특정한 픽셀의 컬러가 계산될 수 있다.
2D 스크린 내의 픽셀들의 컬러들이 결정됨으로써 렌더링 이미지가 생성될 수 있다.
추적되는 레이들이 주(primary)레이인 경우, 레이들 간의 유사성이 높을 수 있다. 상기의 높은 유사성에 의해 레이들의 데이터 간의 메모리 근접성(locality)이 유지될 수 있다. 메모리 근접성에 의해 레이 추적을 위해 사용되는 캐쉬의 효율이 높게 유지될 수 있다. 그러나, 주 레이가 씬 객체와 교차하여 레이의 반사, 굴절 또는 투과가 발생하면, 2차(secondary) 레이가 발생하면 레이들 간의 유사성이 감소할 수 있다. 특히, 레이 추적을 위해 경로 추적(path tracing), 포톤 매핑(photon mapping) 등의 전역 조명 렌더링(global illumination rendering) 알고리즘이 사용될 경우, 전방향(omni-direction)으로 파생되는 2차 레이들이 파생될 수 있다. 파생된 2차 레이들 간의 유사성이 급격하게 감소할 수 있고, 캐쉬의 효율 또한 감소하게 될 수 있다.
파생된 2차 레이들과 같은 비일관적인(incoherent) 레이를 캐쉬-효율적으로(cache-efficiently) 처리하기 위해, 후술될 실시예에서는 트리 가속 구조가 TRV 유닛의 캐쉬에 피트(fit)될 수 있는 서브-트리로 분할될 수 있다. 분할 및 정복(divide & conquer) 방식에 의해, 서브-트리는 복수 개의 TRV 유닛들에 의해 국부적으로 처리될 수 있다. 국부적인 처리에 의해 캐쉬 지역성(cache locality)가 향상될 수 있으며, 레이 추적의 전체 성능이 향상될 수 있다.
도 2는 일 실시예에 따른 그래픽 처리 장치 및 그래픽 처리 장치와 관련된 개체들의 구조도이다.
도 2는 레이 추적을 수행하는 렌더링 하드웨어 또는 그래픽 처리 장치 (Graphics Processing Unit; GPU)의 구조를 나타낼 수 있다.
도 2에서, 레이 생성 유닛(210), 레이 추적 유닛(220), 제1 캐쉬(282), 제2 캐쉬(284), 버스(286), 외부 메모리(288) 및 쉐이딩 유닛(290)이 도시되었다. 레이 생성 유닛(210), 제1 캐쉬(282), 제2 캐쉬(284) 및 쉐이딩 유닛(290)은 그래픽 처리 장치의 구성요소(component)들일 수 있다. 즉, GPU는 레이 생성 유닛(210), 제1 캐쉬(282), 제2 캐쉬(284) 및 쉐이딩 유닛(290)을 포함할 수 있다.
GPU 또는 레이 추적 유닛(220)은 도 1을 참조하여 전술된 레이 트레이서(140)일 수 있다. 외부 메모리(288)는 외부 메모리(120)일 수 있다. 레이 생성 유닛(210)는 레이 생성(150)을 수행할 수 있다. 쉐이딩 유닛(290)은 쉐이딩(165)을 수행할 수 있다. 또한, 도시된 것과 달리, 레이 생성 유닛(210) 및 쉐이딩 유닛(290)은 각각 레이 추적 유닛(220) 내에 포함될 수도 있다.
레이 생성 유닛(210)은 레이를 생성할 수 있다. 레이 생성 유닛(210)은 생성된 레이의 데이터를 레이 추적 유닛(220)에게 제공할 수 있다. 레이 생성 유닛(210)은 레이의 데이터를 레이 추적 유닛(220)에게 제공하는 작업 또는 개체를 나타낼 수 있다.
레이 추적 유닛(220)은 레이 추적을 처리할 수 있다. 레이 추적 유닛(220)은 추적이 처리된 레이의 데이터를 쉐이딩 유닛(290)에게 제공할 수 있다.
쉐이딩 유닛(290)은 추적이 처리된 레이의 데이터에 기반하여 추적된 레이에 대한 쉐이딩을 처리할 수 있다. 쉐이딩 유닛(290)은 레이 추적이 처리된 후 쉐이딩을 처리하는 작업 또는 개체(entity)를 나타낼 수 있다. 쉐이딩은 2D 스크린 내의 픽셀에 대해 축적된 레이들의 추적의 결과들을 합함으로써 상기의 픽셀의 컬러를 최종적으로 결정하는 것일 수 있다.
제1 캐쉬(282) 및 제2 캐쉬(284)는 레이 추적에 관련된 필요한 데이터를 캐슁할 수 있다. 레이 추적을 처리하기 위해 필요한 데이터는 외부 메모리(288) 내에 저장되어 있을 수 있다. 제1 캐쉬(282) 및 제2 캐쉬(284)는 각각 외부 메모리(288) 내에 저장된 데이터의 일부를 캐슁할 수 있다. 레이 추적에 관련된 데이터는 버스(286)를 통해 제1 캐쉬(282) 및 외부 메모리(288) 간에서 전송될 수 있으며, 제2 캐쉬(284) 및 외부 메모리(288) 간에서 전송될 수 있다. 여기서, 제1 캐쉬(282) 내에 저장되는 데이터는 AS(130)의 일부일 수 있고, 제2 캐쉬(284) 내에 저장되는 데이터는 기하 데이터(135)의 일부일 수 있다.
제1 캐쉬(282)는 후술될 TRV 유닛의 캐쉬에게 레이의 탐색을 처리하기 위해 필요한 데이터를 제공할 수 있다. 제2 캐쉬(284)후술될 IST 유닛의 캐쉬에게 레이의 교차 검사를 처리하기 위해 필요한 데이터를 제공할 수 있다. 따라서, TRV 유닛의 캐쉬 및 IST 유닛의 캐쉬는 각각 레벨 1(level 1) 캐쉬일 수 있고, 제1 캐쉬(282) 및 제2 캐쉬(284)는 각각 레벨 2 캐쉬일 수 있다.
하기에서, 레이 추적 유닛(220)의 구성요소가 설명된다.
레이 추적 유닛(220)은 관리 유닛(230), 복수 개의 TRV 유닛들, 제2 버퍼(250), 하나 이상의 IST 유닛들 및 제3 버퍼(270)를 포함할 수 있다.
도 3에서, 복수 개의의 TRV 유닛들로서, 제1 TRV 유닛(240-1), 제2 TRV 유닛(240-2) 및 제N TRV 유닛(240-3)이 도시되었다. 여기서, N은 2 이상의 정수일 수 있다. 하나 이상의 IST 유닛들로서, 제1 IST 유닛(260-1), 제2 IST 유닛(260-2) 및 제M IST 유닛(260-3)이 도시되었다. 여기서, M은 1 이상의 정수일 수 있다.
레이 추적 유닛(220)은 트리 AS의 루트 노드로부터 하위의 노드로의 계층적인 탐색을 통해, 트리 AS 내의 레이가 가장 먼저 방문하는 리프(leaf) 노드를 검색할 수 있다. 상기의 검색에 의해 리프 노드가 방문되면, 레이 추적 유닛(220)은 1) 레이 및 2) 리프 노드에 대응하는 씬 객체의 프리미티브 간의 교차 검사를 할 수 있다. 여기서, 리프 노드에 대응하는 씬 객체의 프리미티브는 복수 개일 수 있다. 방문된 리프 노드 내에서 레이와 교차하는 프리미티브가 검색되지 않은 경우, 레이 추적 유닛(220)은 트리의 탐색을 계속하여 다른 리프 노드 내에서 레이와 교차하는 프리미티브를 검색할 수 있다. 상술된 탐색 및 교차 검사는 각각 TRV 유닛 및 IST 유닛에 의해 수행될 수 있다. 하나 이상의 IST 유닛들 각각은 트리 AS를 사용하여 프리미티브 및 레이 간의 교차 여부를 검사할 수 있다.
전술된 것과 같은 레이 추적의 특성 때문에, 레이 추적은 많은 연산들 및 높은 메모리 대역폭을 동시에 요구한다. 이러한 요구는, 방문 또는 교차 검사가 수행될 때마다, 외부 메모리(288)로부터 노드의 데이터, 프리미티브의 데이터가 패치(fetch)된 후 상기의 연산들이 수행되어야 하는 것에 기인할 수 있다. 따라서, 탐색 및 교차 검사에 각각 사용되는 TRV 유닛 및 IST 유닛은 각각 캐쉬를 포함할 수 있다. 노드의 데이터 또는 프리미티브의 데이터가 캐쉬 내에 존재하지 않는 경우, 외부 메모리(288)로부터 데이터가 패치될 때 긴 지연시간(latency)이 발생할 수 있고, 레이 추적의 성능이 저하될 수 있다.
관리 유닛(230)은 레이 생성 유닛(210) 및 복수 개의 TRV 유닛들 간의 레이의 전송을 제어할 수 있다. 관리 유닛(230)은 레이 추적 유닛(220)으로 입력되는 레이를 저장할 수 있으며, 입력 레이를 복수 개의 TRV 유닛들 중 하나의 TRV 유닛으로 분배할 수 있다.
관리 유닛(230)은 GPU가 처리하는 레이의 데이터를 복수 개의 TRV 유닛들에게 분배할 수 있다.
복수 개의 TRV 유닛들 각각은 전체 공간의 일부분에 대한 레이 탐색을 처리할 수 있다. 여기서, 전체 공간은 레이 추적이 수행되는 공간일 수 있다. 복수 개의 TRV 유닛들이 각각 레이 탐색을 수행하는 전체 공간의 일부분들은 서로 상이할 수 있고, 서로 중첩되지 않을 수 있다. 즉, 전체 공간의 일부분이 TRV 유닛에게 할당될 수 있으며, 복수 개의 TRV 유닛들 각각에게 할당된 전체 공간의 일부분들은 서로 상이할 수 있다. 전체 공간은 복수 개의 일부분들로 공간적으로 분할될 수 있다.
복수 개의 TRV 유닛들 각각은 자신에게 할당된 전체 공간의 일부분에 대한 레이 탐색을 처리할 수 있다. 레이 탐색은 레이가 레이 추적이 수행되는 전체 공간 중 어느 일부분 내에서 탐색되고 있는가에 따라서 복수 개의 TRV 유닛들 중 상기의 일부분이 할당된 TRV 유닛에 의해 처리될 수 있다.
복수 개의 TRV 유닛들 각각은 레이 탐색을 처리하기 위한 캐쉬를 포함할 수 있다. 상기의 캐쉬는 도 2를 참조하여 전술된 레벨 1 캐쉬일 수 있다.
레이 추적 유닛(220)으로 입력되는 레이는 하나 이상일 수 있다. 하나 이상의 레이들은 순차적으로 레이 추적 유닛(220)으로 입력될 수 있다.
복수 개의 TRV 유닛들 중 하나의 TRV 유닛으로 입력되는 레이는, 1) 레이 생성 유닛(210)에 의해 새롭게 생성된 레이, 2) 복수 개의 TRV 유닛들에 의해 탐색이 처리되고 있는 레이 또는 3) 하나 이상의 IST 유닛들에 의해 교차 검사가 처리된 레이일 수 있다. 복수 개의 TRV 유닛들 중 하나의 TRV 유닛에 의해 출력되는 레이는 1) 복수 개의 TRV 유닛들 중 다른 하나의 TRV 유닛, 2) 하나 이상의 IST 유닛들 중 제2 버퍼(250)에 의해 선택된 IST 유닛 또는 3) 쉐이딩 유닛(290)으로 입력될 수 있다.
제3 버퍼(270)는 쉐이딩 유닛(290)으로 출력될 레이를 저장할 수 있다. 제3 버퍼(270) 내에 저장된 레이는 하나 이상일 수 있다. 레이의 탐색이 완료되면, 레이의 데이터는 TRV 유닛으로부터 쉐이딩 유닛(290)으로 전송될 수 있다.
쉐이딩 유닛(290)으로 출력될 레이는 제3 버퍼(270) 내에서 출력을 대기할 수 있다.
제2 버퍼(250)는 복수 개의 TRV 유닛들 및 하나 이상의 IST 유닛들 간에서 레이의 전송을 중재할 수 있다. 레이가 리프 노드에 도달하면, 레이에 대한 교차 검사가 수행될 수 있다. 따라서, 레이는 TRV 유닛으로부터 출력되어, 제2 버퍼(250)를 거쳐, IST 유닛으로 입력될 수 있다. 말하자면, 제2 버퍼(250)는 복수 개의 TRV 유닛들 및 하나 이상의의 IST 유닛들 간의 레이의 데이터의 흐름(flow)을 제어할 수 있다.
하나 이상의 IST 유닛들은 레이의 교차 검사를 처리할 수 있다. 교차 검사가 처리되는 레이는 복수 개의 TRV 유닛들에 의해 트리 가속 구조 내에서 탐색된 레이일 수 있다.
레이는 하나 이상의 공간을 통과할 수 있다. 따라서, 레이에 대한 교차 검사가 수행된 후에도, 레이에 대한 탐색이 계속될 수 있다. 하나 이상의 IST 유닛들 중 하나의 IST 유닛에 의해 출력되는 레이는 복수 개의의 TRV 유닛들 중 하나의 TRV 유닛으로 입력될 수 있다.
도 3는 일 실시예에 따른 그래픽 처리 장치 및 그래픽 처리 장치와 관련된 개체들의 구조도이다.
도 2에서, 레이 추적 유닛(220)으로 입력된 레이는 관리 유닛(230)에 의해 복수 개의 TRV 유닛들 중 하나의 TRV 유닛들로 분배될 수 있다. 이후, 레이의 데이터는 트리 AS의 탐색이 진행됨에 따라 복수 개의 TRV 유닛들 및 하나 이상의 IST 유닛들에 의해 처리된다.
도 2에서 도시된 것과는 달리, TRV 유닛 또는 IST 유닛으로부터 출력된 레이는 관리 유닛(230)으로 다시 입력될 수 있고, 관리 유닛(230)의 분배를 통해 복수 개의 TRV 유닛들 중 하나의 TRV 유닛으로 입력될 수 있다. 즉, 관리 유닛(230)은 레이에 대한 탐색이 TRV 유닛에 의해 반복될 때마다 복수 개의 TRV 유닛들 중 어떤 TRV 유닛이 상기의 탐색을 처리해야할 지를 결정할 수 있다.
도 4는 일 예에 따른 트리 AS의 분할 및 핏 포인트를 설명한다.
도 4에서, 트리 AS(400)가 도시되었다. 트리 AS(400)는 이진(binary) 트리일 수 있다.
각 노드 내의 숫자는 상기의 노드가 루트 노드인 서브-트리가 갖는 기하의 크기를 정량화하여 나타낸 것일 수 있다. 서브-트리가 갖는 기하의 크기는 서브-트리 내의 노드들이 갖는 기하의 크기들의 합일 수 있다.
예컨대, 리프 노드가 갖는 기하의 크기는 리프 노드에 대응하는 하나 이상의 프리미티브들의 개수일 수 있다. 리프 노드에 대응하는 프리미티브는 리프 노드가 나타내는 공간 내에 위치하는 씬 객체의 프리미티브일 수 있다. 프리미티브는 삼각형일 수 있다. 말하자면, 리프 노드 내의 숫자는 리프 노드에 대응하는 삼각형들의 개수일 수 있다.
예컨대, 내부 노드 내의 숫자는 1) 상기의 내부 노드가 루트 노드인 서브-트리의 노드들이 갖는 기하들의 합의 크기 및 2) 상기의 내부 노드가 루트 노드인 서브-트리의 노드들의 개수의 합일 수 있다. 도 4에서, 내부 노드 내에서 표시된 괄호 내의 첫 번째 숫자는 상기의 내부 노드가 루트 노드인 서브-트리의 노드들이 갖는 기하들의 합일 수 있다. 두 번째 숫자는 상기의 내부 노드가 루트 노드인 서브-트리의 노드들의 개수의 합일 수 있다.
노드의 기하 개수는 전술된 1) 상기의 내부 노드가 루트 노드인 서브-트리의 노드들이 갖는 기하들의 합의 크기 및 2) 상기의 내부 노드가 루트 노드인 서브-트리의 노드들의 개수의 합일 수 있다.
관리 유닛(230)은 트리 AS(400) 내에서 하나 이상의 핏 포인트(Fit Point; FP)를 결정할 수 있다. 여기서, FP는 트리 AS(400) 내의 서브-트리의 루트 노드일 수 있다. 또는, FP는 트리 AS(400) 내의 노드를 가리킬 수 있다. 도 4에서, 제1 FP(410), 제2 FP(420), 제3 FP(430) 및 제4 FP(440)가 도시되었다. 또한, 제1 서브-트리(412), 제2 서브-트리(422), 제3 서브-트리(432) 및 제4 서브-트리(442)가 도시되었다. 제1 서브-트리(412)의 루트 노드(413), 제2 서브-트리(422)의 루트 노드(423), 제3 서브-트리(432)의 루트 노드 및 제4 서브-트리(442)의 루트 노드는 각각 제1 FP(410), 제2 FP(420), 제3 FP(430) 및 제4 FP(440)에 대응할 수 있다. 또는, 제1 서브-트리(412)의 루트 노드(413), 제2 서브-트리(422)의 루트 노드(423), 제3 서브-트리(432)의 루트 노드 및 제4 서브트리(442)의 루트 노드는 각각 제1 FP(410), 제2 FP(420), 제3 FP(430) 및 제4 FP(440)일 수 있다.
FP는 TRV 유닛에게 할당되는 서브-트리의 루트 노드일 수 있다. 여기서, 서브-트리가 TRV 유닛에게 할당된다는 것은, TRV 유닛이 상기의 서브-트리 내에서 이루어지는 레이의 탐색을 처리한다는 것을 의미할 수 있다. 예컨대, 레이의 탐색이 특정한 서브-트리 내의 노드 내에서 이루어지는 경우, 관리 유닛(230)은 복수 개의 TRV 유닛들 중 상기의 특정한 서브-트리가 할당된 TRV 유닛에게 레이의 데이터를 전송할 수 있다. 복수 개의 TRV 유닛들 각각은 레이 추적에 사용되는 트리 AS(400) 중 할당된 FP가 나타내는 영역에 대한 레이의 탐색을 처리할 수 있다. FP가 나타내는 영역은 FP에 대응하는 노드가 루트 노드인 트리 AS의 서브-트리일 수 있다.
FP는 TRV 유닛의 캐쉬가 저장할 수 있는 데이터의 용량에 기반하여 결정될 수 있다. 특정한 FP가 루트 노드인 서브-트리에 대한 레이의 탐색은 복수 개의 TRV 유닛들 중 하나의 TRV 유닛에게 할당될 수 있다. TRV 유닛이 서브-트리에 대한 레이의 탐색을 효율적으로 수행하기 위해서는, TRV 유닛의 캐쉬가 서브-트리에 대한 레이의 탐색을 위해 요구되는 데이터를 저장할 수 있어야 한다.
레이의 탐색을 위해 요구되는 데이터는 프리미티브의 데이터를 포함할 수 있다. 앞서 설명된 것과 같이, 프리미티브는 리프 노드에 대응한다. 예컨대, 서브-트리 내의 리프 노드가 더 많은 개수의 프리미티브들에 대응할수록, 프리미티브의 데이터를 저장하기 위해 더 큰 캐쉬가 요구될 수 있다. 또한, 레이의 탐색을 위해 요구되는 데이터는 서브-트리 내의 노드들을 식별하기 위한 데이터를 포함할 수 있다. 예컨대, 서브-트리 내의 노드들의 개수가 더 많을수록, 서브-트리 내의 노드들을 식별하기 위한 데이터를 저장하기 위해 더 큰 캐쉬가 요구될 수 있다.
말하자면, FP는 TRV 유닛의 캐쉬가 관리할 수 있는 서브-트리의 루트 노드일 수 있다. TRV 유닛의 캐쉬가 서브-트리를 관리할 수 있다는 것은, TRV 유닛의 캐쉬가 서브-트리 내에서의 레이의 탐색을 수행하기 위해 요구되는 데이터를 캐슁할 수 있을 정도의 크기를 갖는다는 것을 의미할 수 있다.
FP는 TRV 유닛의 캐쉬가 저장할 수 있는 기하들의 최대 개수에 기반하여 결정될 수 있다. RV 유닛의 캐쉬가 저장할 수 있는 기하들의 최대 개수를 최대 기하 개수로 명명한다. 도 4에서, 캐쉬가 저장할 수 있는 기하들의 최대 개수는 25인 것으로 설정되었다.
관리 유닛(230)은 노드의 기하 개수 및 최대 기하 개수를 비교하여, 기하 개수가 최대 기하 개수 이하인 노드에 대해 대응하는 FP를 생성할 수 있다. 또는, 관리 유닛(230)은 노드의 기하 개수 및 최대 기하 개수를 비교하여, 기하 개수가 최대 기하 개수보다 적은 노드를 FP로 결정할 수 있다.
관리 유닛(230)은 리프 노드로부터 루트 노드까지의 경로 내의 노드들 중 기하 개수가 최대 기하 개수 이하이고, 가장 큰 기하 개수를 갖는 노드를 FP로 결정할 수 있다.
예컨대, 노드(413)로부터 루트 노드(401)까지의 경로들 중 기하 개수가 최대 기하 개수 이하인 노드들은 노드(404) 및 노드(413)이다. 노드(404) 및 노드(413) 중 가장 큰 기하 개수를 갖는 노드는 노드(413)이다. 따라서, 노드(413)가 제1 FP(410)가 될 수 있으며, 또는 노드(413)에 대응하는 제1 FP(410)가 생성될 수 있다.
또한, 노드(424)로부터 루트 노드(401)까지의 경로들 중 기하 개수가 최대 기하 개수 이하이면서, 가장 큰 기하 개수를 갖는 노드는 노드(423)이다. 따라서, 노드(413)가 제2 FP(420)가 될 수 있으며, 또는 노드(413)에 대응하는 제2 FP(420)가 생성될 수 있다. 생성된 제2 FP(420)에 대응하는 서브-트리(420)는 노드(425)를 포함한다. 따라서, 노드(425)에 대한 FP는 별도로 생성되지 않을 수 있다. 상술된 것과 같은 원리로, 제3 FP(430) 및 제4 FP(440)도 생성될 수 있다. 제1 FP(410), 제2 FP(420), 제3 FP(430) 및 제4 FP(440) 각각에 대응하는 노드의 기하 개수는 최대 기하 개수 이하일 수 있으며, 대응하는 노드의 부모 노드의 기하 개수는 최대 기하 개수보다 더 클 수 있다.
상술된 것처럼, FP는 1) 서브-트리의 하나 이상의 리프 노드들에 대응하는 하나 이상의 프리미티브들의 개수 및 2) 상기의 서브-트리의 하나 이상의 노드들의 개수 중 하나 이상에 기반하여 결정될 수 있다. 여기서, 서브-트리는 FP에 대응하는 노드가 루트 노드인 트리 AS(400)의 서브-트리일 수 있다.
또한, FP는 1) FP에 관련된 데이터의 크기 및 2) TRV 유닛의 캐쉬의 크기에 기반하여 결정될 수 있다. 여기서, FP에 관련된 데이터는 FP에 대응하는 노드가 루트 노드인 서브-트리에 대한 레이의 탐색을 위해 요구되는 데이터일 수 있다.
말하자면, FP는, TRV 유닛의 캐쉬에 의해 관리될 수 있는, 가능한 큰 크기의 서브-트리가 TRV 유닛에게 할당될 수 있게 하는 정보로 간주될 수 있다. FP 및 서브-트리에 의해, TRV 유닛은 국부화된 레이의 탐색을 수행할 수 있다.
관리 유닛(230)은 깊이 우선(depth-first) 순서(order)로 트리 AS(400)를 탐색함으로써 노드들 각각의 기하 개수를 계산할 수 있으며, FP를 결정할 수 있다.
FP의 생성 또는 결정이 완료되면, FP를 기준으로 레이의 탐색이 수행될 수 있다.
관리 유닛(230)은, 생성된 FP들을 기준으로, 전체 공간의 일부분들을 복소 개의 TRV 유닛들에게 할당할 수 있다. 말하자면, 전체 공간의 일부분들, FP들 또는 FP들에 대응하는 트리 AS(400)의 서브-트리들이 복수 개의 TRV 유닛들에게 할당될 수 있다.
도 1을 참조하여 전술된 것처럼, 트리 AS(400) 내의 노드는 전체 공간의 일부분에 대응한할 수 있다. 또한, 노드가 루트 노드인 서브-트리는 전체 공간의 일부분에 대응할 수 있다. 따라서, 복수 개의 TRV 유닛들 각각이 전체 공간의 일부분에 대한 레이 탐색을 처리할 때, 레이 추적에 사용되는 트리 가속 구조(400) 내의 노드들 중 하나의 노드는 상기의 일부분을 나타낼 수 있다. 상기의 일부분은 BB 또는 AABB일 수 있다.
FP를 통해, 복수 개의 TRV 유닛들 각각은 전체 공간의 일부분을 나타내는 서브-트리에 대응할 수 있다. 서브-트리는 레이 추적에 사용되는 트리 AS의 일부일 수 있다. 서브-트리의 루트 노드는 FP일 수 있으며, FP에 대응할 수 있다.
관리 유닛(230)은 레이의 데이터를 복수 개의 TRV 유닛들 중 레이가 방문하는 노드를 포함하는 서브-트리에 대응하는 TRV 유닛에게 분배할 수 있다.
서브-트리는 하나 이상일 수 있고, 하나 이상의 서브-트리들은 각각 트리 AS(400)에서 중첩되지 않을 수 있다.
FP들은 각각 복수 개의 TRV 유닛들 중 하나의 TRV에 매핑될 수 있다. 상기의 매핑에 의해 FP 및 TRV 간의 대응 관계가 생성될 수 있다. 관리 유닛(230)은 상기의 매핑을 나타내는 FP 테이블을 관리할 수 있다. FP 테이블은 룩업(look-up) 테이블일 수 있다. 관리 유닛(230)은 FP 테이블을 사용하여 레이의 데이터를 라우팅할 수 있다. 즉, 관리 유닛(230)은 FP 테이블을 사용하여 레이의 데이터를 복수 개의 TRV 유닛들 중 하나의 TRV 유닛에게 분배할 수 있다.
레이의 데이터는 레이 생성 유닛(210)에 의해 생성될 수 있다. 레이 생성 유닛(210)에 의해 레이는 FP들에 대응하는 서브-트리들 내에서 탐색되지 않을 수 있다. 에컨대, 도 4에서, 루트 노드는 어떤 서브-트리들에 의해서도 포함되지 않을 수 있다. 따라서, 초기에 생성된 레이의 데이터는 관리 유닛(230)에 의해 복수 개의 TRV들 중 임의의 TRV로 분배될 수 있다. 레이가 특정한 FP에 대응하는 노드 또는 서브-트리에 도달할 때까지, 레이의 데이터가 분배된 TRV 유닛에 의해 레이의 탐색이 수행될 수 있다. TRV 유닛은 FP 테이블을 참조하여 레이가 도달한 FP에 대응하는 서브-트리가 할당된 TRV 유닛을 확인할 수 있다. FP 테이블 내에 레이가 도달한 FP 또는 레이가 도달한 노드에 대응하는 FP가 존재하면, TRV 유닛은 상기의 FP에 대응하는 서브-트리가 할당된 TRV 유닛으로 레이의 데이터를 라우팅할 수 있다. 새로운 TRV 유닛은 라우팅된 레이의 데이터에 대한 레이의 탐색을 계속하여 수행할 수 있다. 상술된 과정을 통해, 특정한 서브-트리 내에서 발생하는 레이의 탐색이 특정한 TRV 유닛에서 집중적으로 수행될 수 있다. 따라서, TRV 유닛의 캐쉬 히트 비율(ratio)가 향상될 수 있다.
레이가 리프 노드를 방문하고, 레이에 대한 교차 검사가 완료되면 서브-트리에 대한 탐색이 완료될 수 있다. 이후, 레이는 상위 노드를 방문할 수 있고, 또 다른 FP에 대응하는 노드를 방문할 수 있다. 레이의 데이터는 새로 방문한 노드의 서브-트리가 할당된 TRV 유닛에 의해 처리될 수 있다.
상술된 라우팅 및 상위 노드의 방문을 위해 복수 개의 TRV 유닛들은 레이의 탐색을 위한 전역 스텍(stack)을 공유할 수 있다.
도 5 및 도 6은 일 예에 따른 큐를 사용하는 레이의 탐색을 설명한다.
도 5는 일 예에 따른 레이의 탐색의 데이터를 큐에 저장하는 방법을 설명한다.
예컨대, FP들의 개수 또는 서브-트리들의 개수가 복수 개의 TRV 유닛들의 개수보다 더 큰 경우, 모든 서브-트리들에 대한 레이의 탐색들이 동시에 처리되지 못할 수 있다. 즉, 특정한 서브-트리 내에서의 레이의 탐색은 복수 개의 TRV 유닛들에 의해 처리되지 못할 수 있다.
예컨대, 도 5에서 도시된 것처럼, FP가 8 개 있고, TRV 유닛이 4개 있는 경우, 제5 FP 내지 제8 FP는 TRV 유닛에 할당되지 못할 수 있다. 따라서, 제5 FP 내지 제8 FP에 대응하는 서브-트리들에 대한 레이의 탐색은 나중으로 미뤄질(deferred)질 수 있다.
제5 FP가 TRV 유닛에 매핑되지 않은 경우, 레이가 제5 FP에 대응하는 노드를 방문했을 때, FP 테이블 내에는 제5 FP가 존재하지 않을 수 있다. 따라서, 유휴 TRV 유닛이 생겨나기 전까지는, 제5 FP 내지 제8 FP 각각에 대응하는 서브-트리에 대한 레이의 탐색들은 처리될 수 없다. 상기의 탐색들을 미루기 위해, TRV는 레이의 데이터를 큐(500) 내에 저장할 수 있다. 즉, 하나 이상의 서브-트리들 중 복수 개의 TRV 유닛에 대응하지 않는 제1 서브-트리의 노드를 방문하는 레이의 데이터는 큐(500) 내에 저장될 수 있다.
도 6은 일 예에 따른 큐에 저장된 레이의 데이터를 처리하는 방법을 설명한다.
FP 및 TRV 유닛 간의 매핑은 동적으로 변경될 수 있다. 예컨대, 특정한 서브-트리 내에 레이가 존재하지 않으면, 관리 유닛(230)는 상기의 서브-트리가 할당된 TRV 유닛에게 다른 서브-트리를 할당할 수 있다. TRV 유닛에게 다른 서브-트리가 할당되는 FP 테이블이 갱신될 수 있다.
도 6에서, 제1 TRV 유닛 내지 제4 TRV 유닛은 각각 제5 FP 내지 제8 FP에 대응한다. 즉, 제1 TRV 유닛 내지 제4 TRV 유닛은 각각에게 새로운 서브-트리가 할당되었다.
TRV 유닛에게 새로운 서브-트리가 할당되면, 큐(500) 내의 레이의 데이터가 디큐(dequeue)될 수 있다. 디큐된 레이의 데이터는 레이가 방문하는 노드를 포함하는 서브-트리가 할당된 TRV 유닛에 의해 처리될 수 있다. 예컨대, 관리 유닛(230)은 제5 FP에 대응하는 서브-트리가 할당된 제1 TRV 유닛에게 큐(500) 내의 제1 레이의 데이터 및 제2 레이의 데이터를 분배할 수 있다. 여기서, 제1 레이 및 제2 레이는 각각 제5 FP에 대응하는 서브-트리 내의 노드를 방문할 수 있다.
예컨대, 관리 유닛(230)는 복수 개의 TRV 유닛들 중 제1 TRV 유닛을 제1 서브-트리에게 할당할 수 있고, 큐(500) 내에 저장된 제1 서브-트리의 노드를 방문하는 레이의 데이터를 제1 TRV 유닛에게 분배할 수 있다.
도 7은 일 예에 따른 서브-트리에 다수의 TRV 유닛들이 할당되는 구성을 설명한다.
도 8에서, FP는 i 개이고, TRV 유닛은 개수 i+2 개이다. 제1 FP는 제1 TRV 유닛 및 제i+1 TRV 유닛에 대응한다.
FP들의 개수가 복수 개의 TRV 유닛들의 개수 이하인 경우, 모든 서브-트리들에 대한 레이의 탐색들이 동시에 처리될 수 있다. 따라서, 도 5 및 도 6를 참조하여 전술된 큐(500)를 사용하는 방법이 불필요할 수 있다. 또한, 하나의 FP 또는 서브-트리가 다수의 TRV 유닛들에 할당됨으로써 레이의 탐색이 가속될 수 있다. 하나의 FP를 다수의 TRV 유닛들에게 매핑하기 위해, FP 테이블은 다중 매핑을 지원할 수 있다.
하나 이상의 서브-트리들 중 제2 서브-트리는 복수 개의 TRV 유닛들 중 2 개 이상의 TRV 유닛들에 대응할 수 있다. 관리 유닛(230)은 부하 균형에 기반하여 제2 서브-트리에 대응하는 2 개 이상의 TRV 유닛들 중 제2 서브-트리의 노드를 방문하는 레이의 데이터를 전달할 TRV 유닛을 결정할 수 있다. 관리 유닛(230)은 2 개 이상의 TRV 유닛들 각각의 입력 버퍼들의 상태에 기반하여 레이의 데이터를 전달할 TRV 유닛을 결정할 수 있다. 관리 유닛(230)은 2 개 이상의 TRV 유닛들 중 입력 버퍼 내의 레이의 데이터의 개수가 더 적은 TRV 유닛에게 제2 서브-트리의 노드를 방문하는 레이의 데이터를 전달할 수 있다.
도 8은 일 예에 따른 2차 레이 처리 방법의 흐름도이다.
단계(810)에서, 레이 생성 유닛(210)은 하나 이상의 주 레이들을 생성할 수 있다.
단계(820)에서, 레이 추적 유닛(220)은 생성된 하나 이상의 주 레이들 각각에 대한 레이 추적을 처리할 수 있다.
하나 이상의 IST 유닛이 주 레이에 대한 교차 검사를 수행하면, 주 레이의 교차 점이 발생할 수 있다. 즉, 주 레이의 교차 검사에 의해 교차 점이 생성될 수 있다.
레이 추적 유닛(220)는 교차 검사에 의해 생성된 교차 점을 저장할 수 있다. 교차 검사에 의해 생성된 교차 점은 하나 이상의 IST 유닛들 별로 보관될 수 있다.
단계(830)에서, 하나 이상의 주 레이들에 대한 처리가 모두 완료되면 레이 생성 유닛(230)은 하나 이상의 2차 레이들을 생성할 수 있다. 레이 생성 유닛(230)은 저장된 교차 점을 사용하여 하나 이상의 2차 레이들을 생성할 수 있다. 즉, 하나 이상의 주 레이들에 대한 레이 탐색이 완료되면, 레이 생성 유닛(210)은 교차 점에 대한 레이 생성을 수행함으로써 하나 이상의 2차 레이들을 일괄적으로 생성할 수 있다.
단계(840)에서, 레이 추적 유닛(220)은 생성된 2차 레이에 대한 레이 추적을 처리할 수 있다.
도 9는 일 실시예에 따른 레이 추적을 처리하는 그래픽 처리 방법의 흐름도이다.
단계(910)에서, GPU는 트리 AS(400)을 생성할 수 있다.
단계(920)에서, 레이 생성 유닛(210)은 레이를 생성할 수 있다. 레이의 생성은 레이의 데이터를 생성하는 것을 의미할 수 있다.
단계(930)에서, 관리 유닛(230)은 생성된 레이의 데이터를 복수 개의 TRV 유닛들에게 분배할 수 있다. 복수 개의 TRV 유닛들 각각은 전체 공간의 일부분에 대한 레이 탐색을 처리할 수 있다.
레이 추적에 사용되는 트리 AS 내의 노드는 상기의 일부분을 나타낼 수 있다. 복수 개의 TRV 유닛들 각각은 전체 공간의 일부분을 나타내는 서브-트리에 대응할 수 있다. 서브-트리는 레이 추적에 사용되는 트리 AS(400)의 일부일 수 있다.
관리 유닛(230)은 레이의 데이터를 복수 개의 TRV 유닛들 중 레이가 방문하는 노드를 포함하는 서브-트리에 대응하는 TRV 유닛에게 분배할 수 있다.
단계(940)에서, 복수 개의 TRV 유닛들은 레이의 탐색을 처리할 수 있다.
단계(950)에서, 하나 이상의 IST 유닛들은 레이의 교차 검사를 처리할 수 있다.
단계(960)에서, 쉐이딩 유닛(290)은 레이에 대응하는 픽셀에 대한 쉐이딩을 처리할 수 있다.
앞서 도 1 내지 도 8을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
210: 레이 생성 유닛
220: 레이 추적 유닛
290: 쉐이딩 유닛

Claims (20)

  1. 레이 추적을 처리하기 위한 그래픽 처리 장치에 있어서,
    각각이 전체 공간의 일부분(sub-division)에 대한 레이를 탐색하도록 구성되는 탐색 유닛들; 및
    상기 그래픽 처리 장치가 처리하는 레이의 데이터를 상기 탐색 유닛들에게 분배하고, 핏 포인트들을 상기 탐색 유닛들에 할당하되, 상기 핏 포인트들의 개수가 상기 탐색 유닛들의 개수 보다 적은 경우, 상기 핏 포인트들 중 적어도 하나를 상기 탐색 유닛들 중 적어도 둘에 할당하도록 구성되는 관리 유닛을 포함하는 그래픽 처리 장치.
  2. 제1항에 있어서,
    상기 전체 공간은 복수의 일부분으로 나뉘고,
    상기 핏 포인트들의 개수가 상기 탐색 유닛들의 개수보다 적은 경우, 상기 탐색 유닛들은 동시에 각각 상기 전체 공간의 상기 복수의 일부분에 대한 레이를 탐색하도록 구성되는 그래픽 처리 장치.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 탐색 유닛들은 레이 추적에 사용되는 트리 가속 구조에 포함되는 상기 핏 포인트들이 나타내는 영역들에 대한 레이들을 탐색하고,
    상기 핏 포인트들이 나타내는 상기 영역들은 상기 핏 포인트들에 대응하는 노드들을 루트 노드들로서 각각 포함하고, 상기 트리 가속 구조의 서브-트리들에 각각 대응하는 그래픽 처리 장치.
  7. 제6항에 있어서,
    상기 핏 포인트들은 상기 서브-트리들에 포함되는 하나 이상의 리프 노드들에 대응하는 하나 이상의 프리미티브들의 개수 및 상기 서브-트리들에 포함되는 하나 이상의 노드들의 개수 중 적어도 하나에 기반하여 결정되는 그래픽 처리 장치.
  8. 제6항에 있어서,
    상기 핏 포인트들은 상기 핏 포인트들에 관련되는 데이터의 크기 및 TRV 유닛에 포함되는 캐쉬의 크기에 기반하여 결정되고,
    상기 탐색 유닛들 각각은 상기 캐쉬를 포함하는 그래픽 처리 장치.
  9. 제1항에 있어서,
    상기 탐색 유닛들은 상기 일부분을 나타내는 서브-트리들에 각각 대응하되, 상기 서브-트리들 각각은 레이 추적에 사용되는 트리 가속 구조에 포함되고,
    상기 관리 유닛은 상기 그래픽 처리 장치가 처리하는 레이의 데이터를 상기 탐색 유닛들 중 상기 그래픽 처리 장치가 처리하는 레이가 방문하는 노드를 포함하는 서브-트리에 대응하는 탐색 유닛에게 분배하고, 상기 서브-트리들 중 상기 탐색 유닛들에 대응하지 않는 제1 서브-트리에 포함되는 노드를 방문하는 레이의 데이터를 큐 내에 저장하도록 구성되는 그래픽 처리 장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제9항에 있어서,
    상기 관리 유닛은 상기 탐색 유닛들 중 제1 탐색 유닛을 상기 제1 서브-트리에게 할당하고, 상기 큐 내에 저장된 상기 제1 서브-트리의 노드를 방문하는 레이의 데이터를 상기 제1 탐색 유닛에게 분배하도록 구성되는 그래픽 처리 장치.
  14. 제9항에 있어서,
    상기 서브-트리들 중 제2 서브-트리는 상기 탐색 유닛들 중 2 개 이상의 탐색 유닛들에 대응하고,
    상기 관리 유닛은 부하 균형에 기반하여, 상기 제2 서브-트리에 대응하는 상기 2 개 이상의 탐색 유닛들 중에서 상기 제2 서브-트리의 노드를 방문하는 레이의 데이터를 전달하기 위한 탐색 유닛을 결정하는 그래픽 처리 장치.
  15. 제1항에 있어서,
    상기 그래픽 처리 장치가 처리하는 레이의 교차 검사를 처리하도록 구성되는 교차 검사 유닛들을 더 포함하되,
    상기 그래픽 처리 장치가 처리하는 레이는 상기 탐색 유닛들에 의해 트리 가속 구조 내에서 탐색되는 그래픽 처리 장치.
  16. 제15항에 있어서,
    상기 교차 검사에 의해 생성되는 교차 점은 상기 교차 검사 유닛들 별로 보관되며, 주 레이들에 대한 레이 탐색이 완료되면, 상기 교차 점에 대한 레이들이 생성됨에 따라 2차 레이들이 일괄적으로 생성되는 그래픽 처리 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020120102709A 2012-09-17 2012-09-17 레이 추적의 스케쥴링을 위한 장치 및 방법 KR102080851B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120102709A KR102080851B1 (ko) 2012-09-17 2012-09-17 레이 추적의 스케쥴링을 위한 장치 및 방법
US13/902,157 US9367949B2 (en) 2012-09-17 2013-05-24 Apparatus and method for scheduling of ray tracing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120102709A KR102080851B1 (ko) 2012-09-17 2012-09-17 레이 추적의 스케쥴링을 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140036519A KR20140036519A (ko) 2014-03-26
KR102080851B1 true KR102080851B1 (ko) 2020-02-24

Family

ID=50273992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120102709A KR102080851B1 (ko) 2012-09-17 2012-09-17 레이 추적의 스케쥴링을 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US9367949B2 (ko)
KR (1) KR102080851B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022080580A1 (ko) * 2020-10-13 2022-04-21 세종대학교산학협력단 성능이 개선된 레이 트레이싱 장치 및 방법

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9142056B1 (en) * 2011-05-18 2015-09-22 Disney Enterprises, Inc. Mixed-order compositing for images having three-dimensional painting effects
KR102197067B1 (ko) * 2014-04-02 2020-12-30 삼성전자 주식회사 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
US9607425B2 (en) * 2014-10-17 2017-03-28 Qualcomm Incorporated Ray-box intersection testing using dot product-based fixed function logic
KR20160071774A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체
US9805498B2 (en) * 2015-02-06 2017-10-31 Intel Corporation Method and apparatus for direct and interactive ray tracing of a subdivision surface
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
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
US10043303B2 (en) * 2016-03-30 2018-08-07 Intel IP Corporation Methods and apparatus for more efficient ray tracing of instanced geometry
US10580189B2 (en) * 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
US10417807B2 (en) * 2017-07-13 2019-09-17 Imagination Technologies Limited Hybrid hierarchy of bounding and grid structures for ray tracing
US10699468B2 (en) 2018-06-09 2020-06-30 Adshir Ltd. Method for non-planar specular reflections in hybrid ray tracing
US10740952B2 (en) * 2018-08-10 2020-08-11 Nvidia Corporation Method for handling of out-of-order opaque and alpha ray/primitive intersections
US10937225B2 (en) * 2018-12-28 2021-03-02 Intel Corporation Cell primitive for unstructured volume rendering
KR102151443B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치
US11017581B1 (en) 2020-01-04 2021-05-25 Adshir Ltd. Method for constructing and traversing accelerating structures
KR102483023B1 (ko) * 2020-11-25 2022-12-30 한국전자통신연구원 빔 탐색을 통한 전력 전달 경로 선정 방법 및 장치
US11450059B1 (en) * 2021-08-26 2022-09-20 Nvidia Corporation Inverse transform sampling through ray tracing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7505043B2 (en) * 2004-08-30 2009-03-17 Qualcomm Incorporated Cache efficient rasterization of graphics data
US20080024489A1 (en) 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US8018457B2 (en) 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US20080122838A1 (en) 2006-09-27 2008-05-29 Russell Dean Hoover Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US7940266B2 (en) * 2006-10-13 2011-05-10 International Business Machines Corporation Dynamic reallocation of processing cores for balanced ray tracing graphics workload
KR100903777B1 (ko) 2007-08-24 2009-06-19 연세대학교 산학협력단 3차원 광선 추적 시스템에서 적응형 다중 계층 케이디-트리구조 알고리즘을 이용한 광선 추적 방법 및 장치
US8072460B2 (en) * 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
KR100939212B1 (ko) 2007-12-15 2010-01-28 한국전자통신연구원 광선 집합을 이용한 병렬 광선 추적 방법 및 시스템
JP5485257B2 (ja) 2008-03-21 2014-05-07 コースティック グラフィックス インコーポレイテッド レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ
US8963918B2 (en) 2008-09-30 2015-02-24 Microsoft Corporation Ray tracing on graphics hardware using kd-trees
KR101004110B1 (ko) 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
KR101076807B1 (ko) 2009-05-29 2011-10-25 주식회사 실리콘아츠 레이 트레이싱 장치 및 방법
US8189001B2 (en) * 2010-01-04 2012-05-29 Adshir Ltd. Method and apparatus for parallel ray-tracing employing modular space division
KR101697238B1 (ko) 2010-08-26 2017-01-17 삼성전자주식회사 영상 처리 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Paul Arthur Navr´atil et al., "Dynamic Ray Scheduling to Improve Ray Coherence and Bandwidth Utilization", IEEE/EG Symposium on Interactive Ray Tracing, 2007.09.10.*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022080580A1 (ko) * 2020-10-13 2022-04-21 세종대학교산학협력단 성능이 개선된 레이 트레이싱 장치 및 방법

Also Published As

Publication number Publication date
US20140078143A1 (en) 2014-03-20
US9367949B2 (en) 2016-06-14
KR20140036519A (ko) 2014-03-26

Similar Documents

Publication Publication Date Title
KR102080851B1 (ko) 레이 추적의 스케쥴링을 위한 장치 및 방법
CN109509138B (zh) 针对射线跟踪系统的减小的加速结构
JP5063695B2 (ja) 空間インデックスをトラバースする方法及びシステム
US8089481B2 (en) Updating frame divisions based on ray tracing image processing system performance
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US10553013B2 (en) Systems and methods for reducing rendering latency
US9043801B2 (en) Two-tiered dynamic load balancing using sets of distributed thread pools
US10529117B2 (en) Systems and methods for rendering optical distortion effects
EP2698768A2 (en) Method and apparatus for graphic processing using parallel pipeline
JP2022091849A (ja) 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
US20080122838A1 (en) Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US10553012B2 (en) Systems and methods for rendering foveated effects
KR20100128337A (ko) 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처
US20090073167A1 (en) Cooperative Utilization of Spacial Indices Between Application and Rendering Hardware
US20080079714A1 (en) Workload Distribution Through Frame Division in a Ray Tracing Image Processing System
US8102389B2 (en) Box casting using an integrated acceleration data structure
US9779537B2 (en) Method and apparatus for ray tracing
US20080079715A1 (en) Updating Spatial Index Partitions Based on Ray Tracing Image Processing System Performance
KR102151444B1 (ko) Mimd 기반의 t&i 스케줄링을 이용한 레이 트레이싱 장치
Günther et al. Distributed out‐of‐core stochastic progressive photon mapping
KR20150034062A (ko) 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치
US20240095993A1 (en) Reducing false positive ray traversal in a bounding volume hierarchy
US20240095995A1 (en) Reducing false positive ray traversal using ray clipping
US20240095994A1 (en) Reducing false positive ray traversal using point degenerate culling

Legal Events

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