forked from Ian-Parberry/AmortizedNoise
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
85 lines (63 loc) · 3.35 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Amortized Noise
This GitHub repository contains supplementary material to accompany
Ian Parberry, "Amortized Noise", Journal of Computer Graphics Techniques,
Vol. 3, No. 2, pp. 31-47, 2014.
See also http://ianparberry.com/research/amortizednoise/.
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, but 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.
LICENSE
The source code in this repository is made available under the following license.
// Copyright Ian Parberry, (date).
//
// This file is made available under the GNU All-Permissive License.
//
// Copying and distribution of this file, with or without modification,
// are permitted in any medium without royalty provided the copyright
// notice and this notice are preserved. This file is offered as-is,
// without any warranty.
CONTENTS
2D Evaluator
2D Generator
3D Generator
Data
Examples
2D Evaluator
Contents: A Microsoft(R) Visual Studio 2012(TM) project and a Unix makefile for
the evaluator used in the paper to measure the running time of amortized noise
compared to Perlin noise.
Doxygen generated documentation can be found at
http://larc.unt.edu/ian/research/amortizednoise/Doxygen/Evaluate2D/.
2D Generator
Contents: A Microsoft(R) Visual Studio 2012(TM) project and a Unix makefile for
a generator that will save a grayscale image of 2D finite or infinite amortized
noise.
Doxygen generated documentation can be found at
http://larc.unt.edu/ian/research/amortizednoise/Doxygen/Generate2D.
3D Generator
Contents: A Visual Studio 2012(TM) project and a Unix++ makefile for a generator
that will save grayscale images of 3D finite or infinite amortized noise.
Doxygen generated documentation can be found at
http://larc.unt.edu/ian/research/amortizednoise/Doxygen/Generate3D/.
Data
Contents: Files Data2D.xlsx and Data3D.xlsx containing the test data used in the
paper in Microsoft(R) Excel(TM) format.
Examples
i0s512o36s9999r23c14.png 512x512 grayscale image of 2D finite amortized noise
i1s512o36s9999r23c42.png 512x512 grayscale image of 2D infinite amortized noise
finite.gif 256x256 animated gif of 3D finite amortized noise
infinite.gif 256x256 animated gif of 3D infinite amortized noise