• # Moving Noise

Graphics and GPU Programming

Introduction In July 1985, Ken Perlin introduced his much-used algorithm for producing organic randomness, now known as Perlin noise [1]. That function consists of four important subroutines:
• S-curve evaluation.
• Grid-point dot product evaluation.
• 3 bits for scale, indicating a value in range [0..7].
• 3 bits for direction, indicating [1,2], [1,-2], [-1,2], [-1,-2], [2,1], [2,-1], [-2,1], or [-2,-1].
• 1 bit for scale delta, indicating +1 or -1. For the 3D case, four bits are needed for direction, giving 4b (direction) + 3b (scale) + 1b (scale change) = 1B. The magic is that, when gradient vectors are scaled by zero, we can swap around the direction vectors without any noticeable effect. Then, when they are rescaled, the noise function takes on the new form determined by the gradient direction vectors. As gradient vectors change scale, new vectors are always reaching zero scale, and so gradient vector swapping occurs every time step. If you are familiar with the improved noise function, this may sound pretty simple. And it is! This approach also implies the constraint that gradient direction vectors must be stored in writable memory, of course, not constants. The 1D case is trivial, and the 3D case can be extrapolated from the Perlin improved noise code and an understanding of the dynamic noise approach. Higher dimensions are not presented. Graphics using dynamic noise (D Nielsen) Economy The dynamic noise implementation presented here requires the following measures over static noise:
• The table holding permutation values must be independent of that holding gradient lookup values.
• The dot products evaluated at grid points must be scaled.
• Time changes iteratively, not as a function parameter.

Report Article

## User Feedback

There are no comments to display.

## Create an account

Register a new account

• 0
• 24
• 0
• 1
• 0

• 26
• 10
• 11
• 9
• 9
×