엔비디아 그래픽: 패스 트레이싱과 사실적 조명

빛을 따라가는 그림 그리기, 패스 트레이싱
컴퓨터로 만든 영화나 게임 화면을 본 적 있나요? 진짜 사진처럼 보이는 장면이 많아요. 그런 그림은 어떻게 만들까요? 그 비밀 중 하나가 바로 패스 트레이싱(Path Tracing)이에요.
패스 트레이싱은 우리말로 하면 "빛의 길을 따라가기"예요. 빛이 어디서 와서, 무엇에 부딪히고, 어디로 튕겨 가는지를 컴퓨터가 하나하나 따라가면서 그림을 그리는 방법이랍니다.
우리는 어떻게 물건을 볼까요?
먼저 진짜 세상 이야기부터 해 볼게요. 방에 불을 끄면 아무것도 안 보여요. 왜일까요? 빛이 없기 때문이에요.
우리가 사과를 볼 수 있는 이유는 이래요. 전등에서 나온 빛이 사과에 부딪혀요. 그 빛이 튕겨 나와서 우리 눈에 들어와요. 그러면 "아, 빨간 사과다!" 하고 알게 되지요.
빛은 공놀이하는 공과 비슷해요. 벽에 던지면 튕겨 나오지요? 빛도 물건에 부딪히면 튕겨요. 다만 빛은 엄청나게 빠르고, 튕길 때마다 색과 밝기가 조금씩 변해요.
컴퓨터는 거꾸로 따라가요
패스 트레이싱은 재미있게도 빛을 거꾸로 따라가요. 전등에서 출발하는 게 아니라, 우리 눈(카메라)에서 출발해요.
왜 거꾸로일까요? 전등에서 나온 빛은 사방으로 퍼져요. 그중에 우리 눈에 들어오는 빛은 아주 조금이에요. 눈에 안 들어오는 빛까지 전부 따라가면 시간 낭비겠지요? 그래서 눈에서부터 거꾸로 출발해서, "이 빛은 어디에서 왔을까?" 하고 길을 되짚어 가는 거예요.
탐정 놀이와 비슷해요. 발자국을 보고 거꾸로 따라가면서 "누가 여기를 지나갔지?" 하고 알아내는 것처럼요.
한 점 한 점, 빛의 길을 그려요
컴퓨터 화면은 아주 작은 점들로 가득해요. 이 점을 픽셀이라고 불러요. 패스 트레이싱은 픽셀마다 이런 일을 해요.
- 눈에서 그 픽셀을 지나가는 가짜 빛줄기(광선)를 하나 쏘아요.
- 광선이 무언가에 부딪히면, 어느 방향으로 튕길지 정해요.
- 튕기고 또 튕기다가 전등에 닿으면, "성공! 이 길로 빛이 왔구나" 하고 기억해요.
- 그 길에서 부딪힌 물건들의 색을 모아서, 픽셀의 최종 색을 정해요.
빨간 공 옆에 흰 벽이 있으면, 벽이 살짝 빨갛게 물들어 보여요. 빛이 공에 튕기면서 빨간색을 묻혀 왔기 때문이지요. 패스 트레이싱은 이런 것까지 자연스럽게 그려 내요.
주사위를 던지듯 정해요
빛이 물건에 부딪히면 어느 쪽으로 튕길까요? 사실 여러 방향으로 갈 수 있어요. 그래서 컴퓨터는 주사위를 던지듯 무작위로 방향을 하나 골라요.
한 번만 던지면 운이 나쁠 수 있어요. 그래서 같은 픽셀에 광선을 수십, 수백 번 쏘고 결과를 평균 내요. 여러 친구에게 물어보고 답을 모으면 더 정확해지는 것과 같아요.
점점 깨끗해지는 그림
광선을 조금만 쏘면 그림이 지저분해요. 텔레비전이 지지직거리는 것처럼 알록달록한 점이 가득하지요. 이걸 노이즈라고 불러요.
광선을 더 많이 쏠수록 노이즈가 줄어들고 그림이 매끈해져요. 대신 시간이 오래 걸려요. 그래서 영화 한 장면을 그리는 데 컴퓨터가 몇 시간씩 일하기도 한답니다.

물건마다 빛을 다르게 튕겨요
거울, 유리, 종이, 쇠붙이는 빛을 튕기는 방법이 서로 달라요.
- 거울은 빛을 한 방향으로 딱 튕겨요. 그래서 얼굴이 또렷하게 비쳐요.
- 종이는 빛을 사방으로 흩어 버려요. 그래서 아무것도 안 비치고 은은하게 보여요.
- 유리는 빛을 통과시키면서 방향을 꺾어요. 그래서 유리 너머가 일렁여 보여요.
결이 있는 금속은 더 특별해요. 냄비나 주전자를 보면 빛이 길쭉하게 번져 보일 때가 있지요? 금속 표면에 아주 가는 줄무늬 결이 있어서, 빛이 결 방향을 따라 길게 늘어나기 때문이에요. 패스 트레이싱은 이런 성질까지 계산해서 진짜 같은 그림을 만들어요.

패스 트레이싱이 잘하는 것들
옛날 방식의 레이 트레이싱은 빛을 한두 번만 튕기고 멈췄어요. 그래서 그림이 조금 어색했지요. 패스 트레이싱은 빛이 여러 번 튕기는 것까지 따라가요. 그래서 이런 것들을 잘 그려요.
- 부드러운 그림자: 진짜 그림자는 가장자리가 살짝 흐릿해요.
- 색 번짐: 빨간 벽 옆의 흰 바닥이 발그스름해져요.
- 물과 유리의 빛 무늬: 수영장 바닥에 생기는 일렁이는 빛 무늬 같은 것이에요.
- 안개나 연기 속의 빛: 빛이 공기 중 알갱이에 부딪히는 것도 따라가요.

게임에서도 쓸 수 있게 되었어요
패스 트레이싱은 계산이 정말 많이 필요해요. 픽셀 하나에 광선을 수백 개씩 쏘고, 광선마다 여러 번 튕기니까요. 그래서 오랫동안 영화에서만 쓰였어요.
요즘은 그래픽 카드(GPU)가 아주 빨라졌어요. 빛 계산을 도와주는 특별한 부품도 들어 있지요. 게다가 노이즈 낀 그림을 인공지능이 순식간에 깨끗하게 다듬어 주는 기술도 생겼어요. 덕분에 이제는 게임에서도 패스 트레이싱으로 만든 진짜 같은 빛을 실시간으로 볼 수 있게 되었답니다.
정리해 볼까요?
- 패스 트레이싱은 빛의 길을 거꾸로 따라가며 그림을 그리는 방법이에요.
- 눈에서 광선을 쏘고, 물건에 튕기고 튕겨서 전등까지 가는 길을 찾아요.
- 주사위 던지듯 무작위로 여러 번 계산하고 평균을 내요.
- 광선이 많을수록 그림이 깨끗해지고, 대신 시간이 걸려요.
- 부드러운 그림자, 색 번짐, 유리와 금속의 반짝임까지 진짜처럼 그려 내요.
다음에 영화나 게임에서 눈부시게 진짜 같은 장면을 보면 떠올려 보세요. 그 뒤에서 컴퓨터가 수억 개의 빛의 길을 하나하나 따라가고 있다는 것을요!
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기