jetlee01 / amortizednoise Goto Github PK
View Code? Open in Web Editor NEWThis project forked from ian-parberry/amortizednoise
Generate 2D and 3D Perlin Noise Fast
Home Page: http://larc.unt.edu/ian/research/amortizednoise/
This project forked from ian-parberry/amortizednoise
Generate 2D and 3D Perlin Noise Fast
Home Page: http://larc.unt.edu/ian/research/amortizednoise/
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.