Bump and Displacement - LuxRender Wiki
Luxrender GPL Physically Based Renderer

Bump and Displacement

Personal tools

From LuxRender Wiki

Jump to: navigation, search

For adding surface detail to your models, LuxRender supports bump, displacement, and microdisplacement mapping.

When using these features, it is important to remember the units that LuxRender uses. 1 unit in LuxRender equals one meter. So if you want a fairly small bump/displacement, use amounts like 0.01 or even 0.001 to start out.

As opposed to the diffuse, specular and transmission channels, bump and displacement maps just use the brightness of any texture, not the color value. That means if your texture has a color/float switch, be sure to set it to "float"


Bump Maps

Bump mapping is the process of locally redefining surface shading based on a texture, without changing the actual geometry. This way, one can create a lot of surface detail without using unnecessarily complex models.

Bump mapping is essentially "free" from a memory and performance standpoint, but since it does not actually affect the surface geometry, it only suited to fine details. Otherwise it can look obviously smooth and fake when viewed at an angle.

When using a bump map with a positive bump strength, the average color of the surface represents the base surface; any lighter shade will be considered a protrusion and any darker shade represents an indentation.

Normal Maps

Normal maps are a more advanced version of bump maps that can push the fake surface in any direction instead of simply up and down like a bump map can. Normal maps in LuxRender are used by attaching a special "normal map" texture to the bump mapping channel. When using a baked normal map (such as from a hi-res sculpted mesh) you should enable the "generate tangents" option for that mesh.

Currently, LuxRender only supports tangent space normal maps.

For more information, see Normal Mapping


Displacement is similair to bump mapping, however it modifies an object's actual surface geometry based on a texture. Optionally, the object surface can be subdivided, resulting in a more detailed shape.

The distance units for displacement are identical to the ones used for bump mapping, where 1 unit is equal to 1 meter. It is best to start off with small values.

Since displacement normally requires a very high level of subdivison, it can increase RAM usage correspondingly. If this is a problem, microdisplacement can be used instead.


Microdisplacement is a method of displacing the surface on the fly, as the ray intersects it. This removes the need to pre-subdivide the mesh and store all the extra polygons in RAM, however it means part of the displacement calculation must be performed every time a ray strikes the surface. This can reduce performance, sometimes drastically if a high subdivision level is used. Microdisplacement subdivision works differently from the normal loop subdivision used for regularly displacement or smoothing out meshes. You will need more levels, such as 5-20 or more, to get a proper effect.

Micro displacement monkey.jpg