// 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; }
} // 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); }
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); }
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); }
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); }
/// <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); }
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; }
public void Turbulence_Test(int[] items, int expected) { var target = new Turbulence(); var result = target.solution(items); Assert.AreEqual(expected, result); }
protected override ModuleBase CreateAndReadyModule() { var turbulence = new Turbulence(power, GetInput(0)); turbulence.Seed = seed; turbulence.Frequency = frequency; turbulence.Roughness = roughness; return(turbulence); }
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); }
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, }; }
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, }); }
/// <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); }
public void Dispose() { _buffer.Dispose(); _dxDz.Dispose(); _dyDxz.Dispose(); _dyxDyz.Dispose(); _dxxDzz.Dispose(); InitialSpectrum.Dispose(); PrecomputedData.Dispose(); Displacement.Dispose(); Derivatives.Dispose(); Turbulence.Dispose(); }
// 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(); }
// 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); }
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; }
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; }
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(); }
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); }
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); }
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()); }
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); }
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; }
// 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; }
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; }
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 (); }
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 + "/../"); }
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(); }
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); }