$basetexture
$basetexture is a material shader parameter available in all
Source games. It typically defines a diffuse texture. It is very rare for a material not to use this parameter and some shaders will load a default texture if it stays undefined.
VMT Syntax
$basetexture <texture without extension, relative to <game>/materials/>
LightmappedGeneric { $basetexture "brick/brickwall031b" }
Additional parameters
- $basetexturetransform <matrix>
- Transforms the texture before use in the material. This does not affect lightmaps on the surface.
Note:This will transform other textures such as $detail, $bumpmap and $envmapmask, if their own respective texture transform parameters haven't been set.
Sometimes, it can transform the textures even then. Usually when the Interpolator limit on the Vertex Shader Output is reached.
The extent to which this happens, varies drastically with Shader and even Branch of the Engine.
The Programmers cut down on required Interpolators by forcing textures to use the same UV and thus the same transform parameter.
As a general rule of thumb, base and envmapmask transforms stay separate, bump and detail transforms are prone to merge.
The default position is
center .5 .5 scale 1 1 rotate 0 translate 0 0.centerdefines the point of rotation. Only useful ifrotateis being used.scalefits the texture into the material the given number of times.2 1is a 50% scale in the horizontal X axis while the vertical Y axis is still at original scale.rotaterotates the texture counter-clockwise in degrees. Accepts any number, including negatives.translateshifts the texture by the given numbers..5will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
Note:All values must be included!
Bug:Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place. [todo tested in ?]
Bug:Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin. [todo tested in ?]
- $frame <integer>
- The frame displayed for a multi-frame texture. This is normally set by the
AnimatedTextureorToggleTextureproxies, but can be set manually.
Warning:The value must be a valid index, or crashes might occur.
$basetexture2
Some shaders (most notably WorldVertexTransition) allow the use of two diffuse textures. The second texture is handled by a mirrored set of commands with '2' in their name:
- $basetexture2 <texture>
- $basetexturetransform2 <matrix>
-
Bug: $basetexturetransform2doesn't exist in the DirectX 9 version of WorldVertexTransition, only working with the DX8 shader. In DX9,$basetexture2will instead move with the original$basetexturetransformin sync with$basetexture. This is the case in Source 2007, Source 2013, and Alien Swarm. Other games have not been tested. [todo tested in ?]
Code Fix: Mapbase adds support for $basetexturetransform2in Source 2013. The specific code can be found on its repository in the LightmappedGeneric shader files.
- $frame2 <integer>
There are further '2' commands applying to various shader effects, which are each documented in their respective articles.
See also
- $envmapmask (specular mask)
- $envmap (environment map)
- $phong (diffuse reflection)
- $selfillum