3 ms·
Perlin's Noise Algorithm (2023)
- vintagedave 3mo agoI did not know that there were two versions of the algorithm: > ...the algorithm we discussed here is the original algorithm given by Ken Perlin. But after a few years of giving this algorithm, he improved this in some ways, like he changed the smoothing curve, the way gradients are calculated, etc. And that will be the topic of our next article. ...and that next article doesn't exist. But: * The 2002 paper improving it (this was likely after I first encountered Perlin noise, so I would have implemented v1!) https://mrl.cs.nyu.edu/~perlin/paper445.pdf https://mrl.cs.nyu.edu/~perlin/paper445.pdf * A really good article explaining the v2 algorithm: https://adrianb.io/2014/08/09/perlinnoise.html https://adrianb.io/2014/08/09/perlinnoise.html
- jlhawn 3mo agoy'know what's cooler than Perlin Noise? Simplex Noise [1]! This is what is hinted at at the end of this article. Also invented by the same person to address issues in the original Perlin Noise function. It's not as popularly known because it was restricted by patent issues for so long but as of 2022 the patent has expired! 1. https://en.wikipedia.org/wiki/Simplex_noise https://en.wikipedia.org/wiki/Simplex_noise
- Sharlin 3mo agoIt's also rather more difficult to implement in 3+d because the mapping to the simplex space is not exactly intuitive.
- ginko 3mo agoSimplex noise is nice because it's more efficient to calculate, especially for larger dimensions but it has a noticeably different look to it so it's not a drop-in replacement.
- badpun 3mo agoI've implemented 3D perlin noise recently and was surprised that the lighting was always off on the created model around the grid lattice (the model itself was continuous there, just the light was not correct). After a delightful couple of days debugging it, I finally learned that Perlin noise's derivative is not continuous around grid lattice, which makes normals not continous there (as normals are orthogonal to a tangent, and tangent is based on derivative). It's possible to improve it by cleverly changing Perlin's wavelet function, which makes the noise C(1) (derivative is continuous, second derivative is not) - this makes the visual artifacts smaller, but they don't go away.
- Sharlin 3mo agoThis is addressed in Perlin's improved noise function that uses a 5th degree polynomial ("smootherstep", t³·(10t·(6t-15)) in Horner's form) for interpolation which has everywhere continuous first and second derivatives.
- badpun 3mo agoYes, that's what I did and what I reffered to in my post (I forgot that it gave you C(2) and not just C(1), it's been a couple of months since I worked on this). There are still visual artifacts, they're just smaller. Even Perlin's paper on this showed a picture of the artifacts that the 5th degree polynomial still generates.
- RMarcus 3mo agoYou can also interpret each value in Perlin noise as a vector in a flow field to make some interesting and smooth animations reminiscent of older MacOS desktop wallpapers: https://rmarcus.info/blog/2018/03/04/perlin-noise.html https://rmarcus.info/blog/2018/03/04/perlin-noise.html
- yogthos 3mo agowhere it gets really fun is when you add a temporal dimension to the noise :) https://yogthos.net/posts/2026-06-17-perlin-flow.html https://yogthos.net/posts/2026-06-17-perlin-flow.html
- HelloUsername 3mo ago(2023)
- deleted 3mo ago[deleted]
- erhuve 3mo agoi had the privilege of taking perlin's computer graphics course at nyu- amazing person. fun fact, his conference submissions are easily spottable because he's the only person in the world who doesn't refer to it as "Perlin Noise"
- emil-lp 3mo agoI use Perlin noise in all games I make, and in my research. It's marvellous! +1 to Perlin.
- gfat 3mo agoMy intro to Perlin noise was a Stripe page where their customer wall of logos was floating bubbles. Not a video but actual DOM elements translating around. Stripe always going that extra mile. https://lokeshdhakar.com/dev-202-scrolling-logo-bubbles/ https://lokeshdhakar.com/dev-202-scrolling-logo-bubbles/
- vivzkestrel 3mo ago``` Error 1033 Ray ID: a1f77ea1ae63d8ea • 2026-07-23 03:10:53 UTC Cloudflare Tunnel error What happened? You've requested a page on a website (blog.jaysmito.dev) that is on the Cloudflare network. The host (blog.jaysmito.dev) is configured as a Cloudflare Tunnel, and Cloudflare is currently unable to resolve it. ```