home/ atoms/ displacement-map-vs-modulation-warp

Displacement-map is static structural coordinate offset; modulation-warp is its animated cousin driving continuous motion

Both displacement-map and modulation-warp work by offsetting texture-coordinate lookups — you sample a texture at shifted coordinates to produce distortion. They differ in intent and use context. Displacement-map uses a static height or noise map to produce a stable embossed, rippled, or refracted surface effect — the displacement is a structural property of the material, like bumps on a surface. Modulation-warp drives continuous animated deformation — the coordinates vary every frame, so the distortion is a motion property. Displacement-map is found in ‘texture and material’ (surface quality); modulation-warp is found in ‘motion’ (temporal dynamics). The animated form is better thought of as continuous domain warping.

Examples

Hydra displacement (static): .modulate(noise(3),0.1) where noise params are fixed — a marble pattern. Hydra modulation-warp (animated): .modulate(noise(()=>time*0.05),0.3) — the warp evolves, driving motion.

Assessment

A designer uses modulate() but finds the texture looks like marble (good) but doesn’t move (not what they want). Explain what change makes modulate() produce animated motion rather than static displacement, and state which concept domain each variant belongs to.

“`displacement-map` — offset texture lookups by a height/noise map for emboss, ripple, refraction, and fake relief (static structural displacement; the animated cousin is `modulation-warp` in `motion.md`).”
context/ · L2-composer/visual/texture.md · chunk 1