Merge pull request #372 from Astrashh/dev/salt-lookup

Add option to not salt cellular lookup
This commit is contained in:
dfsek 2022-09-27 12:11:45 -07:00 committed by GitHub
commit d8d2d30a3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -35,6 +35,10 @@ public class CellularNoiseTemplate extends NoiseTemplate<CellularSampler> {
@Default @Default
private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); private @Meta NoiseSampler lookup = new OpenSimplex2Sampler();
@Value("salt-lookup")
@Default
private @Meta boolean saltLookup = true;
@Override @Override
public NoiseSampler get() { public NoiseSampler get() {
CellularSampler sampler = new CellularSampler(); CellularSampler sampler = new CellularSampler();
@ -44,6 +48,7 @@ public class CellularNoiseTemplate extends NoiseTemplate<CellularSampler> {
sampler.setReturnType(cellularReturnType); sampler.setReturnType(cellularReturnType);
sampler.setDistanceFunction(cellularDistanceFunction); sampler.setDistanceFunction(cellularDistanceFunction);
sampler.setSalt(salt); sampler.setSalt(salt);
sampler.setSaltLookup(saltLookup);
return sampler; return sampler;
} }
} }

View File

@ -200,6 +200,8 @@ public class CellularSampler extends NoiseFunction {
private NoiseSampler noiseLookup; private NoiseSampler noiseLookup;
private boolean saltLookup;
public CellularSampler() { public CellularSampler() {
noiseLookup = new OpenSimplex2Sampler(); noiseLookup = new OpenSimplex2Sampler();
} }
@ -220,6 +222,10 @@ public class CellularSampler extends NoiseFunction {
this.returnType = returnType; this.returnType = returnType;
} }
public void setSaltLookup(boolean saltLookup) {
this.saltLookup = saltLookup;
}
@Override @Override
public double getNoiseRaw(long sl, double x, double y) { public double getNoiseRaw(long sl, double x, double y) {
int seed = (int) sl; int seed = (int) sl;
@ -350,7 +356,7 @@ public class CellularSampler extends NoiseFunction {
case Distance2Sub -> distance1 - distance0 - 1; case Distance2Sub -> distance1 - distance0 - 1;
case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
case Distance2Div -> distance0 / distance1 - 1; case Distance2Div -> distance0 / distance1 - 1;
case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY); case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY);
case Distance3 -> distance2 - 1; case Distance3 -> distance2 - 1;
case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
case Distance3Sub -> distance2 - distance0 - 1; case Distance3Sub -> distance2 - distance0 - 1;
@ -513,7 +519,7 @@ public class CellularSampler extends NoiseFunction {
case Distance2Sub -> distance1 - distance0 - 1; case Distance2Sub -> distance1 - distance0 - 1;
case Distance2Mul -> distance1 * distance0 * 0.5 - 1; case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
case Distance2Div -> distance0 / distance1 - 1; case Distance2Div -> distance0 / distance1 - 1;
case NoiseLookup -> noiseLookup.noise(sl, centerX, centerY, centerZ); case NoiseLookup -> noiseLookup.noise(sl - (saltLookup ? 0 : salt), centerX, centerY, centerZ);
case Distance3 -> distance2 - 1; case Distance3 -> distance2 - 1;
case Distance3Add -> (distance2 + distance0) * 0.5 - 1; case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
case Distance3Sub -> distance2 - distance0 - 1; case Distance3Sub -> distance2 - distance0 - 1;