Artoke

언리얼 기술: 실시간 렌더링 파이프라인

언리얼 기술: 실시간 렌더링 파이프라인 대표 이미지
출처: 실시간 렌더링 파이프라인

게임 화면은 어떻게 만들어질까?

게임 속 세상은 사실 3차원(3D)으로 만들어져 있어요. 하지만 우리가 보는 모니터는 납작한 2차원(2D) 화면이에요. 그래서 컴퓨터는 3D 세상을 2D 그림으로 바꾸는 일을 해야 해요. 이 일을 순서대로 처리하는 과정을 렌더링 파이프라인이라고 불러요.

파이프라인이라는 말이 어렵게 들리죠? 쉽게 말하면 공장의 조립 라인이에요. 장난감 공장을 떠올려 보세요. 부품이 컨베이어 벨트를 타고 지나가면서, 각 단계마다 조금씩 완성되어 가잖아요. 게임 화면도 똑같아요. 3D 모형이 여러 단계를 지나면서 점점 우리가 보는 그림으로 변해 가는 거예요.

언리얼 기술: 실시간 렌더링 파이프라인 도식

1단계: 카메라 눈으로 세상 보기

게임 속 3D 세상에는 나무도 있고, 집도 있고, 캐릭터도 있어요. 그런데 이 모든 걸 한꺼번에 다 보여 줄 수는 없어요. 우리는 카메라가 보는 방향만 볼 수 있거든요.

여러분이 방 안에서 스마트폰 카메라를 들고 있다고 상상해 보세요. 카메라를 왼쪽으로 돌리면 책상이 보이고, 오른쪽으로 돌리면 침대가 보이죠. 컴퓨터도 똑같이 해요. 먼저 "카메라가 어디에 있고, 어디를 보고 있지?"를 정해요. 그다음 세상의 모든 물체를 카메라 눈높이에 맞게 다시 자리를 잡아 줘요. 이걸 카메라 변환이라고 해요.

왼쪽은 사용자가 정한 카메라의 위치와 방향, 오른쪽은 카메라 변환 후 물체들의 위치를 보여주는 그림
Left: Position and direction of the virtual viewer (camera), as defined by the user. Right: Positioning the objects after the camera transformation. The light gray area is the visible volume. · 출처: 실시간 렌더링 파이프라인

2단계: 보이는 상자 정하기

카메라는 세상 전부를 볼 수 없어요. 앞쪽의 일정한 범위만 볼 수 있죠. 이 보이는 범위는 앞이 잘린 피라미드 모양이에요. 어려운 말로 절두체(프러스텀)라고 불러요.

손전등을 켰을 때 빛이 퍼져 나가는 모양을 떠올려 보세요. 가까운 곳은 좁게, 먼 곳은 넓게 비추죠? 카메라가 보는 범위도 그런 모양이에요. 이 범위 안에 들어온 물체만 화면에 그려질 자격이 생겨요.

카메라가 볼 수 있는 범위를 나타내는 절두체(프러스텀) 모양
Frustum · 출처: 실시간 렌더링 파이프라인

3단계: 안 보이는 부분 잘라내기

이제 컴퓨터는 아주 똑똑한 일을 해요. 바로 안 보이는 것은 그리지 않는 것이에요.

왜냐고요? 그림을 그리는 데는 시간이 걸리거든요. 어차피 화면에 안 나올 물체까지 그리면 시간 낭비예요. 그래서 보이는 범위 밖에 있는 물체는 통째로 버려요. 그리고 절반만 걸쳐 있는 물체는 가위로 자르듯이 보이는 부분만 남기고 잘라내요. 이걸 클리핑이라고 해요. 도화지 밖으로 삐져나온 스티커를 도화지 크기에 맞게 잘라 붙이는 것과 같아요.

보이는 범위 상자에 대고 도형을 자르는 클리핑 과정. 파란 삼각형은 버려지고 주황 삼각형은 잘려서 새 꼭짓점이 생긴다
Clipping of primitives against the cube. The blue triangle is discarded while the orange triangle is clipped, creating two new vertices. · 출처: 실시간 렌더링 파이프라인

4단계: 화면 크기에 딱 맞추기

잘라내기가 끝나면, 이제 그림을 진짜 화면 크기에 맞게 옮겨야 해요. 컴퓨터 안에서 계산하던 좌표를 모니터의 가로세로 크기에 맞춰 바꿔 주는 거예요.

큰 도화지에 그린 그림을 작은 공책에 옮겨 그린다고 생각해 보세요. 그림의 모양은 그대로 두고, 크기와 위치만 공책에 맞게 바꾸는 거죠. 이 단계를 지나면 모든 점이 "화면의 몇 번째 칸에 찍힐지" 정해져요.

계산 공간의 그림을 실제 화면 영역으로 옮기는 윈도우-뷰포트 변환 과정
Window-Viewport-Transformation · 출처: 실시간 렌더링 파이프라인

5단계: 점 하나하나 색칠하기

모니터 화면은 사실 아주 작은 색깔 점들로 가득 차 있어요. 이 점을 픽셀이라고 해요. 마지막 단계에서 컴퓨터는 도형이 차지하는 픽셀을 하나하나 찾아서 알맞은 색을 칠해요.

모눈종이에 그림 그리기와 똑같아요. 삼각형이 지나가는 칸을 찾아서, 그 칸들을 색연필로 채우는 거죠. 이때 빛이 어디서 오는지, 물체 표면이 어떤 재질인지도 계산해서 색을 정해요. 그래서 게임 속 물이 반짝이고, 그림자가 생기는 거예요.

왜 "실시간"이라고 부를까?

지금까지 본 다섯 단계, 꽤 길죠? 그런데 놀라운 사실이 있어요. 컴퓨터는 이 모든 과정을 1초에 30번, 60번, 많게는 100번 넘게 반복해요!

플립북(움직이는 그림책)을 생각해 보세요. 종이를 빠르게 넘기면 그림이 움직이는 것처럼 보이잖아요. 게임도 마찬가지예요. 조금씩 다른 그림을 아주 빠르게 계속 만들어서 보여 주니까, 캐릭터가 살아 움직이는 것처럼 보이는 거예요.

언리얼 엔진 같은 게임 엔진은 바로 이 조립 라인을 엄청나게 빠르고 예쁘게 돌리는 전문가예요. 여러분이 게임에서 방향키를 누르는 순간, 카메라가 움직이고, 파이프라인이 다시 돌고, 새 그림이 눈앞에 나타나요. 이 모든 게 눈 깜짝할 사이보다 빠르게 일어나요.

정리해 볼까요?

렌더링 파이프라인은 3D 세상을 2D 화면으로 바꾸는 공장 조립 라인이에요. 순서를 다시 떠올려 봐요.

  • 카메라 시점 잡기 — 어디서 볼지 정하고 세상을 그 눈에 맞게 돌려요.
  • 보이는 범위 정하기 — 손전등 빛 모양의 범위 안만 그릴 자격이 있어요.
  • 잘라내기 — 안 보이는 부분은 버리거나 잘라서 시간을 아껴요.
  • 화면에 맞추기 — 그림을 모니터 크기에 딱 맞게 옮겨요.
  • 색칠하기 — 픽셀 하나하나에 알맞은 색을 채워 완성해요.

다음에 게임을 할 때 화면을 한번 자세히 봐 주세요. 그 한 장면 뒤에는 1초에 수십 번씩 쉬지 않고 돌아가는 부지런한 조립 라인이 숨어 있답니다.

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기