Parallax Occlusion Mapping: Trace a Height Field With Predictable Limits
Use view-dependent height-field intersections to position surface detail, with explicit scale, sampling and silhouette limitations.
Contents
Define the surface being traced
Parallax occlusion mapping makes surface details appear at different depths by tracing a viewing ray through a texture height field. The intersection determines which texture coordinates supply the visible material. It can produce motion parallax and local occlusion without adding a dense geometric mesh. The original presentation describes a tangent-space height representation and angle-dependent sampling. [1]
Specify whether the texture encodes height or depth, its reference plane, physical scale and texture-coordinate orientation. A sign mismatch can turn recesses into protrusions or move details in the wrong direction.
Find and refine a crossing
A typical implementation advances the ray through height layers until the ray passes the represented surface, then refines that crossing. Sample material attributes at the resulting coordinates. A single offset computed from one height sample cannot describe all the occlusions encountered along a ray.
Coarse stepping can skip narrow features. Refinement improves an identified interval but cannot reliably recover a first intersection already skipped. The relief-mapping chapter explains this distinction and why specialized space-leaping methods need additional assumptions or data. [2] Choose the search method together with the height representation.
Worked example: keep height and UV units consistent
Consider a planar material with a depth range of 0.02 metres, viewed at 45 degrees from its normal. Across that entire depth interval, the ray travels 0.02 metres parallel to the plane because the tangent of 45 degrees is 1.
If one texture repeat spans 0.5 metres along that direction, the full tracing interval corresponds to 0.04 UV units. This is the interval's extent, not the final intersection offset: the actual height field determines where the ray hits. Doubling the texture repetition while keeping the physical depth requires updating the conversion. Reusing the old UV scale silently changes the apparent relief proportions.
Build a controlled validation scene
Start with a flat tile containing a broad step and a narrow ridge. Inspect it frontally, obliquely and near its border while moving the camera. Compare the traced coordinates with a geometric reference carrying the same height profile. Increase the sampling budget where oblique views require it, and check that quality changes do not create visible jumps. [1]
Keep height, normal and color inputs spatially aligned. Decide how rays leaving the tile are handled. If the implementation writes displaced depth or computes self-shadowing, verify those outputs separately against nearby geometry and the chosen lighting path. [2]
Respect the representation's limits
Basic height-field tracing on existing polygons does not create an extended geometric silhouette or physical collision shape. Overhangs are not represented by a single height per texture location. Deep relief, strong curvature and extreme grazing views expose the approximation. Limit the effect to materials where these constraints are acceptable and measure its texture-fetch cost at the intended screen coverage.
Sources
- [1] Practical Parallax Occlusion Mapping for Highly Detailed Surface Rendering — Natalya Tatarchuk, ATI Research, SIGGRAPH course presentation.
- [2] Relaxed Cone Stepping for Relief Mapping — Fabio Policarpo and Manuel M. Oliveira, GPU Gems 3.
Scope and basis
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Knowledge as of: 2026-10-11. Status: unreviewed (no documented review) — edits reset the review status. Treat the text as unverified reference material and check the sources.
Sources
- Practical Parallax Occlusion Mapping for Highly Detailed Surface Rendering — Natalya Tatarchuk, ATI Research, SIGGRAPH course presentation — checked 2026-10-12: reachable
- Relaxed Cone Stepping for Relief Mapping — Fabio Policarpo and Manuel M. Oliveira, GPU Gems 3 — checked 2026-10-11: reachable
Attribution and license
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Latest change: Original source-based game-development article.
Original contribution: CC BY 4.0. Linked source material retains its own rights.