[ GPU ] 레이트레이싱(Ray Tracing) 기술이란?

2019. 11. 22. 21:50정보 창고/기타 정보

썸네일


이번 포스트는 유명한 기술이지만 자세하게 아는 사람이 별로 없는 레이트레이싱 기술에 대해서 적어볼려고 합니다.

다양한 곳에서 얻은 정보들이며 잘못된 정보도 일부 있을수도 있습니다.


 레이트레이싱


레이트레이싱은 1980년 'Turner Whitted'가 'An improved illumination model for shaded display' 논문에서 발표한 기법으로 이미지의 픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선(Ray)을 역추적(Trace)하는 방식입니다.

 

빛은 연속적으로 반사합니다.

그렇기에 사람도, 동물도 다른 사물을 눈으로 볼 수 있는 것입니다.

레이트레이싱 기술은 쉽게 말해, 계속적으로 반사하는 빛을 최대한 현실처럼 똑같이 흉내내고자 하는 그래픽 작업(랜더링)이라고 생각하시면 됩니다.

 

레이트레이싱 기술은 장면과 대상이 되는 객체의 조명 환경을 매우 사실적으로 시뮬레이션하는 연산 집약적 렌더링 기술입니다. RTX 그래픽카드는 튜링 GPU 기반 레이트레이싱을 통해 물리적으로 정확한 반사(reflections), 굴절(refractions), 그림자 및 간접 조명을 실시간으로 렌더링 할 수 있습니다.

현재의 엔비디아(Nvidia) 볼타(Volta) GPU는 사실적인 영화 품질에 해당하는 레이트레이싱 장면을 렌더링하는 것은 가능하지만, 단일 GPU에서 실시간 렌더링은 무리입니다. 이러한 레이트레이싱의 연산 집약적 특성으로 인해 게임에서 레이트레이싱은 사용되지 않았습니다. 정확히는 못했다고 보는 것이 현실적인 표현입니다. 특히 3D 게임은 원할한 게이밍을 위해 초당 30~90개 이상의 애니메이션이 요구되는 애플리케이션(Application)입니다. 어쩔 수 없이 완전히 사실적인 렌더링은 포기하거나 타협할 수밖에 없었고, GPU 가송 래스터화 렌더링 기능(GPU-accelerated rasterization rendering)에 의존해왔습니다.

이런 이유로 인해 GPU에서 실시간 레이트레이싱을 구현하는 것은 커다란 벽처럼 느껴졌던 것이 사실입니다. 하지만 엔비디아는 튜링 TU102, TU104 및 TU106 GPU에 포함된 RT 코어로 하드웨어 기반 레이트레이싱 가속 엔진과 Nvidia RTX 소프트웨어 기술을 통합하여 실시간 레이트레이싱을 구현하는 데 성공하였습니다. 물론 기술적 성취오는 별개로 실제 이미지 품질의 완성도와 게이머, 그리고 사용자에게 시작적인 만족도에 대한 평가를 남겨두고 있는 상황입니다.

 


레이트레이싱 알고리즘


레이트레이싱은 레디오 시티(radio-city) 알고리즘과 더불어 대표적인 전역 조명 기법입니다.

 

1차 광선이 장면의 어떤 물체와도 부딪히지 않은 경우에는 장면의 배경색을 픽셀의 색상으로 결정합니다. 만약 1차 광선이 물체에 부딪힌다면 해단 점이 그림자 영역ㅇ 안에 있는가를 검사해야 합니다. 이것을 위해 그림자 광선(shadow ray)라는 이름의 2차 광선을 각 광원에 대해 발사합니다.


출처


퀘이사존 칼럼의 '지포스 RTX의 심장, 튜링(Turing) 아키텍처의 모든 것' 중에서...

네이버 블로그 깜장용이의 '레이 트레이싱 (Ray Tracing) 이란?' 중에서...

네이버 블로그 jidon333님의블로그의 '광선 추적법(Ray tracing) 알고리즘' 중에서...


 

맨 위로