void SetShadingNoise() { const string biomeWarpNoiseSuffix = "_biomeWarp"; const string detailWarpNoiseSuffix = "_detailWarp"; const string detailNoiseSuffix = "_detail"; PRNG prng = new PRNG(seed); PRNG prng2 = new PRNG(seed); if (randomize) { // warp 1 var randomizedBiomeWarpNoise = new SimpleNoiseSettings(); randomizedBiomeWarpNoise.elevation = prng.Range(0.8f, 3f); randomizedBiomeWarpNoise.scale = prng.Range(1f, 3f); randomizedBiomeWarpNoise.SetComputeValues(shadingDataCompute, prng2, biomeWarpNoiseSuffix); // warp 2 var randomizedDetailWarpNoise = new SimpleNoiseSettings(); randomizedDetailWarpNoise.scale = prng.Range(1f, 3f); randomizedDetailWarpNoise.elevation = prng.Range(1f, 5f); randomizedDetailWarpNoise.SetComputeValues(shadingDataCompute, prng2, detailWarpNoiseSuffix); detailNoise.SetComputeValues(shadingDataCompute, prng2, detailNoiseSuffix); } else { biomeWarpNoise.SetComputeValues(shadingDataCompute, prng2, biomeWarpNoiseSuffix); detailWarpNoise.SetComputeValues(shadingDataCompute, prng2, detailWarpNoiseSuffix); detailNoise.SetComputeValues(shadingDataCompute, prng2, detailNoiseSuffix); } }
void SetShapeNoiseSettings(PRNG prng, bool randomizeValues) { const string suffix = "_shape"; if (randomizeValues) { var chance = new Chance(prng); SimpleNoiseSettings randomizedShapeNoise = new SimpleNoiseSettings() { numLayers = 4, lacunarity = 2, persistence = 0.5f }; if (chance.Percent(80)) // Minor deformation { randomizedShapeNoise.elevation = Mathf.Lerp(0.2f, 3, prng.ValueBiasLower(0.3f)); randomizedShapeNoise.scale = prng.Range(1.5f, 2.5f); } else if (chance.Percent(20)) // Major deformation { randomizedShapeNoise.elevation = Mathf.Lerp(3, 8, prng.ValueBiasLower(0.4f)); randomizedShapeNoise.scale = prng.Range(0.3f, 1); } // Assign settings randomizedShapeNoise.SetComputeValues(heightMapCompute, prng, suffix); } else { shapeNoise.SetComputeValues(heightMapCompute, prng, suffix); } }
void SetRidgeNoiseSettings(PRNG prng, bool randomizeValues) { const string ridgeSuffix = "_ridge"; const string detailSuffix = "_ridge2"; if (randomizeValues) { // Randomize ridge mask var randomizedMaskNoise = new SimpleNoiseSettings() { numLayers = 4, lacunarity = 2, persistence = 0.6f, elevation = 1 }; randomizedMaskNoise.scale = prng.Range(0.5f, 2f); // Randomize ridge noise var chance = new Chance(prng); var randomizedRidgeNoise = new RidgeNoiseSettings() { numLayers = 4, power = 3, gain = 1, peakSmoothing = 2 }; randomizedRidgeNoise.elevation = Mathf.Lerp(1, 7, prng.ValueBiasLower(0.3f)); randomizedRidgeNoise.scale = prng.Range(1f, 3f); randomizedRidgeNoise.lacunarity = prng.Range(1f, 5f); randomizedRidgeNoise.persistence = 0.42f; randomizedRidgeNoise.power = prng.Range(1.5f, 3.5f); randomizedRidgeNoise.SetComputeValues(heightMapCompute, prng, ridgeSuffix); randomizedMaskNoise.SetComputeValues(heightMapCompute, prng, detailSuffix); } else { ridgeNoise.SetComputeValues(heightMapCompute, prng, ridgeSuffix); ridgeNoise2.SetComputeValues(heightMapCompute, prng, detailSuffix); } }
public SimpleNoiseFilter(SimpleNoiseSettings settings) { _settings = settings; }