Hvad er VTF-filformatet?
En .vtf-fil er en Valve Texture Format-fil - den proprietære binære teksturbeholder, der bruges af Valves Source-engine, først introduceret med Half-Life 2 i november 2004. VTF-filer gemmer komprimerede eller ukomprimerede GPU-klare teksturdata sammen med en præ-genereret mip-map-pyramide og et lille DXT1-komprimeret miniaturebillede, der bruges til forhåndsvisninger i motoren.
Filen begynder med den 4-byte magiske signatur VTF\0 (hex 56 54 46 00) efterfulgt af et major/minor versionspar (major er altid 7; minor spænder fra 0 til 6). Headeren koder billeddimensioner, antal frames, dybde (for volumeteksturer), antal cube-map-flader, en reflektivitetsfarvevektor og en pixelformat-enum. Version 7.3 tilføjede en udvidelig ressourcedatasektion til vilkårlige engine-definerede metadata-blokke.
Understøttede pixelformater inkluderer DXT1 (4 bpp), DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp) og RGBA16161616F (64 bpp HDR). Billeddimensioner skal være potenser af to, op til 4096×4096 i typisk brug.
.vtf-teksturer er altid parret med en .vmt (Valve Material Type) fil, der definerer shader-parametre, overfladetype og blandingsformer, og som refererer til .vtf-filen ved navn. VTFEdit er standardværktøjet i fællesskabet til at oprette og redigere .vtf-filer uden for Valves SDK.
I Source 2 er den kompilerede tekstur-ækvivalent .vtex_c, produceret af VTex-pipelinen snarere end VTFEdit.
Sikkerhed og tryghed
RISIKO: LOWVTF er en teksturdatafil uden eksekverbar kode. Ondsindet udformede VTF-filer kunne teoretisk set udløse fejl i parseren i VTFLib/VTFEdit (buffer-overflows i dimensions- eller formatfelter), men dette er en teoretisk bekymring. I praksis bør man kun åbne VTF-filer fra betroede spil- eller mod-kilder.
Formatdetaljer
kort fortaltProgrammer der åbner VTF-filer
Tekniske detaljer
dyb specifikation| Magiske bytes | 56 54 46 00 („VTF\0“) ved offset 0; major version (altid 7) og minor version (0-6) ved offset 4 som to DWORDs |
| Byte-orden | Little-endian |
| Pixelformater | DXT1 (4 bpp), DXT3, DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp), RGBA16161616F (64 bpp HDR); valgt via format-enum i headeren |
| Mip-map-pyramide | Fuld mip-kæde gemt fra mindste til største mip-niveau; mip-antal angivet i header; bruges til LOD-rendering |
| Miniaturebillede | Lille DXT1-komprimeret lavopløsnings-forhåndsvisning gemt i header-området; bruges af motoren til hurtig identifikation af aktiver |
| Teksturtyper | 2D-teksturer, cube-maps (6 flader), volumen/3D-teksturer, animerede sprites (multi-frame), normal-maps |
| Dimensionsbegrænsninger | Potens-af-to påkrævet (før v7.5); typisk maksimum 4096x4096; nogle Source-versioner understøtter op til 16384x16384 |
| Ressourcesektion | Udvidelige ressourcesektions-blokke tilføjet i v7.3, hvilket tillader vilkårlige engine-definerede metadata; bruges til particle sheet-data osv. |
| Typisk størrelse | 4 KB - 32 MB afhængigt af opløsning, mip-niveauer og pixelformat |
| Parret format | Bruges altid sammen med en .vmt (Valve Material Type) fil, der definerer shader, blandingsform og overfladetype - .vtf indeholder kun pixeldata |
| Komprimering | Ingen komprimering på filniveau; GPU-teksturkomprimering (DXT1/DXT5/BCn) er indlejret i de gemte pixeldata |
| Source 2-ækvivalent | .vtex_c (kompileret af VTex-pipelinen); VTF forbliver aktuelt for Source-engine-titler (Team Fortress 2, CS:GO, osv.) |
| Udgivet | 2004 (Half-Life 2 and Source engine launch) |
| Seneste version | VTF 7.5 (Source engine); VTF 7.6 (Source 2 / Portal 2 on Linux) |
| Specifikation | developer.valvesoftware.com |
VTF-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om VTF-filer.