Increase resolution of elevation interpolation

This commit is contained in:
dfsek 2020-11-12 09:36:32 -07:00
parent f6a4479855
commit 2d18f5dbe5
5 changed files with 139 additions and 55 deletions

View File

@ -7,7 +7,7 @@ import org.polydev.gaea.math.FastNoiseLite;
import org.polydev.gaea.math.Interpolator; import org.polydev.gaea.math.Interpolator;
public class ElevationInterpolator { public class ElevationInterpolator {
private final UserDefinedGenerator[][] gens = new UserDefinedGenerator[8][8]; private final UserDefinedGenerator[][] gens = new UserDefinedGenerator[10][10];
private final double[][] values = new double[18][18]; private final double[][] values = new double[18][18];
private final FastNoiseLite noise; private final FastNoiseLite noise;
private final int xOrigin; private final int xOrigin;
@ -20,16 +20,16 @@ public class ElevationInterpolator {
this.noise = noise; this.noise = noise;
this.grid = grid; this.grid = grid;
for(int x = -1; x < 7; x++) { for(int x = -2; x < 8; x++) {
for(int z = -1; z < 7; z++) { for(int z = -2; z < 8; z++) {
gens[x + 1][z + 1] = (UserDefinedGenerator) grid.getBiome(xOrigin + x * 4, zOrigin + z * 4, GenerationPhase.BASE).getGenerator(); gens[x + 2][z + 2] = (UserDefinedGenerator) grid.getBiome(xOrigin + x * 4, zOrigin + z * 4, GenerationPhase.BASE).getGenerator();
} }
} }
for(byte x = -1; x <= 16; x++) { for(byte x = -1; x <= 16; x++) {
for(byte z = -1; z <= 16; z++) { for(byte z = -1; z <= 16; z++) {
UserDefinedGenerator generator = getGenerator(x, z); UserDefinedGenerator generator = getGenerator(x, z);
if(compareGens((x / 4) + 1, (z / 4) + 1) && generator.interpolateElevation()) { if(compareGens((x / 4), (z / 4)) && generator.interpolateElevation()) {
Interpolator interpolator = new Interpolator(biomeAvg(x / 4, z / 4), Interpolator interpolator = new Interpolator(biomeAvg(x / 4, z / 4),
biomeAvg((x / 4) + 1, z / 4), biomeAvg((x / 4) + 1, z / 4),
biomeAvg(x / 4, (z / 4) + 1), biomeAvg(x / 4, (z / 4) + 1),
@ -45,36 +45,31 @@ public class ElevationInterpolator {
return (UserDefinedGenerator) grid.getBiome(xOrigin + x, zOrigin + z, GenerationPhase.BASE).getGenerator(); return (UserDefinedGenerator) grid.getBiome(xOrigin + x, zOrigin + z, GenerationPhase.BASE).getGenerator();
} }
private UserDefinedGenerator getStoredGen(int x, int z) {
return gens[x + 2][z + 2];
}
private boolean compareGens(int x, int z) { private boolean compareGens(int x, int z) {
UserDefinedGenerator comp = gens[x][z]; UserDefinedGenerator comp = getStoredGen(x, z);
if(!comp.equals(gens[x + 1][z])) return true; for(int xi = x - 2; xi <= x + 2; xi++) {
for(int zi = z - 2; zi <= z + 2; zi++) {
if(!comp.equals(gens[x][z + 1])) return true; if(!comp.equals(getStoredGen(xi, zi))) return true;
}
if(!comp.equals(gens[x - 1][z])) return true; }
return false;
if(!comp.equals(gens[x][z - 1])) return true;
if(!comp.equals(gens[x + 1][z + 1])) return true;
if(!comp.equals(gens[x - 1][z - 1])) return true;
if(!comp.equals(gens[x + 1][z - 1])) return true;
return !comp.equals(gens[x - 1][z + 1]);
} }
private double biomeAvg(int x, int z) { private double biomeAvg(int x, int z) {
return (elevate(gens[x + 2][z + 1], x * 4 + 4 + xOrigin, z * 4 + zOrigin) return (elevate(getStoredGen(x + 1, z), x * 4 + 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x][z + 1], x * 4 - 4 + xOrigin, z * 4 + zOrigin) + elevate(getStoredGen(x - 1, z), x * 4 - 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x + 1][z + 2], x * 4 + xOrigin, z * 4 + 4 + zOrigin) + elevate(getStoredGen(x, z + 1), x * 4 + xOrigin, z * 4 + 4 + zOrigin)
+ elevate(gens[x + 1][z], x * 4 + xOrigin, z * 4 - 4 + zOrigin) + elevate(getStoredGen(x, z - 1), x * 4 + xOrigin, z * 4 - 4 + zOrigin)
+ elevate(gens[x + 1][z + 1], x * 4 + xOrigin, z * 4 + zOrigin) + elevate(getStoredGen(x, z), x * 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x][z], x * 4 + xOrigin, z * 4 + zOrigin) + elevate(getStoredGen(x - 1, z - 1), x * 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x][z + 2], x * 4 + xOrigin, z * 4 + zOrigin) + elevate(getStoredGen(x - 1, z + 1), x * 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x + 2][z], x * 4 + xOrigin, z * 4 + zOrigin) + elevate(getStoredGen(x + 1, z - 1), x * 4 + xOrigin, z * 4 + zOrigin)
+ elevate(gens[x + 2][z + 2], x * 4 + xOrigin, z * 4 + zOrigin)) / 9D; + elevate(getStoredGen(x + 1, z + 1), x * 4 + xOrigin, z * 4 + zOrigin)) / 9D;
} }
private double elevate(UserDefinedGenerator g, int x, int z) { private double elevate(UserDefinedGenerator g, int x, int z) {

View File

@ -188,6 +188,7 @@ public class TerraChunkGenerator extends GaeaChunkGenerator {
return chunk; return chunk;
} }
private void load(World w) { private void load(World w) {
try { try {
popMan.loadBlocks(w); popMan.loadBlocks(w);

View File

@ -0,0 +1,73 @@
noise-equation: "((-((y / 63)^2)) + 1) + |(noise2(x/1.5, z/1.5)+0.25)|/2.5"
elevation:
equation: "min(floor(((max(noise2(x, z)+0.5, 0)))*8), 7)*6 + noise2(x*2,z*2)*12"
interpolation: true
extends: "BASIC_ORES"
id: "CRAG"
slant:
palette:
- "BLOCK:minecraft:bedrock": 0
- BEDROCK_MOST: 1
- BEDROCK_HALF: 2
- BEDROCK_LITTLE: 3
- "BLOCK:minecraft:stone": 255
y-offset:
top: 0.3
bottom: 0.25
palette:
- "BLOCK:minecraft:bedrock": 0
- BEDROCK_MOST: 1
- BEDROCK_HALF: 2
- BEDROCK_LITTLE: 3
- GRASSY: 255
vanilla: PLAINS
flora:
chance: 60
attempts: 2
simplex:
enable: true
frequency: 0.1
seed: 4
items:
SMALL_ROCK:
weight: 1
y:
min: 62
max: 180
TALL_GRASS:
weight: 1
y:
min: 62
max: 180
GRASS:
weight: 5
y:
min: 62
max: 180
LEAVES:
weight: 3
y:
min: 62
max: 180
slabs:
enable: true
threshold: 0.0075
palettes:
- "minecraft:stone": "MOUNTAIN_SLABS"
- "minecraft:gravel": "MOUNTAIN_SLABS"
use-stairs-if-available: true
stair-palettes:
- "minecraft:stone": "MOUNTAIN_STAIRS"
- "minecraft:gravel": "MOUNTAIN_STAIRS"
trees:
density: 7
items:
CACTUS:
weight: 1
y:
min: 58
max: 72

View File

@ -1,9 +1,9 @@
noise-equation: "((-((y / 63)^2)) + 1) + (noise2(x/1.5, z/1.5)+0.1)/2.5" noise-equation: "((-((y / 63)^2)) + 1) + |(noise2(x/1.5, z/1.5)+0.25)|/2.5"
elevation: elevation:
equation: "min(floor(((max(noise2(x/1.5, z/1.5)+0.1, 0)) + 0.1)*5), 3)*10" equation: "min(floor(((max(noise2(x/1.5, z/1.5)+0.25, 0)))*5), 3)*9"
interpolation: true interpolation: true
extends: "BASIC_ORES" extends: "BASIC_ORES"
id: "MESA" id: "CRAG"
slant: slant:
palette: palette:
@ -11,27 +11,42 @@ slant:
- BEDROCK_MOST: 1 - BEDROCK_MOST: 1
- BEDROCK_HALF: 2 - BEDROCK_HALF: 2
- BEDROCK_LITTLE: 3 - BEDROCK_LITTLE: 3
- RED_DESERT: 255 - "BLOCK:minecraft:terracotta": 255
- "BLOCK:minecraft:red_terracotta": 128 - "BLOCK:minecraft:gray_terracotta": 124
- "BLOCK:minecraft:orange_terracotta": 124 - "BLOCK:minecraft:cyan_terracotta": 121
- "BLOCK:minecraft:terracotta": 120 - "BLOCK:minecraft:white_terracotta": 120
- "BLOCK:minecraft:yellow_terracotta": 116 - "BLOCK:minecraft:gray_terracotta": 119
- "BLOCK:minecraft:red_terracotta": 112 - "BLOCK:minecraft:orange_terracotta": 117
- "BLOCK:minecraft:orange_terracotta": 108 - "BLOCK:minecraft:terracotta": 116
- "BLOCK:minecraft:terracotta": 104 - "BLOCK:minecraft:orange_terracotta": 115
- "BLOCK:minecraft:red_terracotta": 100 - "BLOCK:minecraft:terracotta": 111
- "BLOCK:minecraft:orange_terracotta": 96 - "BLOCK:minecraft:red_terracotta": 109
- "BLOCK:minecraft:terracotta": 108
- "BLOCK:minecraft:white_terracotta": 107
- "BLOCK:minecraft:red_terracotta": 106
- "BLOCK:minecraft:yellow_terracotta": 103
- "BLOCK:minecraft:terracotta": 102
- "BLOCK:minecraft:yellow_terracotta": 101
- "BLOCK:minecraft:terracotta": 98
- "BLOCK:minecraft:red_terracotta": 95
- "BLOCK:minecraft:yellow_terracotta": 94
- "BLOCK:minecraft:white_terracotta": 93
- "BLOCK:minecraft:terracotta": 92 - "BLOCK:minecraft:terracotta": 92
- "BLOCK:minecraft:yellow_terracotta": 88 - "BLOCK:minecraft:orange_terracotta": 88
- "BLOCK:minecraft:red_terracotta": 84 - "BLOCK:minecraft:terracotta": 87
- "BLOCK:minecraft:orange_terracotta": 80 - "BLOCK:minecraft:orange_terracotta": 86
- "BLOCK:minecraft:terracotta": 76 - "BLOCK:minecraft:terracotta": 85
- "BLOCK:minecraft:yellow_terracotta": 72 - "BLOCK:minecraft:red_terracotta": 82
- "BLOCK:minecraft:red_terracotta": 68 - "BLOCK:minecraft:terracotta": 80
- "BLOCK:minecraft:orange_terracotta": 64 - "BLOCK:minecraft:orange_terracotta": 77
- "BLOCK:minecraft:terracotta": 60 - "BLOCK:minecraft:yellow_terracotta": 76
- "BLOCK:minecraft:yellow_terracotta": 56 - "BLOCK:minecraft:gray_terracotta": 75
- "BLOCK:minecraft:red_terracotta": 52 - "BLOCK:minecraft:cyan_terracotta": 73
- "BLOCK:minecraft:white_terracotta": 72
- "BLOCK:minecraft:terracotta": 71
- "BLOCK:minecraft:terracotta": 70
- "BLOCK:minecraft:orange_terracotta": 66
- "BLOCK:minecraft:terracotta": 65
y-offset: y-offset:
top: 0.3 top: 0.3
bottom: 0.25 bottom: 0.25

View File

@ -43,8 +43,8 @@ frequencies:
zone: 2048 zone: 2048
blend: blend:
enable: true enable: true
frequency: 0.125 frequency: 0.12
amplitude: 10 amplitude: 5
erode: erode:
enable: true enable: true
frequency: 0.001 frequency: 0.001