KR102269648B1 - 성능이 개선된 레이 트레이싱 장치 및 방법 - Google Patents
성능이 개선된 레이 트레이싱 장치 및 방법 Download PDFInfo
- Publication number
- KR102269648B1 KR102269648B1 KR1020200132046A KR20200132046A KR102269648B1 KR 102269648 B1 KR102269648 B1 KR 102269648B1 KR 1020200132046 A KR1020200132046 A KR 1020200132046A KR 20200132046 A KR20200132046 A KR 20200132046A KR 102269648 B1 KR102269648 B1 KR 102269648B1
- Authority
- KR
- South Korea
- Prior art keywords
- ray tracing
- unit
- tree
- performance
- ray
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000000638 solvent extraction Methods 0.000 claims abstract description 14
- 238000009877 rendering Methods 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 20
- 238000005070 sampling Methods 0.000 claims description 13
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 27
- 230000001133 acceleration Effects 0.000 description 26
- 230000003068 static effect Effects 0.000 description 18
- 230000000694 effects Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000005286 illumination Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000003908 quality control method Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
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
본 발명은 성능이 개선된 레이 트레이싱(Ray Tracing) 장치 및 방법에 관한 것으로, 상기 장치는 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit); 상기 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit); 및 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어하는 컨트롤 유닛을 포함한다.
Description
본 발명은 3차원 그래픽 처리 기술에 관한 것으로, 보다 상세하게는 트리 형태의 가속 구조 구축 과정과 레이 트레이싱 과정에서의 성능을 비슷하게 조절하여 전체 영상 처리 성능을 높일 수 있는 성능이 개선된 레이 트레이싱 장치 및 방법에 관한 것이다.
3차원 그래픽 기술은 컴퓨팅에 저장된 기하학적 데이터(Geometric data)의 3차원 표현을 사용하는 그래픽 기술로, 오늘날 미디어 산업과 게임 산업을 포함하는 다양한 산업에서 널리 사용되고 있다. 일반적으로 3차원 그래픽 기술은 많은 연산량으로 인하여 별개의 고성능 그래픽 프로세서를 요구한다.
최근 프로세서의 발전에 따라 매우 현실적인 3차원 그래픽을 생성할 수 있는 레이 트레이싱(Ray Tracing) 기술이 연구되고 있다.
레이 트레이싱(Ray Tracing) 기술은 전역 조명(Global Illumination)에 따른 렌더링(Rendering)방식으로, 다른 물체에서 반사되거나 굴절된 빛이 현재 물체의 영상에 미치는 영향을 고려하여 반사, 굴절, 그림자 효과가 자연적으로 제공되기 때문에 현실감 있는 3D 영상을 생성할 수 있다.
본 발명의 일 실시예는 트리 형태의 가속 구조 구축 과정과 레이 트레이싱 과정에서의 성능을 비슷하게 조절하여 전체 영상 처리 성능을 높일 수 있는 성능이 개선된 레이 트레이싱 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 레이 트레이싱 과정을 모니터링하고 유닛들의 부하 상태에 따라 동작 성능을 선택적으로 제어함으로써 자원의 부족이나 낭비를 방지할 수 있는 성능이 개선된 레이 트레이싱 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 성능이 개선된 레이 트레이싱(Ray Tracing) 장치는 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit); 상기 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit); 및 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어하는 컨트롤 유닛을 포함한다.
상기 부하 상태는 상기 해당 유닛들 각각에서 처리되는 프레임 비율(Frame Rate)을 기초로 결정될 수 있다.
상기 공간 분할 구조체는 BVH(Bounding Volume Hierarchy) 및 KD 트리(K-Dimensional Tree)를 포함할 수 있다.
상기 트리 빌드 유닛의 동작 성능은 상기 BVH 또는 KD 트리의 구조에 대한 리프노드(Leaf Node)의 최대 프리미티브 수(Maximum Primitive Number) 및/또는 트리 깊이(Tree Depth)에 따라 변경될 수 있다.
상기 레이 트레이싱 유닛의 동작 성능은 레이 트레이싱의 레이 바운스(Ray Bounce), 쉐도우 레이(Shadow Ray)의 슈팅(Shooting) 개수, 라이트(Light) 개수, 안티 앨리어싱(Anti-Aliasing) 레벨 및 픽셀(Pixel) 당 샘플링(Sampling) 개수 중 적어도 하나에 따라 변경될 수 있다.
상기 컨트롤 유닛은 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛의 부하를 상호 비교한 결과에 따라 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 중 적어도 하나에 대해 동작 성능을 조절하기 위한 제어 파라미터를 생성할 수 있다.
상기 컨트롤 유닛은 상기 레이 트레이싱 유닛의 부하가 상기 트리 빌드 유닛의 부하보다 큰 경우에는 최대 프리미티브 수의 증가 및/또는 트리 깊이의 감소로 상기 공간 분할 구조체의 복잡도를 낮추는 방향으로 상기 트리 빌드 유닛의 동작 성능을 제어할 수 있다.
상기 컨트롤 유닛은 상기 레이 트레이싱 유닛의 부하가 상기 트리 빌드 유닛의 부하보다 작은 경우에는 렌더링 품질(Rendering Quality)을 낮추는 방향으로 상기 레이 트레이싱 유닛의 동작 성능을 제어할 수 있다.
상기 컨트롤 유닛은 상기 렌더링 품질을 낮추기 위한 제1 방법으로서 레이 바운스 감소, 쉐도우 레이의 슈팅 수 감소, 라이트 개수 감소, 안티 앨리어싱 레벨 감소 및 픽셀 당 샘플링 수 감소 중 적어도 하나에 관한 제1 파라미터를 상기 제어 파라미터로서 생성할 수 있다.
상기 컨트롤 유닛은 상기 해당 유닛들 간의 부하 차이에 따라 전체 감소량을 결정하고, 상기 제1 방법이 복수개 선택된 경우 기 설정된 우선순위에 따라 해당 방법들에 대해 상기 전체 감소량을 차등적으로 분배하여 상기 제1 파라미터를 생성할 수 있다.
상기 컨트롤 유닛은 상기 렌더링 품질을 낮추기 위한 제2 방법으로서 시선 민감 영역의 확장, 주변부 영역의 확장 및 색상 차이의 증가 중 어느 하나에 관한 제2 파라미터를 상기 제어 파라미터로서 생성할 수 있다.
실시예들 중에서, 성능이 개선된 레이 트레이싱 방법은 상기 트리 빌드 유닛에 의해, 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 단계; 상기 레이 트레이싱 유닛에 의해, 상기 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행하는 단계; 및 상기 컨트롤 유닛에 의해, 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어하는 단계를 포함한다.
상기 제어하는 단계는 상기 레이 트레이싱 유닛의 프레임 처리 속도를 확인하는 단계; 상기 트리 빌드 유닛의 프레임 처리 속도를 확인하는 단계; 단위 시간당 상기 레이 트레이싱 유닛에서 처리되는 프레임과 상기 트리 빌드 유닛에서 처리되는 프레임 비율(Frame Rate)을 산출하는 단계; 및 상기 산출된 프레임 비율을 기초로 상기 부하 상태를 판단하는 단계를 포함할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 성능이 개선된 레이 트레이싱 장치 및 방법은 트리 형태의 가속 구조 구축 과정과 레이 트레이싱 과정에서의 성능을 비슷하게 조절하여 전체 영상 처리 성능을 높일 수 있다.
본 발명의 일 실시예에 따른 성능이 개선된 레이 트레이싱 장치 및 방법은 레이 트레이싱 과정을 모니터링하고 유닛들의 부하 상태에 따라 동작 성능을 선택적으로 제어함으로써 자원의 부족이나 낭비를 방지할 수 있다.
도 1은 레이 트레이싱 과정의 일 실시예를 설명하는 도면이다.
도 2는 레이 트레이싱 과정에서 사용되는 가속 구조로서 KD 트리의 일 실시예를 설명하는 도면이다.
도 3은 본 발명에 따른 레이 트레이싱 장치를 설명하는 블록도이다.
도 4는 도 1의 레이 트레이싱 장치를 포함하는 레이 트레이싱 시스템을 설명하는 블록도이다.
도 5는 도 1에서 수행되는 레이 트레이싱 방법을 설명하는 흐름도이다.
도 6은 도 5의 구체적인 예를 설명하는 순서도이다.
도 2는 레이 트레이싱 과정에서 사용되는 가속 구조로서 KD 트리의 일 실시예를 설명하는 도면이다.
도 3은 본 발명에 따른 레이 트레이싱 장치를 설명하는 블록도이다.
도 4는 도 1의 레이 트레이싱 장치를 포함하는 레이 트레이싱 시스템을 설명하는 블록도이다.
도 5는 도 1에서 수행되는 레이 트레이싱 방법을 설명하는 흐름도이다.
도 6은 도 5의 구체적인 예를 설명하는 순서도이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 레이 트레이싱 과정의 일 실시예를 설명하는 도면이다.
도 1을 참조하면, 레이 트레이싱 장치에서 수행되는 레이 트레이싱 방식은 전역 조명(global illumination)에 따른 렌더링(rendering) 방식에 해당할 수 있다. 이는 다른 물체에서 반사되거나 굴절된 빛(Light)도 현재 물체의 영상에 영향을 준다는 것을 의미할 수 있다. 이로 인하여 반사, 굴절, 그림자 효과가 자연적으로 제공되기 때문에 현실감 있는 3D 영상을 생성할 수 있다.
레이 트레이싱 장치는 먼저 각 픽셀(pixel) 당 카메라(Camera) 위치로부터 프라이머리 레이(primary ray, P)를 생성하여 해당 레이와 만나는 물체를 찾기 위한 계산을 수행할 수 있다. 레이 트레이싱 장치는 레이와 만나게 된 물체가 반사나 굴절의 성질이 있으면 레이와 물체가 만난 위치에서 반사 효과를 위한 반사 레이(reflection ray, R)나 굴절 효과를 위한 굴절 레이(refraction ray, F)를 생성할 수 있고, 또한 그림자 효과를 위하여 빛(Light) 방향으로 그림자 레이(shadow ray, S)를 생성할 수 있다.
이 때, 해당 빛(Light) 위치로 향한 그림자 레이와 어떤 물체가 만나면 그림자가 생성이 되며 그렇지 않을 경우는 그림자가 생성되지 않는다. 반사 레이와 굴절 레이는 세컨더리 레이(secondary ray)라고 불리며 레이 트레이싱 장치는 각각의 레이에 대해 해당 레이와 만나는 물체를 찾기 위한 계산을 수행할 수 있다. 이러한 과정은 레이 트레이싱 장치에 의해 반복적(recursive)으로 수행될 수 있다.
도 2는 레이 트레이싱 과정에서 사용되는 가속 구조로서 KD 트리의 일 실시예를 설명하는 도면이다.
도 2를 참조하면, 레이 트레이싱을 수행하기 위하여 전체 지오메트리 데이터(geometry data)(triangle의 좌표들로 구성)를 기초로 생성된 KD 트리(K-Dimensional Tree)나 BVH(Bounding Volume Hierarchy)와 같은 가속 구조(Acceleration Structure, AS)가 필수적으로 요구된다. 따라서, 레이 트레이싱을 수행하기 이전에 AS를 구축(build)할 필요가 있다. 이러한 가속 구조 구축(AS build)에는 연산량이 많이 필요하기 때문에 시간이 많이 소요될 수 있다.
도 2에서, kd-트리의 전체 구성도를 설명하고 있다. kd-트리는 분할한 공간에 대하여 계층적(hierarchy) 구조를 갖는 이진 트리(binary tree)에 해당할 수 있다. kd-트리는 내부 노드(inner node)(top node 포함)와 리프 노드(leaf node)로 구성될 수 있으며, 리프 노드는 해당 노드와 교차(intersection)되는 객체(object)들을 포함하고 있는 공간에 대응될 수 있다. 즉, kd-트리는 공간 분할 트리(spatial partitioning tree)로서 공간 분할 구조체(spatial partitioning structure)의 일종에 해당할 수 있다.
반면, 내부 노드는 바운딩 박스(bounding box) 기반의 공간 영역을 가질 수 있으며 해당 공간 영역은 다시 2개의 영역들로 나뉘어서 두 개의 하위 노드에 할당될 수 있다. 결과적으로 내부 노드는 분할 평면과 이를 통해 분할된 두 개의 영역의 서브-트리(sub-tree)로 구성될 수 있고, 리프 노드는 일련의 삼각형(triangle)들 만을 포함할 수 있다. 예를 들어, 리프 노드는 기하학적 데이터에 포함된 적어도 하나의 삼각형 정보를 포인팅하기 위한 삼각형 리스트를 포함할 수 있으며, 삼각형 정보는 삼각형의 세 점에 대한 정점 좌표, 법선 벡터 및/또는 텍스처 좌표를 포함할 수 있다. 만약, 기하학적 데이터에 포함된 삼각형 정보가 배열로 구현된 경우에는 리프 노드에 포함된 삼각형 리스트는 배열 인덱스에 상응할 수 있다.
한편, 공간을 분할하는 위치 p는 임의의 레이와 충돌(hit)하는 삼각형을 찾기 위한 비용(cost)(노드 방문 횟수, 삼각형과 교차되는지 계산하는 횟수 등)이 최소가 되는 지점에 해당할 수 있고, 해당 위치 p를 찾기 위해 현재 가장 많이 사용되는 방법은 SAH(Surface area heuristic)에 해당할 수 있다.
도 3은 본 발명에 따른 레이 트레이싱 장치를 설명하는 블록도이다.
도 3을 참조하면, 레이 트레이싱 장치(100)는 트리 빌드 유닛(TBU, Tree Build Unit)(110), 컨트롤 유닛(130) 및 레이 트레이싱 유닛(RTU, Ray Tracing Unit)(150)을 포함할 수 있다. 레이 트레이싱 장치(100)는 동적 장면(dynamic scene)에 대한 레이 트레이싱을 실시간으로 처리할 수 있는 그래픽 프로세서 하드웨어를 포함할 수 있으며, 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150)에 대한 로드 밸런싱(load balancing)을 동적으로 수행할 수 있다.
트리 빌드 유닛(110)은 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 동작을 수행할 수 있다. 예를 들어, 트리 빌드 유닛(110)은 외부 메모리 상에 저장된 전체 지오메트리 데이터를 기초로 BVH(Bounding Volume Hierarchy) 또는 KD 트리(K-Dimensional Tree) 등의 가속 구조를 생성할 수 있다.
보다 구체적으로, 트리 빌드 유닛(110)은 3D 게임 엔진과 같은 어플리케이션(application)의 구동에 따라 레이 트레이싱 과정에 필요한 정적 장면(static scene) 및 동적 장면(dynamic scene)에 관한 가속 구조를 생성할 수 있다. 이때, 정적 장면(static scene)의 경우 3D 어플리케이션 구동 시 1번의 트리 빌드를 통해 정적 가속 구조(static AS)가 생성될 수 있고, 동적 장면(dynamic scene)의 경우 매 프레임(frame) 마다 프리미티브 정보가 변하기 때문에 매 프레임 마다 트리 빌드가 수행되어 동적 가속 구조(dynamic AS)가 생성될 수 있다. 트리 빌드 유닛(110)에 의해 생성된 정적 및 동적 가속 구조들은 각각 외부 메모리에 저장되어 이후 레이 트레이싱 과정에서 사용될 수 있다.
또한, 트리 빌드 유닛(110)은 컨트롤 유닛(130)의 제어에 따라 성능을 동적으로 조절하여 동작할 수 있다. 일 실시예에서, 트리 빌드 유닛(110)의 동작 성능은 BVH 또는 KD 트리의 구조에 대한 리프노드(Leaf Node)의 최대 프리미티브 수(Maximum Primitive Number) 및/또는 트리 깊이(Tree Depth)에 따라 변경될 수 있다.
예를 들어, 컨트롤 유닛(130)의 제어에 따라 리프 노드의 최대 프리미티브 수를 늘리거나 전체 트리 깊이를 낮추면 가속 구조(AS)의 품질이 저하되지만 트리 빌드 유닛(110)의 처리 속도, 즉 동작 성능은 향상될 수 있다.
다른 예로서, 컨트롤 유닛(130)의 제어에 따라 리프 노드의 최대 프리미티브 수를 줄이거나 전체 트리 깊이를 깊게 하면 가속 구조(AS)의 품질은 향상될 수 있지만 트리 빌드 유닛(110)의 처리 속도, 즉 동작 성능은 저하될 수 있다. 따라서, 트리 빌드 유닛(110)의 동작 성능에 따라 구축되는 공간 분할 구조체의 품질이 결정될 수 있다.
레이 트레이싱 유닛(150)은 공간 분할 구조체(Spatial Partitioning Structure)를 기초로 레이 트레이싱(Ray Tracing)을 수행할 수 있다. 보다 구체적으로, 레이 트레이싱 유닛(150)은 트리 빌드 유닛(110)에 의해 생성된 동적 및 정적 가속 구조들을 이용하여 레이 트레이싱을 수행할 수 있으며, 동적 및 정적 가속 구조들은 각각 외부 메모리(external memory) 상에 저장될 수 있다.
또한, 레이 트레이싱 유닛(150)은 컨트롤 유닛(130)의 제어에 따라 성능을 동적으로 조절하여 동작할 수 있다. 일 실시예에서, 레이 트레이싱 유닛(150)의 동작 성능은 레이 트레이싱의 레이 바운스(Ray Bounce), 쉐도우 레이(Shadow Ray)의 슈팅(Shooting) 개수, 라이트(Light) 개수, 안티 앨리어싱(Anti-Aliasing) 레벨 및 픽셀(Pixel) 당 샘플링(Sampling) 개수 중 적어도 하나에 따라 변경될 수 있다. 즉, 레이 트레이싱 유닛(150)의 동작 성능은 렌더링 품질(Rendering Quality)에 따라 변경될 수 있으며, 추가적으로 시선 민감 영역이나 주변부 영역의 확장, 색상 차이의 증가 등 렌더링 기법에 따라 변경될 수도 있다.
컨트롤 유닛(130)은 트리 빌드 유닛(110) 및 레이 트레이싱 유닛(150) 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어할 수 있다. 즉, 컨트롤 유닛(130)은 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150)의 성능을 입력받아 트리 빌드 유닛(110)의 가속 구조 품질을 조절하거나 또는 레이 트레이싱 유닛(150)의 렌더링 품질을 조절하여 각 유닛의 동작 성능을 동적으로 제어할 수 있다. 예를 들어, 부하 상태는 트리 빌드 유닛(110) 및/또는 레이 트레이싱 유닛(150)에서 처리되는 프레임 비율(Frame Rate)을 기초로 결정될 수 있다.
도 4는 도 1의 레이 트레이싱 장치를 포함하는 레이 트레이싱 시스템을 설명하는 블록도이다.
도 4를 참조하면, 레이 트레이싱 시스템(200)은 CPU(Central Processing Unit)(210), 시스템 메모리(System Memory)(230), DRTX(Dynamic Ray Tracing Accelerator)(250) 및 외부 메모리(External Memory)(270)를 포함할 수 있다.
CPU(210)는 3차원 어플리케이션을 처리할 수 있으며, 3차원 게임 엔진 등의 어플리케이션(Application), API(Application Programming Interface) 및/또는 장면 매니저(Scene Manager)를 포함할 수 있다.
시스템 메모리(230)는 3차원 어플리케이션에 필요한 그래픽 데이터 정보를 저장할 수 있으며, 원시 정적 장면(Primitive Static Scene)을 저장하는 PSS 영역, 프리미티브(원시) 동적 장면(Primitive Dynamic Scene)을 저장하는 PDS 영역 및/또는 텍스처 매핑을 위한 밉맵(MIP-MAP)을 저장하는 텍스처 맵(Texture Map) 영역을 포함할 수 있다.
DRTX(250)는 도 3의 레이 트레이싱 장치(100)를 일 구성요소로 포함하여 구현될 수 있고, 버스 인터페이스 유닛(Bus Interface Unit), 가속 구조 결과 버퍼(AS Result Buffer), 프리미티브 캐시(Primitive Cache), 작업 메모리(Working Memory), 가속 구조 캐시(AS Cache), 텍스처 캐시(Texture Cache), 컬러 결과 버퍼(Color Result Buffer) 및/또는 스택 메모리(Stack Memory)를 더 포함할 수 있다.
프리미티브 캐시(Primitive Cache)는 프리미티브 장면(Primitive Scene)을 트리 빌드 유닛(110)에 전달하는 동작을 수행할 수 있고, 가속 구조 결과 버퍼(AS Result Buffer)는 트리 빌드 유닛(110)으로부터 프리미티브 장면에 대한 처리 결과를 수신하여 외부 메모리(270) 등으로 전달하는 동작을 수행할 수 있다. 또한, 가속 구조 캐시(AS Cache)는 트리 빌드 유닛(110)에 의해 처리된 프리미티브 장면에 대한 트리 빌드 정보를 레이 트레이싱 유닛(150)에 전달하는 동작을 수행할 수 있고, 텍스처 캐시(Texture Cache)는 텍스처(Texture)를 레이 트레이싱 유닛(150)에 전달하는 동작을 수행할 수 있고, 컬러 결과 버퍼(Color Result Buffer)는 레이 트레이싱 유닛(150)으로부터 레이 트레이싱이 수행된 처리 결과를 수신하여 외부 메모리(270) 등으로 전달하는 동작을 수행할 수 있다.
일 실시예에서, DRTX(250)는 그래픽 데이터 정보를 기초로 공간 분할 구조체를 구축하고, 생성된 공간 분할 구조체를 기초로 레이 트레이싱을 수행하며, 수행된 레이 트레이싱의 결과를 CPU(210)로 전송하고, 레이 트레이싱 속도를 모니터링하여 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150) 간의 동작 성능이 유사하도록 조절할 수 있다.
즉, DRTX(250)에서 수행되는 레이 트레이싱의 전체 성능은 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150) 중 가장 낮은 성능에 따라 결정될 수 있다. 예를 들어, 트리 빌드 유닛(110)이 레이 트레이싱 유닛(150)에 비해 성능이 낮은 경우 최종 출력 영상의 프레임 비율(frame rate)은 트리 빌드 유닛(110)의 성능에 의존할 수 있으며, 그 반대인 경우에는 레이 트레이싱 유닛(150)의 성능에 의존할 수 있다. DRTX(250)의 컨트롤 유닛(130)은 해당 유닛들 간의 성능을 적응적으로 조절하도록 동작할 수 있으며, 동작 성능에 관한 파라미터 값들을 관리할 수 있다.
외부 메모리(270)는 DRTX(250)에서 처리되는 정보를 임시로 저장할 수 있으며, 기하학적(Geometry) 정보 저장 영역, 정적 가속 구조(Static AS) 저장 영역, 동적 가속 구조(Dynamic AS) 저장 영역, 텍스처 맵(Texture Map) 저장 영역 및/또는 컬러 정보(Color Buffer) 저장 영역을 포함할 수 있다.
도 5는 도 1에서 수행되는 레이 트레이싱 방법을 설명하는 흐름도이다.
도 5를 참조하면, 레이 트레이싱 장치(100)는 트리 빌드 유닛(110)을 통해 공간 분할 구조체(Spatial Partitioning Structure)를 구축할 수 있다(단계 S310). 레이 트레이싱 장치(100)는 레이 트레이싱 유닛(150)을 통해 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행할 수 있다(단계 S330).
또한, 레이 트레이싱 장치(100)는 컨트롤 유닛(130)을 통해 트리 빌드 유닛(110) 및 레이 트레이싱 유닛(150) 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어할 수 있다(단계 S350). 보다 구체적으로, 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 부하가 트리 빌드 유닛(110)의 부하보다 큰 경우 공간 분할 구조체(Spatial Partitioning Structure)의 복잡도를 낮추는 방향으로 트리 빌드 유닛(110)의 동작 성능을 제어할 수 있다. 예를 들어, 공간 분할 구조체의 복잡도는 최대 프리미티브 수의 증가 및/또는 트리 깊이의 감소에 의해 낮아질 수 있으며, 컨트롤 유닛(130)은 이에 관한 제어 파라미터를 생성하여 트리 빌드 유닛(110)에 제공할 수 있다.
컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 부하가 트리 빌드 유닛(110)의 부하보다 작은 경우 렌더링 품질(Rendering Quality)을 낮추는 방향으로 레이 트레이싱 유닛(150)의 동작 성능을 제어할 수 있다. 예를 들어, 렌더링 품질을 낮추기 위한 제1 방법은 레이 바운스 감소, 쉐도우 레이의 슈팅 수 감소, 라이트 개수 감소, 안티 앨리어싱 레벨 감소 및 픽셀 당 샘플링 수 감소를 포함할 수 있다.
보다 구체적으로, 레이 트레이싱은 반사, 굴절, 투과 등을 재귀적으로 수행할 수 있으며, 각 반복마다 새로운 광선을 생성할 수 있다. 이때, 레이 바운스가 많을수록 화질이 좋아지는 반면 처리 성능은 저하될 수 있다. 레이 트레이싱의 레이 바운스(ray bounce)를 줄이는 방법은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어질 경우 활용될 수 있다. 즉, 컨트롤 유닛(130)은 현재 설정된 레이 트레이싱 유닛(150)의 최대 레이 바운스의 수를 줄이도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있으며, 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다.
또한, 레이 트레이싱 과정에서 프라이머리 레이(primary ray) 혹은 세컨더리 레이(secondary ray)가 물체에 충돌(hit)하면 충돌 지점(hit point)에서부터 각 라이트(light)에 대해 쉐도우 레이(shadow ray)가 슈팅(shooting)될 수 있다. 만약, 영역 라이트(area light)인 경우 각 라이트(light) 마다 다수개의 쉐도우 레이들이 슈팅될 수 있다. 쉐도우 레이의 슈팅 수를 줄이는 방법은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어질 경우 활용될 수 있다. 즉, 컨트롤 유닛(130)은 쉐도우 레이를 슈팅하는 라이트 수를 줄이거나 영역 라이트(area light)인 경우 쉐도우 레이 개수를 줄이도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있으며, 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다. 이때, 쉐도우 레이를 슈팅하지 않은 라이트는 쉐도우 레이가 아닌 것으로 처리될 수 있고, 어떤 라이트에 대해서 쉐도우 레이를 슈팅할지에 대한 우선순위는 화질에 영향을 많이 미치는 라이트를 미리 선정하여 활용할 수 있다.
또한, 라이트 수가 많으면 쉐도우 레이 수도 많아지고 쉐이딩 연산도 여러번 수행하게 되어 화질이 좋아지는 반면 레이 트레이싱 유닛(150)의 성능은 저하될 수 있다. 라이트의 개수를 줄이는 방법은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어질 경우 활용될 수 있다. 즉, 컨트롤 유닛(130)은 라이트 수를 줄이도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있으며, 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다. 이때, 어떤 라이트를 줄일지에 대한 우선순위는 화질에 영향을 덜 미치는 라이트를 미리 선정하여 활용할 수 있다.
또한, 레이 트레이싱은 일반적으로 각 픽셀(pixel)에 대해서 하나의 프라이머리 레이(primary ray)를 처리하지만, 전역조명의 경우 각 픽셀에 대해 적게는 수개 많게는 수천개의 샘플링(sampling)을 위한 레이를 처리할 수 있다. 전역조명은 샘플링 수가 작을수록 노이즈(noise)가 발생할 수 있다. 픽셀 당 샘플링 수를 줄이는 방법은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어질 경우 활용될 수 있다. 즉, 컨트롤 유닛(130)은 픽셀 당 샘플링 수를 줄이도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있으며, 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다.
또한, 저해상도의 영상을 스케일러(scaler) 혹은 영상처리 기법을 통해 고해상도로 업샘플링(up-sampling) 하는 방법은 화질이 다소 떨어지지만 성능 증가를 위해 활용될 수 있으며, 특히 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어질 경우 활용될 수 있다. 즉, 컨트롤 유닛(130)은 저해상도로 레이 트레이싱을 수행하도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있으며, 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다. 이 경우, 레이 트레이싱 유닛(150)은 별도의 처리 모듈을 통해 영상처리 및 인공지능 기법에 기반한 업샘플링(up-sampling)을 처리할 수 있다.
다른 예로서, 렌더링 품질을 낮추기 위한 제2 방법은 시선 민감 영역의 확장, 주변부 영역의 확장 및 색상 차이의 증가를 포함할 수 있다. 보다 구체적으로, 레이 트레이싱 유닛(150)은 동작 성능을 올리면서도 화질이 떨어지는 것을 줄이기 위한 렌더링 기법들이 활용하여 관련 동작을 수행할 수 있다. 예를 들어, 레이 트레이싱 유닛(150)은 시선이 덜 민감한 영역의 샘플링을 적게 함으로써 성능을 올리는 기법을 사용할 수 있다. 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어지는 경우 시선이 덜 민감한 영역을 더 크게 하도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있다. 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다.
또한, 레이 트레이싱 유닛(150)은 시선이 집중되는 화면의 중심부분에는 샘플링을 많이 하고 주변부로 갈수록 샘플링을 적게 하는 포비티드 렌더링(foveated rendering) 기법을 사용할 수 있다. 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어지는 경우 화면의 중심부 영역을 작게 하고 주변부 영역을 크게 하도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있다. 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다.
또한, 레이 트레이싱 유닛(150)은 먼저 목표 해상도보다 낮은 해상도를 렌더링(rendering)한 후, 색상차이에 따라 샘플링을 하거나 또는 보간(interpolation)하여 최종 목표 해상도를 생성하는 기법을 사용할 수 있다. 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 떨어지는 경우 색상차이를 결정하는 수치를 높여 보간(interpolation)하는 부분이 많아지도록 제어 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있다. 레이 트레이싱 유닛(150)은 해당 정보를 기반으로 레이 트레이싱을 수행한 후 동작 성능에 관한 정보를 컨트롤 유닛(130)으로 전달할 수 있다.
일 실시예에서, 컨트롤 유닛(130)은 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150) 간의 부하 차이에 따라 렌더링 품질에 관한 전체 감소량을 결정하고, 렌더링 품질 제어 과정에 적용되는 제1 방법이 복수개 선택된 경우 기 설정된 우선순위에 따라 해당 방법들에 대해 전체 감소량을 차등적으로 분배하는 방법을 통해 제어 파라미터를 생성할 수 있다. 이를 통해, 컨트롤 유닛(130)은 렌더링 품질(Rendering Quality)을 낮추는 방향으로 레이 트레이싱 유닛(150)의 동작 성능을 제어하기 위한 제1 파라미터를 생성하여 레이 트레이싱 유닛(150)에 전달할 수 있다.
예를 들어, 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150) 간의 부하 차이가 클수록 렌더링 품질에 관한 전체 감소량은 증가할 수 있다. 만약 전체 감소량이 10을 결정되고 렌더링 품질 제어 과정에 적용되는 제1 방법이 총 3개(예를 들어, 방법 A, B 및 C) 선택된 경우 기 설정된 우선순위(예를 들어, B, A, C 순서대로 우선순위가 높음)에 따라 각 방법들에 대해 전체 감소량을 차등적으로 5:3:2 비율만큼 분배할 수 있다. 즉, A 방법은 렌더링 품질을 3만큼 감소시키도록 파라미터 값이 결정될 수 있고, B 방법은 렌더링 품질을 5만큼 감소시키도록 파라미터 값이 결정될 수 있으며, C 방법은 렌더링 품질을 2만큼 감소시키도록 파라미터 값이 결정될 수 있고, 해당 방법들에 대해 결정될 파라미터 값들을 통합하여 제어 파라미터가 최종적으로 생성될 수 있다.
도 6은 도 5의 구체적인 예를 설명하는 순서도이다.
도 6을 참조하면, CPU(210)의 어플리케이션(Application)이 구동되면 장면 매니저(Scene Manager)는 API를 통해 정적 장면(Static Scene), 동적 장면(Dynamic Scene), 텍스처 맵(Texture Map)을 시스템 메모리(230)의 각 영역에 저장하는 전처리과정을 수행할 수 있다. 일 실시예에서, CPU(210)와 시스템 메모리(230) 및 DRTX(250)는 고속 버스(High Speed Bus)를 통해 데이터를 전송할 수 있다.
DRTX(250)는 버스 인터페이스 유닛(Bus Interface Unit)을 통해 시스템 메모리(230)에 저장된 정적 장면을 트리 빌드 유닛(110)으로 전송할 수 있고, 트리 빌드 유닛(110)은 정적 장면에 대한 트리를 구축할 수 있으며(단계 S410), 구축된 정적 장면 트리 구조는 가속 구조 결과 버퍼(AS result buffer)를 통해 외부 메모리(270)의 정적 장면 가속 구조(Static AS) 저장 영역에 저장될 수 있다.
또한, DRTX(250)는 버스 인터페이스 유닛을 통해 시스템 메모리(230)에 저장된 동적 장면을 트리 빌드 유닛(110)으로 전송하고, 트리 빌드 유닛(110)은 동적 장면에 대한 트리를 구축할 수 있으며(단계 S420), 구축된 동적 장면 트리 구조는 가속 구조 결과 버퍼를 통해 외부 메모리(270)의 동적 장면 가속 구조(Dynamic AS) 저장 영역에 저장될 수 있다.
또한, DRTX(250)는 정적 장면 트리 구조와 동적 장면 트리 구조를 외부 메모리(270)에 저장하면서 각 구조의 기하학적 정보를 외부 메모리(270)의 기하학적 정보(Geometry) 저장 영역에 저장할 수 있다. 또한, DRTX(250)는 각 장면의 트리 구조를 생성하는 과정에서 작업 메모리(Working Memory)와 연동하여 동작할 수 있다.
레이 트레이싱 유닛(150)은 가속 구조 캐시(AS cache)를 통해 외부 메모리(270)에 저장된 정적 장면 트리 구조와 동적 장면 트리 구조를 호출하여 레이 트레이싱을 수행할 수 있다(단계 S430). 예를 들어, 레이 트레이싱 유닛(150)은 스택 메모리(Stack Memory)를 이용하여 레이 트레이싱을 수행할 수 있다. 일 실시예에서, 시스템 메모리(230)의 텍스처 맵 영역에 저장된 텍스처 맵은 외부 메모리(270)의 텍스처 맵 저장 영역에 저장된 후, 필요에 따라 텍스처 캐시(Texture cache)를 통해 레이 트레이싱 유닛(150)으로 전송될 수 있다.
또한, 3차원 어플리케이션이 종료되지 않고 레이 트레이싱이 지속적으로 수행되는 경우, 컨트롤 유닛(130)은 트리 빌드 유닛(110)과 레이 트레이싱 유닛(150)의 부하 상태를 모니터링할 수 있다(단계 S440). 일 실시예에서, 컨트롤 유닛(130)은 트리 빌드 유닛(110)의 프레임 처리 속도와 레이 트레이싱 유닛(150)의 프레임 처리 속도를 순차적으로 확인할 수 있고, 단위 시간당 트리 빌드 유닛(110)에서 처리되는 프레임과 레이 트레이싱 유닛(150)에서 처리되는 프레임 비율(Frame Rate)을 산출할 수 있으며, 산출된 프레임 비율을 기초로 부하 상태를 판단할 수 있다.
또한, 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 높은 경우에는, 트리 빌드 유닛(110)에 부하가 많이 걸리는 것으로 판단할 수 있고, 트리 빌드 유닛(110)의 부하를 줄이기 위하여 공간 분할 구조체 구조의 복잡도를 낮추도록 트리 빌드 유닛(110)을 제어할 수 있다(단계 S460). 일 실시예에서, 공간 분할 구조체 구조의 복잡도를 낮추는 트리 빌드 유닛(110)의 제어는, 최대 프리미티브 수를 증가시키거나 트리 깊이(Tree Depth)를 감소시킴으로써 수행될 수 있다. 트리 빌드 유닛(110)은 컨트롤 유닛(130)의 제어 하에 동적 장면의 트리 구조를 재구축할 수 있다(단계 S420).
또한, 컨트롤 유닛(130)은 레이 트레이싱 유닛(150)의 성능이 트리 빌드 유닛(110)의 성능보다 낮은 경우에는, 레이 트레이싱 유닛(150)에 부하가 많이 걸리는 것으로 판단할 수 있고, 레이 트레이싱 유닛(150)의 부하를 줄이기 위하여 렌더링 품질을 낮추도록 레이 트레이싱 유닛(150)을 제어할 수 있다(단계 S450). 일 실시예에서, 렌더링 품질을 낮추는 레이 트레이싱 유닛(150)의 제어는, 레이 바운스 감소, 쉐도우 레이의 슈팅 수 감소, 라이트 개수 감소, 안티 앨리어싱 레벨 감소 및 픽셀 당 샘플링 수 감소에 관한 제1 방법과 시선 민감 영역의 확장, 주변부 영역의 확장 및 색상 차이의 증가에 관한 제2 방법을 통해 수행될 수 있다. 레이 트레이싱 유닛(150)은 컨트롤 유닛(130)의 제어 하에 정적 장면 및 동적 장면의 트리 구조들을 기초로 레이 트레이싱을 수행할 수 있다(단계 S430).
트리 빌드 유닛(110)과 컨트롤 유닛(130) 및 레이 트레이싱 유닛(150)에 의한 단계 'S420' 내지 단계 'S460'는 3차원 어플리케이션의 요청 또는 3차원 어플리케이션의 종료가 이루어지는 시점까지 반복적으로 수행될 수 있다.
일 실시예에 따른 레이 트레이싱 장치(100) 및 레이 트레이싱 시스템(200)은 트리 빌드 유닛(TBU) 및 레이 트레이싱 유닛(LTU)을 모니터링하고, 해당 유닛들의 부하 상태에 따라 해당 유닛들의 동작 성능을 선택적으로 제어함으로써, 각 유닛에서 요구되는 자원의 부족이나 낭비를 방지할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 레이 트레이싱 장치
110: 트리 빌드 유닛 130: 컨트롤 유닛
150: 레이 트레이싱 유닛
200: 레이 트레이싱 시스템
210: CPU 230: 시스템 메모리
250: DRTX 270: 외부 메모리
110: 트리 빌드 유닛 130: 컨트롤 유닛
150: 레이 트레이싱 유닛
200: 레이 트레이싱 시스템
210: CPU 230: 시스템 메모리
250: DRTX 270: 외부 메모리
Claims (13)
- 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit);
상기 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit); 및
상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어하고, 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛의 부하를 상호 비교한 결과에 따라 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 중 적어도 하나에 대해 동작 성능을 조절하기 위한 제어 파라미터를 생성하는 컨트롤 유닛을 포함하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 제1항에 있어서, 상기 부하 상태는
상기 해당 유닛들 각각에서 처리되는 프레임 비율(Frame Rate)을 기초로 결정되는 것을 특징으로 하는 성능이 개선된 레이 트레이싱 장치.
- 제1항에 있어서, 상기 공간 분할 구조체는
BVH(Bounding Volume Hierarchy) 및 KD 트리(K-Dimensional Tree)를 포함하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱 장치.
- 제3항에 있어서, 상기 트리 빌드 유닛의 동작 성능은
상기 BVH 또는 KD 트리의 구조에 대한 리프노드(Leaf Node)의 최대 프리미티브 수(Maximum Primitive Number) 및/또는 트리 깊이(Tree Depth)에 따라 변경되는 것을 특징으로 하는 성능이 개선된 레이 트레이싱 장치.
- 제1항에 있어서, 상기 레이 트레이싱 유닛의 동작 성능은
레이 트레이싱의 레이 바운스(Ray Bounce), 쉐도우 레이(Shadow Ray)의 슈팅(Shooting) 개수, 라이트(Light) 개수, 안티 앨리어싱(Anti-Aliasing) 레벨 및 픽셀(Pixel) 당 샘플링(Sampling) 개수 중 적어도 하나에 따라 변경되는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 삭제
- 제1항에 있어서, 상기 컨트롤 유닛은
상기 레이 트레이싱 유닛의 부하가 상기 트리 빌드 유닛의 부하보다 큰 경우에는 최대 프리미티브 수의 증가 및/또는 트리 깊이의 감소로 상기 공간 분할 구조체의 복잡도를 낮추는 방향으로 상기 트리 빌드 유닛의 동작 성능을 제어하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 제1항에 있어서, 상기 컨트롤 유닛은
상기 레이 트레이싱 유닛의 부하가 상기 트리 빌드 유닛의 부하보다 작은 경우에는 렌더링 품질(Rendering Quality)을 낮추는 방향으로 상기 레이 트레이싱 유닛의 동작 성능을 제어하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 제8항에 있어서, 상기 컨트롤 유닛은
상기 렌더링 품질을 낮추기 위한 제1 방법으로서 레이 바운스 감소, 쉐도우 레이의 슈팅 수 감소, 라이트 개수 감소, 안티 앨리어싱 레벨 감소 및 픽셀 당 샘플링 수 감소 중 적어도 하나에 관한 제1 파라미터를 상기 제어 파라미터로서 생성하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 제9항에 있어서, 상기 컨트롤 유닛은
상기 해당 유닛들 간의 부하 차이에 따라 전체 감소량을 결정하고,
상기 제1 방법이 복수개 선택된 경우 기 설정된 우선순위에 따라 해당 방법들에 대해 상기 전체 감소량을 차등적으로 분배하여 상기 제1 파라미터를 생성하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 제8항에 있어서, 상기 컨트롤 유닛은
상기 렌더링 품질을 낮추기 위한 제2 방법으로서 시선 민감 영역의 확장, 주변부 영역의 확장 및 색상 차이의 증가 중 어느 하나에 관한 제2 파라미터를 상기 제어 파라미터로서 생성하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱(Ray Tracing) 장치.
- 트리 빌드 유닛(TBU, Tree Build Unit), 레이 트레이싱 유닛(RTU, Ray Tracing Unit) 및 컨트롤 유닛을 포함하는 레이 트레이싱(Ray Tracing) 장치에서 수행되는 방법에 있어서,
상기 트리 빌드 유닛에 의해, 공간 분할 구조체(Spatial Partitioning Structure)를 구축하는 단계;
상기 레이 트레이싱 유닛에 의해, 상기 공간 분할 구조체를 기초로 레이 트레이싱(Ray Tracing)을 수행하는 단계; 및
상기 컨트롤 유닛에 의해, 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 각각의 부하 상태를 모니터링하여 해당 유닛들의 동작 성능에 관한 균형을 적응적으로 제어하고, 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛의 부하를 상호 비교한 결과에 따라 상기 트리 빌드 유닛 및 상기 레이 트레이싱 유닛 중 적어도 하나에 대해 동작 성능을 조절하기 위한 제어 파라미터를 생성하는 단계를 포함하는 성능이 개선된 레이 트레이싱 방법.
- 제12항에 있어서, 상기 제어하는 단계는
상기 레이 트레이싱 유닛의 프레임 처리 속도를 확인하는 단계;
상기 트리 빌드 유닛의 프레임 처리 속도를 확인하는 단계;
단위 시간당 상기 레이 트레이싱 유닛에서 처리되는 프레임과 상기 트리 빌드 유닛에서 처리되는 프레임 비율(Frame Rate)을 산출하는 단계; 및
상기 산출된 프레임 비율을 기초로 상기 부하 상태를 판단하는 단계를 포함하는 것을 특징으로 하는 성능이 개선된 레이 트레이싱 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200132046A KR102269648B1 (ko) | 2020-10-13 | 2020-10-13 | 성능이 개선된 레이 트레이싱 장치 및 방법 |
PCT/KR2020/017368 WO2022080580A1 (ko) | 2020-10-13 | 2020-12-01 | 성능이 개선된 레이 트레이싱 장치 및 방법 |
US18/031,687 US20230410408A1 (en) | 2020-10-13 | 2020-12-01 | Ray tracing device and method with improved performance |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200132046A KR102269648B1 (ko) | 2020-10-13 | 2020-10-13 | 성능이 개선된 레이 트레이싱 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102269648B1 true KR102269648B1 (ko) | 2021-06-25 |
Family
ID=76629350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200132046A KR102269648B1 (ko) | 2020-10-13 | 2020-10-13 | 성능이 개선된 레이 트레이싱 장치 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230410408A1 (ko) |
KR (1) | KR102269648B1 (ko) |
WO (1) | WO2022080580A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023106838A1 (ko) * | 2021-12-10 | 2023-06-15 | 세종대학교산학협력단 | 카메라 움직임에 따른 레이 트레이싱 화질조절방법, 이를 수행하는 화질조절장치 및 이를 저장하는 기록매체 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210030147A (ko) * | 2019-09-09 | 2021-03-17 | 삼성전자주식회사 | 3d 렌더링 방법 및 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120092926A (ko) * | 2011-02-14 | 2012-08-22 | 주식회사 실리콘아츠 | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 |
KR20150039493A (ko) | 2013-10-02 | 2015-04-10 | 삼성전자주식회사 | 레이 트레이싱 처리 장치 및 방법 |
WO2016027912A1 (ko) * | 2014-08-19 | 2016-02-25 | 주식회사 실리콘아츠 | 레이 트레이싱 방법, 이를 수행하는 레이 트레이싱 장치 및 이를 저장하는 기록매체 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102080851B1 (ko) * | 2012-09-17 | 2020-02-24 | 삼성전자주식회사 | 레이 추적의 스케쥴링을 위한 장치 및 방법 |
US10249073B2 (en) * | 2015-07-21 | 2019-04-02 | Intel Corporation | Distributed frame buffer and API for scalable parallel rendering |
US9892544B2 (en) * | 2015-12-22 | 2018-02-13 | Intel Corporation | Method and apparatus for load balancing in a ray tracing architecture |
-
2020
- 2020-10-13 KR KR1020200132046A patent/KR102269648B1/ko active IP Right Grant
- 2020-12-01 WO PCT/KR2020/017368 patent/WO2022080580A1/ko active Application Filing
- 2020-12-01 US US18/031,687 patent/US20230410408A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120092926A (ko) * | 2011-02-14 | 2012-08-22 | 주식회사 실리콘아츠 | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 |
KR20150039493A (ko) | 2013-10-02 | 2015-04-10 | 삼성전자주식회사 | 레이 트레이싱 처리 장치 및 방법 |
WO2016027912A1 (ko) * | 2014-08-19 | 2016-02-25 | 주식회사 실리콘아츠 | 레이 트레이싱 방법, 이를 수행하는 레이 트레이싱 장치 및 이를 저장하는 기록매체 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023106838A1 (ko) * | 2021-12-10 | 2023-06-15 | 세종대학교산학협력단 | 카메라 움직임에 따른 레이 트레이싱 화질조절방법, 이를 수행하는 화질조절장치 및 이를 저장하는 기록매체 |
Also Published As
Publication number | Publication date |
---|---|
US20230410408A1 (en) | 2023-12-21 |
WO2022080580A1 (ko) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8089481B2 (en) | Updating frame divisions based on ray tracing image processing system performance | |
US7737974B2 (en) | Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
US7940266B2 (en) | Dynamic reallocation of processing cores for balanced ray tracing graphics workload | |
US9043801B2 (en) | Two-tiered dynamic load balancing using sets of distributed thread pools | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
US7864174B2 (en) | Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system | |
US7884819B2 (en) | Pixel color accumulation in a ray tracing image processing system | |
US7852336B2 (en) | Dynamic determination of optimal spatial index mapping to processor thread resources | |
US8243081B2 (en) | Methods and systems for partitioning a spatial index | |
US20080122838A1 (en) | Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index | |
US7688320B2 (en) | Methods and systems for texture prefetching based on a most recently hit primitive algorithm | |
US20120236001A1 (en) | Tree Insertion Depth Adjustment Based on View Frustrum and Distance Culling | |
JP2017188093A (ja) | 光マップを決定するための重要度サンプリング | |
US20080079714A1 (en) | Workload Distribution Through Frame Division in a Ray Tracing Image Processing System | |
Govindaraju et al. | Interactive shadow generation in complex environments | |
KR102151443B1 (ko) | 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치 | |
KR102269648B1 (ko) | 성능이 개선된 레이 트레이싱 장치 및 방법 | |
KR20210119899A (ko) | 그래픽 프로세싱 | |
US20140347355A1 (en) | Ray tracing core and method for processing ray tracing | |
CN117723266A (zh) | 提高光线-盒测试的效率 | |
WO2024086382A1 (en) | Methods and systems for rendering video graphics using scene segmentation | |
US11908064B2 (en) | Accelerated processing via a physically based rendering engine | |
KR101281156B1 (ko) | 레이 트레이싱 코어 및 레이 트레이싱 처리 방법 | |
US20240112392A1 (en) | Dynamic node traversal order for ray tracing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |