Wat is het VTF-bestandsformaat?
Een .vtf-bestand is een Valve Texture Format-bestand - de eigen binaire textuurcontainer die wordt gebruikt door de Source engine van Valve, voor het eerst geïntroduceerd met Half-Life 2 in november 2004. VTF-bestanden slaan gecomprimeerde of ongecomprimeerde GPU-ready textuurgegevens op, samen met een vooraf gebouwde mip-map piramide en een kleine DXT1-gecomprimeerde miniatuurweergave die wordt gebruikt voor engine-previews.
Het bestand begint met de 4-byte magische signatuur VTF\0 (hex 56 54 46 00) gevolgd door een major/minor versiepaar (major is altijd 7; minor varieert van 0 tot 6). De header codeert de afmetingen van de afbeelding, het aantal frames, de diepte (voor volumetexturen), het aantal cube-map vlakken, een reflectiviteitskleurvector en een pixelformaat-enum. Versie 7.3 voegde een uitbreidbare sectie voor brongegevens toe voor willekeurige door de engine gedefinieerde metadata-chunks.
Ondersteunde pixelformaten zijn onder meer DXT1 (4 bpp), DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp) en RGBA16161616F (64 bpp HDR). Afmetingen van afbeeldingen moeten machten van twee zijn, tot 4096×4096 bij typisch gebruik.
.vtf-texturen zijn altijd gekoppeld aan een .vmt (Valve Material Type) bestand dat shader-parameters, oppervlaktetype en mengmodi definieert, waarbij naar de .vtf wordt verwezen op naam. VTFEdit is de standaard community-tool voor het maken en bewerken van .vtf-bestanden buiten de SDK van Valve.
In Source 2 is het gecompileerde textuurequivalent .vtex_c, geproduceerd door de VTex-pijplijn in plaats van VTFEdit.
Beveiliging & veiligheid
RISICO: LOWVTF is een textuurgegevensbestand zonder uitvoerbare code. Kwaadwillig samengestelde VTF-bestanden zouden theoretisch parser-fouten in VTFLib/VTFEdit kunnen veroorzaken (buffer overflows in afmetings- of formaatvelden), maar dit is een theoretisch punt. Open in de praktijk alleen VTF-bestanden van vertrouwde spel- of mod-bronnen.
Formaatdetails
in een notendopProgramma's die VTF-bestanden openen
Technische details
diepe specificaties| Magic bytes | 56 54 46 00 („VTF\0”) op offset 0; major versie (altijd 7) en minor versie (0-6) op offset 4 als twee DWORDs |
| Byte-volgorde | Little-endian |
| Pixelformaten | DXT1 (4 bpp), DXT3, DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp), RGBA16161616F (64 bpp HDR); geselecteerd door formaat-enum in header |
| Mip-map piramide | Volledige mip-keten opgeslagen van kleinste naar grootste mip-niveau; mip-aantal gespecificeerd in header; gebruikt voor LOD-rendering |
| Miniatuurweergave | Kleine DXT1-gecomprimeerde preview met lage resolutie opgeslagen in het header-gebied; gebruikt door de engine voor snelle asset-identificatie |
| Textuurtypes | 2D-texturen, cube-maps (6 vlakken), volume/3D-texturen, geanimeerde sprites (multi-frame), normal maps |
| Afmetingsbeperkingen | Macht van twee vereist (vóór v7.5); typisch maximum 4096x4096; sommige Source-versies ondersteunen tot 16384x16384 |
| Resource-sectie | Uitbreidbare brongegevens-chunks toegevoegd in v7.3, waardoor willekeurige door de engine gedefinieerde metadata mogelijk is; gebruikt voor particle sheet-gegevens enz. |
| Typische grootte | 4 KB - 32 MB afhankelijk van resolutie, mip-niveaus en pixelformaat |
| Gekoppeld formaat | Altijd gebruikt met een .vmt (Valve Material Type) bestand dat de shader, mengmodus en het oppervlaktetype definieert - de .vtf bevat alleen pixelgegevens |
| Compressie | Geen compressie op bestandsniveau; GPU-textuurcompressie (DXT1/DXT5/BCn) is ingebakken in de opgeslagen pixelgegevens |
| Source 2-equivalent | .vtex_c (gecompileerd door VTex-pijplijn); VTF blijft actueel voor Source engine-titels (Team Fortress 2, CS:GO, enz.) |
| Uitgebracht | 2004 (Half-Life 2 and Source engine launch) |
| Laatste versie | VTF 7.5 (Source engine); VTF 7.6 (Source 2 / Portal 2 on Linux) |
| Specificatie | developer.valvesoftware.com |
VTF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over VTF-bestanden.