Inheritance: MonoBehaviour
Example #1
0
    // Use this for initialization
    void Start()
    {
        IModule mountainTerrain = new RidgedMulti();
        IModule baseFlatTerrain = new Billow();
        ((Billow)baseFlatTerrain).Frequency = 2.0;
        IModule flatTerrain = new ScaleBias(baseFlatTerrain, 0.125, -0.75);
        IModule terrainType = new Perlin();
        ((Perlin)terrainType).Frequency = 0.5;
        ((Perlin)terrainType).Persistence = 0.25;
        IModule terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);
        ((Select)terrainSelector).SetBounds(0.0, 1000.0);
        ((Select)terrainSelector).SetEdgeFallOff(0.125);
        IModule finalTerrain = new Turbulence(terrainSelector);
        ((Turbulence)finalTerrain).Frequency = 4.0;
        ((Turbulence)finalTerrain).Power = 0.125;

        NoiseMapBuilderPlane heightMapBuilder = new NoiseMapBuilderPlane(256, 256);
        heightMapBuilder.SetBounds(6.0, 10.0, 1.0, 5.0);
        heightMapBuilder.Build(finalTerrain);
        RendererImage render = new RendererImage();
        render.SourceNoiseMap = heightMapBuilder.Map;
        render.ClearGradient ();
        render.AddGradientPoint(-1.0000, new Color32(32, 160, 0, 255));
        render.AddGradientPoint(-0.2500, new Color32(224, 224, 0, 255));
        render.AddGradientPoint(0.2500, new Color32(128, 128, 128, 255));
        render.AddGradientPoint(1.0000, new Color32(255, 255, 255, 255));
        render.IsLightEnabled = true;
        render.LightContrast = 3.0;
        render.LightBrightness = 2.0;
        render.Render();

        tex = render.GetTexture();
    }
 public void Initialize(int seed, ModuleBase inputModule)
 {
     turbulenceModule           = new Turbulence(power, inputModule);
     turbulenceModule.Frequency = frequency;
     turbulenceModule.Roughness = roughness;
     turbulenceModule.Seed      = seed;
 }
Example #3
0
 }          //  Base Height Result Module
 protected override void SetModules()
 {
     base.SetModules();
     #region 1
     ModuleBase module1 = new Const(5);
     #endregion
     #region 2
     ModuleBase module2a = new RidgedMultifractal(frequency: Mathf.Pow(2, -8), lacunarity: 2.0, octaves: 6, seed: Random[IdxForRnd].Next(), quality: QualityMode.Low);
     ModuleBase module2b = new Turbulence(input: module2a);
     ((Turbulence)module2b).Seed      = Random[IdxForRnd].Next();
     ((Turbulence)module2b).Frequency = Mathf.Pow(2, -2);
     ((Turbulence)module2b).Power     = 1;
     ModuleBase module2c = new ScaleBias(scale: 1.0, bias: 30.0, input: module2b);
     #endregion
     #region 3
     ModuleBase module3a = new Billow(frequency: Mathf.Pow(2, -7) * 1.6, lacunarity: 2.0, persistence: 0.5, octaves: 8, seed: Random[IdxForRnd].Next(), quality: QualityMode.Low);
     ModuleBase module3b = new Turbulence(input: module3a);
     ((Turbulence)module3b).Seed      = Random[IdxForRnd].Next();
     ((Turbulence)module3b).Frequency = Mathf.Pow(2, -2);
     ((Turbulence)module3b).Power     = 1.8;
     ModuleBase module3c = new ScaleBias(scale: 1.0, bias: 31.0, input: module3b);
     #endregion
     #region 4
     ModuleBase module4a = new Perlin(frequency: Mathf.Pow(2, -6), lacunarity: 2.0, persistence: 0.5, octaves: 6, seed: Random[IdxForRnd].Next(), quality: QualityMode.Low);
     ModuleBase module4b = new Select(inputA: module2c, inputB: module3c, controller: module4a);
     ((Select)module4b).SetBounds(min: -.2, max: .2);
     ((Select)module4b).FallOff = .25;
     ModuleBase module4c = new Multiply(lhs: module4b, rhs: module1);
     #endregion
     MaterialSelectors[0] = (Select)module4b;
     Modules.Add(module4c);
 }
Example #4
0
        public override Module GetModule()
        {
            int octaves = 2 + (int)Mathf.Log(_height, 2);

            var clouds = new Perlin()
            {
                Seed        = _seed,
                Frequency   = _frequency,
                Persistence = 0.5f,
                Lacunarity  = _lacunarity,
                OctaveCount = octaves,
            };

            var displacement = new ScalePoint()
            {
                Source0 = clouds,

                XScale = _spin,
                YScale = 1f,
                ZScale = _spin,
            };

            var turbulence = new Turbulence()
            {
                Source0 = displacement,

                //Seed = rng.Next(),
                Frequency = 2,
                Power     = 0.7f,
                Roughness = 2
            };

            return(turbulence);
        }
Example #5
0
    public XNoiseTurbulence()
    {
        left   = 6;
        right  = 10;
        top    = 1;
        bottom = 5;

        var mountainTerrain = new RidgedMultifractal();

        var baseFlatTerrain = new Billow();

        baseFlatTerrain.Frequency = 2.0;

        var flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);

        var terrainType = new Perlin();

        terrainType.Frequency   = 0.5;
        terrainType.Persistence = 0.25;

        var terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);

        terrainSelector.SetBounds(0, 1000);
        terrainSelector.FallOff = 0.125f;

        var terrainScaler = new ScaleBias(terrainSelector);

        terrainScaler.Scale = 375;
        terrainScaler.Bias  = 375;

        finalTerrain           = new Turbulence(terrainScaler);
        finalTerrain.Frequency = 4;
        finalTerrain.Power     = 0.125f;
    }
    void Start()
    {
        var mountainTerrain = new RidgedMultifractal();

        var baseFlatTerrain = new Billow();

        baseFlatTerrain.Frequency = 2.0;

        var flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);

        var terrainType = new Perlin();

        terrainType.Frequency   = 0.5;
        terrainType.Persistence = 0.25;

        // Create the selector for turbulence
        var terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);

        terrainSelector.SetBounds(0, 1000);
        terrainSelector.FallOff = 0.125f;

        var finalTerrain = new Turbulence(terrainSelector);

        finalTerrain.Frequency = _frequency;
        finalTerrain.Power     = _power;

        RenderAndSetImage(finalTerrain);
    }
Example #7
0
        public INoise GetLandFormFct()
        {
            //REM
            //The various parameters value here are scaled for a gradient being feed by 0 to 1 input value.
            //When this gradient is configured to recevied other value range then some parameters needs to be rescaled
            //That's the reason for using this _groundGradientTyped.AdjustY value
            //This way no matter the the Gradient Range, the values impacting it will be rescaled.

            //Create the Lowland base fractal with range from 0 to 1 values
            INoise river_shape_fractal = new FractalRidgedMulti(new Simplex(_seed), 1, 2, enuBaseNoiseRange.ZeroToOne);
            //Rescale + offset the output result ==> Wil modify the Scope of output range value
            INoise river_shape_scale = new ScaleOffset(river_shape_fractal, 0.30, 0.01);
            //Remove Y value from impacting the result (Fixed to 0), the value output range will not be changed, but the influence of the Y will be removed

            //Force the Fractal to be used as 2D Noise, I don't need to 3th dimension
            INoise river_y_scale = new NoiseAccess(river_shape_fractal, NoiseAccess.enuDimUsage.Noise2D, true);

            INoise turb           = new ScaleOffset(river_y_scale, 0.03, 0);
            INoise river_selected = new Select(0, turb, river_y_scale, 0.7);  //Last param define the width of the river

            //Offset the ground_gradient ( = create turbulance) to the Y scale of the gradient. input value
            INoise _groundGradient_biased = new Bias(_groundGradient, 0.45);
            INoise river = new Turbulence(_groundGradient_biased, 0, river_selected);

            return(river);
        }
Example #8
0
        /// <summary>
        /// Build the noise tree used for terrain generation
        /// </summary>
        private Module BuildModuleTree()
        {
            var mountainTerrain = new RidgedMulti()
            {
                Seed = this.Seed
            };

            var baseFlatTerrain = new Billow()
            {
                Seed      = this.Seed,
                Frequency = 2
            };

            var flatTerrain = new ScaleBias()
            {
                Source0 = baseFlatTerrain,
                Scale   = 0.125,
                Bias    = -0.75
            };

            var terrainType1 = new Perlin()
            {
                Frequency   = 0.5,
                Persistence = 0.25,
                Seed        = this.Seed
            };

            var terrainType2 = new Perlin()
            {
                Frequency   = 0.5,
                Persistence = 0.25,
                Seed        = this.Seed + 1337
            };

            var terrainType = new Multiply()
            {
                Source0 = terrainType1,
                Source1 = terrainType2
            };

            var terrainSelector = new Select()
            {
                Source0     = flatTerrain,
                Source1     = mountainTerrain,
                Control     = terrainType,
                LowerBound  = 0,
                UpperBound  = 1000,
                EdgeFalloff = 0.125
            };

            var finalTerrain = new Turbulence()
            {
                Source0   = terrainSelector,
                Frequency = 4,
                Power     = 0.125,
                Seed      = this.Seed
            };

            return(finalTerrain);
        }
Example #9
0
    private CoherentNoise.Generator GetNoise(int seed)
    {
        BillowNoise noise = new BillowNoise(seed);
        Turbulence  b     = new Turbulence(noise, seed);

        return(b);
    }
    void Awake()
    {
        noiseGenerator = new NoiseGenerator();

        billowModule = new Billow(n1frequency, n1lacunarity, n1persistence, n1octaves, n1seed, QualityMode.High); //(frequency, lacunarity, persistence, octaves, seed, QualityMode.High));
        //billowModule = new Voronoi(n1frequency, n1lacunarity, n1seed, true);
        billowScaleBiasModule = new ScaleBias(n1scale, n1bias, billowModule);

        ridgedModule          = new RidgedMultifractal(n2frequency, n2lacunarity, n2octaves, n2seed, QualityMode.High);
        ridgedScaleBiasModule = new ScaleBias(n2scale, n2bias, ridgedModule);

        perlinModule          = new Perlin(n3frequency, n3lacunarity, n3persistence, n3octaves, n3seed, QualityMode.High);
        perlinScaleBiasModule = new ScaleBias(n3scale, n3bias, perlinModule);

        selectModule = new Select(billowScaleBiasModule, ridgedScaleBiasModule, perlinScaleBiasModule);
        selectModule.SetBounds(0.5, 1000);  // parameterize?
        selectModule.FallOff = 0.3928571;

        turbulenceModule           = new Turbulence(0.335, selectModule);
        turbulenceModule.Frequency = 4.742f;
        turbulenceScaleBias        = new ScaleBias(n1scale, n1bias, turbulenceModule);

        currentModule = billowScaleBiasModule;

        waterGenerator = GameObject.FindObjectOfType <WaterGenerator> ();
    }
 protected override ModuleBase CreateAndReadyModule()
 {
     var turbulence = new Turbulence(power, GetInput(0));
     turbulence.Seed = seed;
     turbulence.Frequency = frequency;
     turbulence.Roughness = roughness;
     return turbulence;
 }
Example #12
0
        public void Turbulence_Test(int[] items, int expected)
        {
            var target = new Turbulence();

            var result = target.solution(items);

            Assert.AreEqual(expected, result);
        }
Example #13
0
        protected override ModuleBase CreateAndReadyModule()
        {
            var turbulence = new Turbulence(power, GetInput(0));

            turbulence.Seed      = seed;
            turbulence.Frequency = frequency;
            turbulence.Roughness = roughness;
            return(turbulence);
        }
Example #14
0
        public override Module GetModule()
        {
            int n = 2 + (int)Mathf.Log(_height, 2);

            var mountainTerrain = new RidgedMulti()
            {
                Frequency   = 1,
                Lacunarity  = 1.9532562354f,
                OctaveCount = n,
                Seed        = _seed + 2 * _offset
            };

            var baseFlatTerrain = new Billow()
            {
                Frequency   = 2,
                Lacunarity  = 2.031242124f,
                OctaveCount = n,
                Seed        = _seed + 1 * _offset,
            };

            var flatTerrain = new ScaleBias()
            {
                Source0 = baseFlatTerrain,
                Scale   = 0.75,
                Bias    = -0.25,
            };

            var terrainType = new Perlin()
            {
                Frequency   = _frequency,
                Lacunarity  = 2.1023423f,
                Persistence = 0.25,
                OctaveCount = n,
                Seed        = _seed
            };

            var terrainSelector = new Select()
            {
                Source0     = flatTerrain,
                Source1     = mountainTerrain,
                Control     = terrainType,
                LowerBound  = 0,
                UpperBound  = 1000,
                EdgeFalloff = 0.125,
            };

            var finalTerrain = new Turbulence()
            {
                Source0   = terrainSelector,
                Frequency = 4,
                Roughness = 8,
                Power     = 0.125,
            };

            return(finalTerrain);
        }
Example #15
0
        public TerrainConfigurationComponent()
        {
            Width          = Height = 256;
            TextureRepeat  = 8 * 2;// * 4
            IsModified     = true;
            Correction     = 20;
            ElevationPower = 1;

            Mountain = new RidgedMulti()
            {
                Seed        = 0,
                Frequency   = 1,
                Lacunarity  = 2,
                OctaveCount = 6
            };

            Flat = new Billow()
            {
                Frequency   = 2,
                Seed        = 0,
                Lacunarity  = 2,
                OctaveCount = 3
            };

            FlatScale = new ScaleBias()
            {
                //Scale = 0.125,
                //Bias = -0.75,
                Bias  = 0.05,
                Scale = 0.12,
            };

            Noise = new Perlin()
            {
                Frequency   = 0.5,
                Persistence = 0.25,
                Seed        = 0,
                OctaveCount = 6
            };

            Select = new Select()
            {
                LowerBound  = 0,
                UpperBound  = 1000,
                EdgeFalloff = 0.125,
            };

            Turbulence = new Turbulence()
            {
                Frequency = 1.6,
                Power     = 0.125,
                Roughness = 2,
            };
        }
Example #16
0
        public override Module GetModule()
        {
            int octaves = 2 + (int)Mathf.Log(_height, 2);

            var blended = new Blend()
            {
                Source0 = new Billow()
                {
                    Frequency  = _hillsFrequency,
                    Lacunarity = _hillsLacunarity,

                    Seed        = _seed + 256 * _offset,
                    OctaveCount = octaves
                },
                Source1 = new RidgedMulti()
                {
                    Frequency  = _mountainFrequency,
                    Lacunarity = _mountainLacunarity,

                    SpectralWeightsExponent = 0.5,
                    Offset = 1.1,
                    Gain   = 2.1,

                    Seed        = _seed + 128 * _offset,
                    OctaveCount = octaves
                },
                Control = new Perlin()
                {
                    Frequency  = _coastFrequency,
                    Lacunarity = _coastLacunarity,

                    Seed        = _seed + 64 * _offset,
                    OctaveCount = octaves
                }
            };

            var turbulence = new Turbulence()
            {
                Seed      = _seed,
                Frequency = 4,
                Power     = 0.125,

                Source0 = blended
            };

            return(new Clamp()
            {
                Source0 = blended,
                LowerBound = -_clamp,
                UpperBound = _clamp,
            });
        }
Example #17
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            int _modelType = 0;

            DA.GetData(0, ref _modelType);

            List <TurbolenceType> turbolenceType = Enum.GetValues(typeof(TurbolenceType))
                                                   .Cast <TurbolenceType>()
                                                   .ToList();

            Turbulence turbulence = new Turbulence(turbolenceType[_modelType]);

            DA.SetData(0, turbulence);
        }
Example #18
0
        public void Dispose()
        {
            _buffer.Dispose();
            _dxDz.Dispose();
            _dyDxz.Dispose();
            _dyxDyz.Dispose();
            _dxxDzz.Dispose();

            InitialSpectrum.Dispose();
            PrecomputedData.Dispose();
            Displacement.Dispose();
            Derivatives.Dispose();
            Turbulence.Dispose();
        }
Example #19
0
    // Use this for initialization
    void Start()
    {
        IModule primaryGranite = new Billow();

        ((Billow)primaryGranite).Seed         = 0;
        ((Billow)primaryGranite).Frequency    = 8.0;
        ((Billow)primaryGranite).Persistence  = 0.625;
        ((Billow)primaryGranite).Lacunarity   = 2.18359375;
        ((Billow)primaryGranite).OctaveCount  = 6;
        ((Billow)primaryGranite).NoiseQuality = NoiseQuality.Standard;
        IModule baseGrains = new Voronoi();

        ((Voronoi)baseGrains).Seed           = 1;
        ((Voronoi)baseGrains).Frequency      = 16.0;
        ((Voronoi)baseGrains).EnableDistance = true;
        IModule scaledGrains = new ScaleBias(baseGrains);

        ((ScaleBias)scaledGrains).Scale = -0.5;
        ((ScaleBias)scaledGrains).Bias  = 0.0;
        IModule combinedGranite = new Add(primaryGranite, scaledGrains);
        IModule finalGranite    = new Turbulence(combinedGranite);

        ((Turbulence)finalGranite).Seed      = 2;
        ((Turbulence)finalGranite).Frequency = 4.0;
        ((Turbulence)finalGranite).Power     = 1.0 / 8.0;
        ((Turbulence)finalGranite).Roughness = 6;
        NoiseMapBuilderPlane plane = new NoiseMapBuilderPlane(256, 256);

        plane.SetBounds(-1.0, 1.0, -1.0, 1.0);
        plane.Build(finalGranite);
        RendererImage render = new RendererImage();

        render.SourceNoiseMap = plane.Map;
        render.ClearGradient();
        render.AddGradientPoint(-1.0000, new Color32(0, 0, 0, 255));
        render.AddGradientPoint(-0.9375, new Color32(0, 0, 0, 255));
        render.AddGradientPoint(-0.8750, new Color32(216, 216, 242, 255));
        render.AddGradientPoint(0.0000, new Color32(191, 191, 191, 255));
        render.AddGradientPoint(0.5000, new Color32(210, 116, 125, 255));
        render.AddGradientPoint(0.7500, new Color32(210, 113, 98, 255));
        render.AddGradientPoint(1.0000, new Color32(255, 176, 192, 255));
        render.IsLightEnabled = true;
        render.LightAzimuth   = 135.0;
        render.LightElev      = 60.0;
        render.LightContrast  = 2.0;
        render.LightColor     = new Color32(255, 255, 255, 0);
        render.Render();
        tex = render.GetTexture();
    }
Example #20
0
    // Use this for initialization
    void Start()
    {
        IModule primaryGranite = new Billow();
        ((Billow)primaryGranite).Seed = 0;
        ((Billow)primaryGranite).Frequency = 8.0;
        ((Billow)primaryGranite).Persistence = 0.625;
        ((Billow)primaryGranite).Lacunarity = 2.18359375;
        ((Billow)primaryGranite).OctaveCount = 6;
        ((Billow)primaryGranite).NoiseQuality = NoiseQuality.Standard;

        IModule baseGrains = new Voronoi();
        ((Voronoi)baseGrains).Seed = 1;
        ((Voronoi)baseGrains).Frequency = 16.0;
        ((Voronoi)baseGrains).EnableDistance = true;

        IModule scaledGrains = new ScaleBias(baseGrains);
        ((ScaleBias)scaledGrains).Scale = -0.5;
        ((ScaleBias)scaledGrains).Bias = 0.0;

        IModule combinedGranite = new Add(primaryGranite, scaledGrains);

        IModule finalGranite = new Turbulence(combinedGranite);
        ((Turbulence)finalGranite).Seed = 2;
        ((Turbulence)finalGranite).Frequency = 4.0;
        ((Turbulence)finalGranite).Power = 1.0 / 8.0;
        ((Turbulence)finalGranite).Roughness = 6;

        NoiseMapBuilderPlane plane = new NoiseMapBuilderPlane(256, 256);
        plane.SetBounds(-1.0, 1.0, -1.0, 1.0);
        plane.Build(finalGranite);
        RendererImage render = new RendererImage();
        render.SourceNoiseMap = plane.Map;
        render.ClearGradient ();
        render.AddGradientPoint (-1.0000, new Color32(  0,   0,   0, 255));
        render.AddGradientPoint (-0.9375, new Color32(  0,   0,   0, 255));
        render.AddGradientPoint (-0.8750, new Color32(216, 216, 242, 255));
        render.AddGradientPoint ( 0.0000, new Color32(191, 191, 191, 255));
        render.AddGradientPoint ( 0.5000, new Color32(210, 116, 125, 255));
        render.AddGradientPoint ( 0.7500, new Color32(210, 113,  98, 255));
        render.AddGradientPoint ( 1.0000, new Color32(255, 176, 192, 255));
        render.IsLightEnabled = true;
        render.LightAzimuth = 135.0;
        render.LightElev = 60.0;
        render.LightContrast = 2.0;
        render.LightColor = new Color32(255, 255, 255, 0);
        render.Render();

        tex = render.GetTexture();
    }
    void Generate()
    {
        billowModule = new Billow();
        offsetModule = new Translate(0, 1, 0, billowModule);
        myModule     = new Turbulence(1, offsetModule);

        Noise2D heightMapBuilder = new Noise2D(terrain.Width, terrain.Height, myModule);

        heightMapBuilder.GenerateSpherical(-90, 90, -180, 180);

        weatherImage = heightMapBuilder.GetTexture();
        weatherImage.Apply();

        GetComponent <LODMaterial>().OurMaterial.SetTexture("_Weather", weatherImage);
    }
    private void backgroundProcessing()
    {
        // Create the module network
        ModuleBase moduleBase;

        switch (noise)
        {
        case NoiseType.Billow:
            moduleBase = new Billow();
            break;

        case NoiseType.RidgedMultifractal:
            moduleBase = new RidgedMultifractal();
            break;

        case NoiseType.Voronoi:
            moduleBase = new Voronoi(frequency, displacement, seed, false);

            break;

        case NoiseType.Mix:
            Perlin perlin = new Perlin();
            var    rigged = new RidgedMultifractal();
            moduleBase = new Add(perlin, rigged);
            break;

        case NoiseType.Practice:
            var bill = new Billow();
            bill.Frequency = frequency;
            moduleBase     = new Turbulence(turbulence / 10, bill);
            break;



        default:
            var defPerlin = new Perlin();
            defPerlin.OctaveCount = perlinOctaves;
            moduleBase            = defPerlin;

            break;
        }

        // Initialize the noise map
        this.m_noiseMap = new Noise2D(resolution, resolution, moduleBase);

        m_noiseMap.GenerateSpherical(_north, _south, _west, _east);
    }
Example #23
0
        public PerlinCaveController(int seed, float frequency)
        {
            _seed      = seed;
            _frequency = frequency;
            var perlin = new Perlin();

            perlin.OctaveCount = 1;
            perlin.Quality     = QualityMode.Low;
            perlin.Seed        = seed;
            perlin.Frequency   = frequency;

            var result = new Turbulence(perlin);

            result.Seed  = seed;
            result.Power = 1f;
            _controller  = result;
        }
Example #24
0
    private void fill(worldChunkSettings chunkSettings, moistureMapSettings settings, IMap heightmap)

    {
        RidgedMultifractal baseMap = new RidgedMultifractal();

        baseMap.OctaveCount = settings.Octaves;
        baseMap.Frequency   = settings.Frequency;
        baseMap.Lacunarity  = settings.Lacunarity;
        baseMap.Seed        = settings.Seed;
        Turbulence distortion       = new Turbulence(.2, baseMap);
        Add        adjustedMoisture = new Add(distortion, heightmap.GetCache());

        this.moistureCache = new Cache(adjustedMoisture);
        Noise2D final = new Noise2D(chunkSettings.mapHeight, chunkSettings.mapWidth, adjustedMoisture);

        final.GeneratePlanar(chunkSettings.left, chunkSettings.right, chunkSettings.top, chunkSettings.bottom, isSeamless: true);
        noiseData = final.GetData();
    }
        public static void CreateTestModuleTree(TestContext context)
        {
            var primaryGranite = new Billow
            {
                Seed        = 0,
                Frequency   = 8,
                Persistence = 0.625,
                Lacunarity  = 2.18359375,
                OctaveCount = 6,
                Quality     = NoiseQuality.Standard,
            };

            var baseGrains = new Voronoi
            {
                Seed           = 1,
                Frequency      = 16,
                EnableDistance = true,
            };

            var scaledGrains = new ScaleBias
            {
                Source0 = baseGrains,
                Scale   = -0.5,
                Bias    = 0,
            };

            var combinedGranite = new Add
            {
                Source0 = primaryGranite,
                Source1 = scaledGrains,
            };

            var finalGranite = new Turbulence
            {
                Source0   = combinedGranite,
                Seed      = 2,
                Frequency = 4,
                Power     = 1.0 / 8.0,
                Roughness = 6,
            };

            testModule = finalGranite;
        }
Example #26
0
    private void fill(worldChunkSettings chunkSettings)

    {
        var          min        = chunkSettings.top;
        var          max        = chunkSettings.bottom;
        gradientHack baseMap    = new gradientHack(min, max);
        Turbulence   distortion = new Turbulence(.05, baseMap);

        //Curve lower = new Curve(distortion);
        //lower.Add(-.6, -.8);
        //lower.Add(-.2, -.6);
        //lower.Add(0.0, .2);
        this.heatCache = new Cache(distortion);

        Noise2D final = new Noise2D(chunkSettings.mapHeight, chunkSettings.mapWidth, distortion);

        final.GeneratePlanar(chunkSettings.left, chunkSettings.right, chunkSettings.top, chunkSettings.bottom, isSeamless: true);
        noiseData = final.GetData();
    }
Example #27
0
        public INoise GetLandFormFct()
        {
            //REM
            //The various parameters value here are scaled for a gradient being feed by 0 to 1 input value.
            //When this gradient is configured to recevied other value range then some parameters needs to be rescaled
            //That's the reason for using this _groundGradientTyped.AdjustY value
            //This way no matter the the Gradient Range, the values impacting it will be rescaled.

            INoise shape1_fractal = new FractalRidgedMulti(new Perlin(_seed), 1, 1.2);

            INoise shape1_base = new Select(0, shape1_fractal, shape1_fractal, 0.75, 0.0);

            INoise shape2_fractal = new FractalRidgedMulti(new Perlin(_seed + 12345), 1, 1.3);

            INoise shape2_base = new Select(0, shape2_fractal, shape2_fractal, 0.75, 0.0);

            Combiner ShapeMult = new Combiner(Combiner.CombinerType.Add);

            ShapeMult.Noises.Add(shape1_base);
            ShapeMult.Noises.Add(shape2_base);

            INoise CacheShapeMult = new Cache <INoise>(ShapeMult);

            INoise rescaledShapeMult = new ScaleOffset(CacheShapeMult, 0.6, 0);
            INoise clamping_base     = new Select(0, rescaledShapeMult, CacheShapeMult, 0.14, 0.0);

            INoise turbX_fractal = new FractalFbm(new Perlin(_seed + 1), 3, 3);
            INoise turbY_fractal = new FractalFbm(new Perlin(_seed + 2), 3, 3);
            INoise turbZ_fractal = new FractalFbm(new Perlin(_seed + 3), 3, 3);

            INoise CaveTurb = new Turbulence(clamping_base, turbX_fractal, turbY_fractal, turbZ_fractal);

            //INoise landscape = new Bias(_mainLandscape, 0.45);
            Combiner underground_Attenuated = new Combiner(Combiner.CombinerType.Multiply);

            underground_Attenuated.Noises.Add(CaveTurb);
            underground_Attenuated.Noises.Add(_mainLandscape);

            //Merge the Water landForm with the surface landForm
            INoise world_select = new Select(0.0, underground_Attenuated, _islandCtrl, 0.01, 0.0);         //Merge Plains with Midland

            return(world_select);
        }
Example #28
0
        static Module CreateTerrainNoise()
        {
            var mountainTerrain = new RidgedMulti()
            {
            };

            var baseFlatTerrain = new Billow()
            {
                Frequency = 2,
            };

            var flatTerrain = new ScaleBias()
            {
                Source0 = baseFlatTerrain,
                Scale   = 0.125,
                Bias    = -0.75,
            };

            var terrainType = new Perlin()
            {
                Frequency   = 0.5,
                Persistence = 0.25,
            };

            var terrainSelector = new Select()
            {
                Source0     = flatTerrain,
                Source1     = mountainTerrain,
                Control     = terrainType,
                LowerBound  = 0,
                UpperBound  = 1000,
                EdgeFalloff = 0.125,
            };

            var finalTerrain = new Turbulence()
            {
                Source0   = terrainSelector,
                Frequency = 4,
                Power     = 0.125,
            };

            return(finalTerrain);
        }
    void Start()
    {
        var mountainTerrain = new RidgedMultifractal();

        var baseFlatTerrain = new Billow();

        baseFlatTerrain.Frequency = 2.0;

        var flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);

        var terrainType = new Perlin();

        terrainType.Frequency   = 0.5;
        terrainType.Persistence = 0.25;

        var terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);

        terrainSelector.SetBounds(0, 1000);
        terrainSelector.FallOff = 0.125f;

        /*
         * From the tutorial text:
         *
         * Next, you'll apply a bias of +375 to the output from the terrainSelector
         * noise module. This will cause its output to range from (-375 + 375) to
         * (+375 + 375), or in other words, 0 to 750. You'll apply this bias so
         * that most of the elevations in the resulting terrain height map are
         * above sea level.
         */
        var terrainScaler = new ScaleBias(terrainSelector);

        terrainScaler.Scale = _scale;
        terrainScaler.Bias  = _bias;

        var finalTerrain = new Turbulence(terrainScaler);

        finalTerrain.Frequency = _frequency;
        finalTerrain.Power     = _power;

        RenderAndSetImage(finalTerrain);
    }
Example #30
0
 public IModule3D CreateModule()
 {
     if (transformerType == TransformerType.Turbulence)
     {
         Turbulence turbulence = new Turbulence();
         turbulence.Power = power;
     }
     else if (transformerType == TransformerType.RotatePoint)
     {
         RotatePoint rotatePoint  = new RotatePoint();
         RotatePoint rotatePoint2 = rotatePoint;
         Vector2f    rotation     = this.rotation;
         rotatePoint2.XAngle = rotation.x;
         RotatePoint rotatePoint3 = rotatePoint;
         Vector2f    rotation2    = this.rotation;
         rotatePoint3.YAngle = rotation2.y;
         rotatePoint.ZAngle  = 0f;
         return(rotatePoint);
     }
     return(new Displace());
 }
Example #31
0
        public INoise GetLandFormFct()
        {
            //REM
            //The various parameters value here are scaled for a gradient being feed by 0 to 1 input value.
            //When this gradient is configured to recevied other value range then some parameters needs to be rescaled
            //That's the reason for using this _groundGradientTyped.AdjustY value
            //This way no matter the the Gradient Range, the values impacting it will be rescaled.

            //Create the Lowland base fractal with range from 0 to 1 values
            INoise ocean_shape_fractal = new FractalFbm(new Simplex(_seed), 3, 3, enuBaseNoiseRange.ZeroToOne);
            //Rescale + offset the output result ==> Wil modify the Scope of output range value
            INoise ocean_scale = new ScaleOffset(ocean_shape_fractal, 0.20 * _groundGradientTyped.AdjustY, 0.08 * _groundGradientTyped.AdjustY);

            //Force the Fractal to be used as 2D Noise, I don't need to 3th dimension
            INoise ocean_y_scale = new NoiseAccess(ocean_scale, NoiseAccess.enuDimUsage.Noise2D, true);


            //Offset the ground_gradient ( = create turbulance) to the Y scale of the gradient. input value
            INoise ocean_terrain = new Turbulence(_groundGradient, 0, ocean_y_scale);

            return(ocean_terrain);
        }
Example #32
0
        public HeightMapGenerator()
        {
            var noise = new Perlin();

            noise.Seed        = new Random().Next(0, Int32.MaxValue);
            noise.Frequency   = 1.5f;
            noise.OctaveCount = 6;
            noise.Persistence = 0.4f;

            var turbulence = new Turbulence();

            turbulence.Power     = 0.25;
            turbulence.Frequency = 4;
            turbulence.Source0   = noise;

            var clamper = new Clamp();

            clamper.LowerBound = 0;
            clamper.UpperBound = 1;
            clamper.Source0    = turbulence;

            Module = clamper;
        }
Example #33
0
    // Use this for initialization
    void Start()
    {
        IModule mountainTerrain = new RidgedMulti();
        IModule baseFlatTerrain = new Billow();

        ((Billow)baseFlatTerrain).Frequency = 2.0;
        IModule flatTerrain = new ScaleBias(baseFlatTerrain, 0.125, -0.75);
        IModule terrainType = new Perlin();

        ((Perlin)terrainType).Frequency   = 0.5;
        ((Perlin)terrainType).Persistence = 0.25;
        IModule terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);

        ((Select)terrainSelector).SetBounds(0.0, 1000.0);
        ((Select)terrainSelector).SetEdgeFallOff(0.125);
        IModule finalTerrain = new Turbulence(terrainSelector);

        ((Turbulence)finalTerrain).Frequency = 4.0;
        ((Turbulence)finalTerrain).Power     = 0.125;
        NoiseMapBuilderPlane heightMapBuilder = new NoiseMapBuilderPlane(256, 256);

        heightMapBuilder.SetBounds(6.0, 10.0, 1.0, 5.0);
        heightMapBuilder.Build(finalTerrain);
        RendererImage render = new RendererImage();

        render.SourceNoiseMap = heightMapBuilder.Map;
        render.ClearGradient();
        render.AddGradientPoint(-1.0000, new Color32(32, 160, 0, 255));
        render.AddGradientPoint(-0.2500, new Color32(224, 224, 0, 255));
        render.AddGradientPoint(0.2500, new Color32(128, 128, 128, 255));
        render.AddGradientPoint(1.0000, new Color32(255, 255, 255, 255));
        render.IsLightEnabled  = true;
        render.LightContrast   = 3.0;
        render.LightBrightness = 2.0;
        render.Render();
        tex = render.GetTexture();
    }
	void Start() 
	{
		var mountainTerrain = new RidgedMultifractal();

		var baseFlatTerrain = new Billow();
		baseFlatTerrain.Frequency = 2.0;

		var flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);

		var terrainType = new Perlin();
		terrainType.Frequency = 0.5;
		terrainType.Persistence = 0.25;

		var terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);
		terrainSelector.SetBounds(0, 1000);
		terrainSelector.FallOff = 0.125f;

		/*
		 * From the tutorial text:
		 * 
		 * Next, you'll apply a bias of +375 to the output from the terrainSelector 
		 * noise module. This will cause its output to range from (-375 + 375) to 
		 * (+375 + 375), or in other words, 0 to 750. You'll apply this bias so 
		 * that most of the elevations in the resulting terrain height map are 
		 * above sea level. 
		 */
		var terrainScaler = new ScaleBias(terrainSelector);
		terrainScaler.Scale = _scale;
		terrainScaler.Bias = _bias;
		
		var finalTerrain = new Turbulence(terrainScaler);
		finalTerrain.Frequency = _frequency;
		finalTerrain.Power = _power;

		RenderAndSetImage(finalTerrain);
	}
	void Start() 
	{
		var mountainTerrain = new RidgedMultifractal();

		var baseFlatTerrain = new Billow();
		baseFlatTerrain.Frequency = 2.0;

		var flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);

		var terrainType = new Perlin();
		terrainType.Frequency = 0.5;
		terrainType.Persistence = 0.25;

		// Create the selector for turbulence
		var terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);
		terrainSelector.SetBounds(0, 1000);
		terrainSelector.FallOff = 0.125f;
		
		var finalTerrain = new Turbulence(terrainSelector);
		finalTerrain.Frequency = _frequency;
		finalTerrain.Power = _power;

		RenderAndSetImage(finalTerrain);
	}
	public void Initialize (int seed, ModuleBase inputModule)
	{
		turbulenceModule = new Turbulence (power, inputModule);
		turbulenceModule.Frequency = frequency;
		turbulenceModule.Roughness = roughness;
		turbulenceModule.Seed = seed;
	}
    //keep libnoise namepsace prefix, as it's names are incredibly generic
    private IModule GetGen(int seed)
    {
        IModule bas = null;

        float frequency = target.frequency * 0.01f;

        int octaveCount = Mathf.Max(target.octaveCount, 1);
        float lacunarity = target.lacunarity;

        switch (target.noiseType) {
            case NoiseType.Billow:
                var b = new Billow
                        {Frequency = frequency, OctaveCount = octaveCount, Lacunarity = lacunarity, Seed = seed};
                bas = b;
                break;

            case NoiseType.Pink:
                var p = new Perlin
                        {Frequency = frequency, OctaveCount = octaveCount, Lacunarity = lacunarity, Seed = seed};
                bas = p;
                break;

            case NoiseType.Ridged:
                var r = new RidgedMultifractal {
                                                   Frequency = frequency,
                                                   OctaveCount = target.octaveCount,
                                                   Seed = seed,
                                                   Lacunarity = lacunarity,
                                               };
                bas = r;
                break;

            case NoiseType.Voronoi:
                var v = new Voronoi {Frequency = target.frequency * 0.05f, Seed = seed};
                bas = v;
                break;
        }

        var t = new Turbulence(bas)
                {Frequency = target.turbulenceFrequency, Power = target.turbulencePower, Seed = seed + 789};

        return t;
    }
Example #38
0
    void GenerateNoise()
    {
        mountainTerrain.OctaveCount = Octaves;
        mountainTerrain.Frequency = 2f;
        baseFlatTerrain.OctaveCount = Octaves;
        terrainType.OctaveCount = Octaves;
        Voronoi vnoise = new Voronoi();
        vnoise.Frequency = 5f;
        Perlin pnoise = new Perlin();
        pnoise.Frequency = 2f;

        Scale scaledvnoise = new Scale(Scalarv, Scalarv, Scalarv, vnoise);
        Scale scaledpnoise = new Scale(Scalarv, Scalarv, Scalarv, pnoise);

        baseFlatTerrain.Frequency = 2.0f;
        ScaleBias flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);
        terrainType.Frequency = 0.5f;
        terrainType.Persistence = 0.25;
        Select noiseSelect = new Select(scaledpnoise, scaledvnoise, terrainType);

        Select terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);
        terrainSelector.SetBounds(0.0, 1000.0);
        terrainSelector.FallOff = 0.125;
        Turbulence finalTerrain = new Turbulence(0.25, terrainSelector);
        finalTerrain.Frequency = 4.0f;

        noise = new Scale(Scalarv, Scalarv, Scalarv, finalTerrain);
        //noise = new Add(new Scale(Scalarv, Scalarv, Scalarv, finalTerrain), noiseSelect);
        //noise = new Add(noise, scaledvnoise);
    }
        private static List<LoadedModule> GetModules(XmlNodeList moduleList)
        {
            List<LoadedModule> loadedModules = new List<LoadedModule>();

            foreach (XmlNode node in moduleList)
            {
                string id = node.Attributes["guid"].Value;
                Point position = new Point(double.Parse(node.Attributes["position"].Value.Split(',')[0]), double.Parse(node.Attributes["position"].Value.Split(',')[1]));
                ModuleBase module = null;

                List<string> links = new List<string>();

                switch (node.Attributes["type"].Value)
                {
                    case "Billow":
                        Billow billow = new Billow();
                        billow.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        billow.Lacunarity = double.Parse(node.SelectSingleNode("Lacunarity").InnerText);
                        billow.OctaveCount = int.Parse(node.SelectSingleNode("OctaveCount").InnerText);
                        billow.Persistence = double.Parse(node.SelectSingleNode("Persistence").InnerText);
                        billow.Quality = (QualityMode)Enum.Parse(typeof(QualityMode), node.SelectSingleNode("Quality").InnerText);
                        billow.Seed = int.Parse(node.SelectSingleNode("Seed").InnerText);
                        module = billow;
                        break;
                    case "Checker":
                        module = new Checker();
                        break;
                    case "Const":
                        Const con = new Const();
                        con.Value = double.Parse(node.SelectSingleNode("Value").InnerText);
                        module = con;
                        break;
                    case "Cylinders":
                        Cylinders cylinder = new Cylinders();
                        cylinder.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        module = cylinder;
                        break;
                    case "Perlin":
                        Perlin perlin = new Perlin();
                        perlin.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        perlin.Lacunarity = double.Parse(node.SelectSingleNode("Lacunarity").InnerText);
                        perlin.OctaveCount = int.Parse(node.SelectSingleNode("OctaveCount").InnerText);
                        perlin.Persistence = double.Parse(node.SelectSingleNode("Persistence").InnerText);
                        perlin.Quality = (QualityMode)Enum.Parse(typeof(QualityMode), node.SelectSingleNode("Quality").InnerText);
                        perlin.Seed = int.Parse(node.SelectSingleNode("Seed").InnerText);
                        module = perlin;
                        break;
                    case "RidgedMultifractal":
                        RidgedMultifractal ridgedMF = new RidgedMultifractal();
                        ridgedMF.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        ridgedMF.Lacunarity = double.Parse(node.SelectSingleNode("Lacunarity").InnerText);
                        ridgedMF.OctaveCount = int.Parse(node.SelectSingleNode("OctaveCount").InnerText);
                        ridgedMF.Quality = (QualityMode)Enum.Parse(typeof(QualityMode), node.SelectSingleNode("Quality").InnerText);
                        ridgedMF.Seed = int.Parse(node.SelectSingleNode("Seed").InnerText);
                        module = ridgedMF;
                        break;
                    case "Spheres":
                        Spheres spheres = new Spheres();
                        spheres.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        module = spheres;
                        break;
                    case "Voronoi":
                        Voronoi voronoi = new Voronoi();
                        voronoi.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        voronoi.Displacement = double.Parse(node.SelectSingleNode("Displacement").InnerText);
                        voronoi.UseDistance = bool.Parse(node.SelectSingleNode("UseDistance").InnerText);
                        voronoi.Seed = int.Parse(node.SelectSingleNode("Seed").InnerText);
                        module = voronoi;
                        break;
                    case "Abs":
                        module = new Abs();
                        XmlNode absInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(absInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Add":
                        module = new Add();
                        XmlNode addInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(addInputs.SelectSingleNode("Left").InnerText);
                        links.Add(addInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Blend":
                        module = new Blend();
                        XmlNode blendInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(blendInputs.SelectSingleNode("Left").InnerText);
                        links.Add(blendInputs.SelectSingleNode("Right").InnerText);
                        links.Add(blendInputs.SelectSingleNode("Operator").InnerText);
                        break;
                    case "Cache":
                        module = new Cache();
                        XmlNode cacheInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(cacheInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Clamp":
                        Clamp clamp = new Clamp();
                        clamp.Maximum = double.Parse(node.SelectSingleNode("Maximum").InnerText);
                        clamp.Minimum = double.Parse(node.SelectSingleNode("Minimum").InnerText);
                        module = clamp;

                        XmlNode clampInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(clampInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Curve":
                        Curve curve = new Curve();
                        module = curve;

                        foreach (XmlNode cpNode in node.SelectSingleNode("ControlPoints").ChildNodes)
                        {
                            double x = double.Parse(cpNode.InnerText.Split(',')[0]);
                            double y = double.Parse(cpNode.InnerText.Split(',')[1]);
                            curve.Add(x, y);
                        }

                        XmlNode curveInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(curveInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Displace":
                        module = new Displace();
                        XmlNode displaceInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(displaceInputs.SelectSingleNode("Primary").InnerText);
                        links.Add(displaceInputs.SelectSingleNode("X").InnerText);
                        links.Add(displaceInputs.SelectSingleNode("Y").InnerText);
                        links.Add(displaceInputs.SelectSingleNode("Z").InnerText);
                        break;
                    case "Exponent":
                        Exponent exponent = new Exponent();
                        exponent.Value = double.Parse(node.SelectSingleNode("Value").InnerText);
                        module = exponent;

                        XmlNode exponentInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(exponentInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Invert":
                        module = new Invert();
                        XmlNode invertInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(invertInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Max":
                        module = new Max();
                        XmlNode maxInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(maxInputs.SelectSingleNode("Left").InnerText);
                        links.Add(maxInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Min":
                        module = new Min();
                        XmlNode minInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(minInputs.SelectSingleNode("Left").InnerText);
                        links.Add(minInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Multiply":
                        module = new Multiply();
                        XmlNode multiplyInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(multiplyInputs.SelectSingleNode("Left").InnerText);
                        links.Add(multiplyInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Power":
                        module = new Power();
                        XmlNode powerInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(powerInputs.SelectSingleNode("Left").InnerText);
                        links.Add(powerInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Rotate":
                        Rotate rotate = new Rotate();
                        rotate.X = double.Parse(node.SelectSingleNode("X").InnerText);
                        rotate.Y = double.Parse(node.SelectSingleNode("Y").InnerText);
                        rotate.Z = double.Parse(node.SelectSingleNode("Z").InnerText);
                        module = rotate;

                        XmlNode rotateInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(rotateInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Scale":
                        Scale scale = new Scale();
                        scale.X = double.Parse(node.SelectSingleNode("X").InnerText);
                        scale.Y = double.Parse(node.SelectSingleNode("Y").InnerText);
                        scale.Z = double.Parse(node.SelectSingleNode("Z").InnerText);
                        module = scale;

                        XmlNode scaleInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(scaleInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "ScaleBias":
                        ScaleBias scaleBias = new ScaleBias();
                        scaleBias.Scale = double.Parse(node.SelectSingleNode("Scale").InnerText);
                        scaleBias.Bias = double.Parse(node.SelectSingleNode("Bias").InnerText);
                        module = scaleBias;

                        XmlNode scaleBiasInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(scaleBiasInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Select":
                        Select select = new Select();
                        select.Minimum = double.Parse(node.SelectSingleNode("Minimum").InnerText);
                        select.Maximum = double.Parse(node.SelectSingleNode("Maximum").InnerText);
                        select.FallOff = double.Parse(node.SelectSingleNode("FallOff").InnerText);
                        module = select;

                        XmlNode selectInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(selectInputs.SelectSingleNode("Primary").InnerText);
                        links.Add(selectInputs.SelectSingleNode("Secondary").InnerText);
                        links.Add(selectInputs.SelectSingleNode("Controller").InnerText);
                        break;
                    case "Subtract":
                        module = new Subtract();
                        XmlNode subtractInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(subtractInputs.SelectSingleNode("Left").InnerText);
                        links.Add(subtractInputs.SelectSingleNode("Right").InnerText);
                        break;
                    case "Terrace":
                        Terrace terrace = new Terrace();
                        module = terrace;

                        foreach (XmlNode cpNode in node.SelectSingleNode("ControlPoints").ChildNodes)
                        {
                            terrace.Add(double.Parse(cpNode.InnerText));
                        }

                        XmlNode terraceInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(terraceInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Translate":
                        Translate translate = new Translate();
                        translate.X = double.Parse(node.SelectSingleNode("X").InnerText);
                        translate.Y = double.Parse(node.SelectSingleNode("Y").InnerText);
                        translate.Z = double.Parse(node.SelectSingleNode("Z").InnerText);
                        module = translate;

                        XmlNode translateInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(translateInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Turbulence":
                        Turbulence turbulence = new Turbulence();
                        turbulence.Frequency = double.Parse(node.SelectSingleNode("Frequency").InnerText);
                        turbulence.Power = double.Parse(node.SelectSingleNode("Power").InnerText);
                        turbulence.Roughness = int.Parse(node.SelectSingleNode("Roughness").InnerText);
                        turbulence.Seed = int.Parse(node.SelectSingleNode("Seed").InnerText);
                        module = turbulence;

                        XmlNode turbulenceInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(turbulenceInputs.SelectSingleNode("Input").InnerText);
                        break;
                    case "Final":
                        module = new Final();
                        XmlNode finalInputs = node.SelectSingleNode("ModuleInputs");
                        links.Add(finalInputs.SelectSingleNode("Input").InnerText);
                        break;
                    default:
                        break;
                }

                LoadedModule lm = new LoadedModule(id, module, position, links);
                loadedModules.Add(lm);
            }

            return loadedModules;
        }
Example #40
0
				public bool StartGame (double max, double min, int seed, int numberOfSites, 
		                       double ParsedContinentFrequency, double ParsedBiomeFrequency, int ParsedOctaves, double ParsedLacunarity, double ParsedPersistence)
				{
						Debug.Log ("Starting the game, Max is:" + max);
						Max = max;
						Min = min;
						Seed = seed;
						NumberOfSites = numberOfSites;
						baseContinentNoise = new Perlin (ParsedContinentFrequency, ParsedLacunarity, ParsedPersistence, ParsedOctaves, seed, LibNoise.Unity.QualityMode.Medium);
						baseContinentSubtractNoise = new Scale (3, 1, 3, baseContinentNoise);
						Subtract sub = new Subtract (baseContinentNoise, baseContinentSubtractNoise);
						perturbedContinentNoise = new Turbulence (1, sub);			


						mountainNoise = new RiggedMultifractal (ParsedBiomeFrequency, ParsedLacunarity, ParsedOctaves, seed, LibNoise.Unity.QualityMode.Medium);
						baseFlatTerrainNoise = new Billow (ParsedBiomeFrequency, ParsedLacunarity, ParsedPersistence, ParsedOctaves, seed, LibNoise.Unity.QualityMode.Medium);
						flatTerrainNoise = new ScaleBias (0.25, -0.75, baseFlatTerrainNoise);
						terrainTypeNoise = new Perlin (ParsedBiomeFrequency, ParsedLacunarity, ParsedPersistence, ParsedOctaves, seed, LibNoise.Unity.QualityMode.Low);
						finalTerrainNoise = new Select (flatTerrainNoise, mountainNoise, terrainTypeNoise);
						finalTerrainNoise.SetBounds (0, 1000);
						finalTerrainNoise.FallOff = .5;

						finalTerrainNoiseMinusContinentNoise = new Subtract(finalTerrainNoise,perturbedContinentNoise);

						heatNoise = new Perlin (ParsedBiomeFrequency, ParsedLacunarity, ParsedPersistence, ParsedOctaves, seed, LibNoise.Unity.QualityMode.Medium);
						moistureNoise = new Perlin (ParsedBiomeFrequency, ParsedLacunarity, ParsedPersistence, ParsedOctaves, -seed, LibNoise.Unity.QualityMode.Medium);

						return BuildGraph ();
				}
Example #41
0
	public void Generate ()
	{	
		// Create the module network
		ModuleBase moduleBase;
		switch (noise) {
		case NoiseType.Billow:	
			moduleBase = new Billow ();
			break;
            	
		case NoiseType.RidgedMultifractal:	
			moduleBase = new RidgedMultifractal ();
			break;   
            	
		case NoiseType.Voronoi:	
            	// moduleBase = new Voronoi();
			seed = UnityEngine.Random.Range (0, 100);
			moduleBase = new Voronoi (frequency, displacement, seed, false);
			
			break;             	         	
            	
		case NoiseType.Mix:            	
			Perlin perlin = new Perlin ();
			var rigged = new RidgedMultifractal ();
			moduleBase = new Add (perlin, rigged);
			break;
			
		case NoiseType.Practice:
			var bill = new Billow ();
			bill.Frequency = frequency;
			moduleBase = new Turbulence (turbulence / 10, bill);

			
			break;
			
			
            	
		default:
			var defPerlin = new Perlin ();
			defPerlin.OctaveCount = perlinOctaves;
			moduleBase = defPerlin;
			
			break;
            	
		}
		
		// Initialize the noise map
		this.m_noiseMap = new Noise2D (resolution, resolution, moduleBase);
		this.m_noiseMap.GeneratePlanar (
			offset + -1 * 1 / zoom, 
			offset + offset + 1 * 1 / zoom, 
			offset + -1 * 1 / zoom,
			offset + 1 * 1 / zoom, true);
		
		// Generate the textures
		this.m_textures [0] = this.m_noiseMap.GetTexture (GradientPresets.Grayscale);
		this.m_textures [0].Apply ();
            
		this.m_textures [1] = this.m_noiseMap.GetTexture (GradientPresets.Terrain);
		this.m_textures [1].Apply ();
             
		this.m_textures [2] = this.m_noiseMap.GetNormalMap (3.0f);
		this.m_textures [2].Apply ();
        		
		//display on plane
		renderer.material.mainTexture = this.m_textures [0];
            

		//write images to disk
		File.WriteAllBytes (Application.dataPath + "/../Gray.png", m_textures [0].EncodeToPNG ());
		File.WriteAllBytes (Application.dataPath + "/../Terrain.png", m_textures [1].EncodeToPNG ());
		File.WriteAllBytes (Application.dataPath + "/../Normal.png", m_textures [2].EncodeToPNG ());

		Debug.Log ("Wrote Textures out to " + Application.dataPath + "/../");
            
        
	}
Example #42
0
    public static void genNoise(int channelId)
    {
        moduleBase[channelId] = new Perlin();
        if (teNoiseChanTypeIndex[channelId] == 1)
        {
            int tIdx = teNoiseTypeIndex[channelId];
            if (tIdx == 0) { moduleBase[channelId] = new Perlin(frequency[channelId], lacunarity[channelId], persistance[channelId], octaves[channelId], seed[channelId], QualityMode.High); }
            if (tIdx == 1) { moduleBase[channelId] = new Billow(frequency[channelId], lacunarity[channelId], persistance[channelId], octaves[channelId], seed[channelId], QualityMode.High); }
            if (tIdx == 2) { moduleBase[channelId] = new RidgedMultifractal(frequency[channelId], lacunarity[channelId], octaves[channelId], seed[channelId], QualityMode.High); }
            if (tIdx == 3) { moduleBase[channelId] = new Voronoi(frequency[channelId], displacement[channelId], seed[channelId], distance[channelId]); }
            if (tIdx == 4) { moduleBase[channelId] = new BrownianMotion(frequency[channelId], lacunarity[channelId], octaves[channelId], seed[channelId], QualityMode.High); }
            if (tIdx == 5) { moduleBase[channelId] = new HeterogeneousMultiFractal(frequency[channelId], lacunarity[channelId], octaves[channelId], persistance[channelId], seed[channelId], offset[channelId], QualityMode.High); }
            if (tIdx == 6) { moduleBase[channelId] = new HybridMulti(frequency[channelId], lacunarity[channelId], octaves[channelId], persistance[channelId], seed[channelId], offset[channelId], gain[channelId], QualityMode.High); }
            if (tIdx == 7) { moduleBase[channelId] = new LinearGradientNoise(frequency[channelId]); }
        }
        if (teNoiseChanTypeIndex[channelId] == 2)
        {
            int fIdx = teFunctionTypeIndex[channelId];
            if (fIdx == 0) { moduleBase[channelId] = new Add(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]]); }
            if (fIdx == 1) { moduleBase[channelId] = new Subtract(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]]); }
            if (fIdx == 2) { moduleBase[channelId] = new Multiply(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]]); }
            if (fIdx == 3) { moduleBase[channelId] = new Min(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]]); }
            if (fIdx == 4) { moduleBase[channelId] = new Max(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]]); }
            if (fIdx == 5) { moduleBase[channelId] = new Blend(moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]], moduleBase[srcChannel3Id[channelId]]); }
            if (fIdx == 6) { moduleBase[channelId] = new Clamp((double)noiseFuncMin[channelId], (double)noiseFuncMax[channelId], moduleBase[srcChannel1Id[channelId]]); }
			if (fIdx == 7) { moduleBase[channelId] = new Power(moduleBase[srcChannel1Id[channelId]],moduleBase[srcChannel2Id[channelId]]);}
			if (fIdx == 8) { Curve tmpCurve = new Curve(moduleBase[srcChannel1Id[channelId]]);
				double adjust = double.Parse((controlpointcount[channelId]-1).ToString())*0.5;
				for(int i=0;i<controlpointcount[channelId];i++){
					tmpCurve.Add(double.Parse(i.ToString())-adjust,(double)cpval[channelId,i]);
					moduleBase[channelId] = tmpCurve;
				}
			}
			if(fIdx==9){Terrace tmpTerrace = new Terrace(invertTerrace[channelId],moduleBase[srcChannel1Id[channelId]]);
				for(int i=0;i<controlpointcount[channelId];i++){
					tmpTerrace.Add((double)cpval[channelId,i]-0.5);
					moduleBase[channelId] = tmpTerrace;
				}
			}
            if (fIdx == 18) { moduleBase[channelId] = new Mask(moduleBase[srcChannel1Id[channelId]], (double)noiseFuncMin[channelId], (double)noiseFuncMax[channelId]); }
            if (fIdx == 17) { moduleBase[channelId] = new WindexWarp(moduleBase[srcChannel1Id[channelId]]); }
			if (fIdx == 16) { moduleBase[channelId] = new TEWarp(moduleBase[srcChannel1Id[channelId]]); }
            if (fIdx == 15) { moduleBase[channelId] = new Select((double)noiseFuncMin[channelId], (double)noiseFuncMax[channelId], falloff[channelId], moduleBase[srcChannel1Id[channelId]], moduleBase[srcChannel2Id[channelId]], moduleBase[srcChannel3Id[channelId]]); }
			if (fIdx == 14) { moduleBase[channelId] = new Turbulence(power[channelId],moduleBase[srcChannel1Id[channelId]]); }
			if (fIdx == 13) { moduleBase[channelId] = new ScaleBias(scale[channelId],bias[channelId],moduleBase[srcChannel1Id[channelId]]); }
			if (fIdx == 12) { moduleBase[channelId] = new Invert(moduleBase[srcChannel1Id[channelId]]);}
			if (fIdx == 11) { moduleBase[channelId] = new Exponent(exponent[channelId],moduleBase[srcChannel1Id[channelId]]); }
			if (fIdx == 10) { moduleBase[channelId] = new Abs(moduleBase[srcChannel1Id[channelId]]);}
		}
        int resolution = 64;
        int xoffset = 0; int yoffset = 0;
        m_noiseMap[channelId] = new Noise2D(resolution, resolution, moduleBase[channelId]);
        float x1 = xoffset * zoom[channelId];
        float x2 = (xoffset * zoom[channelId]) + ((zoom[channelId] / resolution) * (resolution + 1));
        float y1 = -yoffset * zoom[channelId];
        float y2 = (-yoffset * zoom[channelId]) + ((zoom[channelId] / resolution) * (resolution + 1));
        m_noiseMap[channelId].GeneratePlanar(x1, x2, y1, y2);
        m_textures[channelId] = m_noiseMap[channelId].GetTexture();
        m_textures[channelId].Apply();
    }
Example #43
0
    void GenerateNoise()
    {
        mountainTerrain.OctaveCount = Octaves;
        mountainTerrain.Frequency = 2f;
        baseFlatTerrain.OctaveCount = Octaves;
        terrainType.OctaveCount = Octaves;

        baseFlatTerrain.Frequency = 2.0f;
        ScaleBias flatTerrain = new ScaleBias(0.125, -0.75, baseFlatTerrain);
        terrainType.Frequency = 0.5f;
        terrainType.Persistence = 0.25;

        Select terrainSelector = new Select(flatTerrain, mountainTerrain, terrainType);
        terrainSelector.SetBounds(0.0, 1000.0);
        terrainSelector.FallOff = 0.125;
        Turbulence finalTerrain = new Turbulence(0.25, terrainSelector);
        finalTerrain.Frequency = 2.0f;

        noise = new Scale(Scalarv, Scalarv, Scalarv, finalTerrain);
    }