Since November 2015 I've been trying to write a guide on the proper creation of VTF and VMT files. My slight language barrier and especially the fact that I'm terrible at writing things means that I have no idea how to do this properly. I have made 4 textfiles filled with random information so far.
Maybe somebody can help me structure this and remove pointless things or add to more important parts?
Maybe somebody can help me structure this and remove pointless things or add to more important parts?
Code:
This first page is a simple explanation of this project
Textures and Materials will be explained
It should cover a lot, but not too much detail in less usefull parts
Links to the VDC, NoDraw.net and possibly other places will be provided
I’m not sure about the structure yet. Maybe you can help by copy+pasting and then giving me a link to what you got?
Comments are enabled for everybody.
Quick Info
What is a texture?
A bunch of values placed on a predefined grid
red, green, blue, black/white, alpha, frame
animation, cubemap, volumetric, mipmap
What types of textures are there and what are they used for?
diffuse/albedo, bumpmap/normalmap, envmap, masks, lightwarp, …
What is a material?
A textfile telling the game how to use the textures
Specifies many other properties
What makes materials different from another?
shaders
LightmappedGeneric, VertexLitGeneric, UnLitGeneric, ...
proxies
What file types are used and how are they special if at all
Textures: .vtf
stores a ton by itself
Materials: .vmt
a simple text file
What programs are used
VTFEdit to convert to .vtf + edit properties
Notepad++ to create and edit .vmts
File locations, naming, ?
tf/materials/, nature, concrete, other
tf/materials/models/, props_xyz, other
as short and descriptive as possible
numbers for identical names
letters for similar materials
VTF
Valve Texture Format
Stores any type of texture
Stores other special information like reflectivity color
VTFEdit creates one per drag+drop
Settings on texture creation are important to understand
General
Compression method?
Compressed
DXT1
DXT1 with one bit alpha
DXT3
DXT5
Uncompressed
RGB888
RGBA8888
I8
IA88
Alpha Y/N?
Animated/Cubemap/Volumetric?
Mipmap
Mipmap Filter
Sharpen Filter
What happens without a mipmap?
VTF Version
Compute Reflectiviy Y/N?
Generate Thumbnail Y/N?
Should other settings ever be changed?
Can also edit some of the properties
Point Sample
Clamping
No Mipmap / No Level Of Detail
Texture creation and explanation
Handpainted
image editors
diffuse/albedo
masks
lightwarp
Generated
programs (image editors, 3D-software, other)
bump/normalmap
buildcubemaps
Difficulties
Cubemaps and Skyboxes
Animations
VMT
Valve Material Type
Formatting
brackets "{ }"
shows a collection of information
the word right before the bracket specifies the type of information
examples
Shaders
Proxies
$color
{ } or [ ]
tab character " "
at the start of a line to better visualise brackets
inbetween words to give even spacing
makes reading/editing a lot easier for everybody
ignored by the game
space character " "
to seperate things
quotation marks """"
"keeps words or numbers together"
"mostly not required"
"a good habit to wrap them around everything"
Capitalization
Nothing is case sensitive - Can Be Used Whenever You Want To
MostlySeen when youCantUse spaces or_underscores
Line breaks
also ignored by the game
helps greatly in reading and editing
not using line breaks is the most horrible thing anybody could do
Creation
Create a .txt file and change file extension to .vmt
You might need to enable the ability of changing file extensions
Basics
Shader
Brushes
LightMappedGeneric
LightMappedTwoTexture
WorldVertexTransition
Water
Models
VertexLitGeneric
EyeRefract
Both
UnLitGeneric
UnLitTwoTexture
Wireframe
Parameter
$-Parameters
$basetexture
$nocull
$bumpmap
$detail
Transparency
$translucent
$alphatest
$additive
Phong and Rimlighting
Fake parameters (for proxies)
%-Parameters
%keywords
tool parameters
%CompileDetail
%CompileNodraw
%CompileHint
Proxy
TextureScroll
AnimatedTexture
Sine
ItemTintColor
SelectFirstIfNonZero
Specialties
Overlays
Code:
Strange words and their meanings:
Pixel
A single point that holds color related information
Pixels appear on your screen and are what images made out of
Texel
A Pixel that has been placed in a 3D-environment.
considering size, they almost never appear 1:1 with a pixel on your screen.
What is a texture?
A texture stores a lot of information in a grid-like space.
The stored informations are usually called "channel". Red-channel, Green-channel, Blue-channel, Alpha-channel. There also exists a special Black/White channel.
Red, Green and Blue are simply colors.
Black/White is used when only one channel is needed.
The Alpha-channel is usually seen for transparency, but games use it for all sorts of things.
This grid is usually two-dimensional but can also be three-dimensional.
In the source engine, the height and width are both limited to 2^n, where n is a whole number from 0 to 12. (1 pixel to 4096 pixels)
The third dimension "length" has no limitations. However, the increase in filesize can be a limitation.
Making use the third-dimension results in the texture being one of the following types:
An animated texture. Used for animations, like fire
A cubemap. Used for reflections. Mostly seen on glass and weapons.
A volumetric texture. Rarely used, if at all. I don't know how to make use of this myself.
Almost every texture also stores another dimension: Mipmaps.
Mipmaps are required for lower graphic settings, they make things look pretty from a distance and they reduce GPU-load.
What types of textures are there and what are they used for?
There are many different types of textures.
Most common is the diffuse map, also called albedo. It simply stores an image to be projected on a surface. Here is an example:
[IMAGE]
The second most common is the normalmap. In source, it is often refered to as "bumpmap". These are two different things, but the intention is the same: Three-Dimensional lighting on a two-dimensional surface.
The normalmap stores in what direction a pixel of the surface is pointing to, giving the engine enough information to fake the lighting. The different color-channels are used to the X Y and Z coordinates. Z always stays above 128, otherwise the surface would be pointing backwards, which is not possible.
[IMAGE]
Another quite common thing is the envmap. It stores a 3d image that represents the inside faces of a cube, making it 6 images. It is used for pre-made reflections on various surfaces.
[IMAGE]
There are also various types of "masks". They are used so that things like reflections appear in different intensity on a single surface. Most masks only require a single channel, which is why most of them are included in other textures as the Alpha-channel.
Examples of masks are the envmapmask,
[IMAGE]
the blendmodulate,
[IMAGE]
and the phongmask (only seen as the alpha-channel in albedos and normalmaps)
[IMAGE]
Lastly I want to show you the type of texture that has helped the most in making TF2 look like what is, while being be simplest texture of them all:
The lightwarp texture. It is a one-dimensional texture, meaning its just a row of pixels. Lightwarps tint a texel depending on how bright they are.
If you would try to make a lightwarptexture that doesnt actually affect anything, meaning you are trying to find the "default state", you would have a single grey pixel.
The tinting works like this: On the left, we have the color for the dark pixels. On the right, we have the color for the bright pixels.
[IMAGE]
What is a material?
Materials are simple textfiles. They tell the game what textures to use and how to use them.
They also tell the game more than just visual information. The type of surface, meaning what sound it makes when you walk on it or shoot it, is also specified in the material.
Code:
==Shaders==
LightMapped- //Hammer brushes
VertexLit- //Models
UnLit- //Anything; No lighting
-Generic //standart texture
-TwoTexture //enables $texture2
WireFrame //No textures; just a colored wireframe
EyeRefract //Eyes on models
==Parameters==
"$color2" "[1 1 1]" //R,G,B; works by multiplying; [1 1 1] does nothing; [0 0 0] makes black; [2 2 2] doubles brightness
"$basetexture" "FILEPATH STARTING AFTER (mod)/materials/" //The basis of the texture; the albedo
"$bumpmap" "FILEPATH STARTING AFTER (mod)/materials/" //normalmap
"$ssbump" "1" //Is the normal map actually a ssbump? 1 = yes
"$texture2" "FILEPATH STARTING AFTER (mod)/materials/" //Used by -TwoTexture; Multiplied onto albedo
Code:
What is VTF
Valve texture format, saves textures and some extra data about them.
Textures must be 2^N in both X and Y. (X and Y are usually refered to as U and V)
Multiple images can be stored in a single vtf. These are used mostly for animations and cubemaps.
What is VMT
Valve material type, saves properties of a surface.
This means which textures to use and how to use them.
Also controls how a surface is lit and other special effects.
Usefull Programs and Stuff
VTFEdit
GCFScape
Notepad++ Plugin https://developer.valvesoftware.com/wiki/Notepad%2B%2B_VDF_languages
Windows VTF Shell Extension https://developer.valvesoftware.com/wiki/VTF_Shell_Extensions
Making a VTF
Drag PNG or TGA in VTFEdit
You are greeted by a window with 3 tabs: General, Advanced, Resources
General
There are 4 sections here: General, Mipmaps, Resize, Normal Map
General
Normal Format and Alpha Format
Always pick the same for both to counteract any potential errors that might happen.
Look up the "What texture compression to use" part of this guide.
Texture Type
Most cases you will want "Animated Texture". Considering you only have a single frame, it will not actually be animated.
Mipmaps
When viewed in low texture resolution, from an angle or from far away, the texture will switch to a lower resolution of itself. These are called "Mipmaps".
You should always have "Generate Mipmaps" checked unless you have a very good reason not to! Preventing texture seems on a model is not a valid reason.
Mipmap Filer and Sharpen Filter are something you are gonna have to play around with. Some texture look better with a strong sharpen filter, others look better with a smoothen filter.
I generaly use Quadratic + Sharpen Soft
Resize
Don't even bother with this. It doesn't even seem to work anyways(?).
Normal Map
Don't bother with this either. Automated creation of normal maps is always a bad idea.
Advanced
Version
Pick 7.3 and never change it. Do not pick 7.4!
Gamma Correction
I dunno if that's a good idea to have checked. I have it unchecked.
Miscellaneous
Check "Compute Reflectivity" and "Genereate Thumbnail". Uncheck if you are making a texture that is not meant to be an albedo/diffuse/colormap. (Although keeping it checked won't hurt anybody)
DXT Compression
Always leave it on High.
The other settings here are weird and don't need to be touched.
Resources
Ignore this stuff unless you really wanna include information in the VTF, like "Hey look I made this texture".
Press "Ok"
There are 4 tabs on the left: File System, Image, Info, Resources.
Most of these are read-only. You will only ever need "Image" and "Info"
Image
Image
Frame
The frame of the animation. Click the arrows to look at the different frames or click "Play" below to have VTFEdit do the clicking for you.
Face
Look at a different side of a cubemap.
Slice
Look at a different slice of a volumetric texture.
Mipmap
Look at smaller version of the texture. Use this to check if your mipmaps settings are good or not.
Key, Shift, Gamma
These always appear greyed out for me, no idea what makes them useable.
Flags
Some important information is stored in these flags. Click the little box to place or remove a checkmark. Some flags are determined when the VTF is created, you can not change these afterwards!
Look up the "What do these flags do" part of this guide.
Info
Here you can find information about the texture, like the resolution, the file size and the compression format used.
Making a VMT
Try to copy existing VMTs and slightly edit them if you are having trouble understanding this stuff.
Every VMT starts with a Shader. Most common are LightmappedGeneric, VertexlitGeneric and UnlitGeneric.
Look up the "Which shader do I use" part of this guide.