래스터화 vs 레이 트레이싱: 컴퓨터가 그림을 그리는 두 가지 방법

래스터화 vs 레이 트레이싱: 컴퓨터가 그림을 그리는 두 가지 방법
게임 화면 속 캐릭터, 애니메이션 영화 속 물방울. 이런 그림들은 어떻게 만들어질까요?
컴퓨터는 붓을 들지 않습니다. 대신 아주 빠른 계산을 합니다. 그 계산 방법이 크게 두 가지 있어요. 하나는 래스터화, 다른 하나는 레이 트레이싱입니다.
이름이 어렵죠? 걱정 마세요. 하나씩 천천히 풀어볼게요.
먼저, 화면은 작은 네모들로 되어 있어요
스마트폰 화면에 코를 바짝 대고 본 적 있나요? 아주 작은 네모들이 촘촘히 박혀 있는 게 보입니다.
이 작은 네모 하나를 픽셀이라고 불러요. 화면은 이 픽셀들이 모여서 만들어진 거대한 모눈종이입니다.
그러니까 컴퓨터가 그림을 그린다는 건, 결국 이런 뜻이에요.
"이 네모 칸은 무슨 색으로 칠할까?"
화면에 픽셀이 200만 개 있다면, 이 질문을 200만 번 해야 합니다. 그것도 1초에 60번씩요. 컴퓨터가 얼마나 바쁜지 상상이 가나요?
래스터화: 모눈종이에 도형을 옮겨 그리기
미술 시간에 이런 걸 해본 적 있을 거예요. 모눈종이 위에 동그라미를 그리고, 그 안에 들어간 칸을 색연필로 칠하는 거요.
래스터화가 바로 이겁니다.
컴퓨터 안에서 3D 캐릭터는 사실 수많은 삼각형으로 되어 있어요. 종이접기처럼 삼각형을 잔뜩 붙여서 얼굴도 만들고 팔다리도 만듭니다.
래스터화는 이 삼각형들을 하나씩 화면 모눈종이 위에 올려놓고 묻습니다.
"이 칸, 삼각형 안에 들어왔어? 그럼 칠해!"
딱 이거예요. 삼각형 안에 들어온 칸은 칠하고, 밖에 있는 칸은 안 칠합니다.

애매한 칸은 어떡하죠?
여기서 문제가 하나 생깁니다. 삼각형 선이 칸을 반만 걸치면요?
칠해야 할까요, 말아야 할까요?
컴퓨터는 규칙을 정해둡니다. "칸의 한가운데 점이 삼각형 안에 들어오면 칠한다" 같은 식으로요. 반칙이 없도록 미리 약속을 해두는 거죠.
그런데 이렇게 하면 비스듬한 선이 계단처럼 우툴두툴해집니다. 마치 레고 블록으로 대각선을 만든 것처럼요.
그래서 안티에일리어싱이라는 기술을 씁니다. 이름은 무섭지만 하는 일은 간단해요. 경계에 있는 칸을 중간색으로 살짝 흐리게 칠하는 겁니다. 그러면 눈이 속아서 선이 매끈해 보여요.

래스터화의 장점: 엄청 빠르다
래스터화는 정말 빠릅니다. 왜냐하면 계산이 단순하기 때문이에요.
"이 칸이 삼각형 안이야? 응/아니." 이 질문만 반복하면 되니까요.
게다가 삼각형 100개를 동시에 처리할 수도 있어요. 서로 상관없는 작업이라서요. 그래픽카드(GPU) 안에는 이런 계산기가 수천 개 들어 있습니다. 다 같이 우르르 달려들어 순식간에 끝냅니다.
그래서 게임은 대부분 래스터화를 씁니다. 1초에 60장, 심지어 120장씩 그림을 그려야 하니까요.
그런데 약점이 있어요
래스터화는 "이 픽셀이 무슨 색인가"만 봅니다. 빛이 어디서 오는지는 잘 몰라요.
그래서 이런 걸 어려워합니다.
- 그림자 — 물체가 빛을 가렸는지 따로 계산해야 함
- 거울 — 거울에 뭐가 비칠지 알기 어려움
- 유리와 물 — 빛이 꺾이고 통과하는 걸 흉내내기 힘듦
- 은은한 반사광 — 빨간 벽 옆에 선 사람 얼굴이 살짝 붉어지는 것
물론 방법은 있습니다. 온갖 꼼수를 써서 "그림자처럼 보이게" 만들죠. 하지만 그건 진짜 빛이 아니라 흉내입니다. 자세히 보면 어딘가 어색해요.
레이 트레이싱: 빛을 하나하나 따라가기
여기서 다른 방법이 등장합니다.
레이(ray)는 빛줄기, 트레이싱(tracing)은 따라가기입니다. 합치면 "빛줄기를 따라가기"예요.
실제 세상을 생각해봅시다. 태양에서 빛이 나옵니다. 그 빛이 사과에 부딪혀 튕기고, 튕긴 빛이 우리 눈에 들어와요. 그래서 사과가 빨갛게 보이는 겁니다.
레이 트레이싱은 이 과정을 그대로 흉내냅니다. 다만 거꾸로 갑니다.
태양에서 나오는 빛은 너무 많아요. 그중 눈에 들어오는 건 아주 일부죠. 그래서 컴퓨터는 반대로 합니다. 내 눈에서 출발해서 화면의 픽셀 하나를 뚫고 앞으로 쭉 쏩니다.
"이 방향으로 가면 뭐가 있지?"
부딪히면 다시 물어봅니다
빛줄기가 사과에 부딪혔다고 해볼게요. 그럼 컴퓨터가 또 물어봅니다.
"여기서 전등 쪽으로 가는 길이 뚫려 있나?"
뚫려 있으면 밝게 칠합니다. 중간에 뭔가 가로막고 있으면? 그건 그림자입니다.
이게 레이 트레이싱의 놀라운 점이에요. 그림자를 따로 만들 필요가 없습니다. 빛을 따라가다 보면 그림자가 저절로 생겨납니다.
거울도 마찬가지예요. 빛줄기가 거울에 닿으면 튕겨서 계속 날아갑니다. 그러다 만나는 물체가 거울에 비치는 거죠. 유리를 만나면 살짝 꺾여서 통과합니다.
따로 꼼수를 부리지 않아도, 물리 법칙만 따라가면 알아서 사실적인 그림이 나옵니다.
그럼 왜 다들 레이 트레이싱을 안 쓰죠?
느리기 때문입니다. 아주아주 느려요.
계산해봅시다. 픽셀 200만 개마다 빛줄기를 쏩니다. 각 빛줄기는 물체에 부딪혀 여러 번 튕깁니다. 튕길 때마다 "이 방향에 뭐가 있나?" 하고 온 세상을 뒤져야 해요.
게다가 예쁜 그림을 만들려면 픽셀 하나당 빛줄기를 수십, 수백 개씩 쏴야 합니다. 하나만 쏘면 화면이 모래알처럼 지글지글하거든요.
애니메이션 영화가 이 방식을 씁니다. 한 장면 그리는 데 몇 시간씩 걸려도 괜찮으니까요. 영화는 미리 만들어두고 나중에 트니까요.
하지만 게임은 다릅니다. 여러분이 버튼을 누른 그 순간 그림이 나와야 해요. 몇 시간을 기다릴 수는 없죠.
두 방법을 표로 비교해볼까요
요즘은 둘을 섞어 씁니다
똑똑한 사람들이 생각했어요. "둘 다 쓰면 안 되나?"
됩니다. 이걸 하이브리드 렌더링이라고 불러요. "섞어 쓰기"라는 뜻이죠.
방법은 이렇습니다. 화면의 큰 틀은 빠른 래스터화로 후딱 그립니다. 그리고 진짜 중요한 부분 — 거울, 물, 그림자 — 에만 레이 트레이싱을 씁니다.
요리로 치면 이런 거예요. 밥은 전기밥솥으로 빨리 짓고, 고기 한 점만 숯불에 정성껏 굽는 거죠.
이걸 가능하게 만든 게 요즘 그래픽카드입니다. 안에 레이 트레이싱 전용 계산기가 따로 들어 있어요. "빛줄기가 이 물체에 닿나?"만 죽어라 계산하는 부품입니다. 이거 하나만 잘하도록 만들어서 엄청 빠릅니다.
모자란 부분은 AI가 채웁니다
그래도 빛줄기를 충분히 못 쏘면 화면이 지글거려요. 여기서 또 한 번 꼼수가 등장합니다.
바로 AI예요.
지글거리는 그림을 AI에게 보여주면, AI가 "아, 원래는 이런 모습이었겠구나" 하고 매끈하게 다듬어 줍니다. 흐릿한 사진을 선명하게 만드는 앱처럼요.
덕분에 빛줄기를 조금만 쏘고도 예쁜 그림을 얻습니다. 계산은 줄고 화질은 좋아지는 거죠.
정리하면
기억할 건 딱 세 가지입니다.
첫째, 래스터화는 도형을 모눈종이에 옮겨 칠하는 방법입니다. 단순해서 빠릅니다. 대신 빛을 흉내낼 뿐이라 가끔 어색합니다.
둘째, 레이 트레이싱은 빛줄기를 따라가는 방법입니다. 그림자도 반사도 저절로 생깁니다. 대신 계산이 어마어마해서 느립니다.
셋째, 요즘은 둘을 섞습니다. 빠른 건 래스터화로, 중요한 건 레이 트레이싱으로. 모자란 건 AI가 채웁니다.
다음에 게임을 하다가 물웅덩이에 하늘이 비치는 걸 보면 한번 생각해보세요.
지금 이 순간, 눈에 보이지 않는 빛줄기 수백만 개가 화면 속을 날아다니고 있다는 것을요.
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기