Wondering what’s next for npm?Check out our public roadmap! »

    asm-noise
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.2 • Public • Published

    asm-noise

    npm version

    An implementation of noise algorithms in asm.js.

    Table of Contents

    1. Installation
    2. Usage
    3. Options
    4. Roadmap
    5. Contributing
    6. Acknowledgments
    7. License

    Goal and Philosophy

    asm-noise endeavors to allow the fastest, most flexible multidimensional procedural noise generation possible with only JavaScript.

    Installation

    Using npm:

    npm install asm-noise

    Using unpkg CDN:

    <script src="https://unpkg.com/asm-noise"></script>

    Usage

    Supports both CommonJS and ES Modules.

    var noise = require('asm-noise');
    import noise from 'asm-noise';

    When using CDN, functionality is exposed globally through window.noise .

    Generate noise:

    var value2D = noise(0.1, 0.2);
    var value3D = noise(0.1, 0.2, 0.3);
    var value4D = noise(0.1, 0.2, 0.3, 0.4);

    Options

    Noise generation options can be set directly or by passing an options object into noise.config

    noise.config({ ...options... });
     
    noise.algorithm = 'open-simplex';
    noise.seed = Date.now();
    noise.octaves = 8;
    noise.lacunarity = (1 + Math.sqrt(5)) / 2;
    noise.persistence = (Math.sqrt(5) - 1) / 2;
    noise.offset = {
      x: (5393 * (1 + Math.sqrt(5))) / 2,
      y: (4691 * (1 + Math.sqrt(5))) / 2,
      z: (10093 * (1 + Math.sqrt(5))) / 2,
      w: (9241 * (1 + Math.sqrt(5))) / 2,
    };

    algorithm

    Type: String

    Noise generation algorithm to be used. Possible values: open-simplex, perlin

    Default: 'open-simplex'

    seed

    Type: Number

    Default: 'open-simplex'

    Value used to seed the internal state of the current noise generation algorithm.

    Default: Date.now()

    octaves

    Type: Number

    Number of itterations of noise to sum together when generating noise at single point.

    Default: 8

    lacunarity

    Type: Number

    On the nth generation itteration, the generation point is scaled by this value raised to the nth power.

    Default: (1 + Math.sqrt(5)) / 2

    persistence

    Type: Number

    On the nth generation itteration, the nth noise value is scaled by this value raised to the nth power.

    Default: (Math.sqrt(5) - 1) / 2

    offset

    Type: { x: Number; y: Number; z: Number; w: Number; }

    Contains axis specific values to add to the generation point between generation itterations.

    Default:

    {
      x: (5393 * (1 + Math.sqrt(5))) / 2,
      y: (4691 * (1 + Math.sqrt(5))) / 2,
      z: (10093 * (1 + Math.sqrt(5))) / 2,
      w: (9241 * (1 + Math.sqrt(5))) / 2,
      }

    Roadmap

    • Improve performance of algorithms
    • Implement additional algorithms
    • Add batch generation

    Contributing

    Pull requests are welcome.

    To implement a new noise generation algorithm:

    1. Create a file in the src directory with the name of the algorithm.
    2. This file should be an ES Module.
    3. The deafult export of this file should be an object with following properties:
    • seed: number;
    • noise2D: function(octaves, lacunarity, persistence, xOffset, yOffset, x, y) => number
    • noise3D: function(octaves, lacunarity, persistence, xOffset, yOffset, zOffset, x, y, z) => number
    • noise4D: function(octaves, lacunarity, persistence, xOffset, yOffset, zOffset, wOffset, x, y, z, w) => number

    Acknowledgments

    Many thanks to @KdotJPG for the creation of OpenSimplex noise algorithm.

    License

    This project is licensed under the terms of the MIT license.

    Install

    npm i asm-noise

    DownloadsWeekly Downloads

    0

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    308 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar