Dune Field

Surface study no. 04

Form that refuses to hold still.

A studio for identities that move. We cast brands in liquid metal, then let them settle into something you can hold.

About this component

Dune Field

A photoreal desert at golden hour, raymarched in a WebGL shader. Dunes rise on a long windward slope to a sharp crest and fall away on a steep lee face, their crest lines curving across a broad swell of land. A low sun rakes across them: lee faces fall into soft shadow tinted by the sky, fine wind ripples catch the light, quartz grains glint, and the distance fades into a warm haze that carries the sun's glow. The camera glides slowly over the dunes and turns gently with the cursor, and on arrival the light comes up out of the dusk. Sand, sky, haze and sun colors, sun height and angle, dune size and ripples are all props. Pauses offscreen and adapts its resolution to keep the glide smooth. Reduced motion shows a still view.

Usage

The import and the props worth knowing about, in one place.

import { DuneField } from "@/components/beste/component/dune-field";

<DuneField className="h-[40rem]" />

<DuneField
  sandColor="#c98f5a"
  skyColor="#5f7fb0"
  sunHeight={0.12}   // a lower sun, longer shadows
  sunAngle={40}      // light from the right
  scale={1.3}        // bigger dunes
  className="absolute inset-0"
/>

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
sandColorstring—Color of the sand in full sun. Any CSS color.
skyColorstring—Sky overhead; it also tints the shadows.
hazeColorstring—Haze at the horizon, where the distance fades.
sunColorstring—Color of the low sun and its glow.
sunHeightnumber—How high the sun stands, 0 (on the horizon) to 1 (well up). Low suns throw long shadows.
sunAnglenumber—Where the sun stands relative to the view, in degrees (-90 left, 0 ahead, 90 right).
scalenumber—Size of the dunes, 0.6 (small) to 1.6 (vast).
ripplesnumber—Fine wind ripples on the sand, 0 to 1.
speednumber—Speed of the camera's glide, 1 is the default pace.
grainnumber—Film grain, 0 to 1.
interactiveboolean—The view turns gently with the cursor.
pausedboolean—Hold the camera where it is.
classNamestring—
childrenReactNode—

More Background components

View all Background