Stateless simplex (2)
This commit is contained in:
@@ -7,16 +7,14 @@ import mindustry.graphics.*;
|
|||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
|
|
||||||
public class NoiseMesh extends HexMesh{
|
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){
|
public NoiseMesh(Planet planet, int seed, int divisions, Color color, float radius, int octaves, float persistence, float scale, float mag){
|
||||||
this.planet = planet;
|
this.planet = planet;
|
||||||
this.sim = new Simplex(planet.id + seed);
|
|
||||||
this.shader = Shaders.planet;
|
this.shader = Shaders.planet;
|
||||||
this.mesh = MeshBuilder.buildHex(new HexMesher(){
|
this.mesh = MeshBuilder.buildHex(new HexMesher(){
|
||||||
@Override
|
@Override
|
||||||
public float getHeight(Vec3 position){
|
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
|
@Override
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import mindustry.world.meta.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class ErekirPlanetGenerator extends PlanetGenerator{
|
public class ErekirPlanetGenerator extends PlanetGenerator{
|
||||||
|
static final int seed = 2;
|
||||||
|
|
||||||
public float scl = 2f;
|
public float scl = 2f;
|
||||||
public float heightScl = 0.9f, octaves = 8, persistence = 0.7f, heightPow = 3f, heightMult = 1.6f;
|
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}
|
{Blocks.regolith, Blocks.regolith, Blocks.yellowStone, Blocks.rhyolite, Blocks.basalt}
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
|
||||||
noise.setSeed(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateSector(Sector sector){
|
public void generateSector(Sector sector){
|
||||||
//no bases right now
|
//no bases right now
|
||||||
@@ -50,11 +48,11 @@ public class ErekirPlanetGenerator extends PlanetGenerator{
|
|||||||
}
|
}
|
||||||
|
|
||||||
float rawHeight(Vec3 position){
|
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){
|
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){
|
Block getBlock(Vec3 position){
|
||||||
@@ -63,7 +61,7 @@ public class ErekirPlanetGenerator extends PlanetGenerator{
|
|||||||
float height = rawHeight(position);
|
float height = rawHeight(position);
|
||||||
Tmp.v31.set(position);
|
Tmp.v31.set(position);
|
||||||
position = Tmp.v33.set(position).scl(scl);
|
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 *= 1.2f;
|
||||||
height = Mathf.clamp(height);
|
height = Mathf.clamp(height);
|
||||||
|
|
||||||
@@ -88,11 +86,11 @@ public class ErekirPlanetGenerator extends PlanetGenerator{
|
|||||||
|
|
||||||
tile.block = tile.floor.asFloor().wall;
|
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;
|
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;
|
tile.floor = Blocks.graphiticStone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.graphics.*;
|
|||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import arc.util.noise.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
@@ -15,16 +16,14 @@ import mindustry.world.meta.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class TantrosPlanetGenerator extends PlanetGenerator{
|
public class TantrosPlanetGenerator extends PlanetGenerator{
|
||||||
|
static final int seed = 1;
|
||||||
|
|
||||||
Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"), out = new Color();
|
Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"), out = new Color();
|
||||||
|
|
||||||
Block[][] arr = {
|
Block[][] arr = {
|
||||||
{Blocks.redmat, Blocks.redmat, Blocks.darksand, Blocks.bluemat, Blocks.bluemat}
|
{Blocks.redmat, Blocks.redmat, Blocks.darksand, Blocks.bluemat, Blocks.bluemat}
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
|
||||||
noise.setSeed(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateSector(Sector sector){
|
public void generateSector(Sector sector){
|
||||||
//no bases
|
//no bases
|
||||||
@@ -37,7 +36,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Color getColor(Vec3 position){
|
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);
|
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){
|
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){
|
Block getBlock(Vec3 position){
|
||||||
float height = rawHeight(position);
|
float height = rawHeight(position);
|
||||||
Tmp.v31.set(position);
|
Tmp.v31.set(position);
|
||||||
position = Tmp.v33.set(position).scl(2f);
|
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 *= 1.2f;
|
||||||
height = Mathf.clamp(height);
|
height = Mathf.clamp(height);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user