모바일 게임의 병목

모바일 게임의 병목은 대개 다음 중 하나이며, 위의 항목일수록 확률이 더 높습니다.

  • 드로우 콜(draw call)
  • 오버드로우(overdraw)
  • 후처리(post-processing)
  • 픽셀 셰이더(특히 dependent texture read)
  • 캐릭터 애니메이션

드로우 콜은 같은 머티리얼끼리 모아 그리는 배칭(batching) 처리를 해서 줄일 수 있습니다. 또 LOD(level of detail)나 오클루젼 컬링(occlusion culling) 등을 활용하면 더 줄일 수 있습니다. 참고로 배칭 효율을 높이려면 텍스쳐 아틀라스(texture atlas)를 사용해야 합니다.

오버드로우는 반투명한 것을 겹쳐 그릴 때 대개 발생합니다. 반투명한 스프라이트 대신에 불투명한 메쉬를 사용하기, 파티클 대신에 스프라이트를 사용하기, 여백을 최소화한 스프라이트를 사용하기, 또는 반투명 물체의 화면 상 크기를 제한하기 등을 통해 오버드로우를 줄일 수 있습니다.

모바일 게임에서 후처리는 PC와 달리 비용이 높습니다. 효과가 작은 후처리를 없애기, 후처리에 사용하는 텍스쳐 해상도를 낮추기 등을 통해 비용을 줄일 수 있습니다.

픽셀 셰이더가 병목이 되는 경우는 흔치 않지만, 셰이더 명령어 수가 많거나 무거운 셰이더 명령을 사용하거나 dependent texture read가 많으면 병목이 될 수 있습니다. Dependent texture read를 줄이려면, 픽셀 셰이더에서 texture의 UV를 조작하는 것을 줄이거나 버텍스 셰이더로 옮겨야 합니다.

캐릭터 수가 늘어나면 캐릭터 애니메이션의 부하도 무시할 수 없습니다. 캐릭터 애니메이션의 부하를 줄이려면, 본(bone)과 버텍스의 수를 줄이고 화면 밖의 캐릭터는 애니메이션(특히 스키닝)을 처리하지 않도록 하는 게 좋습니다.

참고:

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중