Vtex CLI use
Apart from the drag-and-drop method, Vtex can also be executed via the command prompt in the Command Line Interface (MS-DOS). This will allow you to use its more advanced features. You can provide additional parameters to create a basic .vmt file when the texture is compiled, as well as other options.
The syntax for vtex.exe
is as follows:
vtex [-quiet] [-nopause] [-mkdir] [-shader ShaderName] [-vmtparam Param Value] texture1 texture2 ...
Any file extentions are ignored. (You can refer to the non-existant texture1.asd without problems, as long as the tga image is still present.)
Basic Vtex usage
- Command-line may explain this better.
The Windows environment variable "%sourcesdk%
" can be utilized to locate vtex.exe
easily in a command-line statement. This variable contains the location of the Source SDK installation directory.
For example, to compile a Half-Life 2 material called "sample_material.tga
" in the directory "sourcesdk_content/hl2/materialsrc/metal
", you would open a command prompt, change to the directory to "sourcesdk_content/hl2/materialsrc/metal
" and type this at the command-line:
"%sourcesdk%\bin\vtex" sample_material.tga
The compiled .vtf file would be compiled to this folder (assuming you had set Half-Life 2 as your current game directory):
SteamApps\username\half-life 2\hl2\materials\metal
Vtex commands
-mkdir
You can add the -mkdir
command to vtex, and it will add the destination directory if it does not exist. For example, if you had a .tga at /sourcesdk_content/hl2/materialsrc/sample/sample_material.tga
you would type this at the command-line:
"%sourcesdk%\bin\vtex" -mkdir sample_material.tga
This would create a new directory called "sample
" in your Half-Life 2/hl2/materials
directory, if it didn't already exist, and then place the compiled .VTF file in that new location. If the directory already exists, the -mkdir
parameter is ignored.
-shader
You can use the -shader <shadername>
command to have Vtex create a .VMT for the new material with the shader specified. For example, to create a basic LightmappedGeneric
material, use the -shader
command like this:
"%sourcesdk%\bin\vtex" -shader LightmappedGeneric sample_material.tga
This would compile the material sample_material.vtf in half-life 2/hl2/materials/metal
as well as create a new material file sample_material.vmt
in the same location, using the LightmappedGeneric
shader, like this:
"LightmappedGeneric" { "$baseTexture" "sample/lightmappedgeneric" }
-vmtparam
The -vmtparam <parameter> <value>
command can be used to add additional material parameters to the created .vmt file. If a .vmt already exists in the same location, any new parameters will not be added. For example, to make a material translucent, type the following:
"%sourcesdk%\bin\vtex" -shader LightmappedGeneric -vmtparam $translucent 1 sample_material.tga
Which would create the following sample_material.vmt
:
"LightmappedGeneric" { "$baseTexture" "sample/lightmappedgeneric" "$translucent" 1 }
Multiple -vmtparam
statements can be added in the same Vtex command, like this:
"%sourcesdk%\bin\vtex" -shader LightmappedGeneric -vmtparam "$bumpmap" "sdk/bumpspecular_normal" -vmtparam "$envmap" "env_cubemap" sample_material.tga
This would create the following sample_material.vmt
specifying parameters for a bumpmapped specular material:
"LightmappedGeneric" { "$baseTexture" "sample/sample_material" "$bumpmap" "sdk/bumpspecular_normal" "$envmap" "env_cubemap" }
-quiet
When added, this commands will cause Vtex to do its work without producing any output to the console and will not pause when finished.
-nopause
Removes the "Hit a key to continue
" message that appears when Vtex has finished working.
-outdir
You can use the -outdir <parameter> <value>
command to override the output directory out the VTF file.
-quickconvert
Used to quickly convert an older VTF file format to a newer VTF file format.
-dontusegamedir
Puts output files in same folder as input files. Best used with -quickconvert
Wildcards
Command-line wildcards can also be used with Vtex. This command-line would compile all .tga files in the current directory:
"%sourcesdk%\bin\vtex" *.tga
This command-line would compile all .tga files in the current directory with names than begin with "sample":
"%sourcesdk%\bin\vtex" sample*.tga
In this case, the files "sample_metal
" and "sample3
" would be compiled, but not "samp_metal
" or "sampl_2
".
Chaining
Vtex can compile multiple materials from the same command-line. Simply add the name of each .tga after the first, like this:
"%sourcesdk%\bin\vtex" sample_material1.tga sample_material2.tga sample_material3.tga
If a .vmt is generated on the command-line using the -shader
command, a unique .vmt will be created for each .tga in the chain, all with the same parameters specified by the -shader
and -vmtparam
commands. If you need more individual control of the shader parameters of each .tga, use a batch (.bat) file to run vtex multiple times instead.