A downloadable tool

Download NowName your own price

If you've spent a long enough time in game dev, you've probably been interested in generating various kinds of noise at least a few times. It's useful for quite a number of things:

  • Anything to do with procedural generation
  • Terrain generation
  • Texture generation
  • Actual clouds
  • Probably a ton of things I haven't thought of yet

Here's a nice little system I wrote for doing exactly that!

Features

  • Fractal and Perlin noise
  • Control the number of octaves/smoothness used in generation
  • Control the amplitude of the noise (eg if you're generating a sprite you probably want the noise to have a range between 0 and 255)
  • Native GML (cross-platform), a shader (cross-platform), or via a DLL (Windows only)
  • Helper function to convert the raw noise data to a sprite (see screenshots)
  • Helper function to convert the raw noise data to a vertex buffer (this is probably not very useful to you)

Performance

The shader versions are cross-platform and very fast. On my 3GB GTX 1060, large 2K and 4K noise textures can be computed in some tens of milliseconds.

Regular noise:

  • 64x64: 1.47 ms
  • 256x256: 2.44 ms
  • 2048x2048: 25.21 ms (maybe dont do this in real time but if you generate one or two every time you enter a map or something the player probably won't notice)
  • Perlin noise stacks up similarly:

  • 64x64: 1.97 ms (all right)
  • 256x256: 2.99 ms (pretty good)
  • 2048x2048: 24.82 ms (we love SIMD)
  • The CPU code versions are a tad slower. The native GML implementation performs reasonably well on small scales. Here are some numbers for the fractal noise:

    • 64x64: 40 ms
    • 256x256: 700 ms
    • 2048x2048: 48,500 ms ("reasonably" is relative)

    Obviously, the YYC improves things rather dramatically.

  • 64x64: 10 ms
  • 256x256: 150 ms
  • 2048x2048: 10,000 ms (okay, better)
  • And the DLL version, which lives in the nether realm of C++, blows GML out of the water.

  • 64x64: 0.34 ms (lol)
  • 256x256: 5 ms (not bad)
  • 2048x2048: 310 ms (welp)
  • For small noise-related tasks the native GML version is perfectly fine, although if you're doing anything exotic you probably want to use the DLL.

    If you want to use the DLL on something that isn't Windows, let me know and I'll see if I can work something out. I might demand money or something.

    Documentation

    is available here.

    Price

    As usual, the asset is free as-is. I'll fix simple or game-breaking bugs but more involved support requires payment via either Itch or Patreon.  I get the final say in what constitutes "game-breaking."

    Credits

    • The demo makes use of Emu (also by me), which uses Scribble by @jujuadams
    • Macaw by Lars Meiertoberens from NounProject.com
    StatusReleased
    CategoryTool
    Rating
    Rated 5.0 out of 5 stars
    (1 total ratings)
    AuthorDragonite
    Made withGameMaker
    TagsGameMaker, noise, perlin-noise, randomness
    Average sessionA few minutes

    Download

    Download NowName your own price

    Click download now to get access to the following files:

    Macaw demo.zip 4.3 MB
    macaw.yymps 132 kB

    Development log

    Comments

    Log in with itch.io to leave a comment.

     Very amazing, but I had a question, how could I use offset?