[Extension] YANP - Yet Another Noise Plugin

Hi! This post is to make you aware of a plugin I have been developing to generate various visual noise functions. I started this for personal use on a game I am working on, but it’s expanded so much that I thought I should make it publicly available.

Primary features

  1. “Dot” noise. Each pixel has chance p to have a dot placed on it (either by the active tool or foreground color).

  2. Perlin noise. Gradient noise.
    Perlin Noise Example

  3. Voronoi noise. Cellular noise.
    Voronoi Noise Example

  4. Worley noise. Semi-continuous cellular noise.
    Worley Noise Example

Extra features

  1. Animation. Most noise functions also have the ability to animate them over some number of frames. What “animate” means depends on the function itself. For example, Perlin and Worley noise functions are 3 dimensional, so animation is created by just walking down the z-axis.
  2. Tiling. Both Perlin and Voronoi noise can be tiled in all axes. I.e., if you enable x+y tiling you can seamlessly repeat the tile, and if you enable z tiling you can seamlessly animate the tile. Feel free to try this out with View > Tiled Mode > Tiled in Both Axes.
  3. Alpha lock / mask. Noise can use the current layer’s alpha as a mask. See the Voronoi example above.
  4. Palette selection recognition. Any function that may use more than one color will pull from the current palette selection (if there is one) and draw using a gradient between all selected colors.
  5. Index + RGBA support. Both of these color modes should work more or less as expected.

Note about dynamic linking

This plugin makes use of Lua’s dynamic linking capabilities to speed up some calculations.[1] I am not sure whether this is officially supported or not. As of now there is a slower, slightly less featureful pure Lua version if you would prefer that. My official aseprite install on Windows seems to allow it, but all self-compiled versions on Linux for me do not unless I specifically set the Lua dynamic linking flag myself.

In short, this is a notice that using the dynamic version of this plugin will run a binary and with that comes all of the risks of downloading unknown binaries onto your system. If you’re up for it, you can also check the source code yourself and compile and then run the package script to get your own version.

[1]: In other words, the dynamic version of the plugin links a binary at runtime to use compiled C++ instead of Lua.

Acknowledgements

See the GitHub page below. Notably, I used shemake’s makeNoise script as a foothold for starting this plugin.

Download / Source Code / Usage

The source code, usage, examples, and some precompiled and zipped extensions can be found at the following GitHub link:

See the examples/ folder for the .aseprite files used to create the example GIFs.

6 Likes