A displaced landscape; 2D displacement was used; the displacement map is a  Simbiont  procedural texture.

VRayDisplacementProperty Overview


Displacement mapping is a technique for adding detail to your scene geometry without having to model it first. The concept is very similar to bump mapping. However, bump mapping is a shading effect that only changes the appearance of a surface, while displacement mapping actually modifies the surface. You can apply the VRayDisplacementProperty by selecting the object(s) and choosing Get>Property> VRay Object from the Render menu.

Example: Displacement vs Bump Mapping

This example shows the difference between bump mapping and displacement mapping. Notice the round outline of the sphere and its shadow in the case of bump mapping, and the deformed outline produced by the displacement:

Bump mapping

Displacement mapping

The displacement map in this case is a 3d Cellular map; the 3D displacement method was used.

VRayDisplacementProperty


Use globals - when this option is enabled, the settings in the  Default Displacement will be used; otherwise this property will override the displacement settings for the current object.

Displacement Type  - the method used to apply displacement mapping:

  • 2D displacement  - for this method the displacement is based on a texture map that is known in advance. The displaced surface is rendered as a warped height-field based on that texture map. The actual raytracing of the displaced surface is done in texture space, and the result is mapped back into 3d space. The advantage of this method is that it preserves all the details in the displacement map. However, it requires that the object has valid texture coordinates. You cannot use this method for 3d procedural textures or other textures that use object or world coordinates. The displacement map can take any values (as opposed to Normal Displacement, which will ignore values outside the 0.0-1.0 or black to white range).
  • Normal displacement  - this is a general method which takes the original surface geometry and subdivides its triangles into smaller sub-triangles which are then displaced. It can be applied for arbitrary displacement maps with any kind of mapping. Note that with  Normal Displacement  the displacement map's range of values must be within the 0.0-1.0 range (black to white). Values outside of this range will be clipped.
  • Subdivision  - this method is similar to the Normal displacement method, with the difference that it will apply a subdivision scheme to the object. For triangular portions of a mesh, the Loop subdivision scheme is used. For quadrangular portions, the Catmull-Clark scheme is used. Other polygons are first converted to triangles.  If just want to smooth the object, without applying a displacement map, set the Amount parameter to 0.0.

Example: Subdivision Displacement

Here is an example of subdivision displacement (head model by Alexander Sokerov):

No subdivision or displacement

Only subdivision (displacement  Amount is 0.0)

Subdivision and displacement

  • Vector displacement - If you have a displacement texture that is not grayscale V-Ray will convert it to grayscale before rendering the displaced geometry. When this option is enabled it allows V-Ray to use the Red, Green and Blue channels of the displacement texture to displace the geometry in the U and V directions in addition to the normal of the face

Note: To use a vector displacement texture, open the Render Tree for the object to which you have applied the VRayDisplacementProperty. Then connect a texture node to the "Displacement" port of your material root node. A "Color To Scalar" node will automatically appear between them. V-Ray will ignore the "Color To Scalar" node and will take the vector values directly from the texture. This is a workaround for Softimage's lack of a color displacement port.

Which method to use? In previous V-Ray versions, there was a great difference between the performance of the two methods, with the 2D mapping being faster in many cases. With the introduction of dynamic geometry handling in V-Ray 1.45.xx, 3d displacement has become a lot faster for similar or better quality compared to the 2d mapping. Still, for large displaced surfaces like oceans or mountains, the 2d mapping method might work better.

Also the 2D mapping method keeps the displacement map in a precompiled state in memory. Large displacement maps can take a lot of RAM. It may be more efficient to use 3D mapping in that case, since it can recycle the memory used for the displaced geometry.

Common Parameters


Amount  - the amount of displacement. A value of 0.0 means the object will appear unchanged (or simply smoothed, if you use the Subdivision method). Higher values produce a greater displacement effect. This can also be negative, in which case the displacement will push geometry inside the object.

Shift  - this specifies a constant, which will be added to the displacement map values, effectively shifting the displaced surface up and down along the normals. This can be either positive or negative.

Enable water level  - allows you to enable and disable the  Water level  option.

Water level  - this will clip the surface geometry in places where the displacement map value is below the specified threshold. This can be used for clip mapping a displacement map value below which geometry will be clipped.

Example: Clip Mapping

Note: The Water level parameter is also absolute in world units. If you change the Amount and/or Shift, you will probably need to adjust the Water level to get the same effect. For this example, the Amount parameter is set to 5.0 and the Shift parameter is set to 0.0.

Water level = 0.0 (no clipping)

Water level = 1.25

Water level = 2.5

Water level = 3.75

Water level = 5.0 (all geometry is clipped)
 

This example demonstrates the use of displacement mapping to clip away geometry from an object. The displacement map is a mix of a Noise map and a tiled Gradient ramp map; the dark regions of the map are clipped away:

In this case the displacement map was applied to an explicit mapping channel; 2D displacement was used in this case.

Tight bounds  - when this is on, V-Ray will try to compute the exact bounding volume of the displaced triangles from the original mesh. This requires pre-sampling of the displacement texture, but the rendering will be faster, if the texture has large black or white areas. However, if the displacement texture is slow to evaluate and varies a lot between full black and white, if may be faster to turn this option off. When it is off, V-Ray will assume worst-case bounding volumes, and will not presample the texture. Note that this affects only the 2d displacement and Normal displacement modes; with the Subdivision method V-Ray will always compute the exact bounding volume and this parameter is ignored.

2D Displacement


Resolution  - this determines the resolution of the displacement texture used by V-Ray. If the texture map is a bitmap, it would be best to match this resolution to the size of the bitmap. For procedural 2d maps, the resolution is determined by the desired quality and detail in the displacement. Note that V-Ray will also automatically generate a normals map based on the displacement map, to compensate for details not captured by the actual displaced surface.

Precision  - this parameter is related to the curvature of the displaced surface; flat surfaces can do with a lower precision (for a perfectly flat plane you can use 1), more curved surfaces require higher values. If the precision is not high enough you can get dark spots ("surface acne") on the displacement. Lower values compute faster.

Filter texture  - if this is on, the texture map will be filtered.

Filter Blur  - this is the strength of the blur filter that will be applied.

3D Displacement/Subdivision


Edge length  - this determines the quality of the displacement. Each triangle of the original mesh is subdivided into a number of sub triangles. More sub triangles mean more detail in the displacement, slower rendering times and more RAM usage. Less sub triangles mean less detail, faster rendering and less RAM. The meaning of Edge length  depends on the View-dependent parameter below.

View-dependent  - when this is on,  Edge length determines the maximum length of a sub triangle edge, in pixels. A value of 1.0 means that the longest edge of each sub triangle will be about one pixel long when projected on the screen. When View-dependent is off, Edge length is the maximum sub triangle edge length in world units.

Max. subdivs  - this controls the maximum sub triangles generated from any triangle of the original mesh. The value is in fact the square root of the maximum number of sub triangles. For example, a value of 256 means that at most 256 x 256 = 65536 sub triangles will be generated for any given original triangle. It is not a good idea to keep this value very high. If you need to use higher values, it will be better to tessellate the original mesh itself into smaller triangles instead. From build 1.45.20 onward, the actual subdivisions for a triangle are rounded up to the nearest power of two (this makes it easier to avoid gaps because of different tessellation on neighboring triangles).

Use bounds  - when using a texture that has color values beyond the standard 0-1 you can enable this check box and manually specify the value range of the texture. If you don't do that the colors in the texture will be automatically clipped to 0 and 1.

Min bound  - a boundary for the smallest color value in the texture used for displacement.

Max bound  - a boundary for the largest color value in the texture used for displacement.

Example: Texture Boundaries

This example shows a plane mapped with a displacement map that has negative values. With the default boundaries for the displacement we are unable to see the geometry displaced in the negative direction. However once we set the custom boundaries to -1 and 1 we can see the displaced geometry in both the positive and negative direction.

Min bound  = 0 ;  Max bound  1

Min bound  = -1 Max bound  1

Keep continuity  - using this will try to produce a connected surface, without splits, when you have faces from different smoothing groups and/or material IDs. Note that using material IDs is not a very good way to combine displacement maps since V-Ray cannot always guarantee the surface continuity. Use other methods (vertex colors, masks etc) to blend different displacement maps.

Example: The Keep Continuity Option

The  Keep continuity  option is useful for objects with disjoint normals on neighboring triangles, usually because of different smoothing groups. In the middle image below you can see the edge splits produced by disjoint normals. Using the Keep continuity option avoids this problem. This option will also help to produce a smoother result across material ID boundaries for objects with multi/subobject materials.

No displacement

Keep continuity  is off

Keep continuity  is on

Static geometry   - when enabled  the displacement geometry is pre-compiled into an accelerati on structure at the beginning of the rendering and remains there until the end of the frame.  This may speed up the rendering and will increase the memory usage.

Smooth UVs At borders  - allows you to choose whether or not the UVs of the object will be subdivided at the borders.

Smooth UVs  - enables or disables the subdividing of the objects UVs.

Preserve map borders - his parameter allows you to preserve UV boundaries and not smooth them when the Smooth UVs option is enabled.  

  • All - all boundary UVs will be preserved and not smoothed.
  • Internal - only internal boundaries will be preserved. Internal boundaries are UVs that are split in the UV space but are connected on the geometry. This option ensures that there is no smoothing of the UVs where they are stitched together.
  • None - all boundaries will be smoothed

Classic Catmull-Clark - when this option is enabled V-Ray will use the Classic Catmul Clark method for subdividing the mesh instead of the hybrid one used by default. This option should be enabled only if the mesh is composed entirely of rectangular faces or it will not work.

Notes


  • Textures are applied to the displaced surface; therefore textures with Object XYZ and World XYZ mapping may look different on the displaced object, compared to how they look on the original undisplaced one. If this is not desired (e.g. you want the displacement map to match the texture) use explicit channel mapping for the material textures; use the Object XYZ/World XYZ mapping for displacement maps only.
  • VRayDisplacementProperty has no effect on VRayPlane objects and VRayProxy objects.