GPU 인스턴싱은 단일 드로우 콜에서 동일한 재질의 메시 사본을 여러 개 렌더링하는 드로우 콜 최적화 방법입니다. 각 메시 사본을 인스턴스라고 합니다. 씬 내에 여러 번 나타나는 나무나 덤불과 같은 것을 드로우하는 데 유용합니다.
GPU 인스턴싱은 동일한 드로우 콜에서 동일한 메시를 렌더링합니다.배리에이션을 추가하고 반복된 형상을 줄이기 위해 각 인스턴스는 Color 또는 Scale과 같은 프로퍼티를 다르게 가질 수 있습니다.여러 인스턴스를 렌더링하는 드로우 콜은 프레임 디버거에 Render Mesh (instanced)로 나타납니다.
이 섹션은 GPU 인스턴싱의 플랫폼, 렌더 파이프라인, SRP 배처 호환성을 포함하고 있습니다.
GPU 인스턴싱은 WebGL 1.0을 제외한 모든 플랫폼에서 사용할 수 있습니다.
기능 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 스크립터블 렌더 파이프라인(SRP) |
---|---|---|---|---|
GPU 인스턴싱 | 지원 | 지원(1) | 지원(1) | 지원(1) |
참고:
GPU 인스턴싱은 SRP 배처와 호환되지 않습니다. SRP 배처는 GPU 인스턴싱보다 우선합니다. 게임 오브젝트가 SRP 배처와 호환되는 경우 Unity는 GPU 인스턴싱이 아닌 SRP 배처를 사용하여 렌더링합니다. 최적화 방법 우선 순위에 대한 자세한 내용은 최적화 우선 순위를 참조하십시오.
프로젝트에서 SRP 배처를 사용하고 게임 오브젝트에 GPU 인스턴싱을 사용하려는 경우 다음 중 하나를 수행할 수 있습니다.
Unity는 동일한 메시와 머티리얼을 공유하는 게임 오브젝트에 GPU 인스턴싱을 사용합니다. 메시와 머티리얼을 인스턴스화하려면 다음 단계를 따르십시오.
머티리얼에 GPU 인스턴싱을 사용하려면 인스펙터에서 Enable GPU Instancing 옵션을 선택합니다.
GPU 인스턴싱은 Unity의 베이크된 전역 조명 시스템을 지원합니다. Unity 스탠다드 셰이더와 표면 셰이더는 기본적으로 GPU 인스턴싱과 Unity의 베이크된 전역 조명 시스템을 지원합니다.
각 GPU 인스턴스는 다음 소스 중 하나에서 전역 조명을 지원합니다.
GPU 인스턴싱은 다음과 함께 자동으로 작동합니다.
Graphics.RenderMeshInstanced
에 대한 라이트 프로브 렌더링을 활성화하려면 프로브 데이터가 포함된 MaterialPropertyBlock을 제공하십시오.자세한 내용과 코드 예시는 LightProbes.CalculateInterpolatedLightAndOcclusionProbes를 참조하십시오.
또는 LPPV 컴포넌트 레퍼런스와 LightProbeUsage.UseProxyVolume을 Graphics.DrawMeshInstanced
에 전달해도 됩니다.그러면 모든 인스턴스가 라이트 프로브 데이터의 L0 및 L1 대역 볼륨을 샘플링합니다.L2 데이터와 오클루전 데이터를 보완하려면 MaterialPropertyBlock
을 사용합니다.자세한 내용은 라이트 프로브:기술 정보를 참조하십시오.
버텍스 수가 적은 메시는 GPU 인스턴싱을 사용하여 효율적으로 처리할 수 없습니다. GPU가 GPU 리소스를 완전히 사용하는 방식으로 작업을 배포할 수 없기 때문입니다. 이러한 비효율적인 처리는 퍼포먼스에 부정적인 영향을 미칠 수 있습니다. 비효율성이 시작되는 임계값은 GPU에 따라 다르지만 일반적으로 256개 미만의 버텍스를 가진 메시에는 GPU 인스턴싱을 사용하지 않습니다.
버텍스 수가 적은 메시를 여러 번 렌더링하려는 경우 모든 메시 정보가 포함된 단일 버퍼를 생성하여 메시를 드로우하는 것이 가장 좋습니다.
2017–10–24 페이지 수정됨
인스턴스화 활성화 체크박스 설명, DrawMeshInstancedIndirect, #pragma multi-compile은 5.6 버전에서 추가됨
2017.3에서 GPU 인스턴싱을 위한 셰이더 웜업 추가됨 NewIn20173
2018.1에서 GPU 인스턴싱에 전역 조명(GI) 지원 추가됨 NewIn20181
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.