Parallax mapping: Difference between revisions
No edit summary |
m (Soyka moved page Parallax mapping to Parallax mapping/en: MultiPage) |
(No difference)
| |
Revision as of 14:36, 25 July 2023
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 $parallaxmap 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.
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
Example VMT:
"MN_PrlxLightmappedGeneric"
{
"$basetexture" "walls/brickwall"
"$surfaceprop" "brick"
"$bumpmap" "walls/brickwall_normal"
"$heightmap" "walls/brickwall_height"
}
Adding parallax map with Thexa4's PBR shader mod
To make the effect work you will need to have these 3 parameters in your VMT:
Enables/Disables parallax mapping.
$parallax <bool>
Controls the intensity of the parallax effect.
$parallaxdepth <float>
Center depth of the Parallax Map.
$parallaxcenter <float>
To make the parallax mapping work you will need to put your Heightmap into the Bump_map's alpha channel!!
Example VMT:
"PBR"
{
"$basetexture" "pbr/rock_color"
"$bumpmap" "pbr/rock_bump" //important you need to put your heightmap into the bumpmaps alpha channel
"$mraotexture" "pbr/rock_mrao"
"$envmap" "env_cubemap"
"$surfaceprop" "Default"
"$model" "0"
"$parallax" "1"
"$parallaxdepth" "0.030"
"$parallaxcenter" "0.5"
}