simplex-noise is a fast simplex noise implementation in Javascript. Works in node and in the browser.
npm install simplex-noise-esmsimplex-noise.js is a fast simplex noise implementation in Javascript. It works in the browser and on nodejs.
- Simple 2D plasma on codepen.io.
- 3D voxel world generation example.
- Film grain in analog film emulator.
By default simplex-noise.js will use Math.random() to seed the noise.
``javascript`
// initializing a new simplex instance
// do this only once as it is relatively expensive
var simplex = new SimplexNoise(),
value2d = simplex.noise2D(x, y),
value3d = simplex.noise3D(x, y, z),
value4d = simplex.noise4D(x, y, z, w);
You can also pass in a seed string which will then be used to initialize
the noise using the built in alea PRNG.
`javascript
var simplex = new SimplexNoise('seed'),
value2d = simplex.noise2D(x, y),
sameSeed = new SimplexNoise('seed'),
differentSeed = new SimplexNoise('different seed');
sameSeed.noise2D(x, y) === value2d
differentSeed.noise2D(x, y) !== value2d
`
You can also pass an alternative random function to the constructor that is
used to build the permutation table.
This can be used with a custom pseudo random number generator:
`javascript`
var random = new Alea(seed),
simplex = new SimplexNoise(random),
value2d = simplex.noise2D(x, y);
The ALEA PRNG can be found on in the npm package alea.
Node.js is also supported, you can install the package using npm.
`javascript`
var SimplexNoise = require('simplex-noise'),
simplex = new SimplexNoise(Math.random),
value2d = simplex.noise2D(x, y);
- Comparison between 2D and 3D noise
- Comparison with simplex implementation in three.js
For development you can open perf/index.html and watch the console or run node perf/benchmark.js in a shell.make compare
There is also a rake task for comparing your current changes can also run .
The command works using git stash.
There are some simple unit tests for this library to run them
`shell``
npm install && npm test
:warning: This release changes the output of the noise functions. :warning:
In the future such changes will be released as a new major version.
- Corrected generation of permutation table
- Moved tests to mocha/chai
- Cleanup
It requires typed arrays. If you want to use it in browsers without support
you will need to use a polyfill like typedarray.js.
The integrated pseudo random generator is based on code by by Johannes Baagøe.
The typescript definition has been provided by Neonit.