GPU 인스턴싱 안내서
GPU 인스턴싱은 Unity에서 성능을 최적화하기 위해 동일한 재질을 가진 여러 메시를 단일 드로우 콜로 렌더링할 수 있는 방법입니다. 여기에서는 GPU 인스턴싱의 개념, 사용 방법, 성능 영향 및 활용 예제를 설명합니다.
GPU 인스턴싱 개요
- 정의: GPU 인스턴싱은 동일한 드로우 콜 내에서 여러 개의 동일한 메시를 렌더링하는 기법입니다.
- 장점: 주로 나무나 덤불 같은 반복되는 객체를 효율적으로 렌더링하는 데 유용합니다.
GPU 인스턴싱의 구조
각 메시 사본은 "인스턴스"라 불리며, 각 인스턴스는 Color, Scale 등의 프로퍼티를 다르게 설정할 수 있습니다. 여러 인스턴스를 드로우할 때, 프레임 디버거에서는 Render Mesh (instanced)
로 표시됩니다.
플랫폼 호환성
플랫폼 | GPU 인스턴싱 지원 |
---|---|
WebGL 1.0 | 지원하지 않음 |
기타 플랫폼 | 지원 |
렌더 파이프라인 호환성
기능 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 스크립터블 렌더 파이프라인(SRP) |
---|---|---|---|---|
GPU 인스턴싱 | 지원 | 지원 | 지원 | 지원 |
SRP 배처와 호환되지 않는 셰이더만 해당됩니다.
GPU 인스턴싱 사용 방법
GPU 인스턴싱을 활성화하려면 몇 가지 단계를 따라야 합니다.
- 셰이더 지원: 머티리얼의 셰이더가 GPU 인스턴싱을 지원해야 합니다. Unity의 스탠다드 셰이더는 GPU 인스턴싱을 기본으로 지원합니다.
- 메시 그룹화: 메시를 동작에 따라 그룹화해야 하며
MeshRenderer
또는Graphics.RenderMesh
호출을 사용하여 소스를 연동합니다. - 메서드 호출:
Graphics.RenderMeshInstanced
또는Graphics.RenderMeshIndirect
호출로 동일한 셰이더를 사용하여 메시를 렌더링합니다. - 인스펙터 설정: 머티리얼에서 "Enable GPU Instancing" 옵션을 선택하여 GPU 인스턴싱을 활성화합니다.
조명 지원
Unity의 베이크된 전역 조명 시스템은 GPU 인스턴싱을 지원합니다. 각 GPU 인스턴스는 다음 소스 중 하나에서 전역 조명을 받아들일 수 있습니다:
- 여러 광원 프로브
- 라이트맵
- Light Probe Proxy Volume (LPPV) 컴포넌트
성능 영향
버텍스 수가 적은 메시에는 GPU 인스턴싱이 효율적으로 작동하지 않을 수 있습니다. 일반적으로 256개 미만의 버텍스를 가진 메시에 대해 GPU 인스턴싱을 피하는 것이 좋습니다.
활용 예제
- 자연 환경: 많은 수의 나무와 덤불을 렌더링할 때 GPU 인스턴싱을 사용하여 성능을 극대화할 수 있습니다.
- 파티클 시스템: 같은 형태의 파티클을 여러 번 렌더링할 때, GPU 인스턴싱을 활용하면 프레임 속도를 유지하면서 풍부한 시각적 효과를 제공합니다.
- 건물 및 구조물: 동일한 건물 모델을 가진 맵을 만들 때 GPU 인스턴싱을 통해 드로우 콜을 줄이고 최적화를 이룰 수 있습니다.
결론
GPU 인스턴싱은 Unity의 강력한 성능 최적화 기술로, 다양한 환경에서 효율적인 렌더링을 지원합니다. 위의 가이드를 참고하여 프로젝트에 GPU 인스턴싱을 적용해 보세요.