@Override public void process(GeneratingRegion region) { SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class); float[] noise = riverNoise.noise(facet.getWorldRegion()); float[] surfaceHeights = facet.getInternal(); for (int i = 0; i < noise.length; ++i) { surfaceHeights[i] += configuration.maxDepth * TeraMath.clamp(7f * (TeraMath.sqrt(Math.abs(noise[i] * 2.11f)) - 0.1f) + 0.25f); } }
@Override public void process(GeneratingRegion region) { SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class); float[] noise = oceanNoise.noise(facet.getWorldRegion()); float[] surfaceHeights = facet.getInternal(); for (int i = 0; i < noise.length; ++i) { surfaceHeights[i] -= configuration.maxDepth * TeraMath.clamp(noise[i] * 8.0f * 2.11f + 0.25f); } }
@Override public void process(GeneratingRegion region) { SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class); float[] mountainData = mountainNoise.noise(facet.getWorldRegion()); float[] hillData = hillNoise.noise(facet.getWorldRegion()); SurfaceTemperatureFacet temperatureData = region.getRegionFacet(SurfaceTemperatureFacet.class); SurfaceHumidityFacet humidityData = region.getRegionFacet(SurfaceHumidityFacet.class); float[] heightData = facet.getInternal(); Iterator<BaseVector2i> positionIterator = facet.getRelativeRegion().contents().iterator(); for (int i = 0; i < heightData.length; ++i) { BaseVector2i pos = positionIterator.next(); float temp = temperatureData.get(pos); float tempHumid = temp * humidityData.get(pos); Vector2f distanceToMountainBiome = new Vector2f(temp - 0.25f, tempHumid - 0.35f); float mIntens = TeraMath.clamp(1.0f - distanceToMountainBiome.length() * 3.0f); float densityMountains = Math.max(mountainData[i] * 2.12f, 0) * mIntens * configuration.mountainAmplitude; float densityHills = Math.max(hillData[i] * 2.12f - 0.1f, 0) * (1.0f - mIntens) * configuration.hillAmplitude; heightData[i] = heightData[i] + 1024 * densityMountains + 128 * densityHills; } }
@Override public void process(GeneratingRegion region) { SurfaceTemperatureFacet facet = new SurfaceTemperatureFacet(region.getRegion(), region.getBorderForFacet(SurfaceTemperatureFacet.class)); float[] noise = this.temperatureNoise.noise(facet.getWorldRegion()); for (int i = 0; i < noise.length; ++i) { noise[i] = TeraMath.clamp((noise[i] * 2.11f + 1f) * 0.5f); } facet.set(noise); region.setRegionFacet(SurfaceTemperatureFacet.class, facet); } }
@Override public void process(GeneratingRegion region) { Border3D border = region.getBorderForFacet(SurfaceHumidityFacet.class); SurfaceHumidityFacet facet = new SurfaceHumidityFacet(region.getRegion(), border); float[] noise = humidityNoise.noise(facet.getWorldRegion()); for (int i = 0; i < noise.length; ++i) { noise[i] = TeraMath.clamp((noise[i] * 2.11f + 1f) * 0.5f); } facet.set(noise); region.setRegionFacet(SurfaceHumidityFacet.class, facet); }
@Override public void process(GeneratingRegion region) { Border3D border = region.getBorderForFacet(SurfaceHeightFacet.class); SurfaceHeightFacet facet = new SurfaceHeightFacet(region.getRegion(), border); SeaLevelFacet seaLevelFacet = region.getRegionFacet(SeaLevelFacet.class); float seaLevel = seaLevelFacet.getSeaLevel(); Rect2i processRegion = facet.getWorldRegion(); float[] noise = surfaceNoise.noise(processRegion); for (int i = 0; i < noise.length; ++i) { noise[i] = seaLevel + seaLevel * ((noise[i] * 2.11f + 1f) / 2f); } facet.set(noise); region.setRegionFacet(SurfaceHeightFacet.class, facet); } }