Quintic Hermite Interpolation allows us to interpolate a value with respect to 3 variables. Its position, velocity and acceleration. In mathematical terms this translates to the function and its 1st+2nd derivative. More information on Quintic Hermite Interpolation can be found here.
Recall from a previous post that we require an interpolation function to have a 2nd derivative of 0.0 at the start+end points in order to be continuous for bump mapping. This is where Quintic Hermite Interpolation is useful. It allows us to explicitly use 0.0 for the start+end acceleration which will generate a C2 continuous curve. It also allows us to supply whatever we want for velocity giving us control of the gradient at grid lattice points. If the gradient vectors are normalized we get a look very similar to that of Classic Perlin noise. Here are some initial observations…
- In some cases it can run slightly faster than Classic Perlin noise, but usually runs slightly slower.
- The derivatives are non-zero along grid lines. ( unlike classic perlin )
- Given the separable nature of hermite interpolation the analytical derivatives can be easily implemented.
I have uploaded initial 2D+3D implementations of Hermite and ValueHermite Noise to the GitHub repository. ( like ValuePerlin, ValueHermite is a uniform blend between Value and Hermite noise )