전통적인 그래픽스 파이프라인 vs 메쉬 셰이더 파이프라인(Meshlet Rendering)
2025. 2. 18. 12:11ㆍPot of Thoughts/Fragments of Think
결론: Vertex-Bounded인 상황에서 메쉬 셰이더 파이프라인의 하한이 더 높다. 즉 메쉬 셰이더 파이프라인을 사용한 Meshlet 단위 처리 방식의 처리율이 기존 Mesh Instance 단위 그리고 Vertex Shader 기반의 전통적인 파이프라인의 처리율 보다 높다. 또한 Vertex-Bounded가 아닌 상황에서도 Meshlet 단위의 Culling 연산으로 인한 추가 비용을 성능적 이점이 넘어선다.
- 장면 설정
- 동적 점광원 2.7만개
- 구 메쉬 인스턴스 6.4만개 (Transformation 실시간 업데이트)
- LOD 0 기준 구 메쉬의 유니크한 정점은 6144개, 그리고 유니크한 삼각형 프리미티브는 3072개
(LOD 0 기준, 장면 내 정점 수 = 약 3.93억개/삼각형 수 = 약 1.96억개)
- 테스트 케이스
- 시작 위치 기준 60초간 측정한 FPS의 평균치
- CamPos.Z = -700 기준 60초간 측정한 FPS의 평균치 (Vertex Bounded)
- 1,2번 케이스를 양쪽 파이프라인 모두 LOD0으로 고정 후 측정
(변인 통제를 위해 모든 케이스 측정 시 어플리케이션을 재시작)
- 공통 사항
2.5D Clustered Rendering(Forward+)
GPU-Driven Scene 데이터
- 전통적인 그래픽스 파이프라인
- Mesh Instance 단위 Frustum Culling
- Mesh Instance 단위 카메라 거리 기반 LOD 선택
- Mesh Instance Instancing
케이스 1. 평균 ~235 FPS
케이스2. 평균 ~82 FPS
케이스 3-1. 평균 ~238 FPS
케이스 3-2. 평균 ~27 FPS
- 메쉬 셰이더 파이프라인
- Mesh Instance 단위 Frustum Culling (Compute Shader)
- Mesh Instance 단위 화면 커버리지 기반 LOD 선택
- Meshlet 단위 Frustum Culling (Amplification Shader)
케이스 1. 평균 ~269 FPS (+ 34 FPS/+14.4%)
케이스 2. 평균 ~148 FPS (+66 FPS/+80.4%)
케이스 3-1. 평균 ~270 FPS (+32 FPS/+13.4%)
케이스 3-2. 평균 ~47 FPS (+20 FPS/+74%)
'Pot of Thoughts > Fragments of Think' 카테고리의 다른 글
GPU Upload Heap 적용으로 성능 향상을 얻을 수 있을 것 같은 케이스 (0) | 2025.02.20 |
---|---|
Frames In Flight의 개념 (0) | 2025.02.06 |
StaticTransformTag (0) | 2025.02.06 |
언리얼에서 활용한 Skeletal Mesh를 Blender FBX Export를 할 때 (0) | 2024.11.23 |
D3D12 래퍼 설계에 대하여 #2 (0) | 2024.02.08 |