Co to jest format pliku VTF?
Plik .vtf to plik Valve Texture Format - zastrzeżony binarny kontener tekstur używany przez silnik Source firmy Valve, wprowadzony po raz pierwszy wraz z grą Half-Life 2 w listopadzie 2004 roku. Pliki VTF przechowują skompresowane lub nieskompresowane dane tekstur gotowe do użycia przez GPU wraz z wstępnie zbudowaną piramidą mip-map oraz małą miniaturką skompresowaną w formacie DXT1, używaną do podglądu w silniku.
Plik zaczyna się od 4-bajtowej sygnatury magicznej VTF\0 (hex 56 54 46 00), po której następuje para wersji major/minor (major to zawsze 7; minor mieści się w zakresie od 0 do 6). Nagłówek koduje wymiary obrazu, liczbę klatek, głębię (dla tekstur wolumetrycznych), liczbę ścian cube-mapy, wektor koloru współczynnika odbicia oraz wyliczenie (enum) formatu pikseli. Wersja 7.3 dodała rozszerzalną sekcję zasobów dla dowolnych fragmentów metadanych zdefiniowanych przez silnik.
Obsługiwane formaty pikseli obejmują DXT1 (4 bpp), DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp) oraz RGBA16161616F (64 bpp HDR). Wymiary obrazu muszą być potęgami liczby dwa, zazwyczaj do 4096×4096 w typowych zastosowaniach.
Tekstury .vtf są zawsze sparowane z plikiem .vmt (Valve Material Type), który definiuje parametry shadera, typ powierzchni i tryby mieszania, odwołując się do pliku .vtf po nazwie. VTFEdit jest standardowym narzędziem społecznościowym do tworzenia i edycji plików .vtf poza pakietem Valve SDK.
W silniku Source 2 odpowiednikiem skompilowanej tekstury jest .vtex_c, generowany przez potok VTex zamiast VTFEdit.
Bezpieczeństwo
RYZYKO: LOWVTF to plik danych tekstur bez kodu wykonywalnego. Złośliwie przygotowane pliki VTF mogłyby teoretycznie wywołać błędy parsera w VTFLib/VTFEdit (przepełnienia bufora w polach wymiarów lub formatu), ale jest to obawa teoretyczna. W praktyce należy otwierać pliki VTF tylko z zaufanych źródeł gier lub modów.
Szczegóły formatu
w pigułceProgramy otwierające pliki VTF
Szczegóły techniczne
specyfikacja| Magic bytes | 56 54 46 00 („VTF\0”) pod offsetem 0; wersja główna (zawsze 7) i wersja podrzędna (0-6) pod offsetem 4 jako dwa DWORDy |
| Kolejność bajtów | Little-endian |
| Formaty pikseli | DXT1 (4 bpp), DXT3, DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp), RGBA16161616F (64 bpp HDR); wybierane przez enum formatu w nagłówku |
| Piramida mip-map | Pełny łańcuch mip-map przechowywany od najmniejszego do największego poziomu; liczba mip-map określona w nagłówku; używane do renderowania LOD |
| Miniaturka | Mały podgląd o niskiej rozdzielczości skompresowany w DXT1, przechowywany w obszarze nagłówka; używany przez silnik do szybkiej identyfikacji zasobów |
| Typy tekstur | Tekstury 2D, cube-mapy (6 ścian), tekstury wolumetryczne/3D, animowane sprite'y (wieloklatkowe), mapy normalnych |
| Ograniczenia wymiarów | Wymagana potęga liczby dwa (przed v7.5); typowe maksimum 4096x4096; niektóre wersje Source obsługują do 16384x16384 |
| Sekcja zasobów | Rozszerzalne bloki danych zasobów dodane w v7.3, pozwalające na dowolne metadane zdefiniowane przez silnik; używane m.in. dla danych arkuszy cząsteczek |
| Typowy rozmiar | 4 KB - 32 MB w zależności od rozdzielczości, poziomów mip-map i formatu pikseli |
| Format sparowany | Zawsze używany z plikiem .vmt (Valve Material Type) definiującym shader, tryb mieszania i typ powierzchni - .vtf zawiera wyłącznie dane pikseli |
| Kompresja | Brak kompresji na poziomie pliku; kompresja tekstur GPU (DXT1/DXT5/BCn) jest wbudowana w przechowywane dane pikseli |
| Odpowiednik w Source 2 | .vtex_c (kompilowany przez potok VTex); VTF pozostaje aktualny dla tytułów na silniku Source (Team Fortress 2, CS:GO itp.) |
| Wydano | 2004 (Half-Life 2 and Source engine launch) |
| Najnowsza wersja | VTF 7.5 (Source engine); VTF 7.6 (Source 2 / Portal 2 on Linux) |
| Specyfikacja | developer.valvesoftware.com |
Konwersje VTF
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki VTF.