[RT in One Weekend Series 13] Where Next? (번역)

By | 2019-09-16

목차: Series 1: Index and Overview (Link)
이전 글: Series 12: Defocus Blur (Link)

먼저 Random 하게 많은 Sphere(구)를 그려서 이번 글에 사용할 표지 이미지를 만들어본다. 아래 코드 1은 Random 하게 많은 구를 그리기 위한 Main 코드이다.

코드 1: 많은 수의 구를 그리기 위한 Main 코드

위 코드를 실행하면 아래 그림 1과 같은 결과 이미지를 확인 할 수 있다 (뭔가 모르게 멋진 그림이다).

그림 1: 여러개의 구를 그린 결과 이미지

그림 1에서 Glass 구는 공중에 떠 있는 것처럼 보인다. 해당 부분은 버그가 아니라고 한다. 실제로 우리가 Glass 형태의 구를 본 적이 없어서 그렇다고 한다. 추가로 큰 Glass 구 아래에 있는 다른 구들은 Glass 구가 Ray를 굴절시키므으로 많은 Light를 받게 된다 (다른 큰 구는 Light를 차단함).

출처 1에서 제공하는 모든 코드를 작성하였다. 해당 글을 기반으로 추가로 할 수 있는 작업을 정리하였다.

  1. Lights: 특정 물체(Object)가 빛을 방출하는 등의 추가적인 구현
  2. Biasing Scattered Rays: 산란하는 Ray를 구현
  3. Triangle: 다양한 모델(Triangle로 구성된)을 그릴 수 있도록 구현
  4. Surface Textures: Wall Paper와 같은 그림을 물체에 추가할 수 있도록 구현
  5. Solid Textures: (추가 설명이 없음)
  6. Volumes and Media: Density에 따라 Ray의 Hit 여부를 결정하는 코드 구현 (해당 부분은 정확히 어떤 의미인지 잘 모르겠음)
  7. Parallelism: 병렬화 (출처 2에 CUDA를 사용한 병렬화 코드 설명이 있다)

MK: 드디어 Weekend 시리지를 마무리했다. 책 제목에 Weekend가 있어서 쉽게 마무리 할 수 있을 거로 생각했는데 거의 5개월이 넘게 걸린 것 같다. Weekend 다음 시리즈가 있음으로 다음 부분도 추가로 번역을 하면서 공부를 할 계획이다. 추가로 출처 2에 제공되는 CUDA 병렬화도 번역해볼 예정이다.

출처

  1. http://www.realtimerendering.com/raytracing/Ray%20Tracing%20in%20a%20Weekend.pdf
  2. https://devblogs.nvidia.com/accelerated-ray-tracing-cuda/
  3. http://www.jiniya.net/tt/528

Leave a Reply

Your email address will not be published. Required fields are marked *