GPU Instancing이란?
GPU Instancing은 동일한 메쉬와 머티리얼을 사용하는 여러 오브젝트를 한 번의 드로우 콜로 렌더링하는 기술입니다. 일반적으로 다수의 오브젝트를 렌더링할 때, 각각의 오브젝트마다 GPU로 데이터를 보내는 과정(드로우 콜)이 필요합니다. 하지만 GPU Instancing을 사용하면 이 드로우 콜의 횟수를 크게 줄일 수 있습니다.
GPU Instancing의 원리
- GPU Instancing은 동일한 메쉬와 머티리얼을 사용하는 여러 오브젝트를 묶어서 한 번에 GPU로 전송합니다.
- 각 오브젝트의 위치, 회전, 크기와 같은 개별적인 변환 정보만을 GPU로 넘겨주고, 나머지 메쉬 데이터는 공유됩니다.
- 이를 통해 CPU에서 처리해야 할 작업이 줄어들어 성능이 향상됩니다.
GPU Instancing이 적합한 상황
- 동일한 메쉬와 머티리얼을 가진 다수의 오브젝트가 존재할 때 (예: 나무, 바위, 적 캐릭터 등).
- 오브젝트마다 동일한 셰이더가 적용될 때.
- 오브젝트가 개별적으로 움직이거나 회전하지만, 그 외의 속성(텍스처, 쉐이딩 등)은 동일할 때.
GPU Instancing 사용방법
머티리얼 인스펙터에서 Enable GPU Instancing 체크박스를 활성화하면 됩니다.
GPU Instancing 사용 효과
다음과 같은 상황을 만들어 드로우콜(Batches) 수를 대폭 올렸습니다.
이 상황에서 각 Cube마다 공통적으로 들어가있는 머티리얼의 GPU Instancing을 켜주면 드로우콜(Batches)가 아래와 같이 확 줄어들게됩니다.
GPU Instancing 사용 시 주의사항
- 메쉬 및 머티리얼 공유: 인스턴싱 대상 오브젝트는 반드시 동일한 메쉬와 머티리얼을 공유해야 합니다. 다른 머티리얼을 사용하면 Instancing이 적용되지 않습니다.
- 셰이더 지원: GPU Instancing을 사용하려면 셰이더가 Instancing을 지원해야 합니다. Unity의 기본 표준 셰이더는 Instancing을 지원하지만, 커스텀 셰이더를 사용하는 경우에는 셰이더 코드에 Instancing을 지원하도록 추가해야 합니다.
'Unity > 정보' 카테고리의 다른 글
[Unity] Awake()와 Start()의 차이점 (1) | 2024.09.16 |
---|---|
[Unity] 프리팹(Prefab) 기초 (0) | 2024.09.16 |
[Unity] 유니티에서 코루틴(Coroutine) 사용하기 (0) | 2024.09.08 |
[Unity] 휴머노이드 애니메이션을 활용한 상체와 하체의 방향 조정 방법 (0) | 2024.09.04 |
[Unity] AR 튜토리얼 (0) | 2024.08.17 |