본문으로 건너뛰기
CHOI HONGSU
1 min read

Per-device GPU profiling

 

배경 렌더 파이프라인 전면 재설계 — 노말맵 150장 제거·셰이더 분리·스플랫맵→메쉬 커팅으로 DrawOpaqueObjects 41% 절감

  • -41% DrawOpaqueObjects GPU time (46ms → 27.1ms)
  • 60fps Galaxy S21 상옵션 달성 (20-30fps → 60fps)
  • 플레이 가능 Galaxy S9 4GB 진입 불가 → 하옵 40fps

Problem

  • The background DrawOpaqueObjects took 46ms, consuming most of the frame budget.
    Independent inefficiencies had piled up.
  1. [Textures] Normal maps used unnecessarily across background objects.
    150 normal maps remained whose perceived-quality contribution under in-game FOV / lighting was low.

  2. [Shader] Lobby (static composition) and in-game (real-time battle) background objects
    used the same heavyweight Uber shader.
    In-game, unnecessary stylization features were executed per draw call.

  3. [Geometry] Terrain surface blending was implemented with a splatmap.
    Multi-texture sampling + blending ops ran per fragment in the pixel shader.

4. [Geometry] Unnecessary edges remained on background meshes. Edges not contributing to silhouette / form increased vertex count and added rasterizer load.

요약

D build → F build

Shadow

7.7ms7.1ms

DrawOpaqueObjects

46ms27.1ms

COS PostProcessing

9.7ms9.5ms

UI

2.4ms3.9ms

Before / After

D build 12.16 / F build 02.06

Galaxy S21

BEFORE
Before
AFTER
After

디바이스 메모리 8/6GB FPS 테스트 ( 4GB 테스트 불가 )

  • Galaxy S21 [ 8GB ] Exynos 10 (2100)

Low[60] - FPS 60 → Low[60] - FPS 60
Mid[60] - FPS 45 – 55 ( PostProcess off ) → Mid[60] - FPS 60 ( PostProcess on )
High[60] - FPS 20 – 30 → High[60] - FPS 60

  • Galaxy S9+ [ 6GB ] Exynos 9

Low[60] - FPS 40 → Low [60] - FPS 60
Mid[60] - FPS 30 ( PostProcess off ) → Mid [60] - FPS 60 ( PostProcess on )
High[60] - FPS 25 → High [60] - FPS 30 ~ 40

  • Galaxy S9 [ 4GB ] Exynos 9

Low[60] - (reaches town but unplayable) → Low [60] - FPS 40
Mid[60] - ( cannot enter ) → Mid [60] - FPS 30 ( PostProcess on )
High[60] - ( cannot enter ) → High [60] - (reaches town but unplayable)

Validation

Tools: AGI · Build: Dev - D build · Scene: Lobby

DeviceGPUAPIShadowDrawOpaqueObjectsCOS PostProcessingUI
BeforeAfterBeforeAfterBeforeAfterBeforeAfter
Galaxy S21Mali-G78 Vulkan 1.1.07.7 ms7.1 ms46ms 27.1ms 9.7ms9.5ms2.4ms3.9ms

Tradeoffs & Future Work

Tradeoffs

  • UI pass grew from 2.4ms to 3.9ms. UIParticle count grew; separate optimization in progress.