유니티에서 동적배칭 사용하기(dynamic batching)

유니티에서 동적배칭 사용하기(dynamic batching)

dynamic batching은 런타임에서 매 프레임마다 동적 배칭이 가능한 오브젝트들에 대해 일괄처리하여 드로우콜을 줄일수있다. 다이나믹 배칭을 활성화하면 유니티가 자동적으로 같은 재질을 공유하는 오브젝트들(버텍스의 개수가 적은)의 버텍스를 모아서 한번에 처리한다. 정적 배칭은 메모리 오버헤드를 발생시키는데 반해 런타임에서 매 프레임마다 버텍스 연산을 수행하는 동적 배칭은 CPU 오버헤드를 발생시킨다.

동적 배칭은 정적 배칭과 마찬가지로 게임 오브젝트들이 독립적으로 컬링될수있다는 장점을 가진다.

docs.unity3d.com/Manual/DrawCallBatching.html

1)유니티에서 다이나믹 배칭은 기본적으로 비활성화되어있다. 이 기능을 사용하려면 project settings에서 player의 other settings에서 dynamic batching에 체크한다. 

 

2)씬에 다수의 큐브 오브젝트를 추가하였다. 모든 오브젝트들이 일괄처리되는것을 확인할수있다.

동적 배칭이 가능한 오브젝트는 300개 미만의 버텍스 개수, 900개 미만의 버텍스 속성을 가지는 오브젝트로 같은 재질을 공유해야한다. 

 

3)동일한 재질을 사용하는 실린더 오브젝트를 추가하였다. 실린더 오브젝트는 300개 미만의 정점을 가지기때문에 동적 배칭의 대상이다.

 

4)sphere 오브젝트를 추가하면 batches의 개수가 증가한다. 정점의 개수가 300개를 초과하여 동적배칭의 대상이 아니다.

 

5)재질의 개수만큼 batches 수치가 증가하지만 같은 재질을 공유하는 오브젝트들을 모두 일괄처리한다.

 

 

동적배칭 예외

정점의 개수가 300개를 초과

정점의 속성이 900개를 초과
트랜스폼에 미러링을 포함(스케일음수)
같은 재질이여도 서로 다른 인스턴스 재질을 사용
멀티패스 쉐이더

댓글

Designed by JB FACTORY