본문 바로가기
프로그래밍/Unity

Unity 6 GPU Resident Drawer란?

by argentdarae 2025. 3. 29.
반응형

개요

 

GPU Resident Drawer는 Unity 6에서 도입된 최신 렌더링 최적화 기술로, 렌더링 데이터를 GPU에 '상주'시키고, CPU 개입 없이 GPU 주도로 드로우 콜을 수행하는 방식이다

 

이는 기존의 CPU 중심 렌더링 파이프라인에서 GPU Driven Rendering으로 전환하는 핵심 단계 중 하나다

 

등장 배경

출처: https://www.youtube.com/watch?v=3mSO1sMdGxM

 

기존 Unity의 MeshRenderer나 SkinnedMeshRenderer는 매 프레임마다 CPU가 다음과 같은 작업을 수행해야 했다

  • 렌더링 가능한 오브젝트 필터링
  • 메쉬/머티리얼/Transform 데이터 처리
  • 드로우 콜 전달

이로 인해 CPU 부하가 매우 커지고, 대규모 씬이나 오픈월드 환경에서는 병목 현상이 자주 발생했다

 

GPU Resident Drawer는 이러한 오버헤드를 줄이기 위해 렌더링 객체의 상태 및 데이터 자체를 GPU에 유지하고, 매 프레임마다 GPU가 직접 렌더링 리스트를 구성하도록 해주는 것

출처: Unity Forum

 

성능 테스트의 결과는 위와 같다

 

주요 특징

GPU Resident

  • 오브젝트의 렌더링 정보(메쉬, 머티리얼, 트랜스폼 등)를 GPU 메모리에 상주시킴
  • GPU는 이 데이터를 직접 접근하여 렌더링 수행

Unity 내부 최적화 통합

  • BatchRendererGroup 시스템 기반이지만 개발자는 직접 작성할 필요 없다
  • Unity가 MeshRenderer, SkinnedMeshRenderer 등을 자동으로 감지하여 등록/관리한다

완전한 자동 드로우 관리

  • 오브젝트가 Visible + Resident 조건을 만족하면 자동 렌더링
  • CPU는 리스트를 따로 만들 필요 없음

 

작동 방식 요약

  1. Unity가 씬 내 오브젝트를 스캔하고 GPU Resident로 등록
  2. GPU 메모리에 메쉬/머티리얼/Transform 등의 데이터를 저장
  3. GPU가 드로우 패스마다 필요한 오브젝트를 Cull하고 정렬
  4. GPU에서 직접 렌더링 명령을 생성 및 실행

 

사용 조건

  • 파이프라인: URP / HDRP
  • 플랫폼: DirectX 12, Vulkan, Metal (OpenGL 미지원)
  • Shader: Compute Shader 필수
  • 활성 조건: Shader Model 5.0 이상, GPU Skinning 사용 시 효과적

 

제약 사항

지원 안 되는 기능들

  • MaterialPropertyBlock
  • LOD Group
  • Light Probe Proxy Volume
  • Custom Pass (HDRP)
  • SRP Batcher와 혼용 시 제한 있음

Dynamic GameObject는 등록 비용이 크다. 매 프레임 새로 생성/파괴되는 오브젝트는 오히려 비용이 증가할 수 있다

 

결론

GPU Resident Drawer를 통해 CPU 중심의 드로우 콜 구성 방식에서 벗어나, GPU 주도의 렌더링으로 이동함으로써 대규모 씬에서도 안정적인 성능을 확보할 수 있게 되었다

 

특히 BatchRendererGroup을 자동화한 구조 덕분에 개발자가 복잡한 로우레벨 코드를 직접 작성하지 않아도 GPU 기반의 최적화를 손쉽게 도입할 수 있다는 점이 큰 장점이다

물론 아직 LOD Group, MPB, Dynamic Object 최적화 등 일부 제약은 존재하지만, Unity의 후속 업데이트에서 점차 해소될 가능성이 크다

 

향후 고사양 게임, 오픈월드, 대규모 RTS나 시뮬레이션 장르에서 Resident Drawer는 필수적인 렌더링 최적화 옵션이 될 것으로 보인다

 


Reference

Unity 6 Fantasy Kingdom으로 알아보는 4가지 그래픽스 신기능 - Youtube

Unity 6 Preview is now available - Unity Tech Blog

GPU Driven Rendering In Unity - Unity Forum

Enable the GPU Resident Drawer in URP - Unity Doc

GDC24 Unity 1 - GPU Resident Drawer - Blog

'프로그래밍 > Unity' 카테고리의 다른 글

BatchRendererGroup(BRG)  (0) 2025.03.29
Unity 6 GPU Occlusion Culling  (0) 2025.03.29
Unity 6 STP(Spatial-Temporal Post-processing)란?  (0) 2025.03.29
Photon PUN (Photon Unity Networking)  (0) 2025.03.25
Unity Asset Bundle  (0) 2025.03.25