Search

Ray Tracing in One Weekend

Created
2021/03/30
tag
C++
Graphics
RT
Ray Tracing

1. Before the Course

All materials are from the Ray Tracing in One Weekend by Peter Shirley. The course can be found at the link directly below.
The course is originally from the book series of RAY TRACING IN ONE WEEKEND, and the information of those can be found at the link directly below.
Also, the 2 things up above are following by the RayTracing/raytracing.github.io which is given the link below.
Therefore, all copyrights of this material belong to the original author.

2. Overview

본 강의를 진행하는 Peter Shirley (이하 피터 교수)는 몇 년에 걸쳐 많은 Graphics 수업을 해왔다. 해당 Graphics 수업을 할 때는 종종 RT (Ray Tracing) 를 이용하여 진행했다고 하는데, RT를 이용한 이유는 비록 그래픽 구현을 위해 요구되는 모든 코드들을 작성해야 하지만 멋진 ImageAPI 하나 없이 구현할 수 있기 때문이라고 한다. 피터 교수는 수강생들이 최대한 빨리 멋진 프로그래밍을 할 수 있도록 강의 자료를 RT 사용법에 맞게 조정했다. 비록 강의 자료에 기재된 것들이 완전한 기능을 갖춘 RT가 되지는 않겠지만, 여러 영화에서 RT가 주요할 수 있게 해줬던 간접적인 조명 정도는 될 수 있다고 한다. 강의 자료에 주어진 순서대로 단계별 학습을 해보자. 만일 더 광범위한 기능을 갖춘 RT에 대해서 추구하고 갈망한다면, 단계별 학습이 앞선 목적에 맞게 우리가 만드는 RT에 대한 구조를 확장시키는데 도움이 될 것이다.
누군가 RT라고 말한다면 이는 굉장히 포괄적인 의미를 갖는다. 강의에서 진행되는 RT는 상당히 일반적으로 취급되는 기술적인 경로 추적을 의미한다고 보면 된다. 컴퓨터가 연산하게되는 코드들은 굉장히 간단하게 나타날 것이고, 아마 이 강의를 통해 직접 구현하는 Image들로성취감을 느낄 수 있을 것이다.
강의를 진행하다보면 피터 교수의 RT를 사용하는 방법과 디버깅 팁을 볼 수 있다. 결과적으로 강의를 마무리 했을 때는 멋진 Image를 만들어내는 RT를 가질 수 있다. 피터 교수의 강의는 C++을 이용하여 진행된다. 만일 C++이 주력 언어가 아니더라도 강의를 진행하는데는 큰 문제는 되지 않는다고 한다. 피터 교수가 Graphics에서 C++을 주력으로 사용하는데는 여러 이유가 있다고 하는데 그 이유는 빠르고 이식성이 좋고 대부분의 게임 혹은 영화의 Renderer들은 C++로 작성되어 있기 때문이라고 한다. 강의를 C++로 진행하는데 있어서 문제가 없는 이유는 C++의 많은 Modern 특성들을 지양했기 때문이라고 볼 수 있다. 하지만 RT에 있어서 상속연산자 재정의는 매우 유용하기 때문에 이 점을 염두에 두면 좋다. 강의 내에서는 vec3 Class에서 제공하는 몇 연산자를 제하고는 많은 것들을 보여줄 것이고, 비록 직접적인 구현을 하는 것을 선호하지만 이용 가능한 코드들이 있다면 이를 이용한다고 하니 참고하자.
피터 교수가 작성한 코드가 보고 싶다면 위에 제공된 GitHub에서 찾아볼 수 있다.
이 강의에서는 Vector의 기본적인 친밀함 (Dot ProductVector Addition과 같은)을 가정하고 진행된다. 만일 이에 대해서 잘 모른다면 Marschner 혹은 피터 교수의 책을 통해서 학습하고 와도 좋고 Foley, Van Dam, McGuire 등의 Graphics Codex를 참고하자.
만일 강의 진행에 있어서 문제가 발생하거나 누군가에게 보여주고 싶은 멋진 작업을 해냈다면 ptrshrl@gmail.com 로 메일을 보내면 된다고 한다.
강의에 관련된 아래의 블로그에 추가적인 서적과 자료 링크를 기재하였다고 한다.

3. Course

Search
Output an Image
Chapter 2
Output an Image
Chapter 2
강의 진행에 원 GitHub의 코드대로 진행이 잘 되지 않는 경우, 아래 GitHub의 코드를 참고하자.