Author Archives: briansharpe

About briansharpe

Computer games and graphics programmer interested in procedural modeling and texturing techniques. Current Work: Weta Digital. Work history: Sidhe Interactive, Sony London (SCEE), Pandromeda,

Analytical Noise Derivatives

Procedural noise functions return smoothly varying results as calculated from spatial coordinates (as the spatial coordinate changes so does the value). The derivatives of procedural noise functions can be useful in many different ways. eg – analytical bump/normal mapping – … Continue reading

Posted in Uncategorized | 5 Comments

Adding a 4th dimension

In a previous post I describe a fast 32-bit hash function which I’ve been using as the basis for all noises documented on this site.  Recently I have made some changes to it resulting in… Improved flexibility A slight improvement … Continue reading

Posted in Uncategorized | Leave a comment

Modifications to Classic Perlin Noise

I have been working with analytical noise derivatives lately and it turns out the analytical derivative of classic perlin noise can get rather involved. Ken Perlin solved this problem in simplex noise by using radial kernel summation rather than interpolation … Continue reading

Posted in Uncategorized | 5 Comments

Hermite Noise

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 … Continue reading

Posted in Uncategorized | Leave a comment

Simplex Noise

In 2001 Ken Perlin introduced a new type of gradient noise called Simplex Noise.  The document can be found here.  It is essentially his original gradient noise mapped onto a simplex grid.  The term “Simplex” means the simplest possible primitive … Continue reading

Posted in Uncategorized | 19 Comments

PolkaDot, Star and Cubist Noises

I’ve uploaded three new noise types to the GitHub repository.  The first is a PolkaDot style noise in both 2D and 3D which generates smooth falloff dots at random sizes, intensities and locations over a uniform grid.  ( There’s even … Continue reading

Posted in Uncategorized | Leave a comment

Optimized Artifact-Free GPU Cellular Noise

Cellular Noise is a noise basis which mimics a voronoi diagram.  It was first proposed by Steven Worley in his 1996 paper “A Cellular Texture Basis Function” and has been used extensively by the graphics community ever since. Stefan Gustavson … Continue reading

Posted in Uncategorized | 7 Comments

GitHub code repository

I always like it when people provide clean implementations of their work which can be dropped easily into a project without much programmer effort.  Stefan Gustavson and Ian McEwan have done this at webgl-noise so I’ve decided to take their … Continue reading

Posted in Uncategorized | Leave a comment

A fast and simple 32bit floating point hash function

In a previous post I reviewed two existing floating point hash functions which are suitable for use in fragment shaders.  These were the BlumBlumShub and Permutation Polynomial hash functions used in MNoise and WebGLNoise.  If curious, here is a link … Continue reading

Posted in Uncategorized | 4 Comments

Useful Interpolation Functions for Noise Development

Interpolation functions allow us to calculate a transition between discreet points.  They are used in noise development.   Here are some common types. Smooth interpolation of a linear input from 0.0 to 1.0 This is a very common interpolation function.  It … Continue reading

Posted in Uncategorized | 1 Comment