Distortion-free Displacement Mapping

Tobias Zirr and Tobias Ritschel

High-Performance Graphics 2019

Displacement mapping a textured surface introduces distortions of the displaced surface's texture. Our approach corrects this by counter-distorting the other texture maps according to the displacement map.

Abstract

Displacement mapping is routinely used to add geometric details in a fast and easy-to-control way, both in offline rendering as well as recently in interactive applications such as games. However, it went largely unnoticed (with the exception of McGuire and Whitson [2008]) that, when applying displacement mapping to a surface with a low-distortion parametrization, this parametrization is distorted as the geometry was changed by the displacement mapping. Typical resulting artifacts are ``rubber band''-like distortion patterns in areas of strong displacement change where a small isotropic area in texture space is mapped to a large anisotropic area in world space. We describe a fast, fully GPU-based two-step procedure to resolve this problem. First, a correction deformation is computed from the displacement map. Second, two variants to apply this correction when computing displacement mapping are proposed. The first variant is backward-compatible and can resolve the artifact in any rendering pipeline without modifying it and without requiring additional computation at render time, but only works for bijective parametrizations. The second variant works for more general parametrizations, but requires to modify the rendering code and incurs a very small computational overhead.

Downloads

Preprint Supplemental Video Correction Optimizer
(GLSL)
Interactive Online Tool
(WebGL)

Interactive WebGL Demo Implementation

The online viewer may be used for interactive undistortion of displaced surfaces, either by selecting your own textures or looking at one of the following online examples from the paper:
Primitives Cob Stones