HOW TO UNITY | Batching
unity 유니티 공부 2025. 11. 29. 12:24 |최적화 기본기
Batching

Draw Call
CPU 사물 데이터 처리
GPU 이미지 처리
CPU 가 GPU 에게 이 사물을 그려라 라고 명령하는 것

SetPass Call
머티리얼, 텍스쳐를 묶어 놓은 걸 SetPass 라고 함
이걸 전덜하는게 셋패스 콜
GPU 에게 일감 전달 하는 걸 Batch 라고 부르고
이 배치 수를 줄이는 걸
최적화 라고 부른다

렌더러, 파티클 이 배치 에 해당된다
이런게 많을수록 렉 걸리는 거임


Statistics 에서
배치수 확인 가능

Frame Debugger 에서도 확인 가능
+

Atlas 활용 기법
여러개의 텍스쳐를
단 하나의 텍스쳐로 통일 함
각 캐릭터마다
UV 좌표를 수정해서 입히게 함

마치 2D 스프라이트 시트 안에 여러 그림을 동시에 넣는 거랑 비슷함

배치 수 는 여전히 8 이지만
셋 패스 콜은 8 -> 3 으로 줄어듦
+
다이나믹 배칭
Dynamic Batching
urp 에서

Preferences , Core Render Pipeline
All Visible
Project Setting Quality

URP 인스펙터 창
우클릭
Show Additional Properties
Dynamic Batching 킬 수 있음

배치 8 개 중 5개가 절약해서 3개가 됨
다이나믹 배칭
주의점
6.0 버전 urp 기준에서
배치 대상 메시는 매우 간단한 오브젝트여야 함
버텍스 수 300개 미만 이어야 함
x y z 크기 는 1 1 1 또는 2 2 2 균등해야 함
커스텀 셰이더를 사용하지 말아야 함
CPU 부하가 늘어날 수 있음
다이나믹 배칭
개별 오브젝트에 직접적으로 적용(활성화/비활성화)할 수 있는 설정이 없습니다.
동적 배치는 유니티가 씬에 있는
모든 움직이는 오브젝트를 대상으로 내부적으로 조건을 검토하여 자동으로 처리하는 전역(Global) 설정 임
+

정적 배칭
static batching
다이나믹 배칭의 반대 개념
프로젝트 세팅 ㅡ 플레이어 ㅡ 오더 세팅 ㅡ 스태틱 배칭
해당 오브젝트 인스펙터 창 ㅡ 패칭 스태틱

정적 배칭으로도 배치수 8 to 3 로 절약 가능
+

단,
정적으로 되었기 때문에
이동 회전 커짐 은 안됨
트랜스폼 안됨
static 된 메쉬들은 하나의 메쉬로 통일 되어버린다
+
3d srpg 에서의 정적 배치 사용 예
바닥 타일 (단 부숴지지 않아야 함)
마법으로 무너지지 않는 고정 배경 사물
먼 큰 산 같은 환경 메시
조명이 고정일 때
정적 배치 사용하면 안되는 사례
흔들리는 깃발
흐르는 물
파괴 가능한 돌
조명이 깜빡거리거나 변할 때
색상이 변경되는 오브젝트
동적 프로브 영향 받을 때
+

SRP Batching
글로벌 설정임
하나의 오브젝트마다 설정은 불가능
프로젝트 세팅 퀄리티
urp 인스펙터 창
쇼 에디셔널 프로퍼티스
SRP 배쳐 온

셋 페스 콜을 8 to 3 으로 줄이는 효과

각 머티리얼 달라도 (아틀라스 안 써도) 최적화가 되는 모습
단,
하나의 셰이더 공통적인 셰이더만 사용해야 한다는 조건이 있음

셰이더가 SRP 배치 호환가능한지 체크 해야함
인스펙터 창에 나와 있음
+
GPU 인스턴싱

urp 인스펙터
SRP Batcher 끄기
해 마테리알
GPU instancing 키기

이렇게 여러 개를 쓸 때 배치 아낄 수 있음
같은 메쉬와 같은 마테리알을 지닌
여러 복제품 렌더할 때 쓰임
각 인스턴스는 트랜스폼을 다르게 할 수 있는 게 장점
위치 크기 회전 을 각각 다르게 넣어도
3d srpg 에서는 이렇게 사용
풀 잔디
군대 npc
화살 투사체
주의점
하나의 오브젝트에 256 개 미만의 버텍스 를 가지고 있다면
(간단한 오브젝트라면)
gpu 인스턴싱 쓰는 게 더 비효율적
+
3d srpg 에서 배칭 최적화 전략 요약
| SRP Batcher ㅡ 끄기 (gpu 인스턴싱과 충돌) |
SRP 배칭만 쓰기 |
정적 배칭 ㅡ 맵, 장식 GPU 인스턴싱 ㅡ 소환수, 잔디, 군대 아틀라스 텍스쳐 사용 |
gpu 인스턴싱 안쓰기 정적 배칭 안쓰기 아틀라스 안쓰기 |
| ↑ 이거 추천 |
|
| URP 또는 HDRP를 쓰는 프로젝트에서 SRP Batcher는 기본 활성화 |
