전통적인 그래픽스 파이프라인 vs 메쉬 셰이더 파이프라인(Meshlet Rendering)

2025. 2. 18. 12:11Pot of Thoughts/Fragments of Think

결론: Vertex-Bounded인 상황에서 메쉬 셰이더 파이프라인의 하한이 더 높다. 즉 메쉬 셰이더 파이프라인을 사용한 Meshlet 단위 처리 방식의 처리율이 기존 Mesh Instance 단위 그리고 Vertex Shader 기반의 전통적인 파이프라인의 처리율 보다 높다. 또한 Vertex-Bounded가 아닌 상황에서도 Meshlet 단위의 Culling 연산으로 인한 추가 비용을 성능적 이점이 넘어선다.

  • 장면 설정
  1. 동적 점광원 2.7만개
  2. 구 메쉬 인스턴스 6.4만개 (Transformation 실시간 업데이트)
  3. LOD 0 기준 구 메쉬의 유니크한 정점은 6144개, 그리고 유니크한 삼각형 프리미티브는 3072개

(LOD 0 기준, 장면 내 정점 수 = 약 3.93억개/삼각형 수 = 약 1.96억개)

  • 테스트 케이스
  1. 시작 위치 기준 60초간 측정한 FPS의 평균치
  2. CamPos.Z = -700 기준 60초간 측정한 FPS의 평균치 (Vertex Bounded)
  3. 1,2번 케이스를 양쪽 파이프라인 모두 LOD0으로 고정 후 측정

(변인 통제를 위해 모든 케이스 측정 시 어플리케이션을 재시작)

  • 공통 사항

2.5D Clustered Rendering(Forward+)

GPU-Driven Scene 데이터

  • 전통적인 그래픽스 파이프라인
  1. Mesh Instance 단위 Frustum Culling
  2. Mesh Instance 단위 카메라 거리 기반 LOD 선택
  3. Mesh Instance Instancing

케이스 1. 평균 ~235 FPS

케이스2. 평균 ~82 FPS

케이스 3-1. 평균 ~238 FPS

케이스 3-2. 평균 ~27 FPS

  • 메쉬 셰이더 파이프라인
  1. Mesh Instance 단위 Frustum Culling (Compute Shader)
  2. Mesh Instance 단위 화면 커버리지 기반 LOD 선택
  3. 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%)