Spring til indhold

Teksturhukommelse (VRAM)

Hvor meget VRAM bruger teksturerne på mit asset?

Svar: En 4K-tekstur fylder ikke det samme på disken som i grafikkortets hukommelse. I GPU'en ligger den ukomprimeret (4 byte pr. pixel for RGBA8) eller blokkomprimeret: BC1 bruger 8 byte pr. blok på 4 × 4 pixels (0,5 byte pr. pixel), og BC3 og BC7 bruger 16 byte pr. blok (1 byte pr. pixel). Med mipmaps kommer en kæde af mindre udgaver oveni, som tilsammen er ca. en tredjedel ekstra. Beregneren lægger det sammen for alle dine kort, så du kan se, om et asset holder sig inden for budgettet.

Formel

Hukommelse pr. kort = bredde × højde × byte pr. pixel

BC1: 8 byte pr. 4×4-blok = 0,5 byte/pixel; BC3 og BC7: 16 byte pr. blok = 1 byte/pixel; RGBA8 ukomprimeret: 4 byte/pixel

Mip-kæden (½, ¼, ⅛ … af hver side) lægger 1/4 + 1/16 + … ≈ 1/3 til

Samlet = pr. kort × antal kort (fx 4 UDIM-tiles × 3 kort = 12)

Symboler og enheder i formlen
SymbolBetydningEnhed
oplTeksturens opløsning (kvadratisk)px
byte_pr_pxFormat i GPU'en
mipmapsMipmaps
antalAntal teksturkort (UDIM-tiles × kort pr. tile)kort
=Samlet hukommelseMB
=Pr. teksturkortMB
=Ukomprimeret til sammenligningMB
=Pixels pr. kortMP

Gyldighed og kilde

Kilde
Microsoft DirectX blokkomprimering: BC1 = 8 byte, BC3/BC7 = 16 byte pr. 4×4 pixels; mip-kæde ≈ +⅓

Gælder ikke når

  • MB er her 1024 × 1024 byte, som motorerne viser det. Normalmaps komprimeres ofte som BC5 (1 byte/pixel, to kanaler), og HDR-teksturer som BC6H (1 byte/pixel). Teksturstreaming i Unreal holder kun de mip-niveauer i hukommelsen, der er brug for, så det reelle forbrug kan være lavere.

Regneeksempel

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

Sat ind

  • Teksturens opløsning (kvadratisk)4.096 px
  • Format i GPU'en1
  • Mipmaps1
  • Antal teksturkort (UDIM-tiles × kort pr. tile)12 kort

Giver

  • Samlet hukommelse256 MB
  • Pr. teksturkort21,3 MB
  • Ukomprimeret til sammenligning1.024 MB
  • Pixels pr. kort16,8 MP

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

Når et asset skal ind i et realtime-projekt, skal teksturerne holde sig inden for et hukommelsesbudget, især på mobil og VR. Beregneren regner, hvor meget dine teksturkort fylder i grafikkortet, med og uden komprimering og mipmaps.

Trin for trin

  1. Vælg teksturens opløsning.
  2. Vælg det format, motoren komprimerer til: BC7 til farve, BC1 til simple kort uden alfa.
  3. Vælg om der er mipmaps. Det er der næsten altid i 3D.
  4. Skriv antal kort: UDIM-tiles gange kort pr. tile (fx albedo, normal og ORM).

Typiske fejl

  • At bruge 4K på alt. En lille prop på skærmen har ikke brug for det.
  • At gemme teksturer ukomprimeret i motoren uden grund.
  • At glemme at hver UDIM-tile er sin egen tekstur.

Eksempler fra hverdagen

Hero-karakter med UDIMs

En karakter til en cinematic har 4 UDIM-tiles i 4K, hver med 3 kort (albedo, normal, ORM). Motoren bruger BC7 og mipmaps.

Teksturens opløsning (kvadratisk)
4K (4096 × 4096)
Format i GPU'en
BC7 eller BC3/DXT5 (1 byte/pixel)
Mipmaps
Med mipmaps
Antal teksturkort (UDIM-tiles × kort pr. tile)
12 kort

Det betyder: Teksturerne fylder 256 MB i VRAM, 21,3 MB pr. kort. Ukomprimeret ville det være 1.024 MB.

Prop til et mobilspil

En tønde til et mobilspil har 3 kort i 1K med BC1-komprimering og mipmaps.

Teksturens opløsning (kvadratisk)
1K (1024 × 1024)
Format i GPU'en
BC1/DXT1 (0,5 byte/pixel)
Mipmaps
Med mipmaps
Antal teksturkort (UDIM-tiles × kort pr. tile)
3 kort

Det betyder: Tønden bruger kun 2 MB. Det er et fornuftigt niveau for en lille prop.

Ukomprimeret UI-tekstur

Et stort UI-billede i 2K er sat til ukomprimeret RGBA uden mipmaps for at holde skarpheden.

Teksturens opløsning (kvadratisk)
2K (2048 × 2048)
Format i GPU'en
Ukomprimeret RGBA8 (4 byte/pixel)
Mipmaps
Uden mipmaps
Antal teksturkort (UDIM-tiles × kort pr. tile)
1 kort

Det betyder: Det ene billede fylder 16 MB. Overvej om BC7 er godt nok, så det kun fylder en fjerdedel.

Tommelfingerregel

En 4K-tekstur i BC7 med mipmaps fylder ca. 21 MB. Ukomprimeret fire gange så meget.

Sådan tjekker du svaret

Pr. kort × antal kort skal give den samlede hukommelse.