Che cos'è il formato di file VTF?
Un file .vtf è un file Valve Texture Format - il contenitore binario proprietario per texture utilizzato dal motore Source di Valve, introdotto per la prima volta con Half-Life 2 nel novembre 2004. I file VTF memorizzano dati di texture pronti per la GPU, compressi o non compressi, insieme a una piramide mip-map pre-generata e una piccola miniatura compressa in DXT1 utilizzata per le anteprime del motore.
Il file inizia con la firma magica a 4 byte VTF\0 (hex 56 54 46 00) seguita da una coppia di versioni major/minor (la major è sempre 7; la minor varia da 0 a 6). L'intestazione codifica le dimensioni dell'immagine, il numero di fotogrammi, la profondità (per le texture volumetriche), il numero di facce della cube-map, un vettore di colore della riflettività e un enum del formato pixel. La versione 7.3 ha aggiunto una sezione di dati risorsa estensibile per blocchi di metadati arbitrari definiti dal motore.
I formati pixel supportati includono DXT1 (4 bpp), DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp) e RGBA16161616F (64 bpp HDR). Le dimensioni dell'immagine devono essere potenze di due, fino a 4096×4096 nell'uso tipico.
Le texture .vtf sono sempre associate a un file .vmt (Valve Material Type) che definisce i parametri dello shader, il tipo di superficie e le modalità di fusione, facendo riferimento al file .vtf per nome. VTFEdit è lo strumento standard della comunità per creare e modificare file .vtf al di fuori dell'SDK di Valve.
In Source 2, l'equivalente della texture compilata è .vtex_c, prodotto dalla pipeline VTex invece che da VTFEdit.
Sicurezza e incolumità
RISCHIO: LOWVTF è un file di dati di texture senza codice eseguibile. File VTF creati con intenti malevoli potrebbero teoricamente innescare bug del parser in VTFLib/VTFEdit (buffer overflow nei campi dimensione o formato), ma si tratta di una preoccupazione teorica. In pratica, apri solo file VTF provenienti da fonti di gioco o mod affidabili.
Dettagli del formato
in sintesiProgrammi che aprono file VTF
Dettagli tecnici
specifiche approfondite| Magic bytes | 56 54 46 00 («VTF\0») all'offset 0; versione major (sempre 7) e versione minor (0-6) all'offset 4 come due DWORD |
| Ordine dei byte | Little-endian |
| Formati pixel | DXT1 (4 bpp), DXT3, DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp), RGBA16161616F (64 bpp HDR); selezionati tramite enum di formato nell'intestazione |
| Piramide Mip-map | Catena mip completa memorizzata dal livello mip più piccolo al più grande; conteggio mip specificato nell'intestazione; utilizzata per il rendering LOD |
| Miniatura | Piccola anteprima a bassa risoluzione compressa in DXT1 memorizzata nell'area dell'intestazione; utilizzata dal motore per l'identificazione rapida degli asset |
| Tipi di texture | Texture 2D, cube map (6 facce), texture volumetriche/3D, sprite animati (multi-frame), normal map |
| Vincoli dimensionali | Richiesta potenza di due (pre-v7.5); massimo tipico 4096x4096; alcune versioni di Source supportano fino a 16384x16384 |
| Sezione risorse | Blocchi di dati risorsa estensibili aggiunti nella v7.3, che consentono metadati arbitrari definiti dal motore; usati per dati di fogli particellari ecc. |
| Dimensione tipica | 4 KB - 32 MB a seconda della risoluzione, dei livelli mip e del formato pixel |
| Formato associato | Sempre usato con un file .vmt (Valve Material Type) che definisce shader, modalità di fusione e tipo di superficie - il .vtf contiene solo i dati dei pixel |
| Compressione | Nessuna compressione a livello di file; la compressione delle texture GPU (DXT1/DXT5/BCn) è integrata nei dati dei pixel memorizzati |
| Equivalente Source 2 | .vtex_c (compilato dalla pipeline VTex); VTF rimane attuale per i titoli del motore Source (Team Fortress 2, CS:GO, ecc.) |
| Rilasciato | 2004 (Half-Life 2 and Source engine launch) |
| Ultima versione | VTF 7.5 (Source engine); VTF 7.6 (Source 2 / Portal 2 on Linux) |
| Specifica | developer.valvesoftware.com |
Conversioni VTF
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file VTF.