KR102365112B1 - 레이 트레이싱 장치 및 방법 - Google Patents

레이 트레이싱 장치 및 방법 Download PDF

Info

Publication number
KR102365112B1
KR102365112B1 KR1020150041642A KR20150041642A KR102365112B1 KR 102365112 B1 KR102365112 B1 KR 102365112B1 KR 1020150041642 A KR1020150041642 A KR 1020150041642A KR 20150041642 A KR20150041642 A KR 20150041642A KR 102365112 B1 KR102365112 B1 KR 102365112B1
Authority
KR
South Korea
Prior art keywords
ray
intersection
inspection
node
trv
Prior art date
Application number
KR1020150041642A
Other languages
English (en)
Other versions
KR20160115016A (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 KR1020150041642A priority Critical patent/KR102365112B1/ko
Priority to US14/997,028 priority patent/US10339694B2/en
Publication of KR20160115016A publication Critical patent/KR20160115016A/ko
Application granted granted Critical
Publication of KR102365112B1 publication Critical patent/KR102365112B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Abstract

광선을 생성하여, TRV/IST 통합부로 전송하는 광선 생성부 및 상기 광선이 입력되면, 상기 광선의 상태에 기초하여 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 결정하고, 상기 광선에 대해 상기 결정된 검사를 수행하는 TRV/IST 통합부를 포함하고, 상기 광선에 대한 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사는 동일한 파이프 라인을 통해 수행되는 레이 트레이싱 장치가 개시된다.

Description

레이 트레이싱 장치 및 방법{Ray tracing apparatus and method}
다양한 실시예들은 레이 트레이싱 장치 및 그 처리 방법에 관한 것으로, 더욱 구체적으로는 TRV(Traversal) 유닛과 IST (Intersection Test) 유닛을 하드웨어적으로 통합한레이 트레이싱(ray tracing) 장치 및 방법에 관한 것이다.
일반적으로 3D 렌더링(3-Dimensional Rendering)은 3차원 객체 데이터를 주어진 카메라 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리를 말한다.
렌더링 방법은 3차원 객체를 화면에 투영(projection)하면서 영상을 생성하는 래스터화(rasterization) 방법과 카메라 시점에서 영상의 각 픽셀을 향한 광선을 따라 입사하는 빛의 경로를 추적하여 영상을 생성하는 레이 트레이싱(ray tracing)등이 있다.
이 중 레이 트레이싱은 빛의 물리적 성질(반사, 굴절, 투과 등)을 렌더링 결과에 반영하므로 고품질 영상을 생성할 수 있다는 장점이 있으나, 상대적으로 연산량이 방대하여 고속으로 렌더링 하는데 어려움이 있다.
레이 트레이싱 성능에 있어서 연산량이 많이 요구되는 요소는 렌더링 대상이 되는 신 오브젝트(scene object)들을 공간적으로 분할한 가속 구조(Acceleration Structure, 이하에서는 ‘AS’라고 한다.)의 생성 및 탐색(Traversal, 이하에서는 ‘TRV’라고 한다)과, 광선과 프리미티브 사이의 교차 검사(Intersection Test, 이하에서는 ‘IST’라고 한다)이다.
TRV 유닛과 IST 유닛을 하드웨어적으로 통합하여, TRV 유닛과 IST 유닛 간의 작업 부하의 불균형을 해결함으로써, 처리 능력이 향상된 레이 트레이싱 처리 장치 및 그 처리 방법을 제공하는 데 있다.
일 실시예에 따른 레이 트레이싱 장치는 광선을 생성하여, TRV/IST 통합부로 전송하는 광선 생성부 및 상기 광선이 입력되면, 상기 광선의 상태에 기초하여 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 결정하고, 상기 광선에 대해 상기 결정된 검사를 수행하는 TRV/IST 통합부를 포함하고, 상기 광선에 대한 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사는 동일한 파이프 라인을 통해 수행될 수 있다.
일 실시예에 따른 트레이싱 장치는, 상기 수행된 검사 결과에 기초하여, 상기 TRV/IST 통합부로부터 수신한 상기 광선의 상태를 업데이트하고, 상기 광선을 상기 TRV/IST 통합부로 전송하는 광선 상태 업데이트부를 더 포함할 수 있다.
일 실시예에 따른 TRV/IST 통합부는, 상기 동일한 파이프 라인에 포함되는 적어도 하나의 단계(stage)에서, 동일한 연산기를 사용하여, 상기 광선-노드 교차 검사에 포함되는 적어도 하나의 연산, 상기 교차 거리 검사에 포함되는 적어도 하나의 연산 및 상기 교차점 검사에 포함되는 적어도 하나의 연산을 수행할 수 있다.
일 실시예에 따른 광선 상태 업데이트부는, 상기 교차 거리 검사 결과, 상기 광선과 교차하는 제1 프리미티브까지의 거리가 유효하지 않은 경우, 상기 광선과 상기 제1 프리미티브가 교차하는 교차점 검사를 수행하지 않도록 상기 광선의 상태를 업데이트할 수 있다.
일 실시예에 따른 광선 상태 업데이트부는, 상기 교차 거리 검사 결과, 상기 광선과 교차하는 제2 프리미티브까지의 거리가 유효한 경우, 상기 광선과 상기 제2 프리미티브가 교차하는 교차점 검사를 수행하도록 상기 광선의 상태를 업데이트할 수 있다.
일 실시예에 따른 레이 트레이싱 장치는, 상기 TRV/IST 통합부로부터 상기 광선과 교차하는 프리미티브의 교차점을 수신하여, 픽셀의 색상 값을 결정하는 쉐이딩부를 더 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 장치는, 상기 광선-노드 교차 검사만 수행하는 TRV부를 더 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 장치는, 상기 광선의 상태, 상기 TRV부의 작업 부하 상태 및 상기 TRV/IST 통합부의 작업 부하 상태 중 적어도 하나에 기초하여, 상기 광선을 상기 TRV부로 전송할지, 상기 TRV/IST 통합부로 전송할지를 결정하는 광선 디스패처를 더 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 방법은, 광선을 생성하는 단계, 상기 광선이 입력되면, 상기 광선의 상태에 기초하여, 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 결정하는 단계, 및 상기 광선에 대해 상기 결정된 검사를 수행하는 단계를 포함하고, 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사는 동일한 파이프 라인을 통해 수행될 수 있다.
일 실시예에 따른 레이 트레이싱 방법은, 상기 수행된 검사 결과에 기초하여, TRV/IST 통합부로부터 수신한 상기 광선의 상태를 업데이트하는 단계 및 상기 광선을 상기 TRV/IST 통합부로 전송하는 단계를 더 포함할 수 있다.
일 실시예에 따른 광선-노드 교차 검사에 포함되는 적어도 하나의 연산, 상기 교차 거리 검사에 포함되는 적어도 하나의 연산 및 상기 교차점 검사에 포함되는 적어도 하나의 연산은, 상기 동일한 파이프 라인에 포함되는 적어도 하나의 단계(stage)에서, 동일한 연산기를 사용하여 수행될 수 있다.
일 실시예에 따른 광선의 상태를 업데이트하는 단계는, 상기 교차 거리 검사 결과, 상기 광선과 교차하는 제1 프리미티브까지의 거리가 유효하지 않은 경우, 상기 광선과 상기 제1 프리미티브가 교차하는 교차점 검사를 수행하지 않도록 상기 광선의 상태를 업데이트하는 단계를 포함할 수 있다.
일 실시예에 따른 광선의 상태를 업데이트하는 단계는, 상기 교차 거리 검사 결과, 상기 광선과 교차하는 제2 프리미티브까지의 거리가 유효한 경우, 상기 광선과 상기 제2 프리미티브가 교차하는 교차점 검사를 수행하도록 상기 광선의 상태를 업데이트하는 단계를 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 방법은, 상기 교차점 검사 결과 계산된 상기 광선과 교차하는 프리미티브의 교차점에 기초하여, 픽셀의 색상 값을 결정하는 쉐이딩 단계를 더 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 방법은, 상기 동일한 파이프 라인과 다른 파이프 라인을 통하여, 상기 광선-노드 교차 검사를 수행하는 단계를 더 포함할 수 있다.
일 실시예에 따른 레이 트레이싱 방법은, 상기 광선의 상태, 상기 다른 파이프 라인을 포함하는 TRV부의 작업 부하 상태 및 상기 동일한 파이프 라인을 포함하는 상기 TRV/IST 통합부의 작업 부하 상태 중 적어도 하나에 기초하여, 상기 광선을 상기 TRV부로 전송할지, 상기 TRV/IST 통합부로 전송할지를 결정하는 단계를 더 포함할 수 있다.
도 1은 일반적인 레이 트레이싱 방법을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 레이 트레이싱 처리 시스템을 나타내는 도면이다.
도 3은 일 실시예에 따른 가속 구조를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 레이 트레이싱 장치의 구성을 나타내는 블록도이다.
도 5는 일 실시예에 따른 광선-노드 교차 검사에 필요한 연산기 및 그 개수를 나타내는 도면이다.
도 6의 (a)는 일 실시예에 따른 교차 거리 검사에 포함되는 연산과정을 나타내는 도면이고, 도 6의 (b)는 일 실시예에 따른 교차 거리 검사에 필요한 연산기 및 그 개수를 나타내는 도면이다.
도 7의 (a)는 일 실시예에 따른 교차점 검사에 포함되는 연산과정을 나타내는 도면이고, 도 7의 (b)는 일 실시예에 따른 교차점 검사에 필요한 연산기의 종류 및 그 개수를 나타내는 도면이다.
도 8의 (a)는 일 실시예에 따른 광선-노드 교차 검사(TRV-AABB), 교차 거리 검사(IST-T), 교차점 검사(IST-H)에 포함되는 연산 단계들이 서로 공유되도록, 각 검사들에 포함되는 연산 단계를 배치한 예를 나타내는 도면이고, 도 8의 (b)는 일 실시예에 따른 TRV/IST 통합부의 파이프라인 구조를 나타내는 도면이다.
도 9는 일 실시예에 따른 레이 트레이싱 방법을 나타내는 흐름도이다.
도 10은 다른 실시예에 따른 레이 트레이싱 장치의 구성을 나타내는 블록도이다.
도 11은 다른 실시예에 따른 레이 트레이싱 방법을 나타내는 흐름도이다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 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), 외부 메모리(270) 및 가속 구조 생성 장치(250)를 포함할 수 있다.
레이 트레이싱 장치(100)는 광선을 생성한다(S210). 광선은 시점으로부터 생성된 1차 광선 및 1차 광선에 의해 파생된 광선들을 포함할 수 있다. 예를 들어, 도 1에서 설명한 바와 같이, 레이 트레이싱 장치(100)는 시점(10)으로부터 1차 광선을 생성하고, 1차 광선과 오브젝트의 교차점에서 2차 광선을 생성할 수 있다. 이때, 2차 광선은 1차 광선이 오브젝트와 교차된 지점에서 생성된 반사, 굴절 또는 쉐도우 광선일 수 있다.
또한, 레이 트레이싱 장치(100)는 2차 광선과 오브젝트의 교차점에서 3차 광선을 생성할 수 있다. 레이 트레이싱 장치(100)는 광선이 오브젝트와 교차하지 않을 때까지 광선을 계속해서 생성하거나, 정해진 횟수 내에서 광선을 생성할 수 있다.
레이 트레이싱 장치(100)는 외부 메모리(250)로부터 가속 구조(AS)를 읽어 오고, 생성된 광선에 기초하여, 가속 구조를 탐색한다(S220).
이때, 가속 구조(AS, 271)는 가속 구조 생성 장치(Acceleration Structure Generator, 250)에 의해 생성되며, 생성된 가속 구조(AS, 271)는 외부 메모리(270)에 저장된다.
가속 구조 생성 장치(250)는 3차원 공간상의 오브젝트들의 위치 정보를 포함하는 가속 구조를 생성할 수 있다(S205). 가속 구조 생성 장치(250)는 3차원 공간을 계층적 트리 형태로 분할한다. 가속 구조 생성 장치(250)는 여러 가지 형태의 가속 구조를 생성할 수 있다. 예를 들어, 가속 구조 생성 장치(250)는 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)로 지칭할 수 있다.
도 3을 참조하면, 가속 구조(AS)는 탑 노드(top node), 내부 노드(inner node) 리프 노드(leaf node) 및 프리미티브(primitive)를 포함할 수 있다. 도 3에서, 제1 노드(351)는 탑 노드를 나타낸다. 탑 노드는 상위 노드는 가지지 않고, 하위 노드만 가지는 최상위 노드이다. 예를 들어, 제1 노드(351)의 하위 노드는 제2 노드(352) 및 제3 노드(353)이며, 상위 노드는 존재하지 않는다. 또한, 제2 노드(352)는 내부 노드일 수 있다. 내부 노드는 상위 노드 및 하위 노드를 모두 가지는 노드이다. 예를 들어, 제2 노드(351)의 상위 노드는 제1 노드(351)이며, 제2 노드(352)의 하위 노드는 제4 노드(354) 및 제5 노드(355)이다. 또한, 제8 노드(358)는 리프 노드일 수 있다. 리프 노드는 하위 노드는 가지지 않고, 상위 노드만 가지는 최하위 노드이다. 예를 들어, 제8 노드(358)의 상위 노드는 제7 노드(357)이며, 하위 노드는 존재하지 않는다.
한편, 리프 노드는 리프 노드에 존재하는 프리미티브들을 포함할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 리프 노드인 제6 노드(356)는 1개의 프리미티브를, 리프 노드인 제8 노드(358)는 3개의 프리미티브를, 리프 노드인 제9 노드(359)는 2개의 프리미티브를 포함한다.
다시 도 2를 참조하면, 레이 트레이싱 장치(100)는 읽어온 가속 구조에 대한 정보를 탐색하여, 광선이 교차하는 리프 노드를 검출할 수 있다. 레이 트레이싱 장치(100)는 광선이 교차되는 리프 노드를 검출할 때까지 반복하여, 가속 구조를 탐색할 수 있다.
레이 트레이싱 장치(100)는 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색된 경로 상의 리프 노드에 광선이 교차되지 않았으면, 다른 경로로 가속 구조를 탐색할 수 있다. 예를 들어, 도 3을 참조하면, 레이 트레이싱 장치(100)는 제1 노드(351)의 하위 노드인 제2 노드(352) 또는 제3 노드(353)부터 탐색을 시작할 수 있다. 만약, 제2 노드(352)부터 탐색을 시작하는 경우, 레이 트레이싱 장치(100)는 제3 노드(353)에 대한 정보를 별도의 메모리에 저장해 놓을 수 있다.
레이 트레이싱 장치(100)는 광선이 제2 노드(352)에 교차하는지 여부를 판단하여, 제2 노드(352)와 광선이 교차하는 경우, 제2 노드(352)의 하위 노드인 제4 노드(354) 및 제5 노드(355) 중 어느 하나에 대하여 탐색을 수행할 수 있다.
제4 노드(354)와 광선이 교차하는지 여부를 탐색하는 경우, 레이 트레이싱 장치(100)는 나머지 노드인 제5 노드(355)에 대한 정보를 상기 별도의 메모리에 저장해 놓을 수 있다. 제4 노드(354)와 광선이 교차하는 경우, 레이 트레이싱 장치(100)는 제4 노드(354)의 하위 노드인 제6 노드(356) 및 제7 노드(357) 중 어느 하나에 대하여 탐색을 수행할 수 있다.
제6 노드(356)와 광선이 교차하는지 여부를 탐색하는 경우, 레이 트레이싱 장치(100)는 나머지 노드인 제7 노드(357)에 대한 정보를 상기 별도의 메모리에 저장해 놓을 수 있다. 제6 노드(356)와 광선이 교차하는 경우, 레이 트레이싱 장치(100)는 제6 노드(356)를 리프 노드로 검출할 수 있다.
이와 같이, 레이 트레이싱 장치(100)는 어느 하나의 경로를 따라 탐색을 수행하여, 리프 노드를 검출할 수 있으며, 다른 경로의 노드에 대한 정보는 별도의 메모리에 저장해 두었다가 하나의 경로 탐색을 마친 경우에, 가장 최근에 저장해둔 노드부터 다시 탐색을 수행할 수 있다. 예를 들어, 제6 노드(356)를 리프 노드로 검출한 이후에, 가장 최근에 저장해둔 제7 노드(357)부터 다시 탐색을 수행할 수 있다.
이에 따라, 레이 트레이싱 장치(100)는 하나의 경로 탐색을 마치고, 다시 탑 노드부터 경로 탐색을 수행하지 않고, 경로 탐색이 끝난 경로와 가장 인접한 경로를 탐색함으로써, 연산량을 감소시킬 수 있다.
리프 노드가 검출되면, 레이 트레이싱 장치(100)는 검출된 리프 노드에 포함된 프리미티브들에 포함되는 프리미티브에 대한 정보(기하 데이터(272))를 외부 메모리(270)로부터 읽어올 수 있다.
레이 트레이싱 장치(100)는 읽어온 프리미티브에 대한 정보를 이용하여, 광선과 프리미티브들 간의 교차 검사를 수행할 수 있다(S230). 예를 들어, 검출된 리프 노드에 3개의 프리미티브(제1 내지 제3 프리미티브)가 포함되는 경우, 레이 트레이싱 장치(100)는 제1 프리미티브와 광선의 교차 검사, 제2 프리미티브와 광선의 교차 검사 및 제3 프리미티브와 광선의 교차 검사를 수행하여, 광선이 교차되는 프리미티브를 검출할 수 있다.
이에 따라, 광선이 교차되는 프리미티브들을 검출하고, 검출된 프리미티브와 광선이 교차된 지점(hit point)을 계산할 수 있다.
레이 트레이싱 장치(100)는 교차 검사에 기초하여, 픽셀의 쉐이딩을 수행할 수 있다(S240).
레이 트레이싱 장치(100)는, 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 픽셀의 색상 값을 결정할 수 있다. 또한, 레이 트레이싱 장치(100)는 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여, 픽셀의 색상 값을 결정할 수 있다. 예를 들어, 도 1의 픽셀 A의 경우, 레이 트레이싱 장치(100)는 1차 광선(40) 및 2차 광선인 굴절 광선(70), 반사 광선(60), 쉐도우 광선(50)에 의한 효과를 모두 고려하여, 픽셀 A의 색상 값을 결정할 수 있다.
레이 트레이싱 장치(100)는 240 단계(S240)를 종료하면, 210 단계(S210)로 진행한다. 레이 트레이싱 장치(100)는 하나의 픽셀에 대한 쉐이딩 이후에, 다른 픽셀의 쉐이딩을 수행하기 위하여, 다시, 210 단계(S210) 내지 240 단계(S240)를 수행하며, 화면을 구성하는 모든 픽셀들에 대해 210 단계(S210) 내지 240 단계(S240)를 반복적으로 수행한다.
한편, 레이 트레이싱 장치(100)는 외부 메모리(270)로부터 레이 트레이싱에 필요한 데이터를 수신할 수 있다. 외부 메모리(270)는 가속 구조(AS, 271) 또는 기하 데이터(geometry data, 272)를 저장할 수 있다. 가속 구조(AS, 271)는 가속 구조 생성 장치(250)에 의해 생성되고, 외부 메모리(270)에 저장될 수 있다. 기하 데이터(272)는 프리미티브들에 대한 정보를 나타낸다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함되는 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다. 예를 들어, 프리미티브가 삼각형인 경우, 기하 데이터는 삼각형들의 세 점에 대한 정점 좌표, 법선 벡터 또는 텍스처 좌표를 포함할 수 있다.
도 4는 일 실시예에 따른 레이 트레이싱 장치의 구성을 나타내는 블록도이다.
도 4를 참조하면, 레이 트레이싱 장치(100)는 광선 생성 유닛(110), TRV/IST 통합부(120), 광선 상태 업데이트부(130) 및 쉐이딩부(140)를 포함할 수 있다.
광선 생성부(110)는 도 2의 210단계(S210)에서 설명한 바와 같이, 1차 광선 및 1차 광선에 의해 파생되는 광선들을 생성할 수 있다.
TRV/IST 통합부(120)는 파이프 라인 구조로 구현될 수 있다. 파이프 라인 구조는 데이터 처리 과정을 다수의 단계(stage)로 나누고, 한 사이클 동안 다수개의 데이터를 각각 다른 단계에서 병렬 처리함으로써, 사이클 당 데이터 처리를 극대화하는 구조이다. 이러한, 파이프라인 구조의 각 단계는 서로 다른 연산 단계로 구성될 수 있으며, 각 단계에서는 서로 다른 데이터 처리를 수행한다. 파이프라인 구조에서는 데이터들이 각 단계들을 순차적으로 지나가면서 데이터 처리가 진행된다.
또한, TRV/IST 통합부(120)는 입력된 광선의 상태에 기초하여, 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 수행할 수 있는 파이프 라인 구조로 구현될 수 있다. TRV/IST 통합부(120)의 파이프 라인 구조에 대해서는 도 5 내지 8을 참조하여 자세히 후술하기로 한다.
광선 상태 업데이트부(130)은 TRV/IST 통합부(120)로부터 검사 수행 결과를 수신하여, 광선의 상태를 업데이트할 수 있다. 예를 들어, 광선이 TRV/IST 통합부(120)에서 광선-노드 교차 검사를 수행하여, 교차하는 리프 노드가 검출된 경우, 광선의 상태를 해당 리프 노드에 포함되는 프리미티브와의 교차 거리 검사를 위한 상태로 업데이트 할 수 있다. 또는, 광선이 TRV/IST 통합부(120)에서 교차 거리 검사를 수행한 결과, 유효한 거리로 판단된 경우, 광선의 상태를 해당 교차점을 계산하기 위한 상태로 업데이트 할 수 있다. 다만, 이에 한정하는 것은 아니다.
쉐이딩부(140)는 TRV/IST 통합부(120)로부터 계산된 교차점을 수신할 수 있다. 쉐이딩부(140)는 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 픽셀의 색상 값을 결정할 수 있다. 또한, 쉐이딩부(140)는 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여, 픽셀의 색상 값을 결정할 수 있다. 예를 들어, 도 1의 픽셀 A의 경우, 쉐이딩부(140)는 1차 광선(40) 및 2차 광선인 굴절 광선(70), 반사 광선(60), 쉐도우 광선(50)에 의한 효과를 모두 고려하여, 픽셀 A의 색상 값을 결정할 수 있다.
이하, 도 5 내지 8을 참조하여, 도 4에 도시된 TRV/IST 통합부(120)의 파이프 라인 구조에 대해서 설명하기로 한다.
도 5는 일 실시예에 따른 광선-노드 교차 검사에 필요한 연산기 및 그 개수를 나타내는 도면이다.
예를 들어, 레이 트레이싱 장치(100)는, 표 1의 알고리즘을 이용하여, 광선-노드 교차 검사를 수행할 수 있다. 광선-노드 교차 검사를 수행하는 표 1의 알고리즘은 당업계에 공지된 알고리즘으로, 상세한 설명은 생략하기로 한다.
Xmin = (BB.xmin - Ray.orgx)*Ray.dirx
Xmax = (BB.xmax - Ray.orgx)*Ray.dirx
Ymin = (BB.ymin - Ray.orgy)*Ray.diry
Ymax = (BB.ymax - Ray.orgy)*Ray.diry
Zmin = (BB.zmin - Ray.orgz)*Ray.dirz
Zmax = (BB.zmax - Ray.orgz)*Ray.dirz
Max of min (_min) = max (max(min(Xmin, Xmax), min(Ymin, Ymax)), min(Zmin, Zmax))
Min of max (_max) = min (min(max(Xmin, Xmax), max(Ymin, Ymax)), max(Zmin, Zmax))
Intersection ? (_min <= _max) && (_max >= Ray.tmin) && (_min <= hitt)
표 1을 참조하면, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax를 계산하기 위하여, 6번의 뺄셈 연산과 6번의 곱셈 연산을 필요로 한다. 또한, 표 1을 참조하면, Max of min(_min)을 구하기 위하여, max(min(Xmin, Xmax), min(Ymin, Ymax))에 대한 3번의 비교 연산이 필요하며, max(min(Xmin, Xmax), min(Ymin, Ymax))의 결과 값을 min(Zmin, Zmax)와 비교하여, max값을 구하기 위해, 2번의 비교 연산이 추가로 필요하다. 또한, 표 1을 참조하면, Min of max(_max)를 구하기 위하여, max(Xmin, Xmax), max(Ymin, Ymax), max(Zmin, Zmax)에 대해서는 Max of min을 구하는 과정에서 나온 min(Xmin, Xmax), min(Ymin, Ymax), min(Zmin, Zmax)를 이용하면 되므로, 추가적인 연산이 필요 없으며, 결과적으로 2번의 비교 연산이 필요하다. 또한, 표 1을 참조하면, (_min <= _max), (_max >= Ray.tmin), (_min <= hitt) 여부를 판단하기 위하여, 3번의 비교 연산이 필요하다.
이에 따라, 레이 트레이싱 장치(100)는 도 5에 도시된 바와 같이, 표 1의 알고리즘 순서에 따라 6개의 뺄셈기(sub)-> 6개의 곱셈기(mul)-> 3개의 비교기(comp)-> 2개의 비교기(comp)-> 2개의 비교기(comp)-> 3개의 비교기(comp)를 순차적으로 이용하여, 광선-노드 교차 검사를 수행할 수 있다.
도 6의 (a)는 일 실시예에 따른 교차 거리 검사에 포함되는 연산과정을 나타내는 도면이고, 도 6의 (b)는 일 실시예에 따른 교차 거리 검사에 필요한 연산기 및 그 개수를 나타내는 도면이다.
일 실시예에 따른 레이 트레이싱 장치(100)는 교차 검사(IST)를 교차 거리 검사(IST-T)와 교차점 검사(교차점 계산, IST-H)으로 나누어 수행할 수 있다. 예를 들어, 레이 트레이싱 장치(100)는 교차 거리 검사(IST-T)를 수행하여, 광선이 교차하는 지점의 거리(시점에서 교차점까지의 깊이)가 유효한 거리인지 여부를 판단할 수 있다. 광선이 교차하는 지점의 거리가 유효하다는 의미는, 광선이 교차하는 지점의 거리가 이전에 계산되어 저장된 교차점의 거리(표 2의 hit.dist)보다 작은 것을 의미한다. 레이 트레이싱 장치(100)는 광선이 교차하는 지점의 거리가 유효한 경우에만 해당 교차점에 대한 교차점 검사(교차점 계산)를 수행한다.
일 실시예에 따른, 레이 트레이싱 장치(100)는 표 2의 알고리즘을 이용하여, 교차 거리 검사(IST-T)를 수행할 수 있다. 교차 거리 검사(IST-T)를 수행하는 표 2의 알고리즘은 당업계에 공지된 알고리즘으로, 상세한 설명은 생략하기로 한다.
// don’t prefetch here, assume data has already been prefetched
// start high-latency division as early as possible
float nd = Inv(ray.dir[acc.k] + acc.n_u * ray.dir[ku] + acc.n_v * ray.dir[kv]);
float f = (acc.n_d - ray.org[acc.k] - acc.n_u * ray.org[ku] - acc.n_v * ray.org[kv]) * nd;
// check for valid distance.
if (!(hit.dist > f && f > EPSILON )) return;
도 6의 (a)는 표 2의 알고리즘에 대한 연산과정을 나타내는 도면이다.
표 2 및 도 6의 (a)를 참조하면, 파라미터 nd를 구하기 위하여, 2번의 곱셈 연산, 2번의 덧셈 연산, 1번의 인버젼(inversion) 연산이 필요하다. 또한, 교차 거리 f를 구하기 위하여, 2번의 곱셈 연산, 2번의 덧셈 연산, 1번의 뺄셈 연산, 1번의 곱셈 연산이 순서대로 필요하다. 또한, 교차 거리(f)가 유효한 거리인지 판단하기 위하여, 2번의 비교 연산이 필요하다.
이에 따라, 레이 트레이싱 장치(100)는 도 6의 (b)에 도시된 바와 같이, 표 2의 알고리즘 순서에 따라, 4개의 곱셈기(mul)-> 2개의 덧셈기(adder)-> 2개의 덧셈기(adder)-> 1개의 뺄셈기(sub)-> 1개의 인버전 연산기(inv)-> 1개의 곱셈기(mul)-> 2개의 비교기를 순차적으로 이용하여, 교차 거리 검사를 수행할 수 있다.
도 7의 (a)는 일 실시예에 따른 교차점 검사에 포함되는 연산과정을 나타내는 도면이고, 도 7의 (b)는 일 실시예에 따른 교차점 검사에 필요한 연산기의 종류 및 그 개수를 나타내는 도면이다.
일 실시예에 따른 레이 트레이싱 장치(100)는 광선이 교차하는 지점의 거리가 유효한 경우에만 교차점 검사(IST-H)를 수행한다. 예를 들어, 레이 트레이싱 장치(100)는 표 3의 알고리즘을 이용하여, 교차점 검사(IST-H)를 수행할 수 있다. 교차점 검사(IST-H)를 수행하는 표 3의 알고리즘은 당업계에 공지된 알고리즘으로, 상세한 설명은 생략하기로 한다.
// compute hitpoint positions on uv plane
float hu = (ray.org[ku] + f * ray.dir[ku]);
float hv = (ray.org[kv] + f * ray.dir[kv]);
// check first barycentric coordinate
float lambda = (hu * acc.b_nu + hv * acc.b_nv + acc.b_d);
if (lambda < 0.0f) return;
// check second barycentric coordinate
float mue = (hu * acc.c_nu + hv * acc.c_nv + acc.c_d);
if (mue < 0.0f) return;
// check third barycentric coordinate
if (lambda+mue > 1.0f) return;
도 7의 (a)는 표 3의 알고리즘에 대한 연산과정을 나타내는 도면이다.
표 3 및 도 7의 (a)를 참조하면, 파라미터 hu와 hv를 계산하기 위하여, 2번의 곱셈 연산과 2번의 덧셈 연산이 필요하다. 또한, lamda를 계산하기 위하여, 2번의 곱셈 연산과 2번의 덧셈 연산이 필요하다. 또한, mue를 계산하기 위하여, 2번의 곱셈 연산과 2번의 덧셈 연산이 필요하다. 또한, lamda와 mue 값의 유효성을 판단하기 위하여, 3번의 비교 연산이 필요하다. 이때, lamda와 mue 값을 더하는 연산이 추가적으로 필요할 수 있다.
이에 따라, 레이 트레이싱 장치(100)는 도 7의 (b)에 도시된 바와 같이, 표 3의 알고리즘 순서에 따라, 2개의 곱셈기(mul)-> 2개의 덧셈기(adder)-> 4개의 곱셈기(mul)-> 2개의 덧셈기(adder)-> 2개 또는 1개의 덧셈기(adder)-> 3개의 비교기(comp)를 순차적으로 이용하여, 교차점 검사(교차점 계산)을 수행할 수 있다.
도 8의 (a)는 일 실시예에 따른 광선-노드 교차 검사(TRV-AABB), 교차 거리 검사(IST-T), 교차점 검사(IST-H)에 포함되는 연산 단계들이 서로 공유되도록, 각 검사들에 포함되는 연산 단계를 배치한 예를 나타내는 도면이고, 도 8의 (b)는 일 실시예에 따른 TRV/IST 통합부(120)의 파이프라인 구조를 나타내는 도면이다.
일 실시예에 따른 광선-노드 교차 검사, 교차 거리 검사, 교차점 검사 각각에 포함되는 복수의 연산 단계들 중 적어도 하나는 서로 공유될 수 있다. 서로 공유될 수 있는 연산 단계들에 기초하여, TRV/IST 통합부(120)의 파이프라인의 각 단계가 구성될 수 있다.
예를 들어, 일 실시예에 따른 덧셈 연산과 뺄셈 연산은 동일한 연산기를 이용하여 수행될 수 있다. 또한, 비교 연산과 덧셈 연산, 비교 연산과 뺄셈 연산도 동일한 연산기를 이용하여 수행될 수 있다. 공유될 수 있는 연산에 기초하여, 광선-노드 교차 검사, 교차 거리 검사, 교차점 검사 과정에 포함되는 연산 단계들이 최대한 많은 연산기를 공유하여, 수행될 수 있도록 각각의 검사에 포함된 연산 단계들을 배치할 수 있다.
도 8의 (a)를 참조하면, 동일한 라인에 배치된 연산 단계들은 파이프 라인의 동일한 단계(stage)에서 수행될 수 있다. 예를 들어, 광선-노드 교차 검사에서 6번의 뺄셈 연산 단계와 교차점 검사에서의 2번의 덧셈 연산 단계는 서로 공유될 수 있는 연산 단계이며, 파이프 라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)에 도시된 제2 단계(Stage 2))는 2개의 뺄셈-덧셈기와 4개의 뺄셈기를 포함하거나, 6개의 뺄셈-덧셈기를 포함할 수 있다. 이때, 뺄셈-덧셈기가 차지하는 면적이 뺄셈기가 차지하는 면적보다 크다면, 2개의 뺄셈-덧셈기와 4개의 뺄셈기를 포함하는 것이, 6개의 뺄셈-덧셈기를 포함하는 것보다 하드웨어의 면적 관점에서, 유리할 수 있다.
또한, 광선-노드 교차 검사에서, 6번의 곱셈 연산, 교차 거리 검사에서의 4번의 곱셈 연산 및 교차점 검사 과정에서의 4번의 곱셈 연산 단계는 서로 공유될 수 있는 연산 단계이며, 파이프 라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)의 제3 단계(Stage 3))는 6개의 곱셈기를 포함할 수 있다.
또한, 광선-노드 교차 검사에서, 3번의 비교 연산, 교차 거리 검사에서의 2번의 덧셈 연산 및 교차점 계산 과정에서의 2번의 덧셈 연산 단계는 서로 공유될 수 있는 연산 단계이며, 파이프 라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)의 제4 단계(Stage 4))는 2개의 비교-덧셈기와 1개의 비교기를 포함하거나, 3개의 비교-덧셈기를 포함할 수 있다. 이때, 비교-덧셈기가 차지하는 면적이 비교기가 차지하는 면적보다 크다면, 2개의 비교-덧셈기와 1개의 비교기를 포함하는 것이, 3개의 비교-덧셈기를 포함하는 것보다 하드웨어의 면적 관점에서, 유리할 수 있다.
또한, 광선-노드 교차 검사에서, 2번의 비교 연산, 교차 거리 검사에서의 2번의 덧셈 연산 및 교차점 검사 과정에서의 2번의 덧셈 연산 단계는 서로 공유될 수 있는 연산 단계이며, 파이프 라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)의 제5 단계(Stage 5))는 2개의 비교-덧셈기를 포함할 수 있다.
또한, 광선-노드 교차 검사에서, 3번의 비교 연산, 교차 거리 검사에서의 2번의 비교 연산 및 교차점 계산 과정에서의 3번의 비교 연산 단계는 서로 공유될 수 있는 연산 단계이며, 파이프 라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)의 제9 단계(Stage 9))는 3개의 비교기를 포함할 수 있다.
한편, 교차점 검사 과정에서의 2번의 곱셈 연산은 다른 연산들과 공유될 수 없으며, 파이프라인의 제1 단계(Stage 1)에서 2개의 곱셈기를 이용하여, 수행될 수 있다. 또한, 교차 거리 검사에서의 1번의 뺄셈 연산, 1번의 인버젼 연산은 다른 연산들과 공유될 수 없으며, 파이프라인의 제6 단계(Stage 6)에서 1개의 뺄셈기, 제7 단계(Stage 7)에서 1개의 RCP(reciprocal)를 이용하여, 순차적으로 수행될 수 있다.
또한, 광선-노드 교차 검사에서의 2번의 비교 연산과 교차 거리 검사에서의 1번의 곱셈 연산은 서로 공유될 수 없으나, 파이프라인의 동일한 단계에서 수행될 수 있다. 이에 따라, 파이프라인의 해당 단계(예를 들어, 도 8의 (b)의 제8 단계(Stage 8))는 2개의 비교기와 1개의 곱셈기를 포함할 수 있다.
도 8의 (b)에 도시된 바와 같이, 연산기들이 파이프 라인의 각 단계에 배치되는 경우, 동일한 파이프 라인을 통하여, 광선-노드 교차 검사, 교차 거리 검사 및 교차점 계산을 수행할 수 있다. 또한, 파이프 라인의 각 단계들에서 데이터를 처리하는 시간(연산 수행 시간)은 동일하거나 상이할 수 있다. 일 예로, 파이프 라인의 인버젼 연산(stage 7)은 다른 단계들에 비하여, 더 많은 시간이 소요될 수 있다. 다만, 이에 한정하는 것은 아니다.
또한, 파이프 라인의 각 단계에는 광선을 입력 받기 위한 레지스터가 포함될 수 있다. 레지스터로 입력된 광선이 해당 단계의 연산을 필요로 하지 않는 경우, 다음 단계의 레지스터로 바이패스(bypass)될 수 있다. 예를 들어, 광선-노드 교차 검사의 경우, 파이프 라인의 제1 단계(Stage 1)의 곱셈 연산을 필요로 하지 않기 때문에, 제1 단계(Stage 1)의 레지스터에 입력된 광선은 제2 단계(Stage 2)의 레지스터로 바이패스(bypass)될 수 있다.
한편, 도 8의 (a) 및 (b)에서는 가속 구조 탐색 시, 하나의 노드를 검사하는 Single AABB(Axis Aligned Bounding Box)구조의 경우를 도시한 것이나, 일 실시예에 따른 레이 트레이싱 장치(100)는 두 개의 자식 노드(오른쪽 노드, 왼쪽 노드)를 동시에 검사하는 Dual AABB 구조를 가질 수 있다. 이러한 경우, 파이프 라인은 (도 8의 (a) 및 (b)에 나타난 연산기들의 개수)*2 만큼의 연산기들을 포함하도록 구성될 수 있다. 이에 따라, 레이 트레이싱 장치(100)는 두 개의 자식 노드에 대한 광선-노드 교차 검사를 동시에 수행할 수 있으며, 또한, 교차 거리 검사 및 교차점 검사도 2개의 프리미티브에 대하여, 병렬로 동시에 처리할 수 있다.
도 9는 일 실시예에 따른 레이 트레이싱 방법을 나타내는 흐름도이다.
도 9를 참조하면, 레이 트레이싱 장치(100)는 광선을 생성할 수 있다(S410).
410 단계(S410)는 도 2의 210 단계(S210)에 대응하므로, 구체적인 설명은 생략하기로 한다.
도 9를 참조하면, 레이 트레이싱 장치(100)는 광선의 상태를 확인하고(S420), 광선의 상태에 기초하여, 광선-노드 교차 검사(S431), 교차 거리 검사(S433), 교차점 검사(S435) 중 어느 하나를 결정하고, 결정된 검사를 수행할 수 있다.
레이 트레이싱 장치(100)는 광선의 상태가 광선-노드 교차 검사를 위한 상태인지, 교차 거리 검사를 위한 상태인지, 교차점 검사를 위한 상태인지를 판단할 수 있다. 예를 들어, 처음으로 입력된 광선의 경우, 레이 트레이싱 장치(100)는 가속 구조에 포함되는 노드에 대하여, 광선-노드 교차 검사를 수행할 수 있다. 또는, 이전 검사에서, 광선과 교차하는 프리미티브가 검출된 경우, 레이 트레이싱 장치(100)는 광선과 프리미티브의 교차 거리 검사를 수행할 수 있다. 또는, 이전 검사에서, 광선과 프리미티브가 교차하는 거리가 유효한 것으로 판단된 경우, 레이 트레이싱 장치(100)는 광선과 프리미티브의 교차점 검사를 수행할 수 있다.
레이 트레이싱 장치(100)는 수행된 검사 결과에 기초하여, 탐색의 종료 여부를 결정할 수 있다(S440).
예를 들어, 광선-노드 교차 검사 결과, 광선이 노드에 교차하지 않고, 더 이상 탐색할 노드가 존재하지 않는 경우, 레이 트레이싱 장치(100)는 해당 광선에 대한 탐색을 종료시킬 수 있다. 또는, 교차 거리 검사 결과, 해당 교차 거리가 유효하지 않고, 더 이상 탐색할 노드 또는 프리미티브가 존재하지 않는 경우, 레이 트레이싱 장치(100)는 해당 광선에 대한 탐색을 종료시킬 수 있다. 또는, 교차점이 계산되고, 더 이상 탐색할 노드 또는 프리미티브가 존재하지 않는 경우, 레이 트레이싱 장치(100)는 해당 교차점을 쉐이딩부(140)로 전송하고, 해당 광선에 대한 탐색을 종료시킬 수 있다.
반면에 탐색이 종료되지 않은 경우, 레이 트레이싱 장치(100)는 광선의 상태를 업데이트 시킬 수 있다(S450).
예를 들어, 광선-노드 교차 검사를 수행한 결과, 교차하는 리프 노드가 검출된 경우, 광선의 상태를 해당 리프 노드에 포함되는 프리미티브와의 교차 거리 검사를 위한 상태로 업데이트 할 수 있다. 또는, 교차 거리 검사를 수행한 결과, 유효한 거리로 판단된 경우, 광선의 상태를 해당 교차점을 계산하기 위한 상태로 업데이트 할 수 있다. 다만, 이에 한정하는 것은 아니다.
업데이트된 광선은 다시 TRV/IST 통합부(120)로 입력될 수 있다.
도 10은 다른 실시예에 따른 레이 트레이싱 장치(500)는 광선 생성부(510), 광선 디스패처(Ray dispatcher, 520), TRV부(535), TRV/IST 통합부(530), 광선 상태 업데이트부(540) 및 쉐이딩부(550)를 포함할 수 있다.
광선 생성부(510), TRV/IST 통합부(530), 광선 상태 업데이트부(540) 및 쉐이딩부(550)는 각각 도 4의 광선 생성부(110), TRV/IST 통합부(120), 광선 상태 업데이트부(130) 및 쉐이딩부(140)에 대응하므로, 구체적인 설명은 생략하기로 한다.
TRV부(535)는 광선-노드 교차 검사만을 수행할 수 있다.
광선 디스패처(520)는 광선의 상태와 TRV부(535)의 작업 부하(work load), TRV/IST 통합부(530)의 작업 부하에 기초하여, 입력된 광선을 TRV부(535)로 전송할 지, TRV/IST 통합부(530)로 전송할지를 결정할 수 있다.
예를 들어, 광선 디스패처(520)에 입력된 광선의 상태가 교차 거리 검사 또는 교차점 검사를 수행하기 위한 상태인 경우, 광선 디스패처(520)는 입력된 광선을 TRV/IST 통합부(530)로 전송할 수 있다.
또한, 광선 디스패처(520)에 입력된 광선의 상태가 광선-노드 교차 검사를 수행하기 위한 상태이고, TRV부(535)의 작업 부하가 TRV/IST 통합부(530)의 작업 부하보다 작은 경우, 입력된 광선을 TRV부(535)로 전송할 수 있다.
또한, 광선 디스패처(520)에 입력된 광선의 상태가 광선-노드 교차 검사를 수행하기 위한 상태이고, TRV/IST 통합부(530)의 작업 부하가 TRV부(535)의 작업 부하보다 작은 경우, 입력된 광선을 TRV/IST 통합부(530)로 전송할 수 있다.
이에 따라, 레이 트레이싱 장치(500)는 광선-노드 교차 검사에 대한 작업 부하가 교차 거리 검사나 교차점 검사의 작업 부하에 비하여, 상대적으로 높은 경우, TRV부(535)에 광선을 적절히 분배함으로써, 전체적인 부하 균형을 이루어, 레이 트레이싱 처리 속도를 향상시킬 수 있다.
도 11은 다른 실시예에 따른 레이 트레이싱 방법을 나타내는 흐름도이다.
도 11을 참조하면, 레이 트레이싱 장치(500)는 광선을 생성할 수 있다(S610).
610 단계(S610)는 도 2의 210 단계(S210)에 대응하므로, 구체적인 설명은 생략하기로 한다.
도 11을 참조하면, 레이 트레이싱 장치(500)는 광선의 상태, TRV부(535)의 작업 부하, 및 TRV/IST 통합부(530)의 작업 부하 중 적어도 하나에 기초하여, 입력된 광선을 TRV부(535) 및 TRV/IST 통합부(530) 중 어느 하나에 전송할 수 있다(S620).
예를 들어, 입력된 광선의 상태가 교차 거리 검사 또는 교차점 검사를 수행하기 위한 상태인 경우, 레이 트레이싱 장치(100)는 입력된 광선을 TRV/IST 통합부(530)로 전송할 수 있다.
반면에, 입력된 광선의 상태가 광선-노드 교차 검사를 수행하기 위한 상태이고, TRV부(535)의 작업 부하가 TRV/IST 통합부(530)의 작업 부하보다 작은 경우, 레이 트레이싱 장치(100)는 입력된 광선을 TRV부(535)로 전송할 수 있다. 또한, 입력된 광선의 상태가 광선-노드 교차 검사를 수행하기 위한 상태이고, TRV/IST 통합부(530)의 작업 부하가 TRV부(535)의 작업 부하보다 작은 경우, 레이 트레이싱 장치(100)는 입력된 광선을 TRV/IST 통합부(530)로 전송할 수 있다.
광선이 TRV부(535)로 전송된 경우, 레이 트레이싱 장치(100)는 광선-노드 교차 검사를 수행할 수 있다(S630).
반면에, 광선이 TRV/IST 통합부(530)로 전송된 경우, 레이 트레이싱 장치(100)는 입력된 광선의 상태를 확인하고(S640), 광선의 상태에 기초하여, 광선-노드 교차 검사(S651), 교차점 거리 검사(S653), 교차점 검사(S655) 중 어느 하나를 수행할 수 있다.
레이 트레이싱 장치(500)는 수행된 검사 결과에 기초하여, 탐색의 종료 여부를 결정할 수 있다(S660).
탐색이 종료되지 않은 경우, 레이 트레이싱 장치(500)는 광선의 상태를 업데이트 시킬 수 있다(S670).
660 단계(S660) 및 670 단계(S670)는 도 9의 440 단계(S440) 및 450단계(S450)에 대응하므로, 구체적인 설명은 생략하기로 한다.
한편, 일 실시예에 따른 레이 트레이싱 장치 및 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.

Claims (17)

  1. 광선을 생성하여, TRV/IST 통합부로 전송하는 광선 생성부 및 상기 광선이 입력되면, 상기 광선의 상태에 기초하여 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 결정하고, 상기 광선에 대해 상기 결정된 검사를 수행하는 TRV/IST 통합부를 포함하고,
    상기 광선에 대한 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사는 동일한 파이프 라인을 통해 수행되고,
    상기 파이프 라인은 복수의 단계(stage)들을 포함하고, 상기 복수의 단계들 각각은 대응되는 단계의 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사 각각에 대한 처리를 수행하는 적어도 하나의 연산기를 포함하며,
    상기 TRV/IST 통합부는 상기 적어도 하나의 연산기 각각이 차지하는 하드웨어 면적에 기초하여 상기 복수의 단계들 각각에서 사용되는 상기 적어도 하나의 연산기를 결정하는 레이 트레이싱 장치.
  2. 제1항에 있어서,
    상기 레이 트레이싱 장치는,
    상기 수행된 검사 결과에 기초하여, 상기 TRV/IST 통합부로부터 수신한 상기 광선의 상태를 업데이트하고, 상기 광선을 상기 TRV/IST 통합부로 전송하는 광선 상태 업데이트부를 더 포함하는 레이 트레이싱 장치.
  3. 제1항에 있어서,
    상기 TRV/IST 통합부는,
    상기 동일한 파이프 라인에 포함되는 적어도 하나의 단계에서, 동일한 연산기를 사용하여, 상기 광선-노드 교차 검사에 포함되는 적어도 하나의 연산, 상기 교차 거리 검사에 포함되는 적어도 하나의 연산 및 상기 교차점 검사에 포함되는 적어도 하나의 연산을 수행하는 레이 트레이싱 장치.
  4. 제2항에 있어서,
    상기 광선 상태 업데이트부는,
    상기 교차 거리 검사 결과, 상기 광선과 교차하는 제1 프리미티브까지의 거리가 유효하지 않은 경우, 상기 광선과 상기 제1 프리미티브가 교차하는 교차점 검사를 수행하지 않도록 상기 광선의 상태를 업데이트하는 레이 트레이싱 장치.
  5. 제2항에 있어서,
    상기 광선 상태 업데이트부는,
    상기 교차 거리 검사 결과, 상기 광선과 교차하는 제2 프리미티브까지의 거리가 유효한 경우, 상기 광선과 상기 제2 프리미티브가 교차하는 교차점 검사를 수행하도록 상기 광선의 상태를 업데이트하는 레이 트레이싱 장치.
  6. 제1항에 있어서,
    상기 레이 트레이싱 장치는,
    상기 TRV/IST 통합부로부터 상기 광선과 교차하는 프리미티브의 교차점을 수신하여, 픽셀의 색상 값을 결정하는 쉐이딩부를 더 포함하는 레이 트레이싱 장치.
  7. 레이 트레이싱 방법에 있어서,
    광선을 생성하는 단계;
    상기 광선이 입력되면, 상기 광선의 상태에 기초하여, 광선-노드 교차 검사, 교차 거리 검사 및 교차점 검사 중 어느 하나를 결정하는 단계; 및
    상기 광선에 대해 상기 결정된 검사를 수행하는 단계를 포함하고,
    상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사는 동일한 파이프 라인을 통해 수행되고,
    상기 파이프 라인은 복수의 단계(stage)들을 포함하고, 상기 복수의 단계들 각각은 대응되는 단계의 상기 광선-노드 교차 검사, 상기 교차 거리 검사 및 상기 교차점 검사 각각에 대한 처리를 수행하는 적어도 하나의 연산기를 포함하며,
    상기 레이 트레이싱 방법은,
    상기 적어도 하나의 연산기 각각이 차지하는 하드웨어 면적에 기초하여 상기 복수의 단계들 각각에서 사용되는 상기 적어도 하나의 연산기를 결정하는 단계를 더 포함하는 레이 트레이싱 방법.
  8. 제7항에 있어서,
    상기 레이 트레이싱 방법은,
    상기 수행된 검사 결과에 기초하여, TRV/IST 통합부로부터 수신한 상기 광선의 상태를 업데이트하는 단계; 및
    상기 광선을 상기 TRV/IST 통합부로 전송하는 단계를 더 포함하는 레이 트레이싱 방법.
  9. 제7항에 있어서,
    상기 광선-노드 교차 검사에 포함되는 적어도 하나의 연산, 상기 교차 거리 검사에 포함되는 적어도 하나의 연산 및 상기 교차점 검사에 포함되는 적어도 하나의 연산은, 상기 동일한 파이프 라인에 포함되는 적어도 하나의 단계에서, 동일한 연산기를 사용하여 수행되는 레이 트레이싱 방법.
  10. 상기 제7항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020150041642A 2015-03-25 2015-03-25 레이 트레이싱 장치 및 방법 KR102365112B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150041642A KR102365112B1 (ko) 2015-03-25 2015-03-25 레이 트레이싱 장치 및 방법
US14/997,028 US10339694B2 (en) 2015-03-25 2016-01-15 Ray tracing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150041642A KR102365112B1 (ko) 2015-03-25 2015-03-25 레이 트레이싱 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160115016A KR20160115016A (ko) 2016-10-06
KR102365112B1 true KR102365112B1 (ko) 2022-02-18

Family

ID=56974162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150041642A KR102365112B1 (ko) 2015-03-25 2015-03-25 레이 트레이싱 장치 및 방법

Country Status (2)

Country Link
US (1) US10339694B2 (ko)
KR (1) KR102365112B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508112B2 (en) * 2020-06-18 2022-11-22 Nvidia Corporation Early release of resources in ray tracing hardware

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7830379B2 (en) 2006-09-19 2010-11-09 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
US7940266B2 (en) * 2006-10-13 2011-05-10 International Business Machines Corporation Dynamic reallocation of processing cores for balanced ray tracing graphics workload
KR101004110B1 (ko) * 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
EP2336977A1 (en) 2009-12-16 2011-06-22 The Provost, Fellows and Scholars of the College of the Holy and Undivided Trinity of Queen Elizabeth near Dublin A Micro-architecture System and Method for ray tracing and collision detection
KR101705072B1 (ko) 2010-09-28 2017-02-09 삼성전자주식회사 영상 처리 장치 및 방법
KR101705581B1 (ko) * 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법

Also Published As

Publication number Publication date
KR20160115016A (ko) 2016-10-06
US20160284117A1 (en) 2016-09-29
US10339694B2 (en) 2019-07-02

Similar Documents

Publication Publication Date Title
KR102080851B1 (ko) 레이 추적의 스케쥴링을 위한 장치 및 방법
JP6474585B2 (ja) レイトレーシング処理装置及びその方法
US9576389B2 (en) Method and apparatus for generating acceleration structure in ray tracing system
KR102493461B1 (ko) 렌더링 시스템 및 방법
KR102242566B1 (ko) 레이 트레이싱 처리 장치 및 방법
JP2017188095A (ja) 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
KR20160125172A (ko) 레이 트레이싱 장치 및 방법
US11790593B2 (en) Ray-tracing multi-sample anti-aliasing
CN114119841A (zh) 光线跟踪系统中的相交测试
KR102151443B1 (ko) 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치
KR20150039493A (ko) 레이 트레이싱 처리 장치 및 방법
KR20150136348A (ko) 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
US10026214B2 (en) Ray tracing apparatus and method
US11341708B2 (en) Graphics processing
KR102365112B1 (ko) 레이 트레이싱 장치 및 방법
Majek et al. Range sensors simulation using GPU ray tracing
Duckworth et al. Parallel processing for real-time 3D reconstruction from video streams
US11816792B2 (en) Overlay trees for ray tracing
KR20110099412A (ko) 반사맵 및 굴절맵을 이용한 레이 트레이싱 기법에 따른 랜더링 장치 및 방법
US20150186288A1 (en) Apparatus and method of operating cache memory
US20230206541A1 (en) Common circuitry for triangle intersection and instance transformation for ray tracing
US20240104844A1 (en) Multi-resolution geometric representation using bounding volume hierarchy for ray tracing
Krishnan et al. Interactive boundary computation of boolean combinations of sculptured solids
CN116993894B (zh) 虚拟画面的生成方法、装置、设备、存储介质及程序产品
Johansson et al. Ray Tracing for Sensor Simulation using Parallel Functional Programming

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