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

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

Info

Publication number
KR20150136347A
KR20150136347A KR1020140063725A KR20140063725A KR20150136347A KR 20150136347 A KR20150136347 A KR 20150136347A KR 1020140063725 A KR1020140063725 A KR 1020140063725A KR 20140063725 A KR20140063725 A KR 20140063725A KR 20150136347 A KR20150136347 A KR 20150136347A
Authority
KR
South Korea
Prior art keywords
node
target node
ray
child
next target
Prior art date
Application number
KR1020140063725A
Other languages
English (en)
Other versions
KR102219289B1 (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 KR1020140063725A priority Critical patent/KR102219289B1/ko
Priority to EP15169467.6A priority patent/EP2950275B1/en
Priority to CN201510279203.3A priority patent/CN105279783B/zh
Priority to JP2015107282A priority patent/JP6460914B2/ja
Priority to US14/722,887 priority patent/US10049488B2/en
Publication of KR20150136347A publication Critical patent/KR20150136347A/ko
Application granted granted Critical
Publication of KR102219289B1 publication Critical patent/KR102219289B1/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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

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

Abstract

레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 방법에 관한 것이다. 레이 트레이싱 시스템에서의 가속 구조 탐색 방법은, 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드(child node)들의 정보를 획득하고, 획득된 정보에 기초하여, 상기 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단하고, 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정하여, 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행함으로써, 가속 구조를 탐색하는데 소요되는 시간을 줄일 수 있다.

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라고 한다)이다.
개시된 일 실시예는 가속 구조 탐색 수행 시, 자식 노드들과 광선과의 교차 검사를 효율적으로 수행할 수 있는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 탐색 방법을 제공하는 것이다.
일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법은 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드(child node)들의 정보를 획득하는 단계; 상기 획득된 정보에 기초하여, 상기 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단하는 단계; 상기 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정하는 단계; 및 상기 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계를 포함한다.
다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 광선과 교차하는지 여부를 판단하는 단계는, 상기 복수의 자식 노드들 각각에 대해 병렬적으로 상기 광선과 교차하는지 여부를 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 광선과 교차하는지 여부를 판단하는 단계는, 제 1 자식 노드와 제 2 자식 노드에 대해 각각 획득한 정보에 기초하여, 상기 제 1 자식 노드와 상기 제 2 자식 노드 각각이 상기 광선과 교차하는지 여부를 동시에 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 다음 타겟 노드를 결정하는 단계는, 상기 광선과 교차하는 하나의 자식 노드가 존재하는 경우, 상기 하나의 자식 노드를 상기 다음 타겟 노드로 결정하고, 상기 광선과 교차하는 두 개 이상의 자식 노드가 존재하는 경우, 상기 두 개 이상의 자식 노드 중에서 상기 광선과의 교차 거리가 가장 가까운 자식 노드를 상기 다음 타겟 노드로 결정한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 다음 타겟 노드를 결정하는 단계는, 상기 광선과 교차하는 자식 노드가 존재하지 않는 경우, 상기 가속 구조에서, 상기 타겟 노드에 종속되어 있지 않은 노드들 중 어느 하나의 노드를 추출하는 단계; 및 상기 추출된 노드를 상기 다음 타겟 노드로 결정하는 단계를 포함한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계는, 상기 다음 타겟 노드가 이너(inner) 노드인 경우, 상기 다음 타겟 노드의 적어도 하나의 자식 노드로 이동하고, 상기 다음 타겟 노드가 리프(leaf) 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브(primitive)가 상기 광선과 교차하는지 여부를 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계는, 상기 적어도 하나의 프리미티브 각각에 대해 상기 광선과 교차하는지 여부를 판단한 경우, 상기 광선과 교차하는 다른 자식 노드를 탐색하는 단계를 더 포함한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 다음 타겟 노드가 리프 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브에 대해 기설정된 바운딩 박스와 상기 광선의 교차 여부를 판단하는 단계를 더 포함한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 루트 노드에 포함되는 상기 타겟 노드가 리프 노드인 경우, 상기 타겟 노드에 포함되는 적어도 하나의 프리미티브를 분할하는 단계; 및 상기 분할된 적어도 하나의 프리미티브에 기초하여, 상기 타겟 노드의 자식 노드를 생성하는 단계를 더 포함한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 장치는 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드(child node)들의 정보를 획득하는 정보 획득부; 상기 획득된 정보에 기초하여, 상기 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단하는 교차 검사부; 및 상기 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정하고, 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 제어부를 포함한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 교차 검사부는,상기 복수의 자식 노드들 각각에 대해 병렬적으로 상기 광선과 교차하는지 여부를 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 교차 검사부는, 제 1 자식 노드와 제 2 자식 노드에 대해 각각 획득한 정보에 기초하여, 상기 제 1 자식 노드와 상기 제 2 자식 노드 각각이 상기 광선과 교차하는지 여부를 동시에 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 제어부는, 상기 광선과 교차하는 하나의 자식 노드가 존재하는 경우, 상기 하나의 자식 노드를 상기 다음 타겟 노드로 결정하고, 상기 광선과 교차하는 두 개 이상의 자식 노드가 존재하는 경우, 상기 두 개 이상의 자식 노드 중에서 상기 광선과의 교차 거리가 가장 가까운 자식 노드를 상기 다음 타겟 노드로 결정한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 제어부는, 상기 광선과 교차하는 자식 노드가 존재하지 않는 경우, 상기 가속 구조에서, 상기 타겟 노드에 종속되어 있지 않은 노드들 중 어느 하나의 노드를 추출하고, 상기 추출된 노드를 상기 다음 타겟 노드로 결정한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 제어부는, 상기 다음 타겟 노드가 이너(inner) 노드인 경우, 상기 다음 타겟 노드의 적어도 하나의 자식 노드로 이동하고, 상기 다음 타겟 노드가 리프(leaf) 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브(primitive)가 상기 광선과 교차하는지 여부를 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서,에 있어서, 상기 제어부는, 상기 적어도 하나의 프리미티브 각각에 대해 상기 광선과 교차하는지 여부를 판단한 경우, 상기 광선과 교차하는 다른 자식 노드를 탐색한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 상기 교차 검사부는, 상기 다음 타겟 노드가 리프 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브에 대해 기설정된 바운딩 박스와 상기 광선의 교차 여부를 판단한다.
또 다른 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법에 있어서, 제어부는, 루트 노드에 포함되는 상기 타겟 노드가 리프 노드인 경우, 상기 타겟 노드에 포함되는 적어도 하나의 프리미티브를 분할하여 상기 분할된 적어도 하나의 프리미티브에 기초하여, 상기 타겟 노드의 자식 노드를 생성한다.
가속 구조 탐색 수행 시, 처리 속도를 향상시켜 소요되는 시간을 감소시킴으로써 자식 노드들과 광선과의 교차 검사를 효율적으로 수행할 수 있다.
도 1은 일반적인 레이 트레이싱 방법을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 시스템을 나타내는 도면이다.
도 3은 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 장치를 나타내는 블록도이다.
도 4는 일 실시예에 따른 타겟 노드의 자식 노드들에 관한 정보가 저장되는 자료 구조를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 설명하기 위한 흐름도이다.
도 6은 일 실시예에 따른 가속 구조 탐색 장치가 광선과 교차하는 자식 노드의 타입에 따라 대응되는 동작을 수행하는 방법을 구체적으로 설명하기 위한 흐름도이다.
도 7은 일 실시예에 따른, 레이 트레이싱 시스템에서의 상태 다이어그램을 도시한 도면이다.
도 8은 일 실시예에 따라, 레이 트레이싱 시스템에서의 가속 구조 탐색 장치를 보다 구체적으로 설명하기 위한 블록도이다.
이하에서는 도면을 참조하여 개시된 실시 예들을 상세히 설명한다.
도 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차원 공간상의 오브젝트들의 관계를 나타내는 가속 구조(AS)를 생성할 수 있다.
가속 구조는 루트 노드(root node), 이너 노드(inner node), 리프 노드(leaf node) 및 프리미티브(primitive)를 포함할 수 있다. 여기에서, 루트 노드는 부모 노드(parent node)는 가지지 않고, 자식 노드(child node)만 가지는 최상위 노드이다. 또한, 이너 노드는 부모 노드 및 자식 노드를 모두 가지는 노드이다. 리프 노드는 자식 노드는 가지지 않고, 부모 노드만 가지는 최하위 노드이다. 한편, 리프 노드는 리프 노드에 존재하는 프리미티브들을 포함할 수 있다.
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)에 저장된다.
또한, 기하 데이터는 프리미티브들에 대한 정보를 나타낸다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함되는 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다. 예를 들어, 프리미티브가 삼각형인 경우, 기하 데이터는 삼각형들의 세 점에 대한 정점 좌표, 법선 벡터 또는 텍스처 좌표를 포함할 수 있다.
한편, 레이 트레이싱 장치(100)는 가속 구조(AS)를 탐색하여, 광선에 교차하는 리프 노드를 검출할 수 있다. 레이 트레이싱 장치(100)는 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색이 완료되면, 다른 경로의 가속 구조를 탐색할 수 있다. 다른 경로의 가속 구조를 탐색하는 경우, 레이 트레이싱 장치(100)는 탐색의 효율을 높이기 위해, 탐색되지 않은 노드(node) 정보를 스택(stack)에 저장할 수 있다. 여기에서, 스택은 레이 트레이싱 장치(100)에 포함되는 임시 기억 장치일 수 있다. 다만, 이는 일 실시예일 뿐, 스택은 레이 트레이싱 장치(100)의 외부에 존재하고, 레이 트레이싱 장치(100)에 포함된 복수개의 모듈들과 각각 통신할 수도 있다.
도 3은 일 실시예에 따른 레이 트레이싱 시스템(10)에서의 가속 구조 탐색 장치(300)를 나타내는 블록도이다.
도 3을 참조하면, 가속 구조 탐색 장치(300)는 정보 획득부(310), 교차 검사부(320) 및 제어부(330)를 포함할 수 있다.
또한, 도 3에 도시된, 정보 획득부(310), 교차 검사부(320) 및 제어부(330)는 가속 구조 탐색 수행을 위한 것으로, 도 2의 TRV 유닛(120)에 포함되는 구성일 수 있다. 다만, 이에 한정되는 것은 아니다.
정보 획득부(310)는 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득한다. 여기에서, 타겟 노드는 이너 노드 또는 루트 노드일 수 있다. 정보 획득부(310)는 다음에 탐색하기 위한 노드(이하, 다음 타겟 노드)를 결정하기 위해, 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득할 수 있다.
정보 획득부(310)는 루트 노드로부터 가속 구조의 탐색을 시작할 수 있다. 일 실시예에 따른 루트 노드는 자식 노드를 가질 수 있다. 정보 획득부(310)는 루트 노드의 다음 타겟 노드를 결정하기 위해 루트 노드에 대한 복수의 자식 노드들의 정보를 획득할 수 있다.
다른 실시예에 따라, 루트 노드가 자식 노드를 갖지 않는 리프 노드인 경우, 정보 획득부(310)는 리프 노드에 포함된 적어도 하나의 프리미티브를 분할하여, 자식 노드를 생성하도록 가속 구조 생성 장치(200)를 제어할 수 있다. 가속 구조 생성 장치(200)가 리프 노드에 포함된 적어도 하나의 프리미티브를 분할하여 자식 노드를 생성하는 경우, 정보 획득부(310)는 생성된 자식 노드에 관한 정보를 획득할 수 있다.
한편, 타겟 노드의 자식 노드들에 관한 정보는 타겟 노드의 다음 타겟 노드를 결정하는데 필요한 정보들을 포함할 수 있다. 일 실시예에 따른 타겟 노드의 자식 노드들에 관한 정보에는 자식 노드들이 저장되어 있는 메모리 주소, 자식 노드들을 나타내는 인덱스, 자식 노드들의 타입 정보 및 자식 노드들의 바운딩 박스 정보 등이 포함될 수 있다. 여기에서, 바운딩 박스는 3 차원 공간상에서 독립적으로 움직이는 물체를 포함할 수 있는 가장 작은 육면체 공간이다.
타겟 노드의 자식 노드들에 관한 정보에 대해서는 다음에서, 도 4를 참조하여 구체적으로 설명하도록 한다.
도 4는 일 실시예에 따른 타겟 노드의 자식 노드들에 관한 정보가 저장되는 자료 구조를 설명하기 위한 도면이다.
도 4를 참조하면, 타겟 노드의 자식 노드들에 관한 정보는 기설정된 형태의 자료 구조(400)를 가질 수 있다. 예를 들어, 타겟 노드들의 자식 노드들에 관한 정보에는 자식 노드들을 식별할 수 있는 식별 정보(414, 416)들이 포함될 수 있다. 자식 노드가 이너 노드인 경우, 식별 정보는 자식 노드를 나타내는 인덱스 정보(414, 416)를 나타낼 수 있다. 한편, 자식 노드가 리프 노드인 경우, 식별 정보(414, 416)는 자식 노드에 포함된 프리미티브의 시작 인덱스를 나타내는데 사용된다.
또한, 자식 노드가 리프 노드인 경우, 자식 노드에 포함되는 프리미티브의 개수를 나타내기 위해, 타겟 노드의 자식 노드들에 관한 정보에는 자식 노드들 각각의 프리미티브의 개수를 나타내는 프리미티브 개수 정보(422, 424)가 포함될 수 있다. 한편, 자식 노드가 이너 노드인 경우, 프리미티브 개수 정보(422, 424)는 0으로 설정될 수 있다.
타겟 노드의 자식 노드들에 관한 정보에는 자식 노드들의 바운딩 박스 정보(432, 434)가 포함될 수 있다. 또한, 타겟 노드의 자식 노드들에 관한 정보에는, 타겟 노드의 부모 노드에 관한 정보(412)가 더 포함될 수도 있다. 다만 이는 일 실시예일 뿐, 타겟 노드의 자식 노드들에 관한 정보에는 전술한 정보들 이외의 다른 정보들도 포함될 수 있다.
일 실시예에 따른 정보 획득부(310)는 기설정된 형태의 자료 구조(400)에 포함된 자식 노드들 각각에 대한 정보들을 동시에 획득하여, 타겟 노드의 자식 노드들 각각에 관한 정보를 획득하기 위해, 반복적으로 타겟 노드를 탐색하지 않을 수 있다. 정보 획득부(310)는 자식 노드들이 저장되어 있는 메모리 주소(412, 414)를 통해, 각각의 자식 노드를 탐색할 수 있고, 자식 노드들을 나타내는 인덱스(422, 424)를 통해 자식 노드들을 식별할 수 있다. 한편, 타겟 노드가 이너 노드인 경우, 자식 노드들을 나타내는 인덱스(422, 424)는 타겟 노드에 포함되는 적어도 하나의 프리미티브를 각각 나타낼 수 있다.
또한, 정보 획득부(310)는 자식 노드들의 타입 정보(432, 434) 및 자식 노드들의 바운딩 박스 정보(442, 444)를 획득하여, 한 번의 탐색 과정만으로, 다음에 탐색할 노드 및 다음에 탐색할 노드에 대해 수행할 동작을 결정할 수 있는 정보를 제공할 수 있다.
한편, 본 명세서에서는 설명의 편의상 타겟 노드가 2개의 자식 노드들을 갖는 경우를 일 예로 들어 설명하도록 한다. 다만, 이는 일 실시예일 뿐, 타겟 노드가 2개의 자식 노드만을 갖는 것은 아니다.
교차 검사부(320)는 획득된 복수의 자식 노드들의 정보에 기초하여, 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단한다. 교차 검사부(320)는 자식 노드들의 바운딩 박스 정보(443, 444)를 기초로, 자식 노드들 각각의 바운딩 박스가 광선과 교차하는지 여부를 병렬적으로 판단할 수 있다.
일 실시예에 따른 교차 검사부(320)는 자식 노드들 각각의 바운딩 박스가 광선과 교차하는지 여부를 동시에 판단할 수 있다. 예를 들어, 교차 검사부(320)는 제 1 자식 노드의 바운딩 박스 정보(443)와 제 2 자식 노드의 바운딩 박스 정보(444)를 기초로, 제 1 자식 노드의 바운딩 박스와 제 2 자식 노드의 바운딩 박스가 각각 광선과 교차하는지 여부를 동시에 판단할 수 있다.
한편, 교차 검사부(320)는 타겟 노드에 포함된 자식 노드들이 3개 이상인 경우에도, 각각의 자식 노드들에 대해 동시에 광선과 교차하는지 여부를 판단할 수 있다. 다만, 이는 일 실시예일 뿐, 다른 실시예에 따라, 기설정된 순서에 기초하여, 복수의 자식 노드들 중, 일부 자식 노드들을 그룹핑하여, 그룹핑된 자식 노드들 별로 각각의 바운딩 박스에 대한 교차 검사를 수행할 수도 있다.
제어부(330)는 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정한다. 제어부(330)는 교차 검사부(320)로부터 광선과 교차하는 적어도 하나의 자식 노드들에 대한 정보를 획득할 수 있다.
제어부(330)는 광선과 교차하는 자식 노드들이 2개 이상인 경우, 교차 거리에 기초하여, 다음 타겟 노드를 결정할 수 있다. 예를 들어, 제어부(330)는 광선과 교차하는 제 1 자식 노드와 제 2 자식 노드에 대해, 제 1 자식 노드와 광선과의 교차 거리가 제 2 자식 노드와 광선과의 교차 거리보다 짧은 경우, 제 1 자식 노드를 다음 타겟 노드로 결정할 수 있다.
또한, 제어부(330)는 광선과 교차하는 자식 노드들 중에서 다음 타겟 노드로 결정되지 않은 다른 자식 노드들을 스택에 저장할 수 있다. 예를 들어, 제 1 자식 노드와 제 2 자식 노드 중에서, 제어부(330)는 다음 타겟 노드로 결정되지 않은 제 2 자식 노드를 스택에 저장할 수 있다.
제어부(330)는 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행한다. 일 실시예에 따른 제어부(330)는, 결정된 다음 타겟 노드의 타입을 판별할 수 있다. 여기에서, 타겟 노드의 타입은 이너 노드 또는 리프 노드를 포함할 수 있다. 제어부(330)는 다음 타겟 노드가 이너 노드인 경우, 이에 대한 정보를 정보 획득부(310)로 전송하여, 전술한 일련의 과정이 다시 수행될 수 있다.
예를 들어, 다음 타겟 노드가 이너 노드 A인 경우, 제어부(330)는 이너 노드 A를 타겟 노드로 결정하고, 이너 노드 A에 대한 정보를 정보 획득부(310)로 전송할 수 있다. 정보 획득부(310)는 이너 노드 A를 타겟 노드로 결정하고, 이너 노드 A의 자식 노드들에 대한 정보를 획득할 수 있다. 또한, 교차 검사부(320)는 이너 노드 A의 자식 노드들에 대해 획득한 정보를 기초로, 이너 노드 A의 자식 노드들 각각에 교차 검사를 수행할 수 있다. 제어부(330)는 이너 노드 A의 자식 노드들 중, 광선과 교차하는 적어도 하나의 자식 노드를 추출하고, 추출된 적어도 하나의 자식 노드 중에서 다음 타겟 노드를 결정할 수 있다.
한편, 다음 타겟 노드가 리프 노드 B인 경우, 제어부(330)는 리프 노드 B에 관한 정보를 IST 유닛(도2, 130)으로 전송할 수 있다. IST 유닛(130)에서는 리프 노드 B에 포함된 적어도 하나의 프리미티브들 각각에 대해 반복적으로 광선과의 교차 검사를 수행한다. 다른 예에 따라, 제어부(330)는 외부 메모리(250)에 저장된 리프 노드 B에 포함된 적어도 하나의 프리미티브들에 대한 정보가, IST 유닛(130)으로 전송되도록 외부 메모리(250)를 제어할 수도 있다.
제어부(330)는 다음 타겟 노드가 존재하지 않는 경우에는, 일련의 탐색 과정을 종료하고, 광선에 대해 탐색된 결과를 쉐이딩 유닛(140)으로 전송한다. 쉐이딩 유닛(140)은 광선과 프리미트들과의 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 광선에 대응되는 픽셀의 색상 값을 결정할 수 있다. 또한, 쉐이딩 유닛(140)은 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여, 픽셀의 색상 값을 결정할 수 있다.
한편, 제어부(330)는 복수의 자식 노드들 중에서, 광선과 교차하는 자식 노드가 존재하지 않는 경우, 스택에 저장되어 있는 다른 노드를 추출하여, 다음 타겟 노드로 결정할 수 있다. 여기에서, 다른 노드는 일 실시예에 따라, 가속 구조에서 타겟 노드에 종속되어 있지 않는 노드들 중 어느 하나의 노드를 의미할 수 있다. 예를 들어, 제어부(330)는 가속 구조에서, 타겟 노드와 동일한 부모 노드를 갖는 다른 노드를 다음 타겟 노드로 결정할 수 있다.
도 5는 일 실시예에 따른 레이 트레이싱 시스템에서의 가속 구조 탐색 방법을 설명하기 위한 흐름도이다.
단계 510에서, 가속 구조 탐색 장치(300)는 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득한다. 여기에서, 타겟 노드는 이너 노드 또는 루트 노드일 수 있다. 가속 구조 탐색 장치(300)는 다음에 탐색하기 위한 노드(이하, 다음 타겟 노드)를 결정하기 위해, 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득할 수 있다. 여기에서, 복수의 자식 노드들의 정보에는 자식 노드들이 저장되어 있는 메모리 주소, 자식 노드들을 나타내는 인덱스, 자식 노드들의 타입 정보 및 자식 노드들의 바운딩 박스 정보 등이 포함될 수 있다.
단계 520에서, 가속 구조 탐색 장치(300)는 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단한다. 일 실시예에 따른 가속 구조 탐색 장치(300)는 자식 노드들의 바운딩 박스 정보(443, 444)를 기초로, 자식 노드들 각각의 바운딩 박스가 광선과 교차하는지 여부를 병렬적으로 판단할 수 있다. 가속 구조 탐색 장치(300)는 획득한 복수의 자식 노드들의 정보에 기초하여, 한번의 탐색 과정으로, 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 동시에 판단할 수 있어, 탐색에 소요되는 시간을 줄일 수 있다.
단계 530에서, 가속 구조 탐색 장치(300)는 광선과 교차하는 적어도 하나의 자식 노드들 중에서 다음 타겟 노드를 결정한다. 가속 구조 탐색 장치(300)는 광선과 교차하는 자식 노드들이 2개 이상인 경우, 교차 거리에 기초하여, 다음 타겟 노드를 결정할 수 있다. 예를 들어, 가속 구조 탐색 장치(300)는 광선과 교차하는 복수의 자식 노드들 중에서, 광선과의 교차 거리가 상대적으로 더 짧은 자식 노드를 다음 타겟 노드로 결정할 수 있다. 가속 구조 탐색 장치(300)는 광선과 교차하는 복수의 자식 노드들 중에서, 다음 타겟 노드로 결정되지 않은 자식 노드들은 스택에 저장할 수 있다.
단계 540에서, 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행한다. 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드의 타입을 판별할 수 있다. 여기에서, 타겟 노드의 타입은 이너 노드 또는 리프 노드를 포함할 수 있다. 가속 구조 탐색 장치(300)는 다음 타겟 노드가 이너 노드인 경우, 다음 타겟 노드에 대해 전술한 일련의 과정인 단계 510 내지 단계 540을 반복적으로 다시 수행할 수 있다.
한편, 다음 타겟 노드가 리프 노드인 경우, 가속 구조 탐색 장치(300)는 다음 타겟 노드에 관한 정보를 IST 유닛(도2, 130)으로 전송할 수 있다. IST 유닛(130)에서는 다음 타겟 노드에 포함된 적어도 하나의 프리미티브들 각각에 대해 반복적으로 광선과의 교차 검사를 수행한다.
또한, 가속 구조 탐색 장치(300)는 다음 타겟 노드가 존재하지 않는 경우에는, 일련의 탐색 과정을 종료하고, 광선에 대해 탐색된 결과를 쉐이딩 유닛(140)으로 전송한다.
도 6은 일 실시예에 따른 가속 구조 탐색 장치(300)가 광선과 교차하는 자식 노드의 타입에 따라 대응되는 동작을 수행하는 방법을 구체적으로 설명하기 위한 흐름도이다.
단계 610에서, 가속 구조 탐색 장치(300)는 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득한다. 여기에서, 타겟 노드는 이너 노드 또는 루트 노드일 수 있다. 한편, 단계 610은 도 5를 참조하여 전술한 단계 510과 대응될 수 있다.
단계 615에서, 가속 구조 탐색 장치(300)는 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단한다. 가속 구조 탐색 장치(300)는 획득한 복수의 자식 노드들의 정보에 기초하여, 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 동시에 판단할 수 있다.
단계 620에서, 가속 구조 탐색 장치(300)는 광선과 교차하는 자식 노드들이 두 개 이상인지 여부를 판단한다.
단계 625에서, 가속 구조 탐색 장치(300)는 광선과 교차하는 두 개 이상의 자식 노드들 중에서, 광선과의 교차 거리가 가장 가까운 자식 노드를 다음 타겟 노드로 결정한다. 가속 구조 탐색 장치(300)는 광선과 교차하는 두 개 이상의 자식 노드들 중에서, 다음 타겟 노드로 결정되지 않은 자식 노드들을 스택에 저장할 수 있다.
단계 630에서, 가속 구조 탐색 장치(300)는 광선과 교차하는 하나의 자식 노드를 다음 타겟 노드로 결정한다. 가속 구조 탐색 장치(300)는 판단 결과, 광선과 교차하는 자식 노드가 하나인 경우, 하나의 자식 노드를 다음 타겟 노드로 결정할 수 있다.
단계 635에서, 가속 구조 탐색 장치(300)는 스택에 저장된 노드가 존재하는지 여부를 판단한다. 가속 구조 탐색 장치(300)는 광선과 교차하는 자식 노드가 존재하지 않는 경우, 스택에 저장되어 있는 다른 노드가 존재하는지 여부를 판단할 수 있다. 여기에서, 다른 노드는 가속 구조에서, 상기 타겟 노드에 종속되어 있지 않은 노드들을 나타낼 수 있다.
단계 640에서, 가속 구조 탐색 장치(300)는 스택에서 추출한 노드를 다음 타겟 노드로 결정한다. 가속 구조 탐색 장치(300)는 스택에 저장된 자식 노드가 존재하는 경우, 스택으로부터 자식 노드를 추출할 수 있다. 가속 구조 탐색 장치(300)는 추출한 자식 노드를 다음 타겟 노드로 결정할 수 있다.
단계 645에서, 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드의 타입이 이너 노드인지 여부를 판단한다. 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드의 타입이 이너 노드인 경우, 다음 타겟 노드를 타겟 노드로 변경하고, 단계 610의 과정으로 돌아가, 전술한 일련의 과정을 반복적으로 수행할 수 있다. 예를 들어, 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드인 이너 노드 A에 대해, 이너 노드 A를 타겟 노드로 설정하고, 이너 노드 A에 대한 자식 노드들의 정보를 획득할 수 있다. 이후의 과정은 전술한 단계 615 내지 640과 동일하다.
단계 650에서, 가속 구조 탐색 장치(300)는 광선에 관한 정보를 IST 유닛으로 전송한다. 가속 구조 탐색 장치(300)는 결정된 다음 타겟 노드의 타입이 리프 노드인 경우, 광선에 관한 정보를 IST 유닛으로 전송할 수 있다. IST 유닛은 다음 타겟 노드에 포함되는 프리미티브들이 광선과 교차하는지 여부를 판단할 수 있다.
단계 655에서, 가속 구조 탐색 장치(300)는 광선에 대한 정보를 쉐이딩 유닛으로 전송한다. 가속 구조 탐색 장치(300)는 가속 구조 내에 탐색할 노드가 존재하지 않는 경우, 탐색 결과 획득한 정보를 쉐이딩 유닛(340)에 전송할 수 있다. 여기에서, 탐색 결과 획득한 정보는, 3차원 공간에 포함되는 각각의 물체 또는 물체를 구성하는 프리미티브들과 광선과의 교차 정보를 포함할 수 있다. 쉐이딩 유닛(140)은 광선과 프리미티브들과의 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 광선에 대응되는 픽셀의 색상 값을 결정할 수 있다. 또한, 쉐이딩 유닛(140)은 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여, 픽셀의 색상 값을 결정할 수 있다.
도 7은 일 실시예에 따른, 레이 트레이싱 시스템에서의 상태 다이어그램을 도시한 도면이다.
일 실시예에 따른 레이 트레이싱 시스템에는 제 1 상태, 제 2 상태 및 제 3 상태가 존재할 수 있다. 여기에서, 제 1 상태는 가속 구조에 포함되는 노드들을 탐색하는 단계이다. 제 2 상태는 가속 구조에 포함되는 노드들 중, 리프 노드들에 포함된 프리미티브들에 대해 교차 검사를 수행하는 단계이다. 제 3 상태는 가속 구조에 포함되는 노드들을 모두 탐색한 경우, 탐색 과정에서 획득한 교차 정보를 기초로, 픽셀의 색상 값을 결정하고, 노드들의 탐색을 종료하는 단계이다.
일 실시예에 따른 레이 트레이싱 시스템은 타겟 노드에 대한 복수의 자식 노드들 각각에 대해 동시에 교차 검사를 수행함으로써, 레이 트레이싱 시스템에서의 상태를 전술한 바와 같이 3단계로 간략화 할 수 있다.
이하에서는, 도 7을 참조하여, 일 실시예에 따른 레이 트레이싱 시스템에서의 상태 변화를 설명하도록 한다.
단계 712에서, 가속 구조 탐색 장치(300)는 루트 노드에 대한 자식 노드들의 정보를 획득할 수 있다.
단계 714에서, 가속 구조 탐색 장치(300)는 획득한 정보를 기초로 판단한 결과, 다음 타겟 노드가 이너 노드인 경우, 다음 타겟 노드의 자식 노드들에 관한 정보를 획득할 수 있다. 단계 712 및 단계 714의 과정은 다음 타겟 노드가 이너 노드인 경우, 계속해서 반복적으로 수행될 수 있다.
단계 716에서, 가속 구조 탐색 장치(300)는 다음 타겟 노드가 리프 노드인 경우, 리프 노드에 관한 정보를 IST 유닛(130)에 전송한다.
단계 718에서, 가속 구조 탐색 장치는 다음 타겟 노드가 존재하지 않는 경우, 탐색 과정을 종료하고, 탐색 결과를 쉐이딩 유닛(140)으로 전송한다.
단계 712 내지 단계 718은 레이 트레이싱 시스템의 제 1 상태에 포함될 수 있다.
단계 722에서, IST 유닛(130)은 리프 노드에 포함된 적어도 하나의 프리미티브에 대해 반복적으로 교차 검사를 수행한다. IST 유닛(130)은 광선과 적어도 하나의 프리미티브에 대한 교차점의 존재 여부를 판단하고, 이전 교차점과의 거리를 비교해서, 거리가 더 짧은 교차점을 선택할 수 있다.
단계 724에서, IST 유닛(130)은 리프 노드에 교차 검사를 완료한 후, 다음 타겟 노드를 탐색하기 위해, 제 1 상태로 다시 돌아갈 수 있다.
단계 726에서, IST 유닛(550)은 리프 노드에 교차 검사를 완료하고, 스택에 저장된 자식 노드가 존재하지 않는 경우, 교차 검사 결과를 쉐이딩 유닛(140)으로 전송한다.
전술한 단계 724 및 단계 726은 레이 트레이싱 시스템의 제 2 상태에 포함될 수 있다.
한편, 레이 트레이싱 시스템에서의 제 3 상태에서는 쉐이딩 유닛(140)이 획득한 교차 정보에 기초하여, 광선에 대응되는 픽셀의 색상값을 결정한다.
도 8은 일 실시예에 따라, 레이 트레이싱 시스템(10)에서의 가속 구조 탐색 장치(300)를 보다 구체적으로 설명하기 위한 블록도이다.
레이 트레이싱 시스템(10)은 복수개의 FIFO(121, 122, 123, 132, 134), 광선 생성 유닛(110), TRV 유닛(120), IST 유닛(130) 및 쉐이딩 유닛(140)을 포함할 수 있다. 도 8에서는, 일 실시예에 따른 가속 구조 탐색 장치(300)가 TRV 유닛(120)에 포함되는 경우에 대해 설명하도록 한다.
광선 생성 유닛(110)은 1차 광선 및 1차 광선에 의해 파생되는 광선들을 생성할 수 있다. 광선 생성 유닛(110)은 1차 광선을 생성하고, 1차 광선과 오브젝트의 교차점에서 2차 광선을 생성할 수 있다. 이때, 2차 광선은 1차 광선이 오브젝트와 교차된 지점에서 생성된 반사, 굴절 또는 쉐도우 광선일 수 있다.
또한, 광선 생성 유닛(110)은 광선이 오브젝트와 교차하지 않을 때까지 광선을 계속해서 생성하거나, 정해진 횟수 내에서 광선을 생성할 수 있다.
TRV 유닛(120)은 광선 생성 유닛(110)으로부터 생성된 광선에 대한 정보를 수신할 수 있다. TRV 유닛(120)은 입력을 수신하기 위한 3개의 FIFO와 연결될 수 있다. TRV 유닛(120)은 FIFO 1를 통해 광선 생성 유닛(110)으로부터 새로운 광선을 입력 받을 수 있다. 또한, TRV 유닛(120)은 FIFO 2를 통해 다음 노드를 탐색하기 위한 정보를 획득할 수 있다. TRV 유닛(120)은 FIFO 3를 통해 IST 유닛(130)에서 교차가 끝난 후, 다음 노드를 탐색하기 위한 정보를 획득할 수 있다.
한편, 광선 생성 유닛(110)에서 생성된 광선은 1차 광선 및 1차 광선에 의해 파생된 광선(2차 광선, 3차 광선 등)을 모두 포함한다. 다음에서는 TRV 유닛(120)에 포함된 일 실시예에 따른 가속 구조 탐색 장치(300)가 복수개의 노드들에 대해 탐색을 수행하는 방법에 대해 설명하도록 한다.
TRV 유닛(120)에 포함된 가속 구조 탐색 장치(300)는 정보 획득부(310), 교차 검사부(320), 제어부(330)를 포함하고, 제어부(330)에는 다음 타겟 노드 결정부(332) 및 동작 결정부(34)가 더 포함될 수 있다.
정보 획득부(310)는 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드들의 정보를 획득한다. 여기에서, 타겟 노드는 이너 노드 또는 루트 노드일 수 있다. 교차 검사부(320)는 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단한다. 교차 검사부(320)는 획득한 복수의 자식 노드들의 정보에 기초하여, 한번의 탐색 과정으로, 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 동시에 판단할 수 있어, 탐색에 소요되는 시간을 줄일 수 있다.
다음 타겟 노드 결정부(332)는 광선과 교차하는 적어도 하나의 자식 노드들 중에서 다음 타겟 노드를 결정한다. 다음 타겟 노드 결정부(332)는 광선과 교차하는 자식 노드들이 2개 이상인 경우, 교차 거리에 기초하여, 다음 타겟 노드를 결정할 수 있다.
동작 결정부(334)는 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행한다. 동작 결정부(334) 결정된 다음 타겟 노드의 타입을 판별할 수 있다. 여기에서, 타겟 노드의 타입은 이너 노드 또는 리프 노드를 포함할 수 있다.
동작 결정부(334)에서 다음 타겟 노드가 이너 노드인 것으로 판별된 경우, 정보 획득부(310)는 FIFO 0을 통해 다음 타겟 노드에 대한 정보를 획득할 수 있다.
한편, 다음 타겟 노드가 리프 노드인 경우, 동작 결정부(334)는 다음 타겟 노드에 관한 정보를 IST 유닛(도2, 130)으로 전송할 수 있다. IST 유닛(130)에서는 다음 타겟 노드에 포함된 적어도 하나의 프리미티브들 각각에 대해 반복적으로 광선과의 교차 검사를 수행한다. IST 유닛(130)에서는, 광선이 교차되는 프리미티브들을 검출하고, 검출된 프리미티브와 광선이 교차된 지점(hit point)을 계산할 수 있다.
계산된 교차점(hit point)은 좌표 형태로 쉐이딩 유닛(140)으로 출력될 수 있다.
상기와 같이, 개시된 실시예에 의한 레이 트레이싱 시스템(에서의 가속 구조 탐색 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 개시된 실시예에 대하여 도시하고 설명하였지만, 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 개시되어 있는 기술적 사상이나 전망으로부터 개별적으로 이해 되어 져서는 안될 것이다.
300: 가속 구조 탐색 장치
310: 정보 획득부
320: 교차 검사부
330: 제어부

Claims (19)

  1. 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드(child node)들의 정보를 획득하는 단계;
    상기 획득된 정보에 기초하여, 상기 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단하는 단계;
    상기 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정하는 단계; 및
    상기 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  2. 제 1항에 있어서, 상기 광선과 교차하는지 여부를 판단하는 단계는,
    상기 복수의 자식 노드들 각각에 대해 병렬적으로 상기 광선과 교차하는지 여부를 판단하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  3. 제 1항에 있어서, 상기 광선과 교차하는지 여부를 판단하는 단계는,
    제 1 자식 노드와 제 2 자식 노드에 대해 각각 획득한 정보에 기초하여, 상기 제 1 자식 노드와 상기 제 2 자식 노드 각각이 상기 광선과 교차하는지 여부를 동시에 판단하는 단계를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  4. 제 1항에 있어서, 상기 다음 타겟 노드를 결정하는 단계는,
    상기 광선과 교차하는 하나의 자식 노드가 존재하는 경우, 상기 하나의 자식 노드를 상기 다음 타겟 노드로 결정하고, 상기 광선과 교차하는 두 개 이상의 자식 노드가 존재하는 경우, 상기 두 개 이상의 자식 노드 중에서 상기 광선과의 교차 거리가 가장 가까운 자식 노드를 상기 다음 타겟 노드로 결정하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  5. 제 1항에 있어서, 상기 다음 타겟 노드를 결정하는 단계는,
    상기 광선과 교차하는 자식 노드가 존재하지 않는 경우, 상기 가속 구조에서, 상기 타겟 노드에 종속되어 있지 않은 노드들 중 어느 하나의 노드를 추출하는 단계; 및
    상기 추출된 노드를 상기 다음 타겟 노드로 결정하는 단계를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  6. 제 1항에 있어서, 상기 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계는,
    상기 다음 타겟 노드가 이너(inner) 노드인 경우, 상기 다음 타겟 노드의 적어도 하나의 자식 노드로 이동하고, 상기 다음 타겟 노드가 리프(leaf) 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브(primitive)가 상기 광선과 교차하는지 여부를 판단하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  7. 제 6항에 있어서, 상기 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 단계는,
    상기 적어도 하나의 프리미티브 각각에 대해 상기 광선과 교차하는지 여부를 판단한 경우, 상기 광선과 교차하는 다른 자식 노드를 탐색하는 단계를 더 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  8. 제 6항에 있어서,
    상기 다음 타겟 노드가 리프 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브에 대해 기설정된 바운딩 박스와 상기 광선의 교차 여부를 판단하는 단계를 더 포함하는 가속 구조 탐색 방법.
  9. 제 1항에 있어서,
    루트 노드에 포함되는 상기 타겟 노드가 리프 노드인 경우, 상기 타겟 노드에 포함되는 적어도 하나의 프리미티브를 분할하는 단계; 및
    상기 분할된 적어도 하나의 프리미티브에 기초하여, 상기 타겟 노드의 자식 노드를 생성하는 단계를 더 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  10. 가속 구조에 포함되는 타겟 노드에 대한 복수의 자식 노드(child node)들의 정보를 획득하는 정보 획득부;
    상기 획득된 정보에 기초하여, 상기 복수의 자식 노드들 각각이 광선과 교차하는지 여부를 판단하는 교차 검사부; 및
    상기 광선과 교차하는 적어도 하나의 자식 노드들 중에서, 다음 타겟 노드를 결정하고, 결정된 다음 타겟 노드의 타입에 대응되는 동작을 수행하는 제어부를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  11. 제 10항에 있어서, 상기 교차 검사부는,
    상기 복수의 자식 노드들 각각에 대해 병렬적으로 상기 광선과 교차하는지 여부를 판단하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  12. 제 10항에 있어서, 상기 교차 검사부는,
    제 1 자식 노드와 제 2 자식 노드에 대해 각각 획득한 정보에 기초하여, 상기 제 1 자식 노드와 상기 제 2 자식 노드 각각이 상기 광선과 교차하는지 여부를 동시에 판단하는 단계를 포함하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  13. 제 10항에 있어서, 상기 제어부는,
    상기 광선과 교차하는 하나의 자식 노드가 존재하는 경우, 상기 하나의 자식 노드를 상기 다음 타겟 노드로 결정하고, 상기 광선과 교차하는 두 개 이상의 자식 노드가 존재하는 경우, 상기 두 개 이상의 자식 노드 중에서 상기 광선과의 교차 거리가 가장 가까운 자식 노드를 상기 다음 타겟 노드로 결정하는 트레이싱 시스템에서의 가속 구조 탐색 장치.
  14. 제 10항에 있어서, 상기 제어부는,
    상기 광선과 교차하는 자식 노드가 존재하지 않는 경우, 상기 가속 구조에서, 상기 타겟 노드에 종속되어 있지 않은 노드들 중 어느 하나의 노드를 추출하고, 상기 추출된 노드를 상기 다음 타겟 노드로 결정하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  15. 제 10항에 있어서, 상기 제어부는,
    상기 다음 타겟 노드가 이너(inner) 노드인 경우, 상기 다음 타겟 노드의 적어도 하나의 자식 노드로 이동하고, 상기 다음 타겟 노드가 리프(leaf) 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브(primitive)가 상기 광선과 교차하는지 여부를 판단하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  16. 제 10항에 있어서, 상기 제어부는,
    상기 적어도 하나의 프리미티브 각각에 대해 상기 광선과 교차하는지 여부를 판단한 경우, 상기 광선과 교차하는 다른 자식 노드를 탐색하는 레이 트레이싱 시스템에서의 가속 구조 탐색 방법.
  17. 제 14항에 있어서, 상기 교차 검사부는,
    상기 다음 타겟 노드가 리프 노드인 경우, 상기 리프 노드에 포함된 적어도 하나의 프리미티브에 대해 기설정된 바운딩 박스와 상기 광선의 교차 여부를 판단하는 단계를 더 포함하는 가속 구조 탐색 방법.
  18. 제 10항에 있어서, 제어부는,
    루트 노드에 포함되는 상기 타겟 노드가 리프 노드인 경우, 상기 타겟 노드에 포함되는 적어도 하나의 프리미티브를 분할하여 상기 분할된 적어도 하나의 프리미티브에 기초하여, 상기 타겟 노드의 자식 노드를 생성하는 레이 트레이싱 시스템에서의 가속 구조 탐색 장치.
  19. 상기 제 1항 내지 제 9항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020140063725A 2014-05-27 2014-05-27 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법 KR102219289B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140063725A KR102219289B1 (ko) 2014-05-27 2014-05-27 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
EP15169467.6A EP2950275B1 (en) 2014-05-27 2015-05-27 Apparatus and method of traversing acceleration structure in ray tracing system
CN201510279203.3A CN105279783B (zh) 2014-05-27 2015-05-27 在光线跟踪系统中遍历加速结构的设备和方法
JP2015107282A JP6460914B2 (ja) 2014-05-27 2015-05-27 レイトレーシング・システムでの加速構造探索装置及び加速構造探索方法
US14/722,887 US10049488B2 (en) 2014-05-27 2015-05-27 Apparatus and method of traversing acceleration structure in ray tracing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140063725A KR102219289B1 (ko) 2014-05-27 2014-05-27 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법

Publications (2)

Publication Number Publication Date
KR20150136347A true KR20150136347A (ko) 2015-12-07
KR102219289B1 KR102219289B1 (ko) 2021-02-23

Family

ID=53284038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140063725A KR102219289B1 (ko) 2014-05-27 2014-05-27 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법

Country Status (5)

Country Link
US (1) US10049488B2 (ko)
EP (1) EP2950275B1 (ko)
JP (1) JP6460914B2 (ko)
KR (1) KR102219289B1 (ko)
CN (1) CN105279783B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10497167B2 (en) 2016-12-15 2019-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating acceleration structure

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697640B2 (en) 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
US9818221B2 (en) * 2016-02-25 2017-11-14 Qualcomm Incorporated Start node determination for tree traversal for shadow rays in graphics processing
KR101795690B1 (ko) 2016-09-29 2017-11-08 이화여자대학교 산학협력단 프로젝션 영상의 고속 생성 방법
US10984049B2 (en) * 2017-06-27 2021-04-20 Nvidia Corporation Performing traversal stack compression

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008012199A2 (en) * 2006-07-28 2008-01-31 International Business Machines Corporation Ray tracing algorithm with recording of the index traversal history
US20100328310A1 (en) * 2009-06-24 2010-12-30 Caustic Graphics, Inc. Systems and methods of defining rays for ray tracing rendering
JP2011515766A (ja) * 2008-03-21 2011-05-19 コースティック グラフィックス、インク. レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4972642B2 (ja) 2005-06-23 2012-07-11 メンタル イメージス, ゲーエムベーハー 高精度の実時間レイトレーシング
US8259105B2 (en) 2006-07-21 2012-09-04 The University Of Utah Research Foundation Ray tracing a three-dimensional scene using a hierarchical data structure
US8018457B2 (en) 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US7737974B2 (en) 2006-09-27 2010-06-15 International Business Machines Corporation Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload
US20080088619A1 (en) * 2006-10-17 2008-04-17 Robert Allen Shearer Branch Prediction for Acceleration Data Structure Traversal
US7852336B2 (en) * 2006-11-28 2010-12-14 International Business Machines Corporation Dynamic determination of optimal spatial index mapping to processor thread resources
US7755628B2 (en) * 2006-12-29 2010-07-13 Intel Corporation Method and apparatus for multi-level ray tracing
US8284188B1 (en) * 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8289324B1 (en) * 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
KR101004110B1 (ko) 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
KR101089638B1 (ko) 2009-10-09 2011-12-06 양성봉 교차 검사 가속을 위한 광선 추적 장치 및 방법 및 이를 이용한 렌더링 장치 및 방법
US8836704B2 (en) * 2009-12-18 2014-09-16 Business Objects Software Ltd. Automatic tree restriction
GB2529075A (en) 2011-06-16 2016-02-10 Imagination Tech Ltd Graphics processor with non-blocking concurrent architecture
KR102042539B1 (ko) 2012-07-24 2019-11-08 삼성전자주식회사 레이 트레이싱 방법 및 장치
US9305392B2 (en) * 2012-12-13 2016-04-05 Nvidia Corporation Fine-grained parallel traversal for ray tracing
GB2541084B (en) * 2013-03-15 2017-05-17 Imagination Tech Ltd Rendering with point sampling and pre-computed light transport information
US9547932B2 (en) * 2013-06-10 2017-01-17 Nvidia Corporation Splitting bounding volumes of primitives

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008012199A2 (en) * 2006-07-28 2008-01-31 International Business Machines Corporation Ray tracing algorithm with recording of the index traversal history
JP2011515766A (ja) * 2008-03-21 2011-05-19 コースティック グラフィックス、インク. レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ
US20100328310A1 (en) * 2009-06-24 2010-12-30 Caustic Graphics, Inc. Systems and methods of defining rays for ray tracing rendering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10497167B2 (en) 2016-12-15 2019-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating acceleration structure

Also Published As

Publication number Publication date
KR102219289B1 (ko) 2021-02-23
EP2950275B1 (en) 2019-07-03
US20150348308A1 (en) 2015-12-03
CN105279783A (zh) 2016-01-27
CN105279783B (zh) 2020-04-07
JP6460914B2 (ja) 2019-01-30
JP2015225673A (ja) 2015-12-14
US10049488B2 (en) 2018-08-14
EP2950275A1 (en) 2015-12-02

Similar Documents

Publication Publication Date Title
JP6474585B2 (ja) レイトレーシング処理装置及びその方法
US9576389B2 (en) Method and apparatus for generating acceleration structure in ray tracing system
JP6476090B2 (ja) 加速構造の生成及び探索を行う方法並びに装置
KR102493461B1 (ko) 렌더링 시스템 및 방법
JP6486081B2 (ja) マルチフレームの同一領域を連続してレンダリングする方法及びその装置
JP6460914B2 (ja) レイトレーシング・システムでの加速構造探索装置及び加速構造探索方法
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
KR20150039493A (ko) 레이 트레이싱 처리 장치 및 방법
KR20170036416A (ko) 트리를 탐색하는 장치 및 방법
KR20150136348A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
KR20160125172A (ko) 레이 트레이싱 장치 및 방법
US20150091894A1 (en) Method and apparatus for tracing ray using result of previous rendering
JP2018073427A (ja) 加速構造を生成する方法及びその装置
US9728000B2 (en) Apparatus and method of using acceleration structure in ray tracing
KR102537529B1 (ko) 레이 트레이싱 장치 및 방법
KR20170048003A (ko) 가속 구조를 생성하는 방법 및 장치
KR102467031B1 (ko) 가속 구조를 생성 및 탐색하는 방법
KR20150078003A (ko) 캐시 메모리 시스템 및 그 동작방법

Legal Events

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