mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-15 14:39:40 +00:00
simply noise context api
This commit is contained in:
@@ -22,12 +22,12 @@ public abstract class Normalizer implements NoiseSampler {
|
||||
public abstract double normalize(double in);
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return normalize(sampler.noise(seed, x, y));
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return normalize(sampler.noise(seed, x, y, z));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public class DomainWarpedSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return function.noise(seed++,
|
||||
x + warp.noise(seed++, x, y) * amplitude,
|
||||
y + warp.noise(seed, x, y) * amplitude
|
||||
@@ -32,7 +32,7 @@ public class DomainWarpedSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return function.noise(seed++,
|
||||
x + warp.noise(seed++, x, y, z) * amplitude,
|
||||
y + warp.noise(seed++, x, y, z) * amplitude,
|
||||
|
||||
@@ -26,14 +26,14 @@ public class ImageSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return ((channel.getChannel(image.getRGB(Math.floorMod((int) Math.floor(x * frequency), image.getWidth()),
|
||||
Math.floorMod((int) Math.floor(y * frequency), image.getHeight()))) / 255D) - 0.5) *
|
||||
2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return noise(seed, x, y);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ public class KernelSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
x *= frequency;
|
||||
y *= frequency;
|
||||
double accumulator = 0;
|
||||
@@ -45,7 +45,7 @@ public class KernelSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
x *= frequency;
|
||||
y *= frequency;
|
||||
z *= frequency;
|
||||
|
||||
@@ -18,12 +18,12 @@ public class LinearHeightmapSampler implements NoiseSampler {
|
||||
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return noise(seed, x, 0, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return -y + base + sampler.noise(seed, x, y, z) * scale;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ public class TranslateSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return sampler.noise(seed, x - dx, y - dz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return sampler.noise(seed, x - dx, y - dy, z - dz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@ public abstract class BinaryArithmeticSampler implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return operate(left.noise(seed, x, y), right.noise(seed, x, y));
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return operate(left.noise(seed, x, y, z), right.noise(seed, x, y, z));
|
||||
}
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ public class CellularSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int xr = (int) Math.round(x);
|
||||
int yr = (int) Math.round(y);
|
||||
@@ -298,7 +298,7 @@ public class CellularSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int xr = (int) Math.round(x);
|
||||
int yr = (int) Math.round(y);
|
||||
|
||||
@@ -21,12 +21,12 @@ public class ConstantSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return constant;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return constant;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class DistanceSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
double dx = x - ox;
|
||||
double dy = y - oz;
|
||||
if (normalize && (Math.abs(dx) > radius || Math.abs(dy) > radius)) return 1;
|
||||
@@ -35,7 +35,7 @@ public class DistanceSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
double dx = x - ox;
|
||||
double dy = y - oy;
|
||||
double dz = z - oz;
|
||||
|
||||
@@ -42,12 +42,12 @@ public class ExpressionFunction extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return expression.evaluate(new SeedContext(seed), x, 0, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return expression.evaluate(new SeedContext(seed), x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,12 +105,12 @@ public class GaborNoiseSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double z, double[] context, int contextRadius) {
|
||||
return gaborNoise(seed, x, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return gaborNoise(seed, x, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,32 +53,30 @@ public abstract class NoiseFunction implements NoiseSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, context, contextLayer, contextRadius);
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, context, contextRadius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency, context, contextLayer, contextRadius);
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency, context, contextRadius);
|
||||
}
|
||||
|
||||
public double getNoiseRaw(long seed, double x, double y) {
|
||||
int contextRadius = getContextRadius();
|
||||
|
||||
ArrayList<double[]> list = new ArrayList<>();
|
||||
generateContext(seed, x, y, list, 0, contextRadius);
|
||||
return getNoiseRaw(seed, x, y, list, 0, getContextRadius());
|
||||
double[] context = generateContext(seed, x, y, contextRadius);
|
||||
return getNoiseRaw(seed, x, y, context, getContextRadius());
|
||||
}
|
||||
|
||||
public double getNoiseRaw(long seed, double x, double y, double z) {
|
||||
int contextRadius = getContextRadius();
|
||||
|
||||
ArrayList<double[]> list = new ArrayList<>();
|
||||
generateContext(seed, x, y, z, list, 0, contextRadius);
|
||||
return getNoiseRaw(seed, x, y, z, list, 0, getContextRadius());
|
||||
double[] context = generateContext(seed, x, y, z, contextRadius);
|
||||
return getNoiseRaw(seed, x, y, z, context, getContextRadius());
|
||||
}
|
||||
|
||||
public abstract double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius);
|
||||
public abstract double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius);
|
||||
|
||||
public abstract double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius);
|
||||
public abstract double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius);
|
||||
}
|
||||
|
||||
@@ -234,18 +234,16 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
|
||||
public void generateContextRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double[] generateContextRaw(long sl, double x, double y, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
|
||||
// Round sampled position to integers to derive grid coordinates
|
||||
int gridX = (int) Math.round(x);
|
||||
int gridY = (int) Math.round(y);
|
||||
|
||||
int nextContextLayer = contextLayer + 1;
|
||||
int nextContextRadius = contextRadius + getContextRadius();
|
||||
|
||||
context.add(contextLayer, new double[0]);
|
||||
this.lookup.generateContext(seed, x, y, context, nextContextLayer, nextContextRadius);
|
||||
double[] context = this.lookup.generateContext(seed, x, y, nextContextRadius);
|
||||
|
||||
int contextCircumference = (contextRadius * 2 + 1);
|
||||
int contextSizeArraySize = contextCircumference * contextCircumference * 3;
|
||||
@@ -267,7 +265,7 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
double actualCellX = cellX * inverseFrequency;
|
||||
double actualCellY = cellY * inverseFrequency;
|
||||
|
||||
double lookup = this.lookup.noise(seed, actualCellX, actualCellY, context, nextContextLayer, nextContextRadius);
|
||||
double lookup = this.lookup.noise(seed, actualCellX, actualCellY, context, nextContextRadius);
|
||||
|
||||
cellData[cellDataIndex++] = cellX;
|
||||
cellData[cellDataIndex++] = cellY;
|
||||
@@ -275,14 +273,12 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
}
|
||||
}
|
||||
|
||||
context.add(contextLayer, cellData);
|
||||
return cellData;
|
||||
}
|
||||
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] cellData, int contextRadius) {
|
||||
double finalDistance = Double.MAX_VALUE;
|
||||
|
||||
double[] cellData = context.get(contextLayer);
|
||||
|
||||
|
||||
int xIndexSize = (contextRadius * 6) + 3;
|
||||
|
||||
int deltaRadius = (contextRadius - NEARBY_CELLS_RADIUS);
|
||||
@@ -292,17 +288,14 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
|
||||
// Iterate over nearby cells
|
||||
int cellDataIndex = xIndex;
|
||||
//int cellDataIndex = 21;
|
||||
for(int xi = -NEARBY_CELLS_RADIUS; xi <= NEARBY_CELLS_RADIUS; xi++) {
|
||||
cellDataIndex += yIndex;
|
||||
//cellDataIndex += 3;
|
||||
for(int yi = -NEARBY_CELLS_RADIUS; yi <= NEARBY_CELLS_RADIUS; yi++) {
|
||||
|
||||
// Find cell position with the lowest lookup value within moore neighborhood of neighbor
|
||||
double lowestLookup = Double.MAX_VALUE;
|
||||
double connectedCellX = 0;
|
||||
double connectedCellY = 0;
|
||||
//int cellDataIndexN = cellDataIndex - xIndex - 1;
|
||||
int cellDataIndexN = cellDataIndex - 22;
|
||||
int yniMin = yi - MAX_CONNECTION_RADIUS;
|
||||
int yniMax = yi + MAX_CONNECTION_RADIUS;
|
||||
@@ -332,7 +325,6 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
cellDataIndex += 3;
|
||||
}
|
||||
cellDataIndex += yIndex;
|
||||
//cellDataIndex += 3;
|
||||
}
|
||||
|
||||
return finalDistance;
|
||||
@@ -372,29 +364,24 @@ public class PseudoErosionSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, context, contextLayer, contextRadius);
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, context, contextRadius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency, context, contextLayer, contextRadius);
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency, context, contextRadius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateContext(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
generateContextRaw(seed + salt, x * frequency, y * frequency, context, contextLayer, contextRadius);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateContext(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
public double[] generateContext(long seed, double x, double y, int contextRadius) {
|
||||
return generateContextRaw(seed + salt, x * frequency, y * frequency, contextRadius);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,7 +19,7 @@ public class BrownianMotionSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class BrownianMotionSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public class PingPongSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
@@ -49,7 +49,7 @@ public class PingPongSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ public class RidgedFractalSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
@@ -38,7 +38,7 @@ public class RidgedFractalSampler extends FractalNoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
double sum = 0;
|
||||
double amp = fractalBounding;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ public class GaussianNoiseSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
double v1, v2, s;
|
||||
do {
|
||||
v1 = whiteNoiseSampler.noise(seed++, x, y);
|
||||
@@ -35,7 +35,7 @@ public class GaussianNoiseSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
double v1, v2, s;
|
||||
do {
|
||||
v1 = whiteNoiseSampler.noise(seed++, x, y, z);
|
||||
|
||||
@@ -42,12 +42,12 @@ public class WhiteNoiseSampler extends NoiseFunction {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return (getNoiseUnmapped(seed, x, y) - 1.5) * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return (getNoiseUnmapped(seed, x, y, z) - 1.5) * 2;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.List;
|
||||
public class OpenSimplex2SSampler extends SimplexStyleSampler {
|
||||
@Override
|
||||
@SuppressWarnings("NumericOverflow")
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
// 2D OpenSimplex2S case is a modified 2D simplex noise.
|
||||
|
||||
@@ -124,7 +124,7 @@ public class OpenSimplex2SSampler extends SimplexStyleSampler {
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("NumericOverflow")
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
// 3D OpenSimplex2S case uses two offset rotated cube grids.
|
||||
final double R3 = (2.0 / 3.0);
|
||||
|
||||
@@ -17,7 +17,7 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler {
|
||||
private static final double SQRT3 = 1.7320508075688772935274463415059;
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
// 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex.
|
||||
final double G2 = (3 - SQRT3) / 6;
|
||||
@@ -78,7 +78,7 @@ public class OpenSimplex2Sampler extends SimplexStyleSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
// 3D OpenSimplex2Sampler case uses two offset rotated cube grids.
|
||||
final double R3 = (2.0 / 3.0);
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
*/
|
||||
public class PerlinSampler extends SimplexStyleSampler {
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x0 = (int) Math.floor(x);
|
||||
int y0 = (int) Math.floor(y);
|
||||
@@ -42,7 +42,7 @@ public class PerlinSampler extends SimplexStyleSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x0 = (int) Math.floor(x);
|
||||
int y0 = (int) Math.floor(y);
|
||||
|
||||
@@ -61,7 +61,7 @@ public class SimplexSampler extends SimplexStyleSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
double t = (x + y) * F2;
|
||||
int i = (int) Math.floor(x + t);
|
||||
@@ -118,7 +118,7 @@ public class SimplexSampler extends SimplexStyleSampler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
double t = (x + y + z) * F3;
|
||||
int i = (int) Math.floor(x + t);
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
|
||||
public class ValueCubicSampler extends ValueStyleNoise {
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x1 = (int) Math.floor(x);
|
||||
int y1 = (int) Math.floor(y);
|
||||
@@ -44,7 +44,7 @@ public class ValueCubicSampler extends ValueStyleNoise {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x1 = (int) Math.floor(x);
|
||||
int y1 = (int) Math.floor(y);
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
|
||||
public class ValueSampler extends ValueStyleNoise {
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x0 = (int) Math.floor(x);
|
||||
int y0 = (int) Math.floor(y);
|
||||
@@ -34,7 +34,7 @@ public class ValueSampler extends ValueStyleNoise {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double getNoiseRaw(long sl, double x, double y, double z, double[] context, int contextRadius) {
|
||||
int seed = (int) sl;
|
||||
int x0 = (int) Math.floor(x);
|
||||
int y0 = (int) Math.floor(y);
|
||||
|
||||
@@ -21,29 +21,16 @@ import java.util.List;
|
||||
public interface NoiseSampler {
|
||||
static NoiseSampler zero() {
|
||||
return new NoiseSampler() {
|
||||
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double[] context, int contextRadius) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
public double noise(long seed, double x, double y, double z, double[] context, int contextRadius) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateContext(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateContext(long seed, double x, double y, double z, List<double[]> context, int contextLayer,
|
||||
int contextRadius) {
|
||||
//no-op
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getContextRadius() {
|
||||
return 0;
|
||||
@@ -68,29 +55,28 @@ public interface NoiseSampler {
|
||||
return noise(seed, vector2.getX(), vector2.getZ());
|
||||
}
|
||||
|
||||
default double noise(Vector3 vector3, long seed, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ(), context, contextLayer, contextRadius);
|
||||
default double noise(Vector3 vector3, long seed, double[] context, int contextRadius) {
|
||||
return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ(), context, contextRadius);
|
||||
}
|
||||
|
||||
default double noise(Vector3Int vector3, long seed, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ(), context, contextLayer, contextRadius);
|
||||
default double noise(Vector3Int vector3, long seed, double[] context, int contextRadius) {
|
||||
return noise(seed, vector3.getX(), vector3.getY(), vector3.getZ(), context, contextRadius);
|
||||
}
|
||||
|
||||
|
||||
default double noise(Vector2 vector2, long seed, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, vector2.getX(), vector2.getZ(), context, contextLayer, contextRadius);
|
||||
default double noise(Vector2 vector2, long seed, double[] context, int contextRadius) {
|
||||
return noise(seed, vector2.getX(), vector2.getZ(), context, contextRadius);
|
||||
}
|
||||
|
||||
default double noise(Vector2Int vector2, long seed, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, vector2.getX(), vector2.getZ(), context, contextLayer, contextRadius);
|
||||
default double noise(Vector2Int vector2, long seed, double[] context, int contextRadius) {
|
||||
return noise(seed, vector2.getX(), vector2.getZ(), context, contextRadius);
|
||||
}
|
||||
|
||||
default double noise(long seed, double x, double y) {
|
||||
int contextRadius = getContextRadius();
|
||||
|
||||
ArrayList<double[]> list = new ArrayList<>();
|
||||
generateContext(seed, x, y, list, 0, contextRadius);
|
||||
return noise(seed, x, y, list, 0, contextRadius);
|
||||
double[] context = generateContext(seed, x, y, contextRadius);
|
||||
return noise(seed, x, y, context, contextRadius);
|
||||
}
|
||||
|
||||
default double noise(long seed, int x, int y) {
|
||||
@@ -100,87 +86,82 @@ public interface NoiseSampler {
|
||||
default double noise(long seed, double x, double y, double z) {
|
||||
int contextRadius = getContextRadius();
|
||||
|
||||
ArrayList<double[]> list = new ArrayList<>();
|
||||
generateContext(seed, x, y, z, list, 0, contextRadius);
|
||||
return noise(seed, x, y, z, list, 0, contextRadius);
|
||||
double[] context = generateContext(seed, x, y, z, contextRadius);
|
||||
return noise(seed, x, y, z, context, contextRadius);
|
||||
}
|
||||
|
||||
default double noise(long seed, int x, int y, int z) {
|
||||
return noise(seed, (double) x, y, z);
|
||||
}
|
||||
|
||||
double noise(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius);
|
||||
double noise(long seed, double x, double y, double[] context, int contextRadius);
|
||||
|
||||
default double noise(long seed, int x, int y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, (double) x, y, context, contextLayer, contextRadius);
|
||||
default double noise(long seed, int x, int y, double[] context, int contextRadius) {
|
||||
return noise(seed, (double) x, y, context, contextRadius);
|
||||
}
|
||||
|
||||
double noise(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius);
|
||||
double noise(long seed, double x, double y, double z, double[] context, int contextRadius);
|
||||
|
||||
default double noise(long seed, int x, int y, int z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
return noise(seed, (double) x, y, z, context, contextLayer, contextRadius);
|
||||
default double noise(long seed, int x, int y, int z, double[] context, int contextRadius) {
|
||||
return noise(seed, (double) x, y, z, context, contextRadius);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector2 vector2, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
default double[] generateContext(long seed, Vector2 vector2, int contextRadius) {
|
||||
return new double[0];
|
||||
}
|
||||
default void generateContext(long seed, Vector2 vector2, List<double[]> context) {
|
||||
generateContext(seed, vector2.getX(), vector2.getZ(), context);
|
||||
default double[] generateContext(long seed, Vector2 vector2) {
|
||||
return generateContext(seed, vector2.getX(), vector2.getZ());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector2Int vector2, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
generateContext(seed, (double) vector2.getX(), vector2.getZ(), context, contextLayer, contextRadius);
|
||||
default double[] generateContext(long seed, Vector2Int vector2, int contextRadius) {
|
||||
return generateContext(seed, (double) vector2.getX(), vector2.getZ(), contextRadius);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector2Int vector2, List<double[]> context) {
|
||||
generateContext(seed, (double) vector2.getX(), vector2.getZ(), context);
|
||||
default double[] generateContext(long seed, Vector2Int vector2) {
|
||||
return generateContext(seed, (double) vector2.getX(), vector2.getZ());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector3 vector3, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
default double[] generateContext(long seed, Vector3 vector3, int contextRadius) {
|
||||
return new double[0];
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector3 vector3, List<double[]> context) {
|
||||
generateContext(seed, vector3.getX(), vector3.getY(), vector3.getZ(), context);
|
||||
default double[] generateContext(long seed, Vector3 vector3) {
|
||||
return generateContext(seed, vector3.getX(), vector3.getY(), vector3.getZ());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector3Int vector3, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
generateContext(seed, (double) vector3.getX(), vector3.getY(), vector3.getZ(), context, contextLayer, contextRadius);
|
||||
default double[] generateContext(long seed, Vector3Int vector3, int contextRadius) {
|
||||
return generateContext(seed, (double) vector3.getX(), vector3.getY(), vector3.getZ(), contextRadius);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, Vector3Int vector3, List<double[]> context) {
|
||||
generateContext(seed, (double) vector3.getX(), vector3.getY(), vector3.getZ(), context);
|
||||
default double[] generateContext(long seed, Vector3Int vector3) {
|
||||
return generateContext(seed, (double) vector3.getX(), vector3.getY(), vector3.getZ());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, double x, double y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
default double[] generateContext(long seed, double x, double y, int contextRadius) {
|
||||
return new double[0];
|
||||
}
|
||||
default void generateContext(long seed, double x, double y, List<double[]> context) {
|
||||
generateContext(seed, x, y, context, 0, getContextRadius());
|
||||
default double[] generateContext(long seed, double x, double y) {
|
||||
return generateContext(seed, x, y, getContextRadius());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, int x, int y, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
generateContext(seed, (double) x, y, context, contextLayer, contextRadius);
|
||||
default double[] generateContext(long seed, int x, int y) {
|
||||
return generateContext(seed, (double) x, y);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, int x, int y, List<double[]> context) {
|
||||
generateContext(seed, (double) x, y, context);
|
||||
default double[] generateContext(long seed, double x, double y, double z, int contextRadius) {
|
||||
return new double[0];
|
||||
}
|
||||
|
||||
default void generateContext(long seed, double x, double y, double z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
//no-op
|
||||
default double[] generateContext(long seed, double x, double y, double z) {
|
||||
return generateContext(seed, x, y, z, getContextRadius());
|
||||
}
|
||||
|
||||
default void generateContext(long seed, double x, double y, double z, List<double[]> context) {
|
||||
generateContext(seed, x, y, z, context, 0, getContextRadius());
|
||||
default double[] generateContext(long seed, int x, int y, int z, int contextRadius) {
|
||||
return generateContext(seed, (double) x, y, z, contextRadius);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, int x, int y, int z, List<double[]> context, int contextLayer, int contextRadius) {
|
||||
generateContext(seed, (double) x, y, z, context, contextLayer, contextRadius);
|
||||
}
|
||||
|
||||
default void generateContext(long seed, int x, int y, int z, List<double[]> context) {
|
||||
generateContext(seed, (double) x, y, z, context);
|
||||
default double[] generateContext(long seed, int x, int y, int z) {
|
||||
return generateContext(seed, (double) x, y, z);
|
||||
}
|
||||
|
||||
default int getContextRadius() {
|
||||
|
||||
@@ -51,25 +51,25 @@ public class ProbabilityCollection<E> implements Collection<E> {
|
||||
@SuppressWarnings("unchecked")
|
||||
public E get(NoiseSampler n, double x, double y, double z, long seed) {
|
||||
if(array.length == 0) return null;
|
||||
return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, y, z), array.length)];
|
||||
return (E) array[MathUtil.normalizeIndex(n.noise(seed, x, y, z), array.length)];
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public E get(NoiseSampler n, Vector3Int vector3Int, long seed) {
|
||||
if(array.length == 0) return null;
|
||||
return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)];
|
||||
return (E) array[MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)];
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public E get(NoiseSampler n, Vector3 vector3Int, long seed) {
|
||||
if(array.length == 0) return null;
|
||||
return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)];
|
||||
return (E) array[MathUtil.normalizeIndex(n.noise(seed, vector3Int.getX(), vector3Int.getY(), vector3Int.getZ()), array.length)];
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public E get(NoiseSampler n, double x, double z, long seed) {
|
||||
if(array.length == 0) return null;
|
||||
return (E) array[(int) MathUtil.normalizeIndex(n.noise(seed, x, z), array.length)];
|
||||
return (E) array[MathUtil.normalizeIndex(n.noise(seed, x, z), array.length)];
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
Reference in New Issue
Block a user