Esta é uma biblioteca simples para ruído perlin 2D e 3D e ruído simplex em javascript. O barulho é bonito.
A biblioteca é bastante rápida (10 milhões de consultas/s). Mas ainda é muito mais lento do que usar um shader. Por exemplo, se você tentar atualizar os pixels de uma tela inteira, será lento.
O código é baseado na implementação de Stefan Gustavson. Faça o que quiser com ele, etc.
noise.seed(Math.random());for (var x = 0; x < canvas.width; x++) { for (var y = 0; y < canvas.height; y++) {// Todas as funções de ruído retornam valores no intervalo de -1 a 1.// noise.simplex2 e noise.perlin2 para 2d noisevar value = noise.simplex2( x / 100, y / 100);// ... ou noise.simplex3 e noise.perlin3:var value = noise.simplex3(x / 100, y / 100, tempo);image[x][y].r = Math.abs(valor) * 256; // Ou o que quer que seja. Abra demo.html para vê-lo usado com canvas. }}
A biblioteca expõe um objeto chamado noise
com as seguintes propriedades:
simplex2 (x, y) : função de ruído 2D Simplex
simplex3 (x, y, z) : função de ruído 3D Simplex
perlin2 (x, y) : função de ruído Perlin 2D
perlin3 (x, y, z) : função de ruído 3D Perlin
seed(val) : propaga as funções de ruído. Apenas 65.536 sementes diferentes são suportadas. Use um ponto flutuante entre 0 e 1 ou um número inteiro de 1 a 65536.