이번 글에서는 Unity 6 URP에서 GPU Resident Drawer와 GPU Occlusion Culling 기능을 설정하고,
실제로 적용되었는지 확인하는 방법까지 정리해보겠습니다.
참고한 영상은 Unity 6 URP에서 업데이트된 주요 렌더링 기능을 소개하는 공식 영상이고,
그 중에서도 Draw Call 최적화 및 Occlusion Culling 기능이 어떻게 개선되었는지를 설명해줍니다 ㅎㅎ
https://www.youtube.com/watch?v=yBu8m-AaT3A
!! 병목 지점 먼저 이해하자: CPU vs GPU 바운드
렌더링 최적화를 위해 가장 먼저 파악해야 할 것은 어디가 병목인지입니다.
- CPU가 Game Logic을 처리 → GPU에게 Draw Call 명령을 전달
- 이 명령은 바로 실행되지 않고, Command Buffer에 저장되어 GPU가 순차적으로 처리
- CPU와 GPU는 병렬적으로 동작하지만, 어느 한 쪽이 느려지면 프레임 지연 발생!!
🔻 예시
- GPU가 일을 다 했는데 CPU가 아직 명령을 안 주면 CPU 바운드
- 반대로 CPU가 명령을 다 주고 GPU가 아직 처리 중이면 GPU 바운드
!! 만약 Unity 프로파일러 창에서 RenderLoop 시간이 높고, Stats 창의 SetPass Call 수가 많다면 → 드로우콜 병목일 가능성이 큽니다.
1. 최적화 방법 1: GPU Resident Drawer 설정
GPU Resident Drawer는 Unity가 자동으로 Draw Call을 Instancing과 Batching으로 최적화하는 기능
1-1. 주요 특징
- 유니티가 자동으로 최적화 수행 (개발자가 직접 Batching 하지 않아도 됨)
- 대부분의 플랫폼 지원 (단, WebGL2/OpenGLES는 제외)
- 실제 Draw Call 수를 3분의 1 수준으로 감소 가능하다고 한다!
- ❌ Skinned Mesh Renderer에는 적용되지 않음 (Mesh Renderer만 해당)
1-2. 설정 방법
1. Project Settings > Graphics
→ BatchRendererGroup Variants를 Keep All로 설정
2. Graphics > URP Asset 파일 선택
→ GPU Resident Drawer를 Instanced Drawing으로 설정
* 설정 항목 설명 :
- Small-Mesh Screen-Percentage
→ 화면상 작게 보이는 메시 제외 기준 (0.1 ~ 0.5 추천) - GPU Occlusion Culling
→ GPU에서 가려진 오브젝트를 자동으로 생략.
고사양 플랫폼(PC/콘솔)에서 효과 큼
3. Rendering Path → Forward+
2. 최적화 방법 2: GPU Occlusion Culling 활성화
: GPU에서 Depth 정보를 기반으로 가려진 오브젝트를 렌더링에서 제외시켜 퍼포먼스를 높이는 기능!
2-1. 설정 방법
1. URP Renderer에서:
- Rendering Path → Forward+
- Depth Priming Mode → Auto 또는 Forced
* Depth Priming Mode란? : Overdraw(중복 픽셀 처리)를 줄이는 최적화 기술
- 정적/불투명 오브젝트가 많은 씬에서 특히 효과적
- 모바일은 Forced, 조명이 많은 씬은 Auto 또는 Forced, 복잡한 구조물 씬은 Auto 하는 것을 권장!!!!
2. Render Graph → 비활성화
3. URP Asset에서 → GPU Occlusion Culling 체크
4. Static Batching → 비활성화
(GPU 오클루전 컬링과 충돌 가능성 있음)
아!! 그리고 마지막으로 오브젝트 속성에서 Static 체크와 카메라 속성의 Rendering 부분 중 오클루전 컬링 항목 체크 해줘야 한다
자 이제 설정은 끝이 났다!! 적용 여부를 확인해보자
확인 방법은 Frame Debugger를 사용하여 확인할 수 있다.
!! 확인 순서 !!
- Window > Analysis > Frame Debugger 실행
- 좌측에서 ExecuteRenderGraph 항목 확장
- 아래 항목이 존재하는지 확인:
ExecuteRenderGraph
├─ UpdateOccluders ← GPU 오클루전 컬링 로직 시작
├─ InstanceOcclusionTest ← 오클루전 결과 테스트 (GPU 오클루전 연산)
├─ DrawDepthNormalPrepass ← 여기서 숨긴 오브젝트가 Draw 되면 컬링 실패
└─ DrawForwardOpaque ← 최종 렌더링. 여기서도 숨긴 오브젝트가 없으면 성공!
* GPU Resident Drawer과 GPU Occlusion Culling을 설정하기 전
* GPU Resident Drawer과 GPU Occlusion Culling을 설정 후
- DrawSRPBatcher, HybridBatchGroup SRP 최적화 Draw 구조이다!
- Hybrid Batch Group 내에 숨긴 오브젝트가 렌더링 대상에서 제외되었는지 확인할 수 있다.
- Hybrid Batch Group이 증가하고 Draw Mesh 수가 줄었다면 → 최적화 성공
- InstanceOcclusionTest가 존재하면 → GPU 오클루전 컬링이 작동 중임

이번 글에서는 Unity 6 URP에서 새롭게 강화된 GPU 기반 렌더링 최적화 기법
(GPU Resident Drawer와 GPU Occlusion Culling)을 설정하고 적용 여부를 검증하는 방법까지 정리해봤습니다.
다음 포스트에서는 Render Graph 구조와 최적화 설정에 대해 다뤄보겠습니다!
'Unity 개발 > 기술 향상' 카테고리의 다른 글
[Unity] UI Tool Kit 기술적 정보와 현재 평가 (2) | 2025.07.12 |
---|---|
[Unity] 분산 권한(Distributed Authority) 이해하기 (0) | 2025.07.07 |
[Unity] AssetBundle과 Addressable (0) | 2025.04.06 |
[Unity] ScriptableObject 개념 정리 (0) | 2025.03.04 |
[Unity] Unity에서 DLL과 Assembly Definition을 활용한 최적화 전략 (0) | 2025.03.03 |