그렇다면 레이 트레이싱이란 무엇일까요?
일단 레이 트레이싱을 빠르게 정의하고, 실시간 레이 트레이싱이 등장하기 전에 게임 엔진에서 주로 활용되었던 렌더링 방식인 래스터라이제이션(rasterization)과 어떤 점이 다른지 중요한 부분을 살펴보겠습니다.레이 트레이싱은 신(Scene) 주변에서 반사되는 빛의 경로를 추적하여 색을 수집하고 저장하면서 최종 렌더링에서 각 픽셀의 색을 결정하는 방식입니다. 빛의 물리적 움직임을 모방하기 때문에, 화면 밖 물체의 부드럽고 세밀한 그림자 및 반사와 같이 래스터라이제이션보다 더 사실적인 결과를 보여줍니다.
반면 래스터라이제이션은 신의 오브젝트를 뒤에서 앞으로 그려 변환 매트릭스로 3D 오브젝트를 2D 평면에 매핑합니다. 각 픽셀의 색은 메시에 저장된 정보(색, 텍스처, 노멀)를 신의 라이팅과 결합하여 각 픽셀의 색을 결정합니다. 레이 트레이싱보다 속도는 훨씬 빠르지만 실제 리플렉션, 반투명, 앰비언트 오클루전과 같은 반사광에 의존하는 효과는 표현할 수 없습니다.
기폭제로 작용한 기술
레이 트레이싱은 가장 현실적인 이미지를 생성하려고 노력하는 제작자들에 의해 수십 년 간 장편 영화에서 활용됐습니다. 하지만 아주 최근까지, 영화 해상도에서 단일 프레임을 레이 트레이싱하려면 몇 시간, 심지어는 며칠까지도 걸렸습니다. 레이 트레이싱한 프레임을 초당 프레임 수(fps) 24프레임 이상으로 렌더링한다는 건 상상조차 할 수 없었습니다.이제 게임의 판도를 바꾸는 2가지의 기술 발전이 이뤄졌습니다: 마이크로소프트(Microsoft)의 DXR(DirectX Raytracing) 프레임워크와 엔비디아(NVIDIA)의 RTX 플랫폼입니다. 엔비디아와 ILMxLAB와 협업한 에픽게임즈는 GDC 2018에서 스타워즈: 라스트 제다이(Star Wars: The Last Jedi) 의 캐릭터가 등장하는 테크 데모 리플렉션(Reflections)으로 리얼타임 레이 트레이싱을 선보일 수 있었습니다.

이미지 출처 “리플렉션”
데모에서는 텍스처가 들어간 에어리어 라이트(area lights), 레이 트레이스드 에어리어 라이트 섀도(ray-traced area light shadows), 레이 트레이스드 리플렉션(ray-traced reflections), 레이 트레이스드 앰비언트 오클루전(ray-traced ambient occlusion), 시네마틱 뎁스 오브 필드(cinematic depth of field), 엔비디아 게임웍스(GameWorks) 레이 트레이싱 디노이징(denoising)이 전부 실시간으로 실행됩니다. 언리얼 엔진의 하이브리드 접근법 덕분에, 레이 트레이싱의 덕을 보지 않는 패스는 계속해서 래스터라이즈되어 퍼포먼스가 전반적으로 향상되게 됩니다.

레이 트레이스드 에어리어 라이트 섀도
아주 초기 단계 이야기입니다. 당시 유저들은 아직 언리얼 엔진 프로토타입 코드를 이용할 수 없었습니다. 하드웨어가 데모를 실시간으로 실행하려면 가격이 약 10만 달러 정도인 4개의 테슬라(Tesla) V100 GPU를 탑재한 엔비디아 DGX 스테이션이 필요했습니다. 소프트웨어 또는 하드웨어 전부 일반 유저가 쉽게 구할 수 없는 사양이었습니다.
리얼타임 레이 트레이싱의 보급
5개월 후, 시그라프 2018(SIGGRAPH 2018)에서는 엔비디아와 다시 협업하였고, 포르쉐(Porsche)도 합류해 실시간 시네마틱 경험 “스피드 오브 라이트” 포르쉐 911 스피드스터 콘셉트(“The Speed of Light” Porsche 911 Speedster Concept)를 공개했습니다. 무어의 법칙 효과가 완전히 발휘된 이 데모는 엔비디아 쿼드로(Quadro) RTX 카드 2개만으로도 충분했습니다. 당시 가격으로 각 6천 달러가 넘어가는 투자지만, 이전보다는 훨씬 저렴합니다.
이미지 출처 “스피드 오브 라이트”
이전에 선보였던 기능 외에도 스피드 오브 라이트는 레이 트레이싱된 반투명과 클리어 코트 셰이딩 모델(clear coat shading model), 디퓨즈 글로벌 일루미네이션(diffuse global illumination)을 선보였습니다. 시네마틱 제작과 더불어, 팀은 신의 실시간 특성을 묘사하기 위해서 인터랙티브 데모를 제작했습니다.
올해 3월 GDC 2019 돌아가, 레이 트레이싱 기능은 언리얼 엔진 4.22에서 베타 기능으로 이용할 수 있도록 준비가 되어 있었습니다. 12개월 동안 이 기술이 얼마나 발전했는지 보여주기 위해 파트너인 굿바이 캔자스(Goodbye Kansas)와 딥 포레스트 필름(Deep Forest Films)은 디지털 휴먼을 주인공으로 한 리얼타임 시네마틱 트롤(Troll)을 제작하였습니다.

이미지 출처 “트롤”
트롤 은 리플렉션 보다 훨씬 복잡합니다. 두 작품 모두 24fps로 실행되지만, 트롤에는 트라이앵글 6천 2백만 개가 있는 반면 리플렉션에는 5백만 개뿐입니다. 또한 트롤에는 라이트 16개가 있고 리플렉션에는 라이트 4개가 있습니다. 레이 트레이스드 패스(ray-traced passes)는 트롤에서 풀 1080p 해상도로 렌더링되어, 이 해상도의 절반 정도로 렌더링되는 리플렉션 과는 대조적으로 스케일까지도 향상되었습니다. 또한 트롤 에서는 파티클 레이 트레이싱도 필요했고, 얼렘빅 지오메트리 캐시(Alembic geometry cache), 헤어, 피부와 같은 언리얼 엔진의 영화 촬영기법 파이프라인에 있는 다른 주요 요소와의 상호 운용성도 필요했습니다. 이 모든 것들에도 불구하고 트롤 은 엔비디아 RTX 2080 Ti 단 한대로 렌더링했으며, 이는 현재 정가 1,199달러입니다.
스크린 스페이스 리플렉션(screen-space reflections)(좌)과 “트롤”에서의 레이 트레이스드 리플렉션(우) 비교
현재 언리얼 엔진 소프트웨어는 무료로 이용할 수 있고 그래픽 카드 요구사항에 대한 금전적인 부담이 줄어들면서, 누구나 실시간 레이 트레이싱을 사용할 수 있습니다.
언리얼 엔진 4.23의 레이 트레이싱
언리얼 엔진 레이 트레이싱의 초기 구현 작업 시, 마이크로소프트는 DXR 프레임워크에 마무리 작업을 하고 엔비디아는 새로운 하드웨어와 드라이버 작업을 진행함과 동시에 에픽게임즈는 코드를 작성했습니다. 또한 레이 트레이싱 지원을 위해 주요 렌더링 파이프라인 리팩토링을 진행했습니다. 시그라프 2019에 프리뷰 버전으로 선보인 언리얼 엔진 4.23에서 이 두 요소에 의한 불안정성을 해결하고자 노력을 기울일 수 있었습니다.스카이 패스(sky pass), 글로벌 일루미네이션, 디노이징을 포함한 많은 영역에서 퍼포먼스가 개선되었습니다. 트레이스 가능한 광선 개수를 위한 예산은 매우 한정되었기 때문에 리얼타임 레이 트레이싱에서 디노이징은 아주 중요합니다.

글로벌 일루미네이션은 이블 아이 픽처스(Evil Eye Pictures)에서 제작한 단편 영화 “이머전스(emergence)”에 잘 활용되었습니다
또한 인터섹션 셰이더(intersection shader)를 구현하여 기본유형을 지원할 수 있고, 헤어와 프랙탈 같은 복잡한 지오메트리를 렌더링할 수 있습니다. 여러 대의 GPU 지원을 위한 작업을 시작했으며, 4.23에 추가된 로우 레벨 지원은 특정한 패스를 어느 GPU가 렌더링할지 컨트롤하는 기능을 제공합니다. 또한 추가 머티리얼과 지오메트리 유형을 계속해서 지원합니다. 랜드스케이프 지오메트리(landscape geometry), 인스턴스드 스태틱 메시(instanced static meshes), 프로시저럴 메시(procedural meshes), 나이아가라 스프라이트 파티클(Niagara sprite particles)을 지원합니다.
UE4의 실시간 레이 트레이싱이 앞으로 나아갈 길
여기가 끝이 아닙니다! 에픽 팀은 여전히 구현 능력을 개선하기 위해 열심히 작업 중입니다. 4.23으로 성능과 안정성이 크게 향상되었지만, 이 기능이 공식적으로 “제작 준비”가 되기 전까지는 작업할 것들이 여전히 남아있습니다. 하지만 제작 과정에서 현재 베타 코드를 즐겁게 활용하는 많은 유저에게 알려주고 싶습니다. 항상 정신을 바짝 차리게 해주는 에픽게임즈 사내 포트나이트 시네마틱 팀을 포함한 유저들이 저희를 위해 코드를 스트레스 테스트한다는 점도 정말 좋습니다.앞서 언급했듯 4.23에는 로우 레벨 멀티 GPU 지원을 추가했지만, 훨씬 더 “플러그 앤 플레이(plug and play)”에 가깝도록 구현하고자 합니다. 또한 더 많은 지오메트리 유형을 지원하기 위해 항상 노력하고 있습니다. 가장 도전적인 예시 중 하나는, 잎이 바람에 흩날리는 애니메이션과 같은 효과에 필요한 월드 포지션 오프셋(world position offset)을 사용한 폴리지입니다. 이를 위한 아이디어 몇 가지를 개발 중입니다.
지금까지의 작업을 더 깊이 있게 살펴보려면, 시그라프 2019의 다음 테크 토크를 확인해 보세요.
언리얼 엔진에서 리얼타임 레이 트레이싱을 이미 사용하는 분들과, 적극적으로 소중한 피드백을 보내주는 모든 분들께 감사드립니다. 아직 테스트 버전을 받지 않으셨다면, 오늘 최신 언리얼 엔진 다운로드 해보는 건 어떠신가요? 여러분의 소중한 의견을 기다리고 있겠습니다.