SurgeNoise ModuleScript: Infinite Dimensions with Domain Warping
Examples using this module with one of the projects I’m working on:
The SurgeNoise
module script is a versatile noise generation tool that provides a seamless way to create noise with infinite dimensions. It offers a customizable and efficient approach to generating noise in any number of dimensions, making it suitable for a wide range of applications such as procedural terrain generation, texture synthesis, and more.
The script provides an implementation of multi-dimensional noise generation using the Perlin noise algorithm. It includes the ability to apply domain warping, allowing you to introduce intricate patterns and variations to the noise output. The module script is designed to be user-friendly and highly adaptable, enabling developers to effortlessly incorporate it into their projects.
Usage Tutorial:
Generating Noise: The primary function provided by the SurgeNoise
module is SurgeNoise.New(...)
. This function allows you to generate noise with an infinite amount of values, the 1st one being optionally the settings table [you do not need to include a settings table as the first argument if you don’t want to configure one]
Example usage with settings:
local Seed = math.random(10000000)
local Settings = {
WarpDomain = { -- You can leave this as an empty table for default values
Scale = 2,
RatioDiff = 1.5
}
}
local Value = SurgeNoise.New(Settings, X, Y, Z, W, T, Seed)
Example usage without settings or specifications:
local Value = SurgeNoise.New(X, Y, Z, W, etc)
Customizing Domain Warping (Optional): If you want to add domain warping to your noise generation, you can specify the WarpDomain
settings within the Settings
table. Adjust the Scale
and RatioDiff
parameters to control the intensity and pattern of domain warping.
Tips:
- Experiment with different dimensions, seed values, and domain warping settings to achieve the desired noise output.
- Utilize the generated noise values creatively in your projects to add natural-looking randomness and variety.
This module is still being worked on and I’m open to suggestions for future implementations