✍️ 개요
최근에 Sprite Atlas을 사용하고 성능 분석을 해보니 딱히 효과가 없더군요.
물론 위 사진에서는 3개의 Batch가 줄었지만 큰 의미는 없습니다.
(FPS가 3배 가량 차이가 나지만 Editor Pause 영향이기에 고려하지 않음)
그렇다면 어떤 차이가 있는걸까요?
📌 문제 상황
위 씬을 구성하는 Sprites을 폴더로 정리하였습니다.
동시에 사용되는 경우에 따라 Sprite Atlas도 제작하였습니다.
하지만 결과는... 개요에서 본 것 처럼 성능 개선이 없었죠.
그래서 다른 요인을 찾기 시작했습니다.
문제는 바로 SRP Batcher 였습니다!
URP 프로젝트를 생성하면 위처럼 SRP Batcher가 자동으로 체크되면서 SRP Batching을 수행합니다.
그래서 모든 SpriteRenderer에서 동일한 Material & Shader을 사용한다면 이미 Sprite을 공유하게 됩니다.
그래서 Sprite Atlas로 묶어도 성능 차이가 없었던거죠.
📌 결과 분석
그래서 SRP Batching과 Sprite Atlas 사용 유무에 따라 총 4가지 경우에 대해 결과를 분석해봤습니다.
① SRP Batching (O) + Sprite Atlas (X)
- Batch 79개, Saved by batching 20개, SetPass calls 26개
- SRP Batcher를 통해 SetPass Call이 크게 감소, 하지만 Batch는 오히려 증가했습니다.
- SRP Batcher을 사용하지 않으면 Batch는 58개
- SRP Batcher을 사용하지 않으면 Dynamic Batching이 활성화되어 Batch가 최적화될 수 있음
- 다만, 비용이 큰 SetPass Call(상태 변경)이 감소
② SRP Batching (O) + Sprite Atlas (O)
- Batch 76개, Saved by batching 20개, SetPass calls 26개
- Batch와 SetPass Call에 눈에 띄는 변화가 없음
- SRP Batcher 최적화 방식이 Sprite Atlas의 효과를 상쇄했을 가능성이 큼
③ SRP Batching (X) + Sprite Atlas (X)
- Batch 58개, Saved by batching 38개, SetPass calls 56개
- SetPass Call이 많이 발생
- Sprite Atlas 또는 SRP Batcher 최적화가 적용되지 않음
④ SRP Batching (X) + Sprite Atlas (O)
- Batch 43개, Saved by batching 52개, SetPass calls 41개
- Sprite Atlas을 통해 Batch 수와 SetPass Call이 감소
📌 최종 정리
Q. 왜 SRP Batcher와 Sprite Atlas을 같이 사용하면 효과가 없을까?
SRP Batcher는 동일한 Material & Shader을 사용하는 객체를 Shader 단위로 묶어 최적화하는 기법이며,
Sprite Atlas는 여러 텍스처를 하나로 묶어 텍스처 변경 비용을 최적화하는 기법입니다.
모든 SpriteRenderer가 동일한 Material을 사용하면, SRP Batcher는 이미 Shader 변경을 최소화한 상태입니다.
즉, 이미 SRP Batcher만으로 최적화가 충분히 이루어졌다고 볼 수 있습니다.
따라서 동일한 Material을 사용한다면 Sprite Atlas로 묶어도 추가적인 최적화가 이뤄지지 않습니다.
결론 : 동일한 Material을 사용한다면 SPR Batcher만 사용해도 좋습니다. 다만, 서로 다른 Material 혹은 Shader가 자주 사용된다면 Sprite Atlas을 추가로 활용하면 좋습니다.
'유니티(Unity) > 이슈 도감' 카테고리의 다른 글
[Unity 이슈] Editor에서는 잘 되지만 Build가 안되는 이슈 (1) | 2024.12.29 |
---|---|
[Unity 이슈] Package 파일 참조하는 방법 (0) | 2024.12.28 |
[Unity 이슈] InitializeOnLoad 주의 사항 (0) | 2024.12.23 |
[Unity 이슈] 커스텀 패키지 Addressable 이슈 (1) | 2024.12.22 |
[Unity 이슈] 커스텀 패키지 종속성 문제 (1) | 2024.12.21 |