示例#1
0
    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);
        }
    }
示例#2
0
    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);
        }
    }
示例#3
0
    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;
 }