From 97729fd6599794f40fafc7f29102f8486db489a0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 15 Jun 2021 19:31:51 -0400 Subject: [PATCH] Stateless simplex (2) --- core/src/mindustry/graphics/g3d/NoiseMesh.java | 4 +--- .../maps/planet/ErekirPlanetGenerator.java | 16 +++++++--------- .../maps/planet/TantrosPlanetGenerator.java | 13 ++++++------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/NoiseMesh.java b/core/src/mindustry/graphics/g3d/NoiseMesh.java index b796d7b67c..143760a551 100644 --- a/core/src/mindustry/graphics/g3d/NoiseMesh.java +++ b/core/src/mindustry/graphics/g3d/NoiseMesh.java @@ -7,16 +7,14 @@ import mindustry.graphics.*; import mindustry.type.*; public class NoiseMesh extends HexMesh{ - Simplex sim; public NoiseMesh(Planet planet, int seed, int divisions, Color color, float radius, int octaves, float persistence, float scale, float mag){ this.planet = planet; - this.sim = new Simplex(planet.id + seed); this.shader = Shaders.planet; this.mesh = MeshBuilder.buildHex(new HexMesher(){ @Override public float getHeight(Vec3 position){ - return (float)sim.octaveNoise3D(octaves, persistence, scale, 5f + position.x, 5f + position.y, 5f + position.z) * mag; + return (float)Simplex.noise3d(planet.id + seed, octaves, persistence, scale, 5f + position.x, 5f + position.y, 5f + position.z) * mag; } @Override diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index 4128b9f068..1fb20abace 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -17,6 +17,8 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class ErekirPlanetGenerator extends PlanetGenerator{ + static final int seed = 2; + public float scl = 2f; public float heightScl = 0.9f, octaves = 8, persistence = 0.7f, heightPow = 3f, heightMult = 1.6f; @@ -24,10 +26,6 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ {Blocks.regolith, Blocks.regolith, Blocks.yellowStone, Blocks.rhyolite, Blocks.basalt} }; - { - noise.setSeed(2); - } - @Override public void generateSector(Sector sector){ //no bases right now @@ -50,11 +48,11 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ } float rawHeight(Vec3 position){ - return (float)noise.octaveNoise3D(octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z); + return (float)Simplex.noise3d(seed, octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z); } float rawTemp(Vec3 position){ - return position.dst(0, 0, 1)*2.2f - (float)noise.octaveNoise3D(8, 0.54f, 1.4f, 10f + position.x, 10f + position.y, 10f + position.z) * 2.9f; + return position.dst(0, 0, 1)*2.2f - (float)Simplex.noise3d(seed, 8, 0.54f, 1.4f, 10f + position.x, 10f + position.y, 10f + position.z) * 2.9f; } Block getBlock(Vec3 position){ @@ -63,7 +61,7 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ float height = rawHeight(position); Tmp.v31.set(position); position = Tmp.v33.set(position).scl(scl); - float temp = (float)noise.octaveNoise3D(8, 0.6, 1f/2f, 10f + position.x, 10f + position.y + 99f, 10f + position.z); + float temp = (float)Simplex.noise3d(seed, 8, 0.6, 1f/2f, 10f + position.x, 10f + position.y + 99f, 10f + position.z); height *= 1.2f; height = Mathf.clamp(height); @@ -88,11 +86,11 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ tile.block = tile.floor.asFloor().wall; - if(RidgedPerlin.noise3d(1, position.x, position.y, position.z, 2, 25) > 0.2){ + if(Ridged.noise3d(1, position.x, position.y, position.z, 2, 25) > 0.2){ tile.block = Blocks.air; } - if(RidgedPerlin.noise3d(2, position.x, position.y + 4f, position.z, 3, 7f) > 0.7){ + if(Ridged.noise3d(2, position.x, position.y + 4f, position.z, 3, 7f) > 0.7){ tile.floor = Blocks.graphiticStone; } } diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index 9c9012ee3e..897580c6e6 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -4,6 +4,7 @@ import arc.graphics.*; import arc.math.*; import arc.math.geom.*; import arc.util.*; +import arc.util.noise.*; import mindustry.*; import mindustry.content.*; import mindustry.game.*; @@ -15,16 +16,14 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class TantrosPlanetGenerator extends PlanetGenerator{ + static final int seed = 1; + Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"), out = new Color(); Block[][] arr = { {Blocks.redmat, Blocks.redmat, Blocks.darksand, Blocks.bluemat, Blocks.bluemat} }; - { - noise.setSeed(1); - } - @Override public void generateSector(Sector sector){ //no bases @@ -37,7 +36,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ - float depth = (float)noise.octaveNoise3D(2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; + float depth = (float)Simplex.noise3d(seed, 2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(0.6f); } @@ -92,14 +91,14 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ } float rawHeight(Vec3 position){ - return (float)noise.octaveNoise3D(8, 0.7f, 1f, position.x, position.y, position.z); + return (float)Simplex.noise3d(seed, 8, 0.7f, 1f, position.x, position.y, position.z); } Block getBlock(Vec3 position){ float height = rawHeight(position); Tmp.v31.set(position); position = Tmp.v33.set(position).scl(2f); - float temp = (float)noise.octaveNoise3D(8, 0.6, 1f/2f, position.x, position.y + 99f, position.z); + float temp = (float)Simplex.noise3d(seed, 8, 0.6, 1f/2f, position.x, position.y + 99f, position.z); height *= 1.2f; height = Mathf.clamp(height);