
2D 그림을 그리던 분이 게임그래픽으로 넘어오면 형태와 빛을 보는 감각 덕분에 빠르게 적응하는 편입니다. 반대로 그림을 전혀 그려 보지 않은 분도 3D는 툴을…
그리라는 주문서를 몇 번 보내느냐의 문제
게임이 한 프레임을 그릴 때, CPU는 화면에 나올 물체를 정리해 GPU에 하나씩 넘겨줍니다. 이때 어떤 모델인지, 어떤 텍스처와 셰이더를 쓰는지, 어디에 놓이는지 같은 정보를 묶어서 보내는데, 이 한 번의 전달이 드로우콜입니다.
식당에 비유해 보겠습니다. 손님(CPU)이 주방(GPU)에 주문을 넣는데, 김밥 열 줄을 한 장의 주문서에 적으면 금방 끝납니다. 그런데 한 줄씩 열 번 따로 주문서를 쓰면, 요리 시간은 같아도 주문서를 쓰고 전달하는 시간이 열 배가 됩니다. 주방이 아무리 빨라도 주문이 늦게 들어오면 음식은 늦게 나옵니다.
게임에서도 GPU 성능이 충분한데 프레임이 떨어진다면, CPU가 주문서를 너무 많이 쓰느라 바쁜 경우가 많습니다. 이렇게 CPU 쪽이 막히는 상태를 'CPU 병목'이라고 부르며, 드로우콜 과다는 그 대표적인 원인입니다.
드로우콜이 늘어나는 대표적인 이유
드로우콜은 대체로 '서로 다른 물체 × 서로 다른 재질' 만큼 생긴다고 이해하면 됩니다. 정확한 계산은 엔진과 렌더링 방식마다 다르지만, 아티스트가 영향을 주는 부분은 분명합니다.
- 작은 소품을 각각 별도의 오브젝트로 수백 개 배치한 경우
- 모델 하나에 재질(머티리얼)을 여러 개 나눠 쓴 경우
- 비슷한 물체인데 텍스처를 따로 만들어 재질이 제각각인 경우
- 그림자를 만드는 조명이 많아 같은 물체를 여러 번 그리는 경우
- UI 요소의 그림이 서로 다른 이미지 파일에 흩어져 있는 경우
예를 들어 캐릭터 하나에 몸, 얼굴, 머리카락, 갑옷, 무기 재질을 따로 쓰면 그 캐릭터만으로 드로우콜이 여러 개 생깁니다. 이런 캐릭터가 화면에 수십 명 나오는 장면을 떠올려 보면 왜 문제가 되는지 감이 옵니다.
아티스트가 드로우콜을 줄이는 방법
드로우콜 최적화는 프로그래머의 영역처럼 보이지만, 실제로는 에셋을 만드는 단계에서 결정되는 부분이 큽니다. 3D 아티스트가 흔히 쓰는 방법은 다음과 같습니다.
- 재질 합치기: 한 모델에 쓰는 재질 수를 줄이고, 여러 부위를 한 재질로 묶습니다.
- 텍스처 아틀라스: 여러 소품의 텍스처를 한 장에 모아 같은 재질을 함께 쓰게 합니다.
- 메시 합치기: 늘 함께 놓이는 움직이지 않는 소품은 하나의 모델로 합칩니다.
- LOD 활용: 멀리 있는 물체는 재질 수까지 줄인 단순한 버전으로 바꿉니다.
- 재사용 설계: 같은 바위, 같은 기둥을 반복해 쓰도록 모듈로 만듭니다.
다만 많이 합칠수록 좋은 것은 아닙니다. 넓은 마을 전체를 한 덩어리로 합치면, 카메라가 그 일부만 봐도 전체를 그려야 하는 문제가 생깁니다. 화면 밖의 물체를 그리지 않는 컬링(culling)이 제대로 작동하려면 적당한 크기로 나눠 두어야 합니다.
엔진이 알아서 묶어 주는 배칭
게임 엔진에는 비슷한 물체를 자동으로 묶어 한 번에 그리는 기능이 있습니다. 이를 배칭(batching)이라고 합니다. 같은 재질을 쓰는 물체끼리 묶거나, 같은 모델을 여러 위치에 한꺼번에 그리는 인스턴싱(instancing)이 대표적입니다.
중요한 것은 이 기능들이 '같은 재질'을 전제로 한다는 점입니다. 재질이 조금이라도 다르면 묶이지 않습니다. 아티스트가 재질을 통일하고 텍스처를 아틀라스로 정리하는 작업이 결국 엔진의 배칭 기능이 잘 작동하도록 돕는 일인 셈입니다.
엔진마다 배칭 조건과 방식이 다르고, 버전이 바뀌면서 달라지기도 합니다. 그래서 실무에서는 일반 원칙을 알고 있되, 프로젝트에서 쓰는 엔진과 렌더링 설정에 맞춰 테크니컬 아티스트나 프로그래머와 기준을 맞춥니다.
처음 배울 때 헷갈리는 점
가장 많이 하는 오해는 '폴리곤 수만 줄이면 가벼워진다'는 생각입니다. 면 수가 적은 소품이라도 각각 다른 재질로 수백 개 놓이면, 면 수가 많은 모델 몇 개보다 더 무거울 수 있습니다. 폴리곤 수와 드로우콜은 서로 다른 종류의 부담입니다.
또 하나는 숫자에 집착하는 것입니다. 드로우콜이 몇 개 이하면 괜찮다는 절대 기준은 없습니다. 기기 성능, 렌더링 방식, 게임 장르에 따라 허용 범위가 다르기 때문에 프로젝트의 목표 기기에서 직접 측정해 판단합니다. 대부분의 엔진은 프로파일러나 통계 창에서 현재 장면의 드로우콜 수를 보여 줍니다.
마지막으로, 드로우콜을 줄이려다 다른 비용을 키우는 경우도 있습니다. 아틀라스를 너무 크게 만들면 메모리를 많이 차지하고, 작은 물체 하나를 바꾸려 해도 큰 텍스처 전체를 다시 저장해야 합니다. 최적화는 한쪽을 줄이면 다른 쪽이 늘어나는 균형 문제라는 점을 기억해 두세요.
최적화를 아는 아티스트가 되는 첫걸음
간단한 실험을 해 보세요. 엔진에 상자 백 개를 서로 다른 재질로 배치하고 통계 창의 숫자를 확인한 뒤, 모두 같은 재질로 바꿔 다시 확인합니다. 눈에 보이는 결과는 같아도 숫자가 어떻게 바뀌는지 보면 드로우콜의 의미가 바로 와 닿습니다. 이어서 상자 열 개를 하나로 합쳐 보고, 카메라를 돌려 일부만 보일 때 숫자가 어떻게 되는지도 확인해 보세요.
포트폴리오에 에셋을 정리할 때 재질 수와 텍스처 구성을 함께 적어 두면, 최적화를 고려해 작업하는 사람이라는 인상을 줄 수 있습니다. 에셋을 엔진에 올려 최적화까지 마무리하는 경험을 쌓고 싶다면, SBS아카데미게임학원 AI x 3D Game Graphics 과정 상담에서 폴리곤 예산과 텍스처 규격을 어떻게 다루는지 미리 물어보는 것도 좋은 출발입니다.
자주 묻는 질문
드로우콜은 모바일 게임에서 더 중요한가요?
모바일 기기는 CPU 여유가 적은 경우가 많아 드로우콜 관리가 특히 중요하게 다뤄집니다. 다만 PC·콘솔 게임도 장면이 복잡해지면 똑같이 신경 씁니다.
UI도 드로우콜에 포함되나요?
포함됩니다. 버튼과 아이콘 이미지가 여러 파일에 흩어져 있으면 드로우콜이 늘 수 있어서, UI 이미지도 한 장으로 모아 쓰는 경우가 많습니다.
가까운 캠퍼스에서 게임그래픽 알아보기
사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.