vtex2 is a Valve Texture Format conversion and creation tool. It has a CLI and a GUI component for viewing, packing and otherwise converting the files.
Command help documentation and usage examples can be shown on the command line using vtex2 --help.
For action-specific help, use vtex2 <action> --help.
Creating a VTF can be done with the vtex2 convert action.
For example, the following command will create a VTF called some-file.vtf with the format BGRA8888:
vtex2 convert -f bgra8888 some-file.jpg
If you pass a directory to vtex2 convert, it will convert all files in that directory. The -r or --recursive parameter
will cause the program to descend and process subdirectories too.
Full list of options:
USAGE: vtex2 convert [OPTIONS] file...
  Convert a generic image file to VTF
Options:
  --bumpscale          Bumpscale
  --clamps             Clamp on S axis
  --clampt             Clamp on T axis
  --clampu             Clamp on U axis
  --gamma-correct      Apply gamma correction
  --pointsample        Set point sampling method
  --srgb               Process this image in sRGB color space
  --start-frame        Animation frame to start on
  --thumbnail          Generate thumbnail for the image
  --trilinear          Set trilinear sampling method
  --version            Set the VTF version to use
  -c,--compress [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
                       DEFLATE compression level to use. 0=none, 9=max. This will force VTF version to 7.6
  -f,--format [rgba8888, abgr8888, rgb888, bgr888, rgb565, i8, ia88, p8, a8, rgb888_bluescreen, bgr888_bluescreen, argb8888, bgra8888, dxt1, dxt3, dxt5, bgrx8888, bgr565, bgrx5551, bgra4444, dxt1_onebitalpha, bgra5551, uv88, uvwq8888, rgba16161616f, rgba16161616, uvlx8888, r32f, rgb323232f, rgba32323232f, ati2n, ati1n]
                       Image format of the VTF
  -m,--mips            Number of mips to generate
  -n,--normal          Create a normal map
  -o,--output          Name of the output VTF
  -r,--recursive       Recursively process directories
  file                 Image file to convert
Extracting image data from a VTF can be done using vtex2 extract.
For example, the following command will extract the VTF to some-file.jpg:
vtex2 extract -f jpg some-file.vtf
If you pass a directory to vtex2 extract, it will convert all files in that directory. The -r or --recursive parameter
will cause the program to descend and process subdirectories too.
Full list of options:
USAGE: vtex2 extract [OPTIONS] file...
  Converts a VTF into png, tga, jpeg, bmp or hdr image file
Options:
  -f,--format [png, jpeg, jpg, tga, bmp, hdr]
                       Output format to use
  -m,--mip             Mipmap to extract from image
  -na,--no-alpha       Exclude alpha channel from converted image
  -o,--output          File to place the output in
  -r,--recursive       Recursively process directories
  file                 VTF file to convert
The vtex2 info command can be used to display some info about VTF files.
Full list of options:
USAGE: vtex2 info [OPTIONS] file...
  Displays info about a VTF file
Options:
  -a,--all             Display all detailed info about a VTF
  -r,--resources       List all resource entries in the VTF
  file                 VTF file to process
The first step is to clone the repository. Make sure to do a recursive clone!
git clone https://github.com/StrataSource/vtex2.git --recursive
Required packages:
- qtbase5-dev (Optional, only for GUI)
- cmake
- make or ninja
mkdir build && cd build
cmake ..
make -j$(nproc)You must install Qt5 (Or 6, the viewer may work with that too). Make note of the install directory.
CMake and Visual Studio 2022 or 2019 are required.
(From powershell)
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -DQT_BASEDIR=C:\path\to\my\Qt5
You can then open build\vtex2.sln in Visual Studio and compile from there.