Amortized Noise

Author: Ian Parberry
University of North Texas

Editor: Andrew Willmott
Jellygrade

Editor-in-Chief: Morgan McGuire
NVIDIA & Williams College

Abstract

Perlin noise is often used to compute a regularly spaced grid of noise values. The amortized noise algorithm takes advantage of this regular call pattern to amortize the computation cost of floating-point computations over interpolated points using dynamic programming techniques. The 2D amortized noise algorithm uses a factor of 17/3 = 5.67 fewer floating-point multiplications than the 2D Perlin noise algorithm, resulting in a speedup by a factor of approximately 3.6-4.8 in practice on available desktop and laptop computing hardware. The 3D amortized noise algorithm uses a factor of 40/7 = 5.71 fewer floating-point multiplications than the 3D Perlin noise algorithm; however, the increasing overhead for the initialization of tables limits the speedup factor achieved in practice to around 2.25. Improvements to both 2D Perlin noise and 2D amortized noise include making them infinite and non-repeating by replacing the permutation table with a perfect hash function, and making them smoother by using quintic splines instead of cubic splines. While these improvements slow down 2D Perlin noise down by a factor of approximately 32-92, they slow 2D amortized noise by a negligible amount.


Download:
Full-Text PDF (694 kB)
BibTex (425 B)
C Code and Supplemental Test Data (22.9 MB)
Online git Repository of Supplemental Files

Citation: Ian Parberry, Amortized Noise, Journal of Computer Graphics Techniques (JCGT), vol. 3, no. 2, 31-47, 2014
Available online http://jcgt.org/published/0003/02/02/

Copyright: © 2014 Parberry

Received: 2014-02-02; Recommended: 2014-03-22; Published: 2014-06-05