흑기사 방랑일지 ahden's DevNote

아트팀 맞춤형: 최적화 가이드 - 불필요한 알파 영역 제거

GPU의 적: 오버드로우

2D기반 게임 및 파티클 시스템에서 흔히 발생하는 현상이 오버드로우입니다. 오버드로우는 이미 그려진 영역 위에 여러 번 다른 객체들이 덧그리게 되는 것을 말하죠.

Untitled

Untitled

당연히 여러 횟수만큼 덧그릴수록 화면 픽셀 당 셰이딩 처리 횟수가 증가하기 때문에 GPU에 많은 부하를 주게 됩니다. 오버드로우가 유독 악질적인 이유는 화면 해상도가 높아질 경우 픽셀 처리 비용이 그만큼 비례하여 늘어나기 때문에, 다른 요소들에 비해 매우 빠르게 GPU 과부하를 만들어내기 때문입니다.

odpng.png

그러므로 오버드로우 요소를 최대한 줄여서 성능 최적화를 달성하는 것은 그만큼 중요합니다. 아래 그림은 동일한 씬의 오버드로우 최적화 작업 전과 후를 보여줍니다.

화면 캡처 2022-12-06 125056.png

불필요한 알파 영역은 제거하세요

2D 이미지에서 완전히 투명한 알파영역은 결과적으로 최종 화면에 아무 영향을 주지 않습니다. 반면 GPU 입장에서는, 실제 화면에 영향을 주지 않더라도 완전 투명을 적용하기 위한 불필요한 연산이 발생하게 됩니다. 따라서 낭비되는 이런 비용을 없애기 위해서는 완전히 투명한 영역은 최소화해야 합니다.

약간의 폴리곤을 투자하면, 다음 그림들과 같이 투명한 영역을 어느 정도 제거할 수 있습니다.

Untitled

주의할 점

단, 여기서 주의할 사항이 있습니다.

첫째, 투명 알파영역을 완벽히 제거하려는 의도로 버텍스(폴리곤) 개수를 지나치게 낭비해서는 안됩니다. 투명 영역을 깨끗하게 제거하기 위해서 너무 많은 버텍스와 폴리곤을 사용하다가는 오히려 또 다른 성능 부하가 가져올 수 있기 때문입니다. 최소한의 폴리곤을 사용하여, 알파 영역을 적당히만 제거해도 오버드로우로 인한 부하는 크게 줄어듭니다.

둘째, 메시는 가벼운 방식으로 제작되어야 합니다. 비효율적으로 제작된 메시는 오히려 성능을 떨어뜨리는 다른 원인이 될 수 있습니다. 아래 그림에서처럼, 동일한 폴리곤은 여러 가지 방식으로 삼각형 분할이 가능합니다. 왼쪽에서 오른쪽으로 갈수록 점점 최적화되고 있음을 쉽게 알 수 있습니다.

Untitled

Q. 다음 육각형들 중에서는 어떤 게 가장 최적화된 메시일까요? Untitled 이런 메시 최적화에 관한 자세한 내용은 [메시 최적화 가이드]를 참고하시기 바랍니다.