게틀링타워와 맵 두가지를 보고 생각해보자
게틀링 타워는 흰색과 검은색 두가지로 이루어져 있고
맵또한 체스스타일의 검정색과 흰색으로 두개의 색상은
완벽하게 동일하다.
처음에는 두개 모두 동일한 Material을 써서 해보았다.
처음 시작하고서 타워5개를 바로 지은 직후의 드로우 콜을 보자
타워와 원통 몇개로 이루어진 게임신에서 드로우 콜이 95가 나왔다.
모바일에서의 권장 드로우 콜은 60이하를 유지하는 것으로
적조차 생성을 안 했는데 넘어버렸다.
이제 타일과 타워의 material를 다른 것으로 해보자.
타일과 타워의 Material을 다른 것으로 했을 뿐인데
엄청나게 줄어들었다 하지만 적조차 생성하지 않았는데
쓸 수 있는 드로우 콜의 3분의1이상을 사용한 것이
부담스럽다.
이제 타워가 가진 Part별로 Material을 나눠 보자
사용한 Primitive 도형중에서 모양이 다른 Part별로
다른 Material을 주면 된다.
* 6개의 material이 들어간다.
이제 실행시켜서 같은 식으로 타워 10개를 만들어 보자
이렇게 하면 처음 94와 비교하면 5분의1 이하로 드로우 콜을 줄이는
것에 성공했다. 그런데 여기서도 문제점이 있다. 이론적으로
완벽이 Batch중인 Object를 복사해도 드로우콜이 올라가면 안되지만
타워를 하나 만들 때 마다 드로우 콜이 1개씩 올라가는 것을 확인 할 수 있다.
이것은 타워에 쓰인 Sphere(구,공)모양의 도형이 너무 많은 버텍스를 가지고 있어서
Dynamic Batch가 안된다는 점 때문에 타워당 추가적인 드로우콜 1이 필요한 것이다.
이것을 확인하기 위해 base의 메쉬 필터를 Cube로 바꿔보자
*
이제 실행시켜서 타워를 지어보자 이번에는 수십개를 지어도 상관없다.
이 드로우콜11은 분석이 가능한데
SkyBox : 1
Tile : 2 색상이 두개임으로
TowerPart : 6
TOTAL : 9
batch로 한꺼번에 그릴 수 있는 버텍스의 수는 900개이다.
타워를 좀 많이 만들다 보면 버텍스 수가 늘어나는데 이것으로 인한 오버헤드가 2이다.
참고 LINK
http://docs.unity3d.com/Manual/DrawCallBatching.html