TECHARTNOMAD | TECHARTFLOWIO.COM

UNITY3D

유니티 6.1 인스턴싱 로컬 키워드 추가 리스트.

jplee 2025. 6. 4. 22:54

Unity 6.1 셰이더 인스턴싱 키워드

Unity에서 대량의 오브젝트를 효율적으로 렌더링하려면 GPU 인스턴싱을 활용한다. 오늘은 Unity의 주요 인스턴싱 키워드들을 살펴보고, 각각의 특징과 사용법을 알아본다.

인스턴싱이란?

GPU 인스턴싱은 동일한 메시를 여러 번 그릴 때 드로우 콜을 줄여 성능을 향상시키는 기술이다. 수백 개의 나무나 풀, 건물 등을 렌더링할 때 각각을 개별적으로 그리는 대신, 한 번의 드로우 콜로 모든 인스턴스를 처리한다.

주요 인스턴싱 키워드

Unity 6.1 에서는 세 가지 주요 인스턴싱 방식을 제공한다:

1. INSTANCING_ON - 표준 GPU 인스턴싱

m_Instancing = TryGetLocalKeyword(shader, "INSTANCING_ON");

가장 기본적인 GPU 인스턴싱 방식이다. 이 키워드를 활성화하면 같은 메시를 여러 개의 다른 속성으로 렌더링할 수 있다.

특징:

  • 위치, 회전, 크기 등의 속성을 인스턴스별로 다르게 설정한다
  • CPU에서 인스턴스 데이터를 준비하여 GPU로 전송한다
  • Graphics.DrawMeshInstanced 등의 API와 함께 사용한다
  • 가장 호환성이 좋고 안정적이다

2. DOTS_INSTANCING_ON - DOTS 인스턴싱

m_DotsInstancing = TryGetLocalKeyword(shader, "DOTS_INSTANCING_ON");

Unity의 Data-Oriented Technology Stack(DOTS)과 함께 사용하는 고성능 인스턴싱 방식이다.

특징:

  • Entity Component System(ECS)과 완벽하게 통합된다
  • Job System과 Burst Compiler의 이점을 활용한다
  • 수만 개의 오브젝트도 효율적으로 처리한다
  • DOTS 프로젝트에서 최고의 성능을 제공한다

3. PROCEDURAL_INSTANCING_ON - 절차적 인스턴싱

m_ProceduralInstancing = TryGetLocalKeyword(shader, "PROCEDURAL_INSTANCING_ON");

GPU에서 직접 인스턴스 데이터를 생성하거나 계산하는 방식이다.

특징:

  • 컴퓨트 셰이더와 함께 활용한다
  • GPU에서 직접 위치나 속성을 계산한다
  • CPU-GPU 간 데이터 전송을 최소화한다
  • 파티클 시스템이나 절차적 생성에 적합하다

성능 비교

각 인스턴싱 방식의 성능 특성을 이해하고 상황에 맞게 선택한다:

  • 표준 인스턴싱: 일반적인 용도에 적합하며 안정성이 높다
  • DOTS 인스턴싱: 대량의 오브젝트 처리 시 최고 성능을 제공한다
  • 절차적 인스턴싱: GPU 계산이 많은 특수한 경우에 효율적이다

결론

Unity의 인스턴싱 시스템을 제대로 활용하면 렌더링 성능을 크게 향상시킬 수 있다. 프로젝트의 요구사항에 맞는 인스턴싱 방식을 선택하고, 적절한 셰이더 키워드를 활용하여 최적의 성능을 달성한다.

현대 게임 개발에서 인스턴싱은 필수 기술이므로, 각 방식의 특징을 이해하고 상황에 맞게 적용하는 것이 중요하다.