GPU Instance Manager
요약
GPU Instance Manager는 Unity 환경에서 GPU Instancing 기능을 활용하여 게임 성능과 배터리 효율을 크게 향상시키는 에셋입니다. 이 도구는 동일한 메시와 재질을 가진 여러 객체를 단일 드로우 콜로 렌더링할 수 있게 하여, 기존 방식 대비 발생하는 과도한 배치(batch) 생성을 줄여줍니다.
핵심 포인트
- GPU Instancing은 다수의 객체 렌더링 시 성능 향상에 효과적입니다.
- 동일 메시/재질의 객체를 단일 드로우 콜로 처리할 수 있습니다.
- 사용 시, GPUInstanceService와 GPUInstanceComponent를 활용해야 합니다.
- 정적으로 배치 가능한 경우 Unity의 정적 기능을 우선 사용하세요.
GPU Instance Manager

GPU Instance Manager는 Unity에서 게임 성능을 향상시키는 데 많은 배치(batch) 절약을 제공합니다. GPU Instancing은 성능 문제와 배터리 사용량을 개선하는 좋은 방법입니다. GPU Instancing이 없으면, Unity는 모든 메시를 하나하나 그립니다. 예를 들어, 큐브가 300개 있다면, Unity는 300개의 드로우 콜(draw call)을 생성하므로 300개의 배치(batch)가 생깁니다 (너무 안 좋습니다). 이 에셋을 사용하면 단 하나의 드로우 콜만으로 300개의 큐브를 그릴 수 있습니다. (그림자 등 제외)
설치
- Package Manager => Add package from git url을 통해 git URL을 추가할 수 있습니다.
``
2. 또한, **manifest.json**에 다음 항목을 추가하여 git URL로 설치할 수도 있습니다.
"com.supremepanda.gpu_instance_manager": "https://github.com/supremepanda/GPUInstanceManager.git#upm"
``
GPU Instancing은 언제 사용해야 하나요?
- 동일한 메시와 동일한 재질을 여러 개 사용할 때 (예: 불릿 등) 그리고
- 객체가 정적(static)일 수 없을 때입니다. (정적으로 사용할 수 있다면, 정적 기능을 사용하고 GPU Instancing을 사용하지 마세요)
사용 방법?
- 씬에 GPUInstanceService 프리팹을 추가합니다.
- MeshRenderer와 MeshFilter가 존재하는 객체에 GPUInstanceComponent를 추가합니다.
=> GPUInstanceComponent의 uniqueMeshId 필드는 동일한 메시와 다른 재질을 동시에 사용하는 기능을 제공합니다. 만약 다른 재질 변형을 가진 메시를 사용하고 싶다면, 각 컴포넌트를 분리하기 위해 정수 ID를 부여해야 합니다. 그렇지 않으면 항상 0(zero)이 되며 모든 메시가 같은 재질로 그려집니다.
사용자의 컴포넌트가 데이터를 GPUInstanceManager에 보내 추가, 업데이트 또는 제거합니다. 그게 전부입니다.
중요 참고 사항
만약 게임 오브젝트에 MeshRenderer나 MeshFilter가 없다면, 자동 찾기(auto-find) 체크박스를 해제하고 수동으로 할당해야 합니다. (또한 메쉬, 머티리얼 및 트랜스폼 타겟을 수동으로 설정할 수도 있습니다.)
- 이 에셋은 한 번에 1023개의 메쉬만 제공합니다. 그 이상이 필요하다면 이 에셋을 사용하지 마십시오. (현재로서는... 다음 업데이트에서 추가될 예정입니다.)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기