Spring til indhold

Frame-budget i realtime

Holder scenen 60 fps, og hvor mange millisekunder skal jeg spare?

Svar: I Unreal og Unity skal hver frame være færdig inden for et fast tidsbudget: ved 60 fps er det 16,67 ms. CPU'en (spillogik, draw calls) og GPU'en (shading, lys) arbejder parallelt på hver sin frame, så det er den langsomste af de to, der bestemmer billedhastigheden. Beregneren tager de tider, du måler i profileren (fx «stat unit» i Unreal), og viser budgettet, den billedhastighed scenen faktisk kører med, og hvor meget du skal skære ned.

Formel

Frame-budget (ms) = 1000 ÷ ønsket fps

Frame-tid ≈ den største af CPU-tid og GPU-tid, fordi de arbejder parallelt

Opnået fps = 1000 ÷ frame-tid

Margin = budget − frame-tid; er den negativ, skal den langsomste del optimeres

Symboler og enheder i formlen
SymbolBetydningEnhed
maal_fpsMål for billedhastighedfps
cpu_msMålt CPU-tid pr. frame (game/draw-tråd)ms
gpu_msMålt GPU-tid pr. framems
=Frame-budgetms
=Billedhastighed scenen kører medfps
=Margin til budgettet (negativ = for langsom)ms
=Budgettet er brugt%

Gyldighed og kilde

Kilde
Frame-tid = 1000 ms ÷ fps; CPU og GPU arbejder parallelt, den langsomste bestemmer

Gælder ikke når

  • Mål på målplatformen (headsettet, konsollen, kundens pc), ikke kun på din arbejdsstation, og i en build frem for i editoren. Med V-sync låses billedhastigheden til skærmens trin, så 17 ms kan ende som 30 fps på en 60 Hz-skærm.

Regneeksempel

Beregnerens egne standardværdier sat ind. Tallene er regnet med præcis den formel værktøjet bruger.

Sat ind

  • Mål for billedhastighed60 fps
  • Målt CPU-tid pr. frame (game/draw-tråd)12 ms
  • Målt GPU-tid pr. frame14 ms

Giver

  • Frame-budget16,67 ms
  • Billedhastighed scenen kører med71 fps
  • Margin til budgettet (negativ = for langsom)2,67 ms
  • Budgettet er brugt84 %

Selve beregneren er låst

Opret en gratis bruger for at låse op for alle artikler, beregnere, skabeloner og sortiment — og få adgang til quizzer og klasser. Det tager under et minut: navn, email og en adgangskode. Intet betalingskort.

Vil du prøve noget først? Se hvad du kan bruge uden konto — junior-zonen, leksikonet, videoerne og mere.

Sådan bruger du den

I en realtime-produktion i Unreal eller Unity skal hver frame blive færdig inden for et tidsbudget, ellers hakker billedet. Beregneren tager CPU- og GPU-tid fra profileren og viser budgettet, den billedhastighed du faktisk får, og hvor meget du skal spare.

Trin for trin

  1. Vælg den billedhastighed, platformen kræver: 60 fps til pc, 72 eller 90 fps til VR.
  2. Mål CPU- og GPU-tiden pr. frame i profileren, fx med «stat unit» i Unreal.
  3. Den største af de to bestemmer frame-tiden.
  4. Er margenen negativ, så optimér den del, der er langsomst: draw calls og logik på CPU, shaders, lys og overdraw på GPU.

Typiske fejl

  • At lægge CPU- og GPU-tid sammen. De arbejder parallelt.
  • At måle i editoren i stedet for i en build på målplatformen.
  • At optimere GPU'en, når det er CPU'en, der er flaskehalsen.

Eksempler fra hverdagen

Arkitektur-visualisering på pc

En arkitektvisualisering i Unreal skal køre 60 fps på kundens pc. Profileren viser 12 ms på CPU og 14 ms på GPU.

Mål for billedhastighed
60 fps
Målt CPU-tid pr. frame (game/draw-tråd)
12 ms
Målt GPU-tid pr. frame
14 ms

Det betyder: Budgettet er 16,67 ms, og scenen kan nå 71 fps. Margenen er 2,67 ms, så den holder 60 fps med lidt luft.

VR-oplevelse der hakker

En VR-oplevelse skal køre 90 fps. GPU'en bruger 15 ms pr. frame og CPU'en 9 ms.

Mål for billedhastighed
90 fps (VR)
Målt CPU-tid pr. frame (game/draw-tråd)
9 ms
Målt GPU-tid pr. frame
15 ms

Det betyder: Budgettet er 11,11 ms, men GPU'en gør, at scenen kun kører 67 fps. Margenen er -3,89 ms, så du skal spare på GPU'en, fx med LOD og billigere shaders.

Mobilspil der er CPU-bundet

Et mobilspil skal holde 30 fps. CPU'en bruger 38 ms pr. frame på grund af mange draw calls, GPU'en 20 ms.

Mål for billedhastighed
30 fps
Målt CPU-tid pr. frame (game/draw-tråd)
38 ms
Målt GPU-tid pr. frame
20 ms

Det betyder: Budgettet er 33,33 ms, og spillet kører kun 26 fps. Budgettet er brugt 114 %, så saml objekter med batching og instancing for at få CPU-tiden ned.

Tommelfingerregel

60 fps = 16,7 ms, 90 fps = 11,1 ms, 30 fps = 33,3 ms.

Sådan tjekker du svaret

1000 ÷ opnået fps skal give den største af CPU- og GPU-tiden.