| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Numerics;
- using System.Reflection;
- using System.Runtime.CompilerServices;
- using System.Text;
- using MineCase.Algorithm.Noise;
- using SixLabors.ImageSharp;
- using Xunit;
- namespace MineCase.UnitTest
- {
- public class NoiseTest
- {
- public readonly string RootDir;
- public NoiseTest()
- {
- RootDir = SetRootDir();
- }
- private static string SetRootDir([CallerFilePath]string fileName = null) =>
- Path.Combine(Path.GetDirectoryName(fileName), "bin");
- [Fact]
- public void TestPerlinNoise3D()
- {
- const int xExtent = 100;
- const int yExtent = 100;
- using (var file = File.OpenWrite(Path.Combine(RootDir, "PerlinNoise3D.bmp")))
- using (var image = new Image<SixLabors.ImageSharp.PixelFormats.Rgb24>(xExtent, yExtent))
- {
- var noise = new PerlinNoise(100);
- var noiseValue = new float[xExtent, yExtent, 1];
- noise.Noise(noiseValue, Vector3.Zero, new Vector3(0.1f, 0.1f, 0));
- for (int x = 0; x < xExtent; x++)
- {
- for (int y = 0; y < yExtent; y++)
- {
- var color = (byte)(noiseValue[x, y, 0] * 255);
- image[x, y] = new SixLabors.ImageSharp.PixelFormats.Rgb24(color, color, color);
- }
- }
- image.SaveAsBmp(file);
- }
- }
- [Fact]
- public void TestOctavedPerlinNoise3D()
- {
- const int xExtent = 100;
- const int yExtent = 100;
- using (var file = File.OpenWrite(Path.Combine(RootDir, "OctavedPerlinNoise3D.bmp")))
- using (var image = new Image<SixLabors.ImageSharp.PixelFormats.Rgb24>(xExtent, yExtent))
- {
- var noise = new OctavedNoise<PerlinNoise>(new PerlinNoise(100), 8, 0.25f);
- var noiseValue = new float[xExtent, yExtent, 1];
- noise.Noise(noiseValue, new Vector3(-10, 10, -10), new Vector3(0.1f, 0.1f, 0));
- for (int x = 0; x < xExtent; x++)
- {
- for (int y = 0; y < yExtent; y++)
- {
- var color = (byte)(noiseValue[x, y, 0] * 255);
- image[x, y] = new SixLabors.ImageSharp.PixelFormats.Rgb24(color, color, color);
- }
- }
- image.SaveAsBmp(file);
- }
- }
- [Fact]
- public void TestPerlinNoise3DPerformance()
- {
- if (!Vector.IsHardwareAccelerated)
- throw new NotSupportedException();
- var noise = new PerlinNoise(100);
- for (int i = 0; i < 100_0000; i++)
- {
- noise.Noise(i, i, i);
- }
- }
- [Fact]
- public void TestPerlinNoise3DPerformanceArray()
- {
- if (!Vector.IsHardwareAccelerated)
- throw new NotSupportedException();
- var noiseValue = new float[100, 100, 10];
- var noise = new PerlinNoise(100);
- for (int i = 0; i < 100; i++)
- {
- noise.Noise(noiseValue, new Vector3(i, i, i), new Vector3(0.1f, 0.1f, 0.1f));
- }
- }
- }
- }
|