2021. 5. 25. 14:20ㆍ[Unity] Game Programing/유니티를 활용한 마인크래프트 청크 시스템 구현하기
1. Draw call(Batches)
단순히 블록 하나당 하나의 오브젝트를 사용하며, 여러개의 Material을 사용하면 Draw call이 많이 발생 합니다.
Draw call은 cpu에서 gpu로 그래픽 명령어를 전달할때 발생합니다.
뿐만 아니라 Draw call이 많아질수록 프레임이 나빠져 물리 및 수치 연산, 스크립트, overdraw, fill late, 메모리, verts 등 종합적으로 생각해야 합니다.
이 Draw call을 줄이기위한 대표적인 방법이 Texture Atlas를 활용하는 겁니다.
2. Texture Atlas
여러 개의 Texture를 한 장의 큰 텍스쳐에 모아놓은 것이라고 볼 수 있습니다.
Texture Atlas를 사용하면 각각 호출하던 Draw Call을 뭉쳐서 한번에 Triangle 호출로 변경할 수 있어서 결과적으로 Draw Call을 줄일 수 있습니다.
다음과 같은 이미지가 Texture Atlas입니다.
하지만 Texture Atlas를 사용한다고 해도 오브젝트가 수천~수만개가 되면 여전히 최적화를 했다고 할 수 없습니다.
이러한 문제를 해결하기 위한 방안은 바로 CombineMeshes를 이용하는 겁니다.
3. CombineMeshes
CombineMeshes는 여러개의 Mesh를 하나의 Mesh로 결합하는 것을 뜻합니다.
Material을 공유하는 애들끼리 묶어두고 자식들의 Mesh를 수집한 뒤 하나의 Mesh로 합쳐주는 스크립트를 작성해서 부모가 되는 오브젝트에 추가해주면 됩니다.
(https://docs.unity3d.com/kr/530/ScriptReference/Mesh.CombineMeshes.html)
이 3개의 개념이 마인크래프트 청크를 구현하기 위한 핵심 개념입니다.
청크의 구현 뿐만이 아닌 응용을 위해서 완벽하게 이해 하시는걸 추천 드립니다.
'[Unity] Game Programing > 유니티를 활용한 마인크래프트 청크 시스템 구현하기' 카테고리의 다른 글
4. 블록 생성 및 제거 (0) | 2021.06.22 |
---|---|
3. 청크 만들기 (0) | 2021.05.31 |
2. UV및 텍스쳐 아틀라스 (0) | 2021.05.27 |
1. Quad를 이용한 Cube구축 (0) | 2021.05.26 |