Exemple #1
0
        public Bitmap CreateNoiseBitmap(NoiseType noiseType, Size size, NoiseConfig cfg)
        {
            var b           = _noiseProvider[noiseType];
            var noiseBitmap = b.GetBitmap(size, cfg);

            Info = $"Density: {b.Density:P}, Coverage: {b.Coverage:P}";
            return(noiseBitmap);
        }
Exemple #2
0
 public CellConfig(float frequency, float displacement, Cell.CellType cellType, bool enabledDistance,
                   NoiseConfig cfg
                   ) : base(cfg)
 {
     Frequency      = frequency;
     Displacement   = displacement;
     CellType       = cellType;
     EnableDistance = enabledDistance;
 }
Exemple #3
0
        protected override Module BuildNoiseSource(NoiseConfig cfg)
        {
            var pcfg        = (CylinderConfig)cfg;
            var noiseSource = new SharpNoise.Modules.Cylinders()
            {
                Frequency = pcfg.Frequency,
            };

            return(noiseSource);
        }
Exemple #4
0
 public PerlinConfig(float lacunarity, float frequency, float persistance, int octaves,
                     NoiseQuality quality,
                     NoiseConfig cfg
                     ) : base(cfg)
 {
     Lacunarity  = lacunarity;
     Frequency   = frequency;
     Persistance = persistance;
     Octaves     = octaves;
     Quality     = quality;
 }
        // TODO: Seperate UI and config for this one
        protected override Module BuildNoiseSource(NoiseConfig cfg)
        {
            var pcfg        = (CellConfig)cfg;
            var noiseSource = new Cell()
            {
                Type           = pcfg.CellType,
                Seed           = pcfg.Seed,
                Frequency      = pcfg.Frequency,
                Displacement   = pcfg.Displacement,
                EnableDistance = pcfg.EnableDistance
            };

            return(noiseSource);
        }
Exemple #6
0
        protected override Module BuildNoiseSource(NoiseConfig cfg)
        {
            var pcfg        = (PerlinConfig)cfg;
            var noiseSource = new SharpNoise.Modules.Billow()
            {
                Seed        = pcfg.Seed,
                Frequency   = pcfg.Frequency,
                Lacunarity  = pcfg.Lacunarity,
                Persistence = pcfg.Persistance,
                OctaveCount = pcfg.Octaves,
                Quality     = pcfg.Quality
            };

            return(noiseSource);
        }
        protected override Module BuildNoiseSource(NoiseConfig cfg)
        {
            var pcfg        = (PerlinConfig)cfg;
            var noiseSource = new Perlin
            {
                Seed        = pcfg.Seed,
                Frequency   = pcfg.Frequency,
                Lacunarity  = pcfg.Lacunarity,
                Persistence = pcfg.Persistance,
                OctaveCount = pcfg.Octaves,
                // TODO: Front end for
                Quality = pcfg.Quality
            };

            return(noiseSource);
        }
Exemple #8
0
        private static void PostProcessing(Size size, NoiseConfig cfg, NoiseMap noiseMap)
        {
            var po = new ParallelOptions()
            {
                CancellationToken = new CancellationToken(),
            };

            Parallel.For(0, size.Height, po, y =>
            {
                for (int x = 0; x < size.Width; x++)
                {
                    var v          = noiseMap[x, y];
                    v             *= cfg.Scale;
                    v              = v < cfg.MinThreshold ? cfg.MinThreshold : v;
                    v              = v > cfg.MaxThreshold ? cfg.MaxThreshold : v;
                    v              = cfg.Invert ? 1f - v : v;
                    v              = cfg.Round ? (int)Math.Round(v) : v;
                    v              = Math.Clamp(Math.Abs(v), 0f, 1f);
                    noiseMap[x, y] = v;
                }
            });
        }
Exemple #9
0
        private static Bitmap CreateBitmap(Size size, NoiseMap map, NoiseConfig cfg)
        {
            var image    = new SharpNoise.Utilities.Imaging.Image(size.Width, size.Height);
            var renderer = new ImageRenderer
            {
                SourceNoiseMap   = map,
                DestinationImage = image
            };

            if (cfg.OutputGrayscale)
            {
                BuildGrayscaleRenderer(renderer);
            }
            else
            {
                BuildTerrainRenderer(renderer);
            }

            renderer.Render();

            return(image.ToGdiBitmap());
        }
Exemple #10
0
        protected virtual NoiseMap BuildNoiseMap(Size size, NoiseConfig cfg)
        {
            var noiseSource = BuildNoiseSource(cfg);

            var noiseMap = new NoiseMap(size.Width, size.Height);

            var noiseMapBuilder = new PlaneNoiseMapBuilder
            {
                DestNoiseMap   = noiseMap,
                SourceModule   = noiseSource,
                EnableSeamless = false
            };

            noiseMapBuilder.SetDestSize(noiseMap.Width, noiseMap.Height);
            noiseMapBuilder.SetBounds(0, noiseMap.Width * 0.01, 0, noiseMap.Height * 0.01);
            noiseMapBuilder.Build();
            PostProcessing(size, cfg, noiseMap);
            Size2 = size.Width * size.Height;
            Total = noiseMap.Data.Sum();

            Density  = Total / Size2;
            Coverage = noiseMap.Data.Count(v => v > 0f) / Size2;
            return(noiseMap);
        }
Exemple #11
0
        public virtual Bitmap GetBitmap(Size size, NoiseConfig cfg)
        {
            var map = GetNoiseMap(size, cfg);

            return(map.IsEmpty ? new Bitmap(1, 1) : CreateBitmap(size, map, cfg));
        }
Exemple #12
0
 public virtual NoiseMap GetNoiseMap(Size size, NoiseConfig cfg)
 => BuildNoiseMap(size, cfg);
Exemple #13
0
 public virtual double[,] GetMap(Size size, NoiseConfig cfg)
 => ToArray(size, BuildNoiseMap(size, cfg));
Exemple #14
0
 protected abstract Module BuildNoiseSource(NoiseConfig cfg);