아트팀 맞춤형: 최적화 가이드 - 드로우 콜 다시 보기
29 Nov 2022
드로우 콜은 CPU 영역
현재 우리 프로젝트는 CPU가 아닌 GPU 성능에 대한 병목을 앓고 있습니다. 그리고 사실 대부분의 게임이 그렇습니다. GPU 성능 병목은 FPS저하, 기기발열, 배터리 소모 등을 일으켜서 원활한 게임 플레이를 방해합니다. 결국 성능 개선을 위해서는 GPU의 성능을 제한하는 병목 구간을 뚫어줘야 합니다.
그런데 드로우 콜은 GPU가 아닌 CPU 영역입니다. 드로우 콜이란 간단히 말해서, CPU가 GPU에게 렌더링을 하도록 명령하는 것을 말합니다. 드로우 콜이 많다는 것은 CPU가 GPU에게 보내야 할 명령이 많다는 것을 말하며 결국 CPU가 처리할 양이 늘어난다는 것을 의미합니다. 따라서 단순히 드로우 콜 수치 자체만을 줄이는 노력은 GPU측 병목 현상을 해소하는 데 영향을 끼치지 않습니다.
드로우 콜 수 한계
모바일 플랫폼 기준으로 볼 때, 드로우 콜 수치는 약 450 이하으로 기준을 잡는다면 저사양 기기까지도 별다른 문제가 발생하지는 않을 것입니다.
그러나 이 뜻을 오해해서는 안됩니다. ‘현재 씬의 드로우 콜 수치가 150이군. 아직 300의 여유가 있으니 드로우 콜을 더 많이 채워도 되겠다.’ 뭐 이런 뜻이 아닙니다.
GPU가 성능 병목인 이상, 드로우 콜 수치 자체는 더 이상 성능 최적화를 위한 기준은 되지 않습니다.드로우콜 수가 높냐 혹은 낮냐보다는, 각 드로우 콜에 연관된 그리기 작업 자체가 GPU에 얼마나 성능 부하를 주는지 파악하고 해결하는 것이 더 중요합니다. 단순하게 32x32 이미지와 1024x1024 이미지를 화면에 그릴 때, 둘 중에 어떤 그리기 작업이 GPU 성능에 부담을 줄까요? 물론 재질과 셰이더에 따라 다를 수 있지만, 거의 후자가 성능을 더 많이 먹을 가능성이 아주 높습니다. 전자는 화면 픽셀 1024개에 그리는 작업을 하지만, 후자는 화면 픽셀 1,048,576개에 그리기 작업을 수행하기 때문입니다. 드로우 콜은 둘 다 동일하게 증가시키지만, GPU에 가해지는 성능 부하는 그 차이가 매우 클 것입니다.
결론: 단순히 드로우 콜 수에 집착하지 마세요
하나를 그려도 엄청나게 무거울 수도 있고, 열 개를 그려도 아주 가벼울 수 있습니다. 드로우 콜 1이 증가하더라도 어떤 것을 그리는지가 훨씬 중요합니다.