Parallax mapping: Difference between revisions
Cheesemoo0 (talk | contribs) (→External links: Put in a working link) |
Kwp17pitts (talk | contribs) m (This page has a couple of dead links which were simply marked (dead link). Topic needs more up-to-date links and info.) |
||
Line 1: | Line 1: | ||
{{note|This '''downloadable''' shader only works in the ep1 engine }} | {{note|This '''downloadable''' shader only works in the ep1 engine }} | ||
{{note|Parallax mapping is currently disabled in the Source Engine shaders. However, it is very easy to implement with custom code; hardly any coding experience is needed. For an installable implementation, see the [http://www.hl2world.com/bbs/1-vt46068.html extended phong and parallax shader by Mihail Najdenov] or the [http://www.evilmod.de/view/base.php parallax mod by Twilight mod].}} | {{note|Parallax mapping is currently disabled in the Source Engine shaders. However, it is very easy to implement with custom code; hardly any coding experience is needed. For an installable implementation, see the [http://www.hl2world.com/bbs/1-vt46068.html extended phong and parallax shader by Mihail Najdenov](Dead Link) or the [http://www.evilmod.de/view/base.php parallax mod by Twilight mod](Dead Link).}} | ||
Revision as of 14:04, 7 October 2011


Parallax mapping (also known as offset mapping or virtual displacement mapping) is a shading technique that displaces the individual pixel height of a surface, so that when you look at it at an angle, the high points will obscure the low points behind them, making it look three-dimensional. The height data for each pixel comes from a heightmap texture, which needs to be created for each parallax mapped material.
Parallax mapping is an enhancement of the bump mapping technique. It is only worthwhile for textures that have a depth of at least a few centimeters, like deep-set bricks or stone.
Creating a parallax mapped material
Creating a heightmap
Regardless of the way you are going to render them, creating parallax mapped materials always starts with creating a heightmap, and placing it in the same folder as the texture it belongs to.
Adding a parallax map with the built-in support for parallax maps
Add these two lines to your Valve Material (.vmt) file:
"$parallaxmap" "texture name"
"$parallaxmapscale" <scale value>
Fill in the path and name of your heightmap on the first line, and a number between 0 and 1 on the second line. This number affects how deep the texture will look. 0.05
is an appropriate value for bricks.
Example VMT:
"LightmappedGeneric" { "$basetexture" "walls/brickwall" "$surfaceprop" "brick" "$bumpmap" "walls/brickwall_normal" "$parallaxmap" "walls/brickwall_height" "$parallaxmapscale" 0.05 }
Adding a parallax map with the Parallax Occlusion Shader mod

First, in the Valve Material (.vmt) file, after the line
"LightmappedGeneric"
add this line:
//"MN_PrlxLightmappedGeneric"
When playing a map with your parallax mapped material, comment out the first line. When compiling a map with your parallax mapped material in Hammer, comment out the last line. This (according to the author of the mod) is a workaround to a glitch in Source SDK.
Finally, add this line to your VMT file:
"$heightmap" "texture name"
Other parameters you may need:
"$heightscale"
, defines the "depth" of the effect, takes values 0.0—1.0, default=0.4
"$heightmapsample"
, default=16
"$envmap"
"$envmapcontrast"
"$envmaptint"
"$NORMALMAPALPHAENVMAPMASK"
Example VMT:
//"LightmappedGeneric" "MN_PrlxLightmappedGeneric" { "$basetexture" "walls/brickwall" "$surfaceprop" "brick" "$bumpmap" "walls/brickwall_normal" "$heightmap" "walls/brickwall_height" }
See also