[유니티 TIPS] 유니티 최적화를 위한 필수 기본기! Batching 방법 소개
https://www.youtube.com/watch?v=w14yjBlfNeQ
0. 여러 개 메시(mesh), 여러 개 머티리얼을 : 최적화 없음
1. 여러 개 메시, 단일 머티리얼에서 UV좌표 나눠쓰기 : Batches 는 그대로, SetPass call 최적화
2. 동적 배칭 (Dynamic Batching) : Batches, SetPass Call 최적화. 동일 머티리얼의 작은 메시들은 버텍스 버퍼를 재활용 처리. 저가형 기기에서 성능을 최적화하도록 설계. (900개 이상의 버텍스 속성과 300개 이상의 버텍스를 포함하는 메시에 동적 배칭을 적용할 수 없음. 문서 참조.)
https://docs.unity3d.com/kr/2021.2/Manual/dynamic-batching.html
Sprite Renderer 는 기본적으로 동적 배칭 대상. Sprite를 Atlas로 묶어 하나의 머티리얼로 사용해야.
3. 정적 배칭 (Static Batching) : 개별 오브젝트들 중 트랜스폼이 불필요한(있더라도 설정하면 무시됨) Batching Static 으로 설정한 메시들을 하나의 메시로 통합해서 처리. 단, 메시의 사본을 만들어 하나의 메시로 통합하기 때문에 렌더링 성능을 확보하는 대신 메모리 사용량이 늘어날 수 있고, 일정 정점 개수를 넘어가면 페이징 처리로 Batches 가 증가.
https://docs.unity3d.com/kr/2021.2/Manual/static-batching.html
4. SRP 배처 (SRP Batcher) : 머티리얼이 달라도 셰이더가 동일하면 SetPass call 을 최적화 해줌. 단, 셰이더의 SRP Batrcher 호환성(compatible)을 만족해야 함.
5. GPU 인스턴싱 : 동일한 메시 정보를 GPU 메모리에 저장해서 씬 내에 여러 번 그리는 방식. 나무나 덤불과 같은 것을 드로우하는 데 유용. SRP 배처와 호환되지 않음.
버텍스 수가 적은 메시는 GPU 인스턴싱이 비효율. 비효율성이 시작되는 임계값은 GPU에 따라 다르지만 일반적으로 256개 미만의 버텍스를 가진 메시에는 GPU 인스턴싱을 사용하지 않음.
최적화 우선순위
1. SRP 배처와 정적 배칭
2. GPU 인스턴싱
3. 동적 배칭
https://docs.unity3d.com/kr/2022.3/Manual/optimizing-draw-calls.html
게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.
<유니티 교과서 개정6판>(유니티 최신 버전) 구입 링크
https://link.coupang.com/a/be3P0t
<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas
<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것> 구입 링크
https://link.coupang.com/a/9BqLd
유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h
(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)
'유니티 엔진 (Unity Engine)' 카테고리의 다른 글
[Unity] C# Finalizer 와 Garbage Collector 동작에 대한 정리 (0) | 2023.12.01 |
---|---|
[Unity] Flags Attribute (0) | 2023.11.30 |
[Unity] ScriptableObject의 CustomEditor가 있을 때 저장이 안 되는 문제 (0) | 2023.11.22 |
[Unity] Unity Engine 버전업 후 에러 메시지 Error : "The type or namespace name 'Newtonsoft' could not be found" (0) | 2023.11.16 |
[Unity] 비동기 처리를 위한 UniTask (0) | 2023.11.15 |
[Unity.Shader] Scene Depth node의 Sampling 타입별 차이 (0) | 2023.11.08 |
유니티 엔진의 큰 그림? 유니티 허브 업데이트와 향후 유니티 엔진의 부분유료 방향을 짚어봅니다 (0) | 2023.11.06 |