Perlin's Noise Algorithm (2023)

(blog.jaysmito.dev)

58 points | by ibobev 7 hours ago

10 comments

  • jlhawn 5 hours ago
    y'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

    • Sharlin 4 hours ago
      It's also rather more difficult to implement in 3+d because the mapping to the simplex space is not exactly intuitive.
    • ginko 2 hours ago
      Simplex 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.
  • gfat 1 hour ago
    My 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/

  • erhuve 1 hour ago
    i 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"
  • RMarcus 3 hours ago
    You 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
  • emil-lp 1 hour ago
    I use Perlin noise in all games I make, and in my research. It's marvellous!

    +1 to Perlin.

  • vintagedave 5 hours ago
    I 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

    * A really good article explaining the v2 algorithm: https://adrianb.io/2014/08/09/perlinnoise.html

  • HelloUsername 2 hours ago
    (2023)
  • badpun 4 hours ago
    I'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 4 hours ago
      This 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 4 hours ago
        Yes, 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.
  • yogthos 3 hours ago
    where it gets really fun is when you add a temporal dimension to the noise :) https://yogthos.net/posts/2026-06-17-perlin-flow.html