minetest/minetest — pull request #577 by prestidigitator (2013-03-30 01:42:12+00:00)
Title: Full object-based noise, with extra algorithms and noise composition

This goes the full distance that was started with the introduction of the Noise object. Noise has been changed to an abstract interface, with several concrete base noise implementations (ValueNoise, PerlinNoise, and SimplexNoise), some computed noise implementations (FractalNoise, TransformedNoise, ShiftedNoise), some implementations for mixing other noise algorithms (DynamicFractalNoise, MixedNoise), and a helper to efficiently compose noise from NoiseParams (ParameterizedNoise).

Existing sources have been updated fully to use the new noise object-based API. Performance testing has been done, with positive results (no more than about 5ms average increase in map chunk generation time out of an average of 125ms total on the machine used to test, and similar performance for all base algorithms). In some cases noise blocks have been generaged where many single function calls had been made previously, helping with performance in map generation and other places that use noise.