[Unity] Sprite Atlas

muchan
muchan
∙∙조회 15

개요

게임에서 많은 스프라이트를 사용할 경우 렌더링 성능 문제가 발생할 수 있다

특히 모바일 게임이나 UI 요소가 많은 프로젝트에서는 Draw Call 증가로 인해 프레임 저하가 발생하기도 한다

Unity에서는 이러한 문제를 줄이기 위해 Sprite Atlas 기능을 제공한다


Draw Call이란?

일단 문제가 되는 Draw Call이란 CPU가 GPU에게 보내는 렌더링 요청 하나를 Draw Call이라고 한다

요청이 많아지면 시키는 일이 많아져서 성능이 떨어지기 때문에 Draw Call은 적을수록 좋다

Unity에서 왜 중요할까?

예를 들어 이미지 100개가 각각 다른 텍스처를 사용하면

csharp
텍스처 A 사용
→ 그림

텍스처 B로 교체
→ 그림

텍스처 C로 교체
→ 그림

이런 식으로 계속 상태를 바꿔야한다

이 상태 변경 비용이 크기 때문에 Draw Call이 많아지면 프레임 드랍이 발생할 수 있다

모바일 환경에서는 비용 체감이 더 크게 느껴진다


Sprite Atlas

위의 문제를 해결하기 위해 Sprite Atlas는 여러 이미지를 하나의 텍스처로 합쳐준다

원래 아래와 같은 예제라면

csharp
플레이어.png
몬스터.png
아이템.png

Sprite Atlas 사용 후

plain text
atlas.png 안에 전부 포함

이런식으로 되는 것이다

GPU 입장에서는 텍스처 안 바꿔도 되네? 상태가 되는 것

결과적으로

  • 텍스처 변경 감소
  • Draw Call 감소
  • 성능 향상

으로 이어지는 것


Draw Call이 많아지는 원인

  • 서로 다른 Material 사용
  • 서로 다른 Texture 사용
  • Shader 다름
  • UI 요소 많음
  • 개별 Sprite

등이 있다.


나중에 프로젝트할 때 실제 써보는 연습을 해보고자 한다.