package com.volmit.iris.object; import com.volmit.iris.scaffold.stream.ProceduralStream; import com.volmit.iris.generator.noise.CNG; import com.volmit.iris.generator.noise.CNGFactory; import com.volmit.iris.generator.noise.NoiseType; import com.volmit.iris.util.Desc; import com.volmit.iris.util.DontObfuscate; import com.volmit.iris.util.RNG; @Desc("Styles of noise") @DontObfuscate public enum NoiseStyle { @Desc("White Noise is like static. Useful for block scattering but not terrain.") @DontObfuscate STATIC(rng -> new CNG(rng, NoiseType.WHITE, 1D, 1)), @Desc("Wispy Perlin-looking simplex noise. The 'iris' style noise.") @DontObfuscate IRIS(rng -> CNG.signature(rng).scale(1)), @Desc("Wispy Perlin-looking simplex noise. The 'iris' style noise.") @DontObfuscate IRIS_DOUBLE(rng -> CNG.signatureDouble(rng).scale(1)), @Desc("Wispy Perlin-looking simplex noise. The 'iris' style noise.") @DontObfuscate IRIS_THICK(rng -> CNG.signatureThick(rng).scale(1)), @Desc("Wispy Perlin-looking simplex noise. The 'iris' style noise.") @DontObfuscate IRIS_HALF(rng -> CNG.signatureHalf(rng).scale(1)), @Desc("Basic, Smooth & Fast Simplex noise.") @DontObfuscate SIMPLEX(rng -> new CNG(rng, 1D, 1).scale(1)), @Desc("Very Detailed smoke using simplex fractured with fractal billow simplex at high octaves.") @DontObfuscate FRACTAL_SMOKE(rng -> new CNG(rng, 1D, 1).fractureWith(new CNG(rng.nextParallelRNG(1), NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 8).scale(0.2), 1000).scale(0.34)), @Desc("Thinner Veins.") @DontObfuscate VASCULAR_THIN(rng -> new CNG(rng.nextParallelRNG(1), NoiseType.VASCULAR, 1D, 1).scale(1).pow(0.65)), @Desc("Cells of simplex noise") @DontObfuscate SIMPLEX_CELLS(rng -> new CNG(rng.nextParallelRNG(1), NoiseType.SIMPLEX, 1D, 1).scale(1).fractureWith(new CNG(rng.nextParallelRNG(8), NoiseType.CELLULAR, 1D, 1).scale(1), 200)), @Desc("Veins of simplex noise") @DontObfuscate SIMPLEX_VASCULAR(rng -> new CNG(rng.nextParallelRNG(1), NoiseType.SIMPLEX, 1D, 1).scale(1).fractureWith(new CNG(rng.nextParallelRNG(8), NoiseType.VASCULAR, 1D, 1).scale(1), 200)), @Desc("Very Detailed fluid using simplex fractured with fractal billow simplex at high octaves.") @DontObfuscate FRACTAL_WATER(rng -> new CNG(rng, 1D, 1).fractureWith(new CNG(rng.nextParallelRNG(1), NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 9).scale(0.03), 9900).scale(1.14)), @Desc("Perlin. Like simplex but more natural") @DontObfuscate PERLIN(rng -> new CNG(rng, NoiseType.PERLIN, 1D, 1).scale(1.47)), @Desc("Perlin. Like simplex but more natural") @DontObfuscate PERLIN_IRIS(rng -> CNG.signature(rng, NoiseType.PERLIN).scale(1.47)), @Desc("Perlin. Like simplex but more natural") @DontObfuscate PERLIN_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.PERLIN).scale(1.47)), @Desc("Perlin. Like simplex but more natural") @DontObfuscate PERLIN_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.PERLIN).scale(1.47)), @Desc("Perlin. Like simplex but more natural") @DontObfuscate PERLIN_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.PERLIN).scale(1.47)), @Desc("Billow Fractal Perlin Noise.") @DontObfuscate FRACTAL_BILLOW_PERLIN(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_PERLIN, 1D, 1).scale(1.47)), @Desc("Billow Fractal Perlin Noise. 2 Octaves") @DontObfuscate BIOCTAVE_FRACTAL_BILLOW_PERLIN(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_PERLIN, 1D, 2).scale(1.17)), @Desc("Billow Fractal Simplex Noise. Single octave.") @DontObfuscate FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 1)), @Desc("FBM Fractal Simplex Noise. Single octave.") @DontObfuscate FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 1)), @Desc("Billow Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_BILLOW_IRIS(rng -> CNG.signature(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX)), @Desc("FBM Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_FBM_IRIS(rng -> CNG.signature(rng, NoiseType.FRACTAL_FBM_SIMPLEX)), @Desc("Billow Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_BILLOW_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX)), @Desc("FBM Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_FBM_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.FRACTAL_FBM_SIMPLEX)), @Desc("Billow Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_BILLOW_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX)), @Desc("FBM Fractal Iris Noise. Single octave.") @DontObfuscate FRACTAL_FBM_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.FRACTAL_FBM_SIMPLEX)), @Desc("Rigid Multi Fractal Simplex Noise. Single octave.") @DontObfuscate FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 1)), @Desc("Billow Fractal Simplex Noise. 2 octaves.") @DontObfuscate BIOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 2)), @Desc("FBM Fractal Simplex Noise. 2 octaves.") @DontObfuscate BIOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 2)), @Desc("Rigid Multi Fractal Simplex Noise. 2 octaves.") @DontObfuscate BIOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 2)), @Desc("Rigid Multi Fractal Simplex Noise. 3 octaves.") @DontObfuscate TRIOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 3)), @Desc("Billow Fractal Simplex Noise. 3 octaves.") @DontObfuscate TRIOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 3)), @Desc("FBM Fractal Simplex Noise. 3 octaves.") @DontObfuscate TRIOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 3)), @Desc("Rigid Multi Fractal Simplex Noise. 4 octaves.") @DontObfuscate QUADOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 4)), @Desc("Billow Fractal Simplex Noise. 4 octaves.") @DontObfuscate QUADOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 4)), @Desc("FBM Fractal Simplex Noise. 4 octaves.") @DontObfuscate QUADOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 4)), @Desc("Rigid Multi Fractal Simplex Noise. 5 octaves.") @DontObfuscate QUINTOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 5)), @Desc("Billow Fractal Simplex Noise. 5 octaves.") @DontObfuscate QUINTOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 5)), @Desc("FBM Fractal Simplex Noise. 5 octaves.") @DontObfuscate QUINTOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 5)), @Desc("Rigid Multi Fractal Simplex Noise. 6 octaves.") @DontObfuscate SEXOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 6)), @Desc("Billow Fractal Simplex Noise. 6 octaves.") @DontObfuscate SEXOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 6)), @Desc("FBM Fractal Simplex Noise. 6 octaves.") @DontObfuscate SEXOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 6)), @Desc("Rigid Multi Fractal Simplex Noise. 7 octaves.") @DontObfuscate SEPTOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 7)), @Desc("Billow Fractal Simplex Noise. 7 octaves.") @DontObfuscate SEPTOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 7)), @Desc("FBM Fractal Simplex Noise. 7 octaves.") @DontObfuscate SEPTOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 7)), @Desc("Rigid Multi Fractal Simplex Noise. 8 octaves.") @DontObfuscate OCTOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 8)), @Desc("Billow Fractal Simplex Noise. 8 octaves.") @DontObfuscate OCTOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 8)), @Desc("FBM Fractal Simplex Noise. 8 octaves.") @DontObfuscate OCTOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 8)), @Desc("Rigid Multi Fractal Simplex Noise. 9 octaves.") @DontObfuscate NONOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 9)), @Desc("Billow Fractal Simplex Noise. 9 octaves.") @DontObfuscate NONOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 9)), @Desc("FBM Fractal Simplex Noise. 9 octaves.") @DontObfuscate NONOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 9)), @Desc("Rigid Multi Fractal Simplex Noise. 10 octaves.") @DontObfuscate VIGOCTAVE_FRACTAL_RM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_RIGID_MULTI_SIMPLEX, 1D, 10)), @Desc("Billow Fractal Simplex Noise. 10 octaves.") @DontObfuscate VIGOCTAVE_FRACTAL_BILLOW_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_BILLOW_SIMPLEX, 1D, 10)), @Desc("FBM Fractal Simplex Noise. 10 octaves.") @DontObfuscate VIGOCTAVE_FRACTAL_FBM_SIMPLEX(rng -> new CNG(rng, NoiseType.FRACTAL_FBM_SIMPLEX, 1D, 10)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 2 octaves") @DontObfuscate BIOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 2).scale(1D / 2D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 3 octaves") @DontObfuscate TRIOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 3).scale(1D / 3D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 4 octaves") @DontObfuscate QUADOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 4).scale(1D / 4D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 5 octaves") @DontObfuscate QUINTOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 5).scale(1D / 5D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 6 octaves") @DontObfuscate SEXOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 6).scale(1D / 6D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 7 octaves") @DontObfuscate SEPTOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 7).scale(1D / 12D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 8 octaves") @DontObfuscate OCTOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 8).scale(1D / 25D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 9 octaves") @DontObfuscate NONOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 9).scale(1D / 50D)), @Desc("Basic, Smooth & Fast Simplex noise. Uses 10 octaves") @DontObfuscate VIGOCTAVE_SIMPLEX(rng -> new CNG(rng, 1D, 10).scale(1D / 100D)), @Desc("Glob noise is like cellular, but with globs...") @DontObfuscate GLOB(rng -> new CNG(rng, NoiseType.GLOB, 1D, 1)), @Desc("Glob noise is like cellular, but with globs...") @DontObfuscate GLOB_IRIS(rng -> CNG.signature(rng, NoiseType.GLOB)), @Desc("Glob noise is like cellular, but with globs...") @DontObfuscate GLOB_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.GLOB)), @Desc("Glob noise is like cellular, but with globs...") @DontObfuscate GLOB_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.GLOB)), @Desc("Glob noise is like cellular, but with globs...") @DontObfuscate GLOB_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.GLOB)), @Desc("Cubic Noise") @DontObfuscate CUBIC(rng -> new CNG(rng, NoiseType.CUBIC, 1D, 1).scale(256)), @Desc("Fractal Cubic Noise") @DontObfuscate FRACTAL_CUBIC(rng -> new CNG(rng, NoiseType.FRACTAL_CUBIC, 1D, 1).scale(2)), @Desc("Fractal Cubic Noise With Iris Swirls") @DontObfuscate FRACTAL_CUBIC_IRIS(rng -> CNG.signature(rng, NoiseType.FRACTAL_CUBIC).scale(2)), @Desc("Fractal Cubic Noise With Iris Swirls") @DontObfuscate FRACTAL_CUBIC_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.FRACTAL_CUBIC).scale(2)), @Desc("Fractal Cubic Noise With Iris Swirls") @DontObfuscate FRACTAL_CUBIC_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.FRACTAL_CUBIC).scale(2)), @Desc("Fractal Cubic Noise With Iris Swirls") @DontObfuscate FRACTAL_CUBIC_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.FRACTAL_CUBIC).scale(2)), @Desc("Fractal Cubic Noise, 2 Octaves") @DontObfuscate BIOCTAVE_FRACTAL_CUBIC(rng -> new CNG(rng, NoiseType.FRACTAL_CUBIC, 1D, 2).scale(2)), @Desc("Fractal Cubic Noise, 3 Octaves") @DontObfuscate TRIOCTAVE_FRACTAL_CUBIC(rng -> new CNG(rng, NoiseType.FRACTAL_CUBIC, 1D, 3).scale(1.5)), @Desc("Fractal Cubic Noise, 4 Octaves") @DontObfuscate QUADOCTAVE_FRACTAL_CUBIC(rng -> new CNG(rng, NoiseType.FRACTAL_CUBIC, 1D, 4).scale(1)), @Desc("Cubic Noise") @DontObfuscate CUBIC_IRIS(rng -> CNG.signature(rng, NoiseType.CUBIC).scale(256)), @Desc("Cubic Noise") @DontObfuscate CUBIC_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.CUBIC).scale(256)), @Desc("Cubic Noise") @DontObfuscate CUBIC_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.CUBIC).scale(256)), @Desc("Cubic Noise") @DontObfuscate CUBIC_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.CUBIC).scale(256)), @Desc("Cellular noise creates the same noise level for cells, changes noise level on cell borders.") @DontObfuscate CELLULAR(rng -> new CNG(rng, NoiseType.CELLULAR, 1D, 1)), @Desc("Cellular noise creates the same noise level for cells, changes noise level on cell borders. Cells are distorted using Iris styled wispy noise.") @DontObfuscate CELLULAR_IRIS(rng -> CNG.signature(rng, NoiseType.CELLULAR)), @Desc("Cellular noise creates the same noise level for cells, changes noise level on cell borders. Cells are distorted using Iris styled wispy noise.") @DontObfuscate CELLULAR_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.CELLULAR)), @Desc("Cellular noise creates the same noise level for cells, changes noise level on cell borders. Cells are distorted using Iris styled wispy noise.") @DontObfuscate CELLULAR_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.CELLULAR)), @Desc("Cellular noise creates the same noise level for cells, changes noise level on cell borders. Cells are distorted using Iris styled wispy noise.") @DontObfuscate CELLULAR_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.CELLULAR)), @Desc("Inverse of vascular, height gets to 1.0 as it approaches the center of a cell") @DontObfuscate CELLULAR_HEIGHT(rng -> new CNG(rng, NoiseType.CELLULAR_HEIGHT, 1D, 1)), @Desc("Inverse of vascular, height gets to 1.0 as it approaches the center of a cell, using the iris style.") @DontObfuscate CELLULAR_HEIGHT_IRIS(rng -> CNG.signature(rng, NoiseType.CELLULAR_HEIGHT)), @Desc("Inverse of vascular, height gets to 1.0 as it approaches the center of a cell, using the iris style.") @DontObfuscate CELLULAR_HEIGHT_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.CELLULAR_HEIGHT)), @Desc("Inverse of vascular, height gets to 1.0 as it approaches the center of a cell, using the iris style.") @DontObfuscate CELLULAR_HEIGHT_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.CELLULAR_HEIGHT)), @Desc("Inverse of vascular, height gets to 1.0 as it approaches the center of a cell, using the iris style.") @DontObfuscate CELLULAR_HEIGHT_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.CELLULAR_HEIGHT)), @Desc("Vascular noise gets higher as the position nears a cell border.") @DontObfuscate VASCULAR(rng -> new CNG(rng, NoiseType.VASCULAR, 1D, 1)), @Desc("It always returns 0.5") @DontObfuscate FLAT(rng -> new CNG(rng, NoiseType.FLAT, 1D, 1)), @Desc("Vascular noise gets higher as the position nears a cell border. Cells are distorted using Iris styled wispy noise.") @DontObfuscate VASCULAR_IRIS(rng -> CNG.signature(rng, NoiseType.VASCULAR)), @Desc("Vascular noise gets higher as the position nears a cell border. Cells are distorted using Iris styled wispy noise.") @DontObfuscate VASCULAR_IRIS_DOUBLE(rng -> CNG.signatureDouble(rng, NoiseType.VASCULAR)), @Desc("Vascular noise gets higher as the position nears a cell border. Cells are distorted using Iris styled wispy noise.") @DontObfuscate VASCULAR_IRIS_THICK(rng -> CNG.signatureThick(rng, NoiseType.VASCULAR)), @Desc("Vascular noise gets higher as the position nears a cell border. Cells are distorted using Iris styled wispy noise.") @DontObfuscate VASCULAR_IRIS_HALF(rng -> CNG.signatureHalf(rng, NoiseType.VASCULAR)), ; private CNGFactory f; private NoiseStyle(CNGFactory f) { this.f = f; } public ProceduralStream stream(RNG seed) { return create(seed).stream(); } public ProceduralStream stream(long seed) { return create(new RNG(seed)).stream(); } public CNG create(RNG seed) { return f.create(seed).bake(); } public IrisGeneratorStyle style() { return new IrisGeneratorStyle(this); } }