void Start() { //fbm = new FBM(new TPerlin3DNoise()); //fbm = new OaxoaSubtractiveFBM(new TPerlin3DNoise(), 10); fbm = new DomainWarpingFBM(new TUnityPerlinNoise(), 2); //fbm = new HybridFBM(new TUnityPerlinNoise()); fbm.SetSpectrum(12, 0.5f); fbm.Scale = 0.1f; Thread generateThread = new Thread(GenerateTexutre); generateThread.Start(this); }
public FBMBatchTask(FBM fbm, int maxThreads) { threadsCount = maxThreads; if (threadsCount < 1) { threadsCount = 1; } if (threadsCount > System.Environment.ProcessorCount) { threadsCount = System.Environment.ProcessorCount; } xFBM = fbm; }
public void Update() { var filtersGen = Enumerable .Range(0, octaves) .Select(x => noiseBuilder(noiseType, getSeed(x))) .ToArray(); Generator fractalGen = null; switch (fractalType) { case FractalType.None: fractalGen = filtersGen[0]; break; case FractalType.FBM: fractalGen = new FBM(lacunarity, persistance, filtersGen); break; case FractalType.Multifractal: fractalGen = new Multifractal(lacunarity, persistance, filtersGen); break; case FractalType.SlopeErosion: fractalGen = new SlopeErosion(lacunarity, persistance, filtersGen); break; } fractalGen = fractalGen.Warp(4, 1); Generator seaGen; if (seaLevel > 0) { seaGen = new Max(fractalGen, new Constant(seaLevel)); } else { seaGen = fractalGen; } Generator finalGen = seaGen; GetComponent <MapRenderer>().DrawTerrain(new float2(transform.position.x, transform.position.z), float2.zero, finalGen, terrainHeight, resPower, mapSize, mapChunks, frequency); }
public OaxoaSubtractiveFBM(TPerlin3DNoise noise, int iterations) : base(noise) { Iterations = iterations; xFBM = new FBM(noise); }
public DomainWarpingFBM(TPerlin3DNoise noise, int iterations = 2) : base(noise) { Iterations = iterations; xFBM = new FBM(noise); xFBM.SetSpectrum(10, 2f); }
public void InitFieldFBM(int seed, float scale, int octaves, float persistence, float lacunarity, Vector2 offset) { fieldfBM = new FBM(seed, scale, octaves, persistence, lacunarity, offset); }