This commit is contained in:
Dan Macbook 2020-08-10 23:09:57 -04:00
parent a6b65c8d76
commit 5d096092b9
38 changed files with 1263 additions and 45 deletions

View File

@ -22,12 +22,12 @@ import com.volmit.iris.gen.post.PostPotholeFiller;
import com.volmit.iris.gen.post.PostSlabber;
import com.volmit.iris.gen.post.PostWallPatcher;
import com.volmit.iris.gen.post.PostWaterlogger;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.BoardManager;
import com.volmit.iris.util.BoardProvider;
import com.volmit.iris.util.BoardSettings;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.GroupedExecutor;

View File

@ -4,6 +4,7 @@ import org.bukkit.World;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.layer.GenLayerBiome;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.InferredType;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisBiomeGeneratorLink;
@ -11,7 +12,6 @@ import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.object.IrisGenerator;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.ChunkPosition;
import com.volmit.iris.util.IrisInterpolation;

View File

@ -24,6 +24,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.IrisContext;
import com.volmit.iris.IrisDataManager;
import com.volmit.iris.IrisMetrics;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.object.IrisGenerator;
@ -31,7 +32,6 @@ import com.volmit.iris.object.IrisObject;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.object.IrisStructure;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.J;
import com.volmit.iris.util.PrecisionStopwatch;

View File

@ -11,11 +11,11 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisContext;
import com.volmit.iris.gen.atomics.AtomicRegionData;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisEffect;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.IrisLock;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.RNG;

View File

@ -1,12 +1,12 @@
package com.volmit.iris.gen.layer;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.noise.RarityCellGenerator;
import com.volmit.iris.object.InferredType;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.RNG;
import com.volmit.iris.util.RarityCellGenerator;
import lombok.Data;

View File

@ -2,14 +2,14 @@ package com.volmit.iris.gen.layer;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.DimensionChunkGenerator;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.noise.RarityCellGenerator;
import com.volmit.iris.object.InferredType;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.object.IrisRegionRidge;
import com.volmit.iris.object.IrisRegionSpot;
import com.volmit.iris.util.RarityCellGenerator;
import com.volmit.iris.util.BiomeResult;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.util.GenLayer;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;

View File

@ -1,7 +1,7 @@
package com.volmit.iris.gen.layer;
import com.volmit.iris.gen.DimensionChunkGenerator;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.util.GenLayer;
import com.volmit.iris.util.IrisInterpolation;
import com.volmit.iris.util.M;

View File

@ -5,16 +5,16 @@ import org.bukkit.block.data.BlockData;
import com.volmit.iris.gen.DimensionChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicSliver;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.noise.FastNoise;
import com.volmit.iris.noise.FastNoise.CellularDistanceFunction;
import com.volmit.iris.noise.FastNoise.CellularReturnType;
import com.volmit.iris.noise.FastNoise.NoiseType;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.CaveResult;
import com.volmit.iris.util.FastNoise;
import com.volmit.iris.util.GenLayer;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;
import com.volmit.iris.util.FastNoise.CellularDistanceFunction;
import com.volmit.iris.util.FastNoise.CellularReturnType;
import com.volmit.iris.util.FastNoise.NoiseType;
public class GenLayerCave extends GenLayer
{

View File

@ -1,9 +1,9 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
/**
* Base class for all noise generators
*/
public abstract class NoiseGenerator
public abstract class BaseNoiseGenerator
{
protected final int perm[] = new int[512];
protected double offsetX;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import java.util.Random;
@ -8,7 +8,7 @@ import java.util.Random;
* @see SimplexNoiseC "Improved" and faster version with slighly
* different results
*/
public class BasePerlinNoiseGenerator extends NoiseGenerator
public class BasePerlinNoiseGenerator extends BaseNoiseGenerator
{
protected static final int grad3[][] = {{1, 1, 0}, {-1, 1, 0}, {1, -1, 0}, {-1, -1, 0}, {1, 0, 1}, {-1, 0, 1}, {1, 0, -1}, {-1, 0, -1}, {0, 1, 1}, {0, -1, 1}, {0, 1, -1}, {0, -1, -1}};
private static final BasePerlinNoiseGenerator instance = new BasePerlinNoiseGenerator();

View File

@ -1,4 +1,9 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import com.volmit.iris.util.IrisInterpolation;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.NoiseInjector;
import com.volmit.iris.util.RNG;
public class CNG
{

View File

@ -1,8 +1,6 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import com.volmit.iris.util.FastNoise.CellularDistanceFunction;
import com.volmit.iris.util.FastNoise.CellularReturnType;
import com.volmit.iris.util.FastNoise.NoiseType;
import com.volmit.iris.util.RNG;
import lombok.Getter;
import lombok.Setter;
@ -29,13 +27,13 @@ public class CellGenerator
RNG rx = rng.nextParallelRNG(8735652);
int s = rx.nextInt();
fn = new FastNoise(s);
fn.SetNoiseType(NoiseType.Cellular);
fn.SetCellularReturnType(CellularReturnType.CellValue);
fn.SetCellularDistanceFunction(CellularDistanceFunction.Natural);
fn.SetNoiseType(FastNoise.NoiseType.Cellular);
fn.SetCellularReturnType(FastNoise.CellularReturnType.CellValue);
fn.SetCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
fd = new FastNoise(s);
fd.SetNoiseType(NoiseType.Cellular);
fd.SetCellularReturnType(CellularReturnType.Distance2Sub);
fd.SetCellularDistanceFunction(CellularDistanceFunction.Natural);
fd.SetNoiseType(FastNoise.NoiseType.Cellular);
fd.SetCellularReturnType(FastNoise.CellularReturnType.Distance2Sub);
fd.SetCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
}
public float getDistance(double x, double z)

View File

@ -0,0 +1,31 @@
package com.volmit.iris.noise;
public class CellHeightNoise implements NoiseGenerator {
private final FastNoise n;
public CellHeightNoise(long seed) {
this.n = new FastNoise((int) seed);
n.SetNoiseType(FastNoise.NoiseType.Cellular);
n.SetCellularReturnType(FastNoise.CellularReturnType.Distance2Sub);
n.SetCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
}
private double filter(double noise) {
return (noise / 2D) + 0.5D;
}
@Override
public double noise(double x) {
return filter(n.GetCellular((float) x, 0));
}
@Override
public double noise(double x, double z) {
return filter(n.GetCellular((float) x, (float) z));
}
@Override
public double noise(double x, double y, double z) {
return filter(n.GetCellular((float) x, (float) y, (float) z));
}
}

View File

@ -0,0 +1,27 @@
package com.volmit.iris.noise;
public class CellularNoise implements NoiseGenerator {
private final FastNoise n;
public CellularNoise(long seed) {
this.n = new FastNoise((int) seed);
n.SetNoiseType(FastNoise.NoiseType.Cellular);
n.SetCellularReturnType(FastNoise.CellularReturnType.CellValue);
n.SetCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
}
@Override
public double noise(double x) {
return (n.GetCellular((float) x, 0) / 2D) + 0.5D;
}
@Override
public double noise(double x, double z) {
return (n.GetCellular((float) x, (float) z) / 2D) + 0.5D;
}
@Override
public double noise(double x, double y, double z) {
return (n.GetCellular((float) x, (float) y, (float) z) / 2D) + 0.5D;
}
}

View File

@ -25,7 +25,7 @@
// The developer's email is jorzixdan.me2@gzixmail.com (for great email, take
// off every 'zix'.)
//
package com.volmit.iris.util;
package com.volmit.iris.noise;
import javax.vecmath.Vector2f;
import javax.vecmath.Vector3f;

View File

@ -0,0 +1,7 @@
package com.volmit.iris.noise;
@FunctionalInterface
public interface NoiseFactory
{
NoiseGenerator create(long seed);
}

View File

@ -0,0 +1,10 @@
package com.volmit.iris.noise;
public interface NoiseGenerator
{
public double noise(double x);
public double noise(double x, double z);
public double noise(double x, double y, double z);
}

View File

@ -0,0 +1,20 @@
package com.volmit.iris.noise;
public enum NoiseType {
WHITE(seed -> new WhiteNoise(seed)),
SIMPLEX(seed -> new SimplexNoise(seed)),
CELLULAR(seed -> new CellularNoise(seed)),
CELLULAR_HEIGHT(seed -> new CellHeightNoise(seed)),
VASCULAR(seed -> new VascularNoise(seed));
private NoiseFactory f;
private NoiseType(NoiseFactory f) {
this.f = f;
}
public NoiseGenerator create(long seed)
{
return f.create(seed);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import java.util.Random;

View File

@ -1,7 +1,12 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import java.util.function.Function;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.M;
import com.volmit.iris.util.RNG;
public class PolygonGenerator
{
private double[] rarity;

View File

@ -1,4 +1,8 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import com.volmit.iris.util.IRare;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;
public class RarityCellGenerator<T extends IRare> extends CellGenerator
{

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util;
package com.volmit.iris.noise;
import java.util.Random;

View File

@ -0,0 +1,24 @@
package com.volmit.iris.noise;
public class SimplexNoise implements NoiseGenerator {
private final OpenSimplex n;
public SimplexNoise(long seed) {
this.n = new OpenSimplex(seed);
}
@Override
public double noise(double x) {
return (n.noise2(x, 0) / 2D) + 0.5D;
}
@Override
public double noise(double x, double z) {
return (n.noise2(x, z) / 2D) + 0.5D;
}
@Override
public double noise(double x, double y, double z) {
return (n.noise3_XZBeforeY(x, y, z) / 2D) + 0.5D;
}
}

View File

@ -0,0 +1,17 @@
package com.volmit.iris.noise;
public class Test {
public static void main(String[] args) {
NoiseGenerator t = null;
for (NoiseType i : NoiseType.values()) {
System.out.println("Test: " + i.name());
t = i.create(0);
for (int j = 0; j < 100; j++) {
System.out.println(t.noise(j * 1));
}
}
}
}

View File

@ -0,0 +1,31 @@
package com.volmit.iris.noise;
public class VascularNoise implements NoiseGenerator {
private final FastNoise n;
public VascularNoise(long seed) {
this.n = new FastNoise((int) seed);
n.SetNoiseType(FastNoise.NoiseType.Cellular);
n.SetCellularReturnType(FastNoise.CellularReturnType.Distance2Sub);
n.SetCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
}
private double filter(double noise) {
return 1D - ((noise / 2D) + 0.5D);
}
@Override
public double noise(double x) {
return filter(n.GetCellular((float) x, 0));
}
@Override
public double noise(double x, double z) {
return filter(n.GetCellular((float) x, (float) z));
}
@Override
public double noise(double x, double y, double z) {
return filter(n.GetCellular((float) x, (float) y, (float) z));
}
}

View File

@ -0,0 +1,25 @@
package com.volmit.iris.noise;
public class WhiteNoise implements NoiseGenerator {
private final FastNoise n;
public WhiteNoise(long seed) {
n = new FastNoise((int) seed);
}
@Override
public double noise(double x) {
return (n.GetWhiteNoise((float) x, 0) / 2D) + 0.5D;
}
@Override
public double noise(double x, double z) {
return (n.GetWhiteNoise((float) x, (float) z) / 2D) + 0.5D;
}
@Override
public double noise(double x, double y, double z) {
return (n.GetWhiteNoise((float) x, (float) y, (float) z) / 2D) + 0.5D;
}
}

View File

@ -6,8 +6,9 @@ import org.bukkit.block.data.BlockData;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.noise.RarityCellGenerator;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.IRare;
@ -16,7 +17,6 @@ import com.volmit.iris.util.KSet;
import com.volmit.iris.util.MaxNumber;
import com.volmit.iris.util.MinNumber;
import com.volmit.iris.util.RNG;
import com.volmit.iris.util.RarityCellGenerator;
import com.volmit.iris.util.Required;
import lombok.Data;

View File

@ -3,9 +3,9 @@ package com.volmit.iris.object;
import org.bukkit.block.data.BlockData;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.KList;

View File

@ -3,9 +3,9 @@ package com.volmit.iris.object;
import org.bukkit.block.data.BlockData;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.KList;

View File

@ -9,9 +9,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.PostBlockChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.ChunkPosition;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;

View File

@ -2,8 +2,8 @@ package com.volmit.iris.object;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.IrisInterpolation;

View File

@ -1,8 +1,8 @@
package com.volmit.iris.object;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.IrisInterpolation;

View File

@ -3,8 +3,8 @@ package com.volmit.iris.object;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.IRare;

View File

@ -1,7 +1,7 @@
package com.volmit.iris.object;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.MaxNumber;

View File

@ -1,7 +1,7 @@
package com.volmit.iris.object;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.MinNumber;

View File

@ -1,9 +1,9 @@
package com.volmit.iris.object;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.noise.CNG;
import com.volmit.iris.util.ArrayType;
import com.volmit.iris.util.BlockPosition;
import com.volmit.iris.util.CNG;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.KList;

View File

@ -4,7 +4,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.gen.ContextualChunkGenerator;
import com.volmit.iris.gen.ParallaxChunkGenerator;
import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.util.CellGenerator;
import com.volmit.iris.noise.CellGenerator;
import com.volmit.iris.util.Desc;
import com.volmit.iris.util.DontObfuscate;
import com.volmit.iris.util.MaxNumber;