KR20150046642A - 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 - Google Patents

레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 Download PDF

Info

Publication number
KR20150046642A
KR20150046642A KR20130126110A KR20130126110A KR20150046642A KR 20150046642 A KR20150046642 A KR 20150046642A KR 20130126110 A KR20130126110 A KR 20130126110A KR 20130126110 A KR20130126110 A KR 20130126110A KR 20150046642 A KR20150046642 A KR 20150046642A
Authority
KR
South Korea
Prior art keywords
value
level
node
root
child
Prior art date
Application number
KR20130126110A
Other languages
English (en)
Other versions
KR102193683B1 (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 KR1020130126110A priority Critical patent/KR102193683B1/ko
Priority to US14/260,754 priority patent/US9728000B2/en
Publication of KR20150046642A publication Critical patent/KR20150046642A/ko
Application granted granted Critical
Publication of KR102193683B1 publication Critical patent/KR102193683B1/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

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

Abstract

레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 방법에 관한 것이다. 상기 레이 트레이싱 시스템에서의 가속 구조 탐색 방법은 가속 구조에 포함된 레벨마다 비트 스택 값 및 루트 값을 설정하는 단계, 설정된 비트 스택 값에 기초하여, 팝 레벨을 결정하는 단계, 각 레벨의 루트 값에 기초하여, 팝 레벨까지 이동한 후, 탐색되지 않은 자식 노드로 이동하여 탐색을 수행하는 단계를 포함할 수 있다.

Description

레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법{Apparatus and method for traversing acceleration structure in a ray tracing system}
레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법에 관한 것으로, 더욱 구체적으로는 가속 구조 탐색을 효율적으로 수행할 수 있는 가속 구조 탐색 장치 및 그 탐색 방법에 관한 것이다.
일반적으로 3D 렌더링(3-Dimensional Rendering)은 3차원 객체 데이터를 주어진 카메라 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리를 말한다.
렌더링 방법은 3차원 객체를 화면에 투영(projection)하면서 영상을 생성하는 래스터화(rasterization) 방법과 카메라 시점에서 영상의 각 픽셀을 향한 광선을 따라 입사하는 빛의 경로를 추적하여 영상을 생성하는 레이 트레이싱(ray tracing)등이 있다.
이 중 레이 트레이싱은 빛의 물리적 성질(반사, 굴절, 투과 등)을 렌더링 결과에 반영하므로 고품질 영상을 생성할 수 있다는 장점이 있으나, 상대적으로 연산량이 방대하여 고속으로 렌더링 하는데 어려움이 있다.
레이 트레이싱 성능에 있어서 연산량이 많이 요구되는 요소는 렌더링 대상이 되는 신 오브젝트(scene object)들을 공간적으로 분할한 가속 구조(Acceleration Structure, 이하에서는 ‘AS’라고 한다.)의 생성 및 탐색(Traversal, 이하에서는 ‘TRV’라고 한다)과, 광선과 프리미티브 사이의 교차 검사(Intersection Test, 이하에서는 ‘IST’라고 한다)이다.
가속 구조 탐색 수행 시, 종래의 스택(stack)을 사용하지 않고, 가속 구조 탐색을 효율적으로 수행할 수 있는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 탐색방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법은, 가속 구조에 포함된 자식 노드(child node)가 광선과 교차하는지 검사하는 단계, 상기 검사결과, 상기 광선과 교차하는 자식 노드의 개수에 기초하여, 상기 가속 구조의 레벨(level)마다 비트 스택(bit stack) 값을 설정하는 단계, 상기 광선과 교차하는 자식 노드로 이동하여 탐색을 수행하고, 상기 이동 경로에 기초하여, 상기 레벨마다 루트(route) 값을 설정하는 단계, 상기 이동한 노드가 리프 노드이거나 상기 이동한 노드의 자식 노드가 상기 광선과 교차하지 않는 경우, 상기 레벨마다 설정된 비트 스택 값에 기초하여, 팝 레벨(pop level)을 결정하는 단계, 상기 레벨마다 설정된 레벨 루트 값에 기초하여, 상기 가속 구조의 루트 노드로부터 상기 팝 레벨로 이동하는 단계, 상기 팝 레벨의 루트 값에 기초하여, 상기 팝 레벨에서 광선과 교차하는 자식 노드 중 이전에 탐색하지 않은 자식 노드로 이동하고, 상기 팝 레벨의 루트 값을 변경하는 단계 및 상기 이동한 노드부터 상기 가속 구조 탐색을 수행하는 단계를 포함한다.
본 발명의 일 실시예에 따른 상기 비트 스택 값은 상기 레벨에서, 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하는지 여부를 나타내는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 비트 스택 값이 제1 값인 경우, 상기 레벨에서 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하지 않음을 나타내고, 상기 비트 스택 값이 제2 값인 경우, 상기 레벨에서 상기 탐색하지 않은 자식 노드가 존재함을 나타내는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 비트 스택 값을 설정하는 단계는 상기 광선과 교차하는 자식 노드의 개수가 1개인 경우, 부모 노드에 대응하는 레벨의 비트 스택 값을 제1 값으로 설정하고, 상기 교차하는 자식 노드의 개수가 2개 이상인 경우, 상기 비트 스택 값을 제2 값으로 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 루트 값은 상기 광선이 상기 레벨에서 이동한 자식 노드에 대응하는 값인 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 루트 값을 설정하는 단계는, 상기 광선과 교차하는 자식 노드 중 제1 자식 노드로 이동하는 경우, 상기 상기 레벨의 루트 값을 제1 값으로 설정하고, 제2 자식 노드로 이동하는 경우, 상기 자식 노드의 부모 노드에 대응하는 레벨의 루트 값을 제2 값으로 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 루트 값을 설정하는 단계는, 상기 레벨에서, 상기 광선과 교차하는 자식 노드가 N개인 경우, log N bit를 사용하여, 상기 루트 값을 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 팝 레벨을 결정하는 단계는, 상기 비트 스택 값이 제2 값인 레벨들 중 가장 큰 레벨을 상기 팝 레벨로 결정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 탐색 방법은, 상기 팝 레벨에서 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 1개인 경우, 상기 팝 레벨의 비트 스택 값을 제1 값으로 변경하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 비트 스택 값은 1 bit를 사용하여, 0 또는 1을 나타내는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 팝 레벨로 이동하는 단계는, 상기 레벨마다 설정된 루트 값에 대응하는 자식 노드로 이동하여, 상기 가속 구조의 루트 노드로부터 상기 팝 레벨로 이동하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 장치는 가속 구조에 포함된 자식 노드(child node)가 광선과 교차하는지 여부를 검사하는 연산부, 상기 교차 검사결과, 상기 광선과 교차하는 자식 노드의 개수에 기초하여, 상기 가속 구조의 레벨(level)마다 설정된 비트 스택(bit stack) 값 및 상기 광선의 이동 경로에 기초하여, 상기 레벨마다 설정된 루트(route) 값을 저장하는 저장부 및 상기 레벨마다 설정된 비트 스택 값에 기초하여, 팝 레벨(pop level)을 결정하고, 상기 레벨마다 설정된 루트 값에 기초하여, 상기 가속 구조의 루트 노드(root node)로부터 상기 팝 레벨로 이동하도록 제어하고, 상기 팝 레벨의 루트 값에 기초하여, 상기 팝 레벨에서 광선과 교차하는 자식 노드 중 이전에 탐색하지 않은 자식 노드로 이동하며, 상기 팝 레벨의 레벨 루트 값을 변경하는 제어부를 포함하고, 상기 연산부는 상기 이동된 노드부터 다시 탐색을 수행한다.
본 발명의 일 실시예에 따른 상기 제어부는 상기 광선과 교차하는 자식 노드의 개수가 1개인 경우, 부모 노드에 대응하는 레벨의 비트 스택 값을 제1 값으로 설정하고, 상기 교차하는 자식 노드의 개수가 2개 이상인 경우, 상기 비트 스택 값을 제2 값으로 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 광선과 교차하는 자식 노드 중 제1 자식 노드로 이동하는 경우, 상기 상기 레벨의 루트 값을 제1 값으로 설정하고, 제2 자식 노드로 이동하는 경우, 상기 자식 노드의 부모 노드에 대응하는 레벨의 루트 값을 제2 값으로 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 레벨에서, 상기 광선과 교차하는 자식 노드가 N개인 경우, log N bit를 사용하여, 상기 루트 값을 설정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 비트 스택 값이 제2 값인 레벨들 중 가장 큰 레벨을 상기 팝 레벨로 결정하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 팝 레벨에서 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 1개인 경우, 상기 팝 레벨의 비트 스택 값을 제1 값으로 변경하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 레벨마다 설정된 루트 값에 대응하는 자식 노드로 이동하여, 상기 가속 구조의 루트 노드로부터 상기 팝 레벨로 이동하도록 제어하는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 상기 제어부는, 상기 팝 레벨의 루트 값과 다른 루트 값에 대응하는 자식 노드로 이동하도록 제어하고, 상기 팝 레벨의 루트 값을 상기 다른 루트 값으로 변경하는 것을 특징으로 한다.
가속 구조 탐색 수행 시, 종래의 스택(stack)을 사용하지 않고, 가속 구조 탐색을 효율적으로 수행할 수 있다.
가속 구조 탐색 수행 시 사용되는 메모리를 감소시킬 수 있다.
이에 따라, 레이 트레이싱 시스템의 처리 능력 및 처리속도가 향상될 수 있다.
도 1은 일반적인 레이 트레이싱 방법을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 시스템을 나타내는 도면이다.
도 3은 레이 트레이싱 시스템에서의 가속 구조를 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 장치를 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 나타내는 흐름도이다.
도 6은 도 5의 550 단계(S550)를 보다 상세히 설명하기 위한 흐름도이다.
도 7은 도 5의 560 단계(S560) 및 570 단계(S570)를 보다 상세히 설명하기 위한 흐름도이다.
도 8은 본 발명의 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 설명하기 위해 참조되는 도이다.
도 9는 본 발명의 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 설명하기 위해 참조되는 도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 레이 트레이싱 방법을 설명하기 위한 도면이다.
도 1에 도시된 바와 같이, 3차원 모델링은 광원(80), 제1 물체(31), 제2 물체(32), 제3 물체(33)를 포함할 수 있다. 도 1에서, 제1 물체(31), 제2 물체(32) 및 제3 물체(33)는 2차원 물체와 같이 표현되었지만, 이는 설명의 편의를 위한 것이며, 제1 물체(31), 제2 물체(32) 및 제3 물체(33)는 3차원 물체이다.
이때, 제1 물체(31)는 반사율 및 굴절율이 0보다 크고, 제2 물체(32) 및 제3 물체(33)는 반사율 및 굴절율이 0이라고 가정할 수 있다. 즉, 제1 물체(31)는 빛을 반사 및 굴절시키며, 제2 물체(32) 및 제3 물체(33)는 빛을 반사시키지도 굴절시키지도 않는다고 가정할 수 있다.
도 1과 같은 3차원 모델링에서, 렌더링 장치(예를 들어, 레이 트레이싱 장치)는 3차원 영상을 생성하기 위해 시점(10)을 결정하고, 결정된 시점(10)에 따라 화면(15)을 결정할 수 있다.
시점(10)과 화면(15)이 결정되면, 레이 트레이싱 장치(100)은 시점(10)으로부터 화면(15)의 각 픽셀들에 대하여 광선을 생성할 수 있다.
예를 들어, 도 1에 도시된 바와 같이, 화면(15)의 해상도가 4*3인 경우, 12개의 픽셀에 대하여 각각 광선을 생성할 수 있다.
이하에서는, 하나의 픽셀(픽셀 A)에 대한 광선만을 설명하기로 한다.
도 1을 참조하면, 시점(10)으로부터 픽셀 A에 대하여 1차 광선(primary ray, 40)이 생성된다. 1차 광선(40)은 3차원 공간을 통과하여, 제1 물체(31)에 도달한다. 여기서, 제1 물체(31)는 일정한 단위 영역(이하, 프리미티브(primitive)라 한다.)들의 집합으로 구성될 수 있으며, 예를 들어, 프리미티브(primitive)는 삼각형, 사각형 등의 다각형일 수 있다. 이하에서는, 프리미티브가 삼각형인 것을 예로 들어 설명하기로 한다.
한편, 1차 광선(40)과 제1 물체(31)의 교차점(hit point)에서는 쉐도우 광선(shadow ray, 50), 반사 광선(reflection ray, 60) 및 굴절 광선(refraction ray, 70)을 생성할 수 있다. 이때, 쉐도우 광선(50), 반사 광선(60) 및 굴절 광선(70)을 2차 광선이라고 한다.
쉐도우 광선(50)은 교차점으로부터 광원(80)의 방향으로 생성된다. 반사 광선(60)은 1차 광선(40)의 입사각에 대응되는 방향으로 생성되고, 제1 물체(31)의 반사율에 따른 가중치를 적용받는다. 굴절 광선(70)은 1차 광선(40)의 입사각 및 제1 물체(31)의 굴절율에 대응되는 방향으로 생성되고, 제1 물체(31)의 굴절율에 따른 가중치를 적용받는다.
레이 트레이싱 장치(100)는 쉐도우 광선(50)을 통해 교차점이 광원(80)에 노출되어 있는지를 판단한다. 예를 들어, 도 1에 도시된 바와 같이, 쉐도우 광선(50)이 제2 물체(32)와 만나면, 해당 쉐도우 광선(50)이 생성된 교차점에 그림자가 생성될 수 있다.
또한, 레이 트레이싱 장치(100)는 굴절 광선(70) 및 반사 광선(60)이 다른 물체에 도달하는지를 판단한다. 예를 들어, 도 1에 도시된 바와 같이, 굴절 광선(70)의 진행방향에는 어떠한 물체도 존재하지 않으며, 반사 광선(60)은 제3 물체(33)에 도달한다. 이에 따라, 레이 트레이싱 장치(100)는 제3 물체(33)의 교차점의 좌표 및 색상 정보를 확인하고, 다시 제3 물체(33)의 교차점으로부터 쉐도우 광선(90)을 생성한다. 이때, 레이 트레이싱 장치(100)는 쉐도우 광선(90)이 광원(80)에 노출되어 있는지 판단한다.
한편, 제3 물체(33)의 반사율 및 굴절율은 0이므로, 제3 물체(33)에 대한 반사 광선 및 굴절 광선은 생성되지 않는다.
상술한 바와 같이, 레이 트레이싱 장치(100)는 픽셀 A에 대한 1차 광선(40) 및 1차 광선(40)으로부터 파생되는 모든 광선들을 분석하고, 분석 결과에 따라 픽셀 A의 색상 값을 결정한다. 픽셀 A의 색상 값의 결정은 1차 광선(40)의 교차점의 색상, 반사 광선(60)의 교차점의 색상, 쉐도우 광선(50)이 광원(80)에 도달하는지 여부에 영향을 받는다.
레이 트레이싱 장치(100)는, 상기와 같은 과정을 화면(15)의 모든 픽셀들에 대하여 수행하여, 화면(15)을 구성할 수 있다.
도 2는 레이 트레이싱 시스템을 나타내는 도면이다.
도 2를 참조하면, 레이 트레이싱 시스템은 레이 트레이싱 장치(100), 외부 메모리(250) 및 가속 구조 생성 장치(200)를 포함할 수 있다.
또한, 레이 트레이싱 장치(100)는 광선 생성 유닛(110), TRV 유닛(Traversal unit, 120), IST 유닛(Intersection unit, 130) 및 쉐이딩 유닛(shading unit, 140)을 포함할 수 있다.
광선 생성 유닛(110)은 1차 광선 및 1차 광선에 의해 파생되는 광선들을 생성할 수 있다. 광선 생성 유닛(110)은 도 1에서 설명한 바와 같이, 시점(10)으로부터 1차 광선을 생성하고, 1차 광선과 오브젝트의 교차점에서 2차 광선을 생성할 수 있다. 이때, 2차 광선은 1차 광선이 오브젝트와 교차된 지점에서 생성된 반사, 굴절 또는 쉐도우 광선일 수 있다.
또한, 광선 생성 유닛(110)은 2차 광선과 오브젝트의 교차점에서 3차 광선을 생성할 수 있다. 광선 생성 유닛(110)은 광선이 오브젝트와 교차하지 않을 때까지 광선을 계속해서 생성하거나, 정해진 횟수 내에서 광선을 생성할 수 있다.
TRV 유닛(120)은 광선 생성 유닛(110)으로부터 생성된 광선에 대한 정보를 수신할 수 있다. 생성된 광선은 1차 광선 및 1차 광선에 의해 파생된 광선(2차 광선, 3차 광선 등)을 모두 포함한다.
예를 들어, 1차 광선의 경우, TRV 유닛(120)은 생성된 광선의 시점 및 방향에 대한 정보를 수신할 수 있다. 또한, 2차 광선의 경우, TRV 유닛(120)은 2차 광선의 출발점 및 방향에 대한 정보를 수신할 수 있다. 2차 광선의 출발점은 1차 광선이 오브젝트와 교차된 지점을 나타낸다. 또한, 시점 또는 출발점은 좌표로 표현될 수 있으며, 방향은 벡터로 표현될 수 있다.
TRV 유닛(120)은 외부 메모리(250)로부터 가속 구조에 대한 정보를 읽어올 수 있다.
이때, 가속 구조(AS)는 가속 구조 생성 장치(Acceleration Structure Generator, 200)에 의해 생성되며, 생성된 가속 구조(AS)는 외부 메모리(250)에 저장된다.
가속 구조 생성 장치(200)는 3차원 공간상의 오브젝트들의 위치 정보를 포함하는 가속 구조를 생성할 수 있다. 가속 구조 생성 장치(200)는 3차원 공간을 계층적 트리 형태로 분할한다. 가속 구조 생성 장치(200)는 여러 가지 형태의 가속 구조를 생성할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 KD-tree(K-dimensional tree), BVH(Bounding Volume Hirearchy)를 적용하여, 3차원 공간상의 오브젝트들의 관계를 나타내는 가속 구조를 생성할 수 있다. 이에 대해서는 도 3을 참조하여, 자세히 설명하기로 한다.
도 3은 레이 트레이싱 시스템에서의 가속 구조를 설명하기 위한 도면이다.
이하에서, 설명의 편의를 위하여, 가속 구조(AS)의 노드에 기재된 숫자로, 각 노드를 지칭하기로 한다. 예를 들어, 숫자 1이 기재되고 원형으로 도시된 노드(351)는 제1 노드(351)로, 숫자 2가 기재되고 사각형으로 도시된 노드(352)는 제2 노드(352)로, 숫자 5가 기재되고, 점선으로 된 사각형으로 도시된 노드(355)는 제5 노드(355)로 지칭할 수 있다.
가속 구조(AS)는 루트 노드(root node), 내부 노드(inner node) 리프 노드(leaf node) 및 프리미티브(primitive)를 포함할 수 있다.
도 3에서, 제1 노드(351)는 루트 노드를 나타낸다. 루트 노드는 부모 노드(parent node)는 가지지 않고, 자식 노드(child node)만 가지는 최상위 노드이다. 예를 들어, 제1 노드(351)의 자식 노드는 제2 노드(352) 및 제3 노드(353)이며, 제1 노드(351)의 부모 노드는 존재하지 않는다.
또한, 제2 노드(352)는 내부 노드일 수 있다. 내부 노드는 부모 노드 및 자식 노드를 모두 가지는 노드이다. 예를 들어, 제2 노드(352)의 부모 노드는 제1 노드(351)이며, 제2 노드(352)의 자식 노드는 제4 노드(354) 및 제5 노드(355)이다.
또한, 제8 노드(358)는 리프 노드일 수 있다. 리프 노드는 자식 노드는 가지지 않고, 부모 노드만 가지는 최하위 노드이다. 예를 들어, 제8 노드(358)의 부모 노드는 제7 노드(357)이며, 제8 노드(358)의 자식 노드는 존재하지 않는다.
한편, 리프 노드는 리프 노드에 존재하는 프리미티브들을 포함할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 리프 노드인 제6 노드(356)는 1개의 프리미티브를, 리프 노드인 제8 노드(358)는 3개의 프리미티브를, 리프 노드인 제9 노드(359)는 2개의 프리미티브를 포함한다.
다시 도 2를 참조하면, TRV 유닛(120)은 읽어온 가속 구조(AS)에 대한 정보를 탐색하여, 광선이 교차하는 리프 노드를 검출할 수 있다.
IST 유닛(130)은 TRV 유닛(120)으로부터 광선이 교차하는 리프 노드를 수신할 수 있다.
IST 유닛(130)은 수신한 리프 노드에 포함된 프리미티브들에 대한 정보(기하 데이터)를 외부 메모리(250)로부터 읽어올 수 있다.
IST 유닛(130)은 읽어온 프리미티브들에 대한 정보를 이용하여, 광선과 프리미티브들 간의 교차 검사를 수행할 수 있다.
예를 들어, IST 유닛(130)은 TRV 유닛(120)으로부터 수신한 리프 노드에 포함된 복수의 프리미티브 중에서 어느 프리미티브에 광선이 교차되었는지를 검사할 수 있다.
이에 따라, 광선이 교차되는 프리미티브들을 검출하고, 검출된 프리미티브와 광선이 교차된 지점(hit point)을 계산할 수 있다.
계산된 교차점(hit point)은 좌표 형태로 쉐이딩 유닛(140)으로 출력될 수 있다.
쉐이딩 유닛(140)은 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 픽셀의 색상 값을 결정할 수 있다. 또한, 쉐이딩 유닛(140)은 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여, 픽셀의 색상 값을 결정할 수 있다.
예를 들어, 도 1의 픽셀 A의 경우, 쉐이딩 유닛(140)은 1차 광선(40) 및 2차 광선인 굴절 광선(70), 반사 광선(60), 쉐도우 광선(50)에 의한 효과를 모두 고려하여, 픽셀 A의 색상 값을 결정할 수 있다.
한편, 레이 트레이싱 장치(100)는 외부 메모리(250)로부터 레이 트레이싱에 필요한 데이터를 수신할 수 있다. 외부 메모리(250)는 가속 구조(AS) 또는 기하 데이터(geometry data)를 저장할 수 있다.
가속 구조(AS)는 가속 구조 생성 장치(200)에 의해 생성되고, 외부 메모리(250)에 저장된다.
또한, 기하 데이터는 프리미티브들에 대한 정보를 나타낸다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함되는 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다. 예를 들어, 프리미티브가 삼각형인 경우, 기하 데이터는 삼각형들의 세 점에 대한 정점 좌표, 법선 벡터 또는 텍스처 좌표를 포함할 수 있다.
한편, 도 2 및 도 3에서 설명한 바와 같이, 레이 트레이싱 장치(100)는 가속 구조(AS)를 탐색하여, 광선에 교차하는 리프 노드를 검출할 수 있다.
레이 트레이싱 장치(100)은 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색이 완료되면, 다른 경로로 가속 구조를 탐색할 수 있다.
이때, 레이 트레이싱 장치(100)는 탐색의 효율을 높이기 위해, 탐색되지 않은 노드(node) 정보를 스택(stack)에 저장할 수 있다. 레이 트레이싱 장치(100)가 동시에 많은 수의 광선을 처리하는 경우, 저장 공간이나 대역폭(bandwidth)의 제한으로 스택을 사용하는데 제약이 있을 수 있다.
이에 따라, 레이 트레이싱 장치(100)는 스택이 없는 알고리즘(stackless algorithm)을 사용하여 스택 연산을 없애거나 고정된 크기의 버퍼(buffer)를 사용하여, 스택 연산을 대체하는 쇼트 스택 알고리즘(short stack algorithm)을 사용할 수 있다.
이러한 알고리즘에서는 탐색(traversal)을 진행하다 리프 노드에 도착했을 경우 탐색하지 않은 다른 경로의 노드를 탐색하기 위해 루트(root)부터 탐색을 재시작(restart)할 수 있다.
따라서, 본 발명의 실시예들은 종래의 스택을 사용하지 않고, 가속 구조(AS)의 레벨마다 비트 스택(bit stack) 값 및 루트(route) 값을 설정하여, 설정된 값들을 기초로, 가속 구조 탐색을 효율적으로 수행할 수 있는 방법을 제공할 수 있다.
이하에서, 도 4 내지 도 9를 참조하여, 자세히 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 장치를 나타내는 블록도이다.
도 4를 참조하면, 가속 구조 탐색 장치(400)는 연산부(410), 제어부(420) 및 저장부(430)를 포함할 수 있다.
또한, 도 4에 도시된, 연산부(410), 제어부(420) 및 저장부(430)는 가속 구조 탐색 수행을 위한 것으로, 도 2의 TRV 유닛(120)에 포함되는 구성일 수 있다. 다만, 이에 한정되는 것은 아니다.
연산부(410)는 가속 구조에 포함된 자식 노드가 광선과 교차하는지 여부를 검사할 수 있다.
한편, 저장부(430)는 교차 검사 결과, 광선과 교차하는 자식 노드의 개수에 기초하여, 가속 구조의 레벨마다 설정된 비트 스택 값을 저장할 수 있다. 이때, 비트 스택은 단일 비트(1-bit)를 사용할 수 있으며, 이에 따라, 비트 스택 값은 제1 값 또는 제2 값으로 설정될 수 있다.
또한, 광선과 교차하는 자식 노드의 개수가 1개인 경우, 비트 스택 값은 제1 값으로 설정될 수 있으며, 광선과 교차하는 자식 노드의 개수가 2개 이상인 경우, 비트 스택 값은 제2 값으로 설정될 수 있다.
또한, 저장부(430)는 해당 레벨에서 이동한 경로에 기초하여, 설정된 루트 값을 저장할 수 있다. 또한, 광선과 교차하는 자식 노드가 N개일 때, 레벨의 루트 값은 log N bit를 사용하여, 설정될 수 있다.
제어부(420)는 레벨마다 설정된 비트 스택 값에 기초하여, 팝(pop) 레벨을 결정할 수 있다. 예를 들어, 비트 스택 값이 제2 값인 레벨들 중 가장 큰 레벨을 팝(pop) 레벨로 결정할 수 있다.
또한, 제어부(420)는 가속 구조의 루트(root) 노드에서 레벨마다 설정된 루트(route) 값에 기초하여, 결정된 팝 레벨로 이동하도록 제어할 수 있다.
또한, 제어부(420)는 팝 레벨에 도착하면, 팝 레벨의 현재 루트 값에 기초하여, 교차하는 자식 노드 중 이전에 탐색되지 않은 자식 노드로 이동하고, 팝 레벨의 루트(route) 값을 이동한 자식 노드에 대응하는 값으로 변경할 수 있다.
도 5는 본 발명의 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 나타내는 흐름도이다.
가속 구조 탐색 장치(400)는 가속 구조를 탐색하면서 자식 노드가 광선과 교차하는지를 검사할 수 있다(S510).
가속 구조 탐색 장치(400)는 교차 검사 결과, 광선과 교차하는 자식 노드의 개수에 기초하여, 가속 구조의 레벨마다 비트 스택 값을 설정할 수 있다(S520).
이때, 비트 스택은 단일 비트(one-bit) 스택을 사용할 수 있으며, 이에 따라, 비트 스택 값은 제1 값 또는 제2 값으로 설정될 수 있다. 여기서, 제1 값은 0일 수 있으며, 제2 값은 1일 수 있으며, 또는 그 반대일 수 있다.
이하에서는 설명의 편의를 위하여, 제1 값이 0이고, 제2 값이 1인 것으로 한다.
비트 스택 값은 상기 레벨에서, 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하는지 여부를 나타낼 수 있다. 탐색하지 않은 자식 노드가 존재하지 않는 경우, 비트 스택 값을 0으로 설정하고, 탐색하지 않은 자식 노드가 존재하는 경우, 비트 스택 값을 1로 설정할 수 있다.
예를 들어, 가속 구조 탐색 장치(400)는 광선과 교차하는 자식 노드의 개수가 1개인 경우, 부모 노드에 대응하는 레벨의 비트 스택 값을 0으로 설정하고, 상기 자식 노드로 이동하여, 탐색을 수행할 수 있다. 반면에, 가속 구조 탐색 장치(400)는 광선과 교차하는 자식 노드의 개수가 2개 이상인 경우, 부모 노드에 대응하는 레벨의 비트 스택 값을 1로 설정하고, 교차하는 자식 노드들 중 하나의 노드로 이동하여 탐색을 수행할 수 있다.
또한, 가속 구조 탐색 장치(400)는 상기와 같이 탐색을 수행하기 위하여, 자식 노드로 이동하고, 이동한 경로에 기초하여, 부모 노드에 대응하는 레벨의 루트(route) 값을 설정할 수 있다(S530).
레벨의 루트 값은 이동한 경로를 나타내는 값으로, 가속 구조 탐색 장치(400)는 광선과 교차하는 자식 노드가 N개일 때, log N bit를 사용하여, 레벨의 루트 값을 설정할 수 있다.
예를 들어, 광선과 교차하는 자식 노드의 개수가 2개이고, 왼쪽 자식 노드로 이동하여, 먼저 탐색을 수행하는 경우, 가속 구조 탐색 장치(400)는 부모 노드에 대응하는 레벨의 루트 값을 0으로 설정할 수 있다. 반면에, 오른쪽 자식 노드로 이동하여, 먼저 탐색을 수행하는 경우, 가속 구조 탐색 장치(400)는 부모 노드에 대응하는 레벨의 루트 값을 1로 설정할 수 있다.
또한, 광선과 교차하는 자식 노드의 개수가 N개이고, 왼쪽에서부터 i번째 자식 노드로 이동하여, 먼저 탐색을 수행하는 경우, 가속 구조 탐색 장치(400)는 부모 노드에 대응하는 레벨의 루트 값을 i-1로 설정할 수 있다.
가속 구조 탐색 장치(400)는 상기와 같은 방법으로 가속 구조의 레벨마다 비트 스택 값과 루트 값을 설정하면서, 가속 구조 탐색을 계속해서 수행할 수 있다.
가속 구조 탐색을 수행하다, 교차하는 자식 노드가 존재하는지 판단하여(S540), 존재하지 않는 경우(예를 들어, 리프 노드이거나 자식 노드 모두 광선과 교차하지 않는 경우), 가속 구조 탐색 장치(400)는 레벨들의 비트 스택 값에 기초하여, 팝 레벨을 결정할 수 있다(S550).
도 6은 도 5의 550 단계(S550)를 보다 상세히 설명하기 위한 흐름도이다.
도 6을 참조하면, 가속 구조 탐색 장치(400)는 레벨들의 비트 스택 값을 검사할 수 있다(S610).
검사결과, 레벨들의 비트 스택 값이 모두 제1 값, 예를 들어, 0 인지를 판단하여(S620), 모두 제1 값인 경우, 가속 구조 탐색 수행을 종료할 수 있다(S630).
반면에, 레벨들의 비트 스택 값이 모두 제1 값이 아닌 경우, 가속 구조 탐색 장치(400)는 비트 스택 값이 제2 값, 예를 들어, 1로 설정된 레벨들 중 가장 큰 레벨을 팝 레벨로 결정할 수 있다(S640).
이때, 팝 레벨에서 광선과 교차하는 자식 노드 중 탐색을 수행하지 않은 자식 노드가 1개인 경우, 가속 구조 탐색 장치(400)는 팝 레벨의 비트 스택 값을 제1 값, 예를 들어 0으로 변경할 수 있다.
반면에, 팝 레벨에서 광선과 교차하는 자식 노드 중 탐색을 수행하지 않은 자식 노드가 2개 이상인 경우, 가속 구조 탐색 장치(400)는 팝 레벨의 비트 스택 값을 변경하지 않고, 제2 값, 예를 들어 1로 유지할 수 있다.
팝 레벨이 결정되면, 가속 구조 탐색 장치(400)는 레벨마다 설정된 루트(route) 값에 기초하여, 루트(root) 노드부터 팝 레벨까지 이동할 수 있다(S560). 또한, 팝 레벨로 이동하면, 가속 구조 탐색 장치(400)는 팝 레벨의 자식 노드 중 이전에 탐색하지 않은 자식 노드로 이동하고, 팝 레벨의 루트 값을 변경할 수 있다(S570).
도 7은 도 5의 560 단계(S560) 및 570 단계(S570)를 보다 상세히 설명하기 위한 흐름도이다.
도 7을 참조하면, 가속 구조 탐색 장치(400)는 루트(root) 노드에서부터 시작하여, 가속 구조의 각 레벨마다 설정된 루트(root) 값에 대응하는 자식 노드로 이동할 수 있다(S710).
예를 들어, 루트(root) 노드가 2개의 자식 노드를 포함하고, 루트(root) 노드에 대응하는 레벨의 루트(route) 값이 제1 값, 예를 들어, 0으로 설정되어 있는 경우, 왼쪽 자식 노드로 이동할 수 있다. 또는 루트(root) 노드에 대응하는 레벨의 루트(route) 값이 제2 값, 예를 들어 1로 설정되어 있는 경우, 오른쪽 자식 노드로 이동할 수 있다.
또한, 루트(root) 노드가 4개의 자식 노드를 포함하면, 루트(route) 값은 2(log4) bit를 사용하여, 4개의 자식 노드에 대응하도록 4개의 값을 가질 수 있으며, 이에 따라, 루트(root) 노드가 포함된 레벨의 루트(route) 값에 기초하여, 루트 값에 대응하는 루트(root) 노드의 자식 노드로 이동할 수 있다.
예를 들어, 루트 노드의 레벨이 제1 값, 예를 들어, 0으로 설정되어 있는 경우, 제1 값에 대응하는 루트 노드의 1번째 자식 노드로 이동할 수 있으며, 제2 값, 예를 들어, 1로 설정되어 있는 경우, 제2 값에 대응하는 루트 노드의 2번째 자식 노드로 이동할 수 있다.
계속해서, 레벨의 루트(route) 값에 대응하는 자식 노드로 이동하다가 팝 레벨에 도착하면, 팝 레벨의 루트(route) 값과 다른 루트(route) 값에 대응하는 자식 노드로 이동할 수 있다(S730).
예를 들어, 팝 레벨의 루트 값이 제1 값으로 설정되어 있는 경우, 루트(route) 값 제2 값에 대응하는 자식 노드로 이동할 수 있다.
또한, 팝 레벨의 루트(route) 값을 이동한 자식 노드에 대응하는 루트(route) 값으로 변경할 수 있다(S740). 예를 들어, 팝 레벨에서 루트(route) 값 제2 값에 대응하는 자식 노드로 이동한 경우, 팝 레벨의 루트(route) 값을 제2 값으로 변경할 수 있다.
가속 구조 탐색 장치(400)는 이동한 노드부터 다시 탐색을 수행할 수 있다(S580).
상기에서 설명한 바와 같이, 가속 구조 탐색 장치(400)는 도 6의 630 단계(S630)와 같이, 가속 구조의 모든 레벨의 비트 스택 값들이 제1 값이 될 때까지, 계속하여, 가속구조 탐색을 수행할 수 있다.
도 8은 본 발명의 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 설명하기 위해 참조되는 도이다.
도 8을 참조하면, r은 루트 노드(root node)이고, c는 현재 탐색 중인 노드이고, p는 팝(pop)되야 하는 노드를 나타낸다. 그리고, n은 노드가 광선과 교차하지 않거나 이미 탐색을 완료해서 앞으로 탐색을 하지 않을 노드를 나타낸다.
또한, 가속 구조 옆의 숫자는 비트 스택(bit stack) 값과 루트(route) 값을 나타낸다. 비트 스택 값이 0이면 탐색하지 않은 자식 노드가 존재하지 않는 것을 나타내고, 비트 스택 값이 1이면, 탐색하지 않은 자식 노드가 존재한다는 것을 나타낸다.
도 8의 (a)를 참조하면, c 노드가 리프 노드이기 때문에, 가속 구조 탐색 장치(400)는 팝 레벨(pop level)을 결정해야 한다.
따라서, 가속 구조 탐색 장치(400)는 가속 구조에 포함된 레벨들의 비트 스택 값을 검사하여, 비트 스택 값이 1로 설정된 레벨들을 검출하고, 검출된 레벨들 중 가장 큰 레벨을 팝 레벨로 결정할 수 있다.
도 8의 (a)를 참조하면, 비트 스택 값이 1인 레벨 중에 가장 큰 레벨인 3번째 레벨을 팝 레벨로 결정될 수 있다.
이때, 도 8의 (b)에 도시된 바와 같이, 팝 레벨로 결정된 3번째 레벨에서 광선과 교차하는 자식 노드 중 탐색을 수행하지 않은 자식 노드가 1개인 경우, 가속 구조 탐색 장치(400)는 팝 레벨의 비트 스택 값을 0으로 변경할 수 있다.
도 8의 (b)를 참조하면, 팝 레벨이 결정되면, 팝 레벨에 도착할 때까지 레벨마다 설정된 루트 값에 따라 루트 노드로부터 자식 노드로 이동한다.
예를 들어, 루트 노드에 대응하는 레벨의 루트 값이 0으로 설정된 경우, 루트 노드에서 왼쪽 자식 노드로 이동하고, 다시 이동한 자식 노드에 대응하는 레벨(2번째 레벨)의 루트 값이 0으로 설정되어 있는 경우, 다시 왼쪽 자식 노드로 이동할 수 있다.
한편, 도시하지는 않았지만, 레벨의 루트 값이 1로 설정되어 있는 경우, 오른쪽 자식 노드로 이동할 수 있다.
상기와 같이 이동하여, 팝 레벨(pop level)에 도착하면, 현재 설정되어 있는 루트 값과 다른 루트 값에 대응하는 자식 노드로 이동할 수 있다.
예를 들어, 도 8의 (a)와 같이, 팝 레벨의 루트(route) 값이 0으로 설정되어 있는 경우, 팝 레벨의 루트(route) 값을 1로 변경하고, 루트 값 1에 대응하는 자식 노드인 오른쪽 자식 노드로 이동할 수 있다.
이에 따라, 가속 구조 탐색 장치(400) 팝(pop)되야 하는 노드로 이동하여, 탐색을 수행할 수 있다.
도 9는 본 발명의 일 실시예에 따른 레이 트레이싱 시스템에서의 비트 스택 값과 루트 값을 설정하는 방법을 설명하기 위해 참조되는 도이다.
도 9를 참조하면, c는 현재 탐색 중인 노드이고, p는 팝(pop)되야 하는 노드를 나타낸다. 그리고, n은 이미 탐색을 완료해서 앞으로 탐색을 하지 않을 노드를 나타낸다.
또한, 가속 구조 옆의 숫자는 비트 스택(bit stack) 값과 루트(route) 값을 나타낸다. 비트 스택 값이 0이면 탐색하지 않은 자식 노드가 존재하지 않는 것을 나타내고, 비트 스택 값이 1이면, 탐색하지 않은 자식 노드가 존재한다는 것을 나타낸다.
한편, 루트 값은 현재 레벨 노드의 자식 노드의 개수가 N인 경우, log N bit를 사용하여, 나타낼 수 있다.
예를 들어, 도 9와 같이 현재 레벨 노드의 자식 노드가 4개인 경우, 2(=log 4) bit를 사용하여, 현재 레벨의 루트 값을 설정할 수 있다.
또한, 가속 구조 탐색 장치(400)는 N개의 자식 노드 중 왼쪽에서 i번째 자식 노드로 이동하는 경우, 루트 값을 i-1로 설정할 수 있다.
도 9의 (a)를 참조하면, 자식 노드 4개 중 왼쪽으로부터 1번째 자식 노드로 이동하는 경우, 루트(route) 값을 0으로 설정할 수 있다. 이때, 현재 레벨에서 탐색해야 할 자식 노드가 존재하기 때문에, 비트 스택 값은 1로 설정할 수 있다.
도 9의 (b)를 참조하면, 자식 노드 4개 중 왼쪽으로부터 1번째 자식 노드의 탐색을 마친 후, 2번째 자식 노드로 이동하는 경우, 현재 레벨의 루트 값을 1로 설정할 수 있다. 이때, 현재 레벨에서 탐색해야 할 자식 노드가 존재하기 때문에, 비트 스택 값은 1로 유지할 수 있다.
도 9의 (c)를 참조하면, 자식 노드 4개 중 1번째 자식 노드와 2번째 자식 노드에 대한 탐색을 마친 후, 3번째 자식 노드로 이동하는 경우, 현재 레벨의 루트 값을 2로 설정할 수 있다. 이때, 현재 레벨에서 탐색해야 할 자식 노드가 존재하기 때문에 비트 스택 값은 1로 유지할 수 있다.
도 9의 (d)를 참조하면, 자식 노드 4개 중 1번째 자식 노드, 2번째 자식 노드 및 3번째 자식 노드에 대한 탐색을 마친 후, 4번째 자식 노드로 이동하는 경우, 현재 레벨의 루트 값을 3으로 설정할 수 있다. 이때, 현재 레벨에서 탐색해야 할 자식 노드가 존재하지 않기 때문에 비트 스택 값을 0으로 변경할 수 있다.
한편, 표 1은 앞에서 설명한 가속 구조 탐색 방법을 컴퓨터 프로그램 코드로 구현한 예를 나타낸 것이다.
Figure pat00001
상기와 같이, 본 발명의 일 실시예에 의한 레이 트레이싱 시스템에서의 가속 구조 탐색 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.

Claims (25)

  1. 가속 구조에 포함된 자식 노드(child node)가 광선과 교차하는지 검사하는 단계;
    상기 검사결과, 상기 광선과 교차하는 자식 노드의 개수에 기초하여, 상기 가속 구조의 레벨(level)마다 비트 스택(bit stack) 값을 설정하는 단계;
    상기 광선과 교차하는 자식 노드로 이동하여 탐색을 수행하고, 상기 이동 경로에 기초하여, 상기 레벨마다 루트(route) 값을 설정하는 단계;
    상기 이동한 노드가 리프 노드(leaf node)이거나 상기 이동한 노드의 자식 노드가 상기 광선과 교차하지 않는 경우, 상기 레벨마다 설정된 비트 스택 값에 기초하여, 팝 레벨(pop level)을 결정하는 단계;
    상기 레벨마다 설정된 레벨 루트 값에 기초하여, 상기 가속 구조의 루트 노드(root node)로부터 상기 팝 레벨로 이동하는 단계;
    상기 팝 레벨의 루트 값에 기초하여, 상기 팝 레벨에서 광선과 교차하는 자식 노드 중 이전에 탐색하지 않은 자식 노드로 이동하고, 상기 팝 레벨의 루트 값을 변경하는 단계; 및
    상기 이동한 노드부터 상기 가속 구조 탐색을 수행하는 단계를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  2. 제1항에 있어서,
    상기 비트 스택 값은 상기 레벨에서, 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하는지 여부를 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  3. 제2항에 있어서,
    상기 비트 스택 값이 제1 값인 경우, 상기 레벨에서 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하지 않음을 나타내고, 상기 비트 스택 값이 제2 값인 경우, 상기 레벨에서 상기 탐색하지 않은 자식 노드가 존재함을 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  4. 제1항에 있어서,
    상기 비트 스택 값을 설정하는 단계는
    상기 광선과 교차하는 자식 노드의 개수가 1개인 경우, 부모 노드(parent node)에 대응하는 레벨의 비트 스택 값을 제1 값으로 설정하고, 상기 교차하는 자식 노드의 개수가 2개 이상인 경우, 상기 비트 스택 값을 제2 값으로 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  5. 제1항에 있어서,
    상기 루트 값은 상기 광선이 상기 레벨에서 이동한 자식 노드에 대응하는 값인 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  6. 제1항에 있어서,
    상기 루트 값을 설정하는 단계는,
    상기 광선과 교차하는 자식 노드 중 제1 자식 노드로 이동하는 경우, 상기 상기 레벨의 루트 값을 제1 값으로 설정하고, 제2 자식 노드로 이동하는 경우, 상기 자식 노드의 부모 노드에 대응하는 레벨의 루트 값을 제2 값으로 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  7. 제1항에 있어서,
    상기 루트 값을 설정하는 단계는,
    상기 레벨에서, 상기 광선과 교차하는 자식 노드가 N개인 경우, log N bit를 사용하여, 상기 루트 값을 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  8. 제1항에 있어서,
    상기 팝 레벨을 결정하는 단계는,
    상기 비트 스택 값이 제2 값인 레벨들 중 가장 큰 레벨을 상기 팝 레벨로 결정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  9. 제1항에 있어서,
    상기 탐색 방법은,
    상기 팝 레벨에서 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 1개인 경우, 상기 팝 레벨의 비트 스택 값을 제1 값으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  10. 제1항에 있어서,
    상기 비트 스택 값은 1 bit를 사용하여, 0 또는 1을 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  11. 제1항에 있어서,
    상기 팝 레벨로 이동하는 단계는,
    상기 레벨마다 설정된 루트 값에 대응하는 자식 노드로 이동하여, 상기 가속 구조의 루트 노드로부터 상기 팝 레벨로 이동하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  12. 제1항에 있어서,
    상기 팝 레벨의 루트 값을 변경하는 단계는,
    상기 팝 레벨의 루트 값과 다른 루트 값에 대응하는 자식 노드로 이동하고, 상기 팝 레벨의 루트 값을 상기 다른 루트 값으로 변경하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  13. 가속 구조에 포함된 자식 노드(child node)가 광선과 교차하는지 여부를 검사하는 연산부;
    상기 교차 검사결과, 상기 광선과 교차하는 자식 노드의 개수에 기초하여, 상기 가속 구조의 레벨(level)마다 설정된 비트 스택(bit stack) 값 및 상기 광선의 이동 경로에 기초하여, 상기 레벨마다 설정된 루트(route) 값을 저장하는 저장부; 및
    상기 레벨마다 설정된 비트 스택 값에 기초하여, 팝 레벨(pop level)을 결정하고, 상기 레벨마다 설정된 루트 값에 기초하여, 상기 가속 구조의 루트 노드(root node)로부터 상기 팝 레벨로 이동하도록 제어하고, 상기 팝 레벨의 루트 값에 기초하여, 상기 팝 레벨에서 광선과 교차하는 자식 노드 중 이전에 탐색하지 않은 자식 노드로 이동하며, 상기 팝 레벨의 레벨 루트 값을 변경하는 제어부;를 포함하고,
    상기 연산부는 상기 이동된 노드부터 다시 탐색을 수행하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  14. 제13항에 있어서,
    상기 비트 스택 값은 상기 레벨에서, 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하는지 여부를 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  15. 제14항에 있어서,
    상기 비트 스택 값이 제1 값인 경우, 상기 레벨에서 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 존재하지 않음을 나타내고, 상기 비트 스택 값이 제2 값인 경우, 상기 레벨에서 상기 탐색하지 않은 자식 노드가 존재함을 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  16. 제13항에 있어서,
    상기 제어부는
    상기 광선과 교차하는 자식 노드의 개수가 1개인 경우, 부모 노드에 대응하는 레벨의 비트 스택 값을 제1 값으로 설정하고, 상기 교차하는 자식 노드의 개수가 2개 이상인 경우, 상기 비트 스택 값을 제2 값으로 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  17. 제13항에 있어서,
    상기 루트 값은 상기 광선이 상기 레벨에서 이동한 자식 노드에 대응하는 값인 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  18. 제13항에 있어서,
    상기 제어부는,
    상기 광선과 교차하는 자식 노드 중 제1 자식 노드로 이동하는 경우, 부모 노드에 대응하는 레벨의 루트 값을 제1 값으로 설정하고, 제2 자식 노드로 이동하는 경우, 상기 부모 노드에 대응하는 레벨의 루트 값을 제2 값으로 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  19. 제13항에 있어서,
    상기 제어부는,
    상기 레벨에서, 상기 광선과 교차하는 자식 노드가 N개인 경우, log N bit를 사용하여, 상기 루트 값을 설정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  20. 제13항에 있어서,
    상기 제어부는,
    상기 비트 스택 값이 제2 값인 레벨들 중 가장 큰 레벨을 상기 팝 레벨로 결정하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  21. 제13항에 있어서,
    상기 제어부는,
    상기 팝 레벨에서 상기 광선과 교차하는 자식 노드 중 탐색하지 않은 자식 노드가 1개인 경우, 상기 팝 레벨의 비트 스택 값을 제1 값으로 변경하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  22. 제13항에 있어서,
    상기 비트 스택 값은 1 bit를 사용하여, 0 또는 1을 나타내는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  23. 제13항에 있어서,
    상기 제어부는,
    상기 레벨마다 설정된 루트 값에 대응하는 자식 노드로 이동하여, 상기 가속 구조의 루트 노드로부터 상기 팝 레벨로 이동하도록 제어하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  24. 제13항에 있어서,
    상기 제어부는,
    상기 팝 레벨의 루트 값과 다른 루트 값에 대응하는 자식 노드로 이동하도록 제어하고, 상기 팝 레벨의 루트 값을 상기 다른 루트 값으로 변경하는 것을 특징으로 하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  25. 상기 제1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020130126110A 2013-10-22 2013-10-22 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 KR102193683B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130126110A KR102193683B1 (ko) 2013-10-22 2013-10-22 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
US14/260,754 US9728000B2 (en) 2013-10-22 2014-04-24 Apparatus and method of using acceleration structure in ray tracing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130126110A KR102193683B1 (ko) 2013-10-22 2013-10-22 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법

Publications (2)

Publication Number Publication Date
KR20150046642A true KR20150046642A (ko) 2015-04-30
KR102193683B1 KR102193683B1 (ko) 2020-12-21

Family

ID=52825775

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130126110A KR102193683B1 (ko) 2013-10-22 2013-10-22 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법

Country Status (2)

Country Link
US (1) US9728000B2 (ko)
KR (1) KR102193683B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9552664B2 (en) 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US10311629B2 (en) 2016-01-22 2019-06-04 Intel Corporation Level of detail selection during ray tracing
GB2601792A (en) * 2020-12-10 2022-06-15 Imagination Tech Ltd Intersection testing for ray tracing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080088619A1 (en) * 2006-10-17 2008-04-17 Robert Allen Shearer Branch Prediction for Acceleration Data Structure Traversal
US8289324B1 (en) * 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1483672A4 (en) * 2002-02-28 2008-03-26 Silicon Graphics Inc METHOD AND SYSTEM FOR CACHED MEMORY COHERENCE IN A MULTIPROCESSOR SYSTEM WITHOUT INCREASING THE SHARING VECTOR
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
KR101284324B1 (ko) 2011-06-29 2013-07-08 세종대학교산학협력단 레이 트레이싱 코어 및 레이 트레이싱 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080088619A1 (en) * 2006-10-17 2008-04-17 Robert Allen Shearer Branch Prediction for Acceleration Data Structure Traversal
US8289324B1 (en) * 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal

Also Published As

Publication number Publication date
US9728000B2 (en) 2017-08-08
KR102193683B1 (ko) 2020-12-21
US20150109301A1 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
JP6474585B2 (ja) レイトレーシング処理装置及びその方法
KR102244619B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR20150046643A (ko) 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
KR102493461B1 (ko) 렌더링 시스템 및 방법
US10497167B2 (en) Method and apparatus for generating acceleration structure
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
US10586375B2 (en) Hybrid raytracing approach for modeling light reflection
KR20150039493A (ko) 레이 트레이싱 처리 장치 및 방법
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
KR20150057868A (ko) 레이 트레이싱 시스템에서의 이진트리 탐색 방법 및 장치
KR102219289B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR20160011486A (ko) 하이브리드 렌더링 방법 및 장치
KR20150136348A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR102193683B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR20150039496A (ko) 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치
KR102537529B1 (ko) 레이 트레이싱 장치 및 방법
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR20150078003A (ko) 캐시 메모리 시스템 및 그 동작방법
Robles-Ortega et al. A Novel Ray-shooting Method to Render Night Urban Scenes

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