Fractional Brownian motion with its gradient, normalized to roughly [-1, 1].
With damping > 0 this is Quilez's derivative-damped fBm. The returned
gradient then treats the damping factor as locally constant: differentiating
it properly needs the second derivatives of every earlier octave, which the
noise does not return. The error is second order in the damping and shows up
as a slightly under-stated slope on the steepest ground — which is exactly
where the damping has already flattened the detail that slope would come
from. Undamped, the gradient is exact.
norm accumulates the raw amplitude, not the damped one, because that is
the difference between attenuating detail and merely re-mixing it. Dividing by
the damped sum renormalizes every sample back to full range — the amplitude
the damping removed leaves the numerator and the divisor, so the octave
ratios barely move and the position-varying divisor injects structure of its
own. Measured as total variation along a 4,000-sample line at eight octaves,
that version got rougher as the damping rose: 29.3 undamped, 30.6 at
damping: 1.2, 41.7 at 24. Against the undamped norm it falls the way the
name says — 29.3, 11.9, 2.5 — and "roughly [-1, 1]" becomes an upper bound
rather than a target, which is what a worn landscape is.
The bias that argued for the damped divisor is real and belongs to the ridge
fold rather than to the norm; ridgedField remaps per octave and the comment
there carries the arithmetic.
- seedSeed
- Undocumented
- xnumber
- Undocumented
- ynumber
- Undocumented
- znumber
- Undocumented
- optionsPartial<FieldOptions>
- Undocumented