public BlueNoiseGenerator(float range) { int intRange = (int)range; allSamplesCount = intRange * intRange; allSamples = Enumerable.Range(0, allSamplesCount) .Select(x => new Vector2(x / intRange, x % intRange)).ToList(); Range = range; WhiteNoiseGenerator = new WhiteNoiseGenerator(range); var first = WhiteNoiseGenerator.Next(); samples.Add(first); quadTree = new QuadTree(first); }
private void UpdateTexture() { if (texture == null) { CreateTexture(); } // Clear var pixels = texture.GetPixels32(); for (var i = 0; i < pixels.Length; i++) { pixels[i] = Color.black; } texture.SetPixels32(pixels); // Sample material.mainTexture = texture; INoiseGenerator noiseGenerator; switch (generatorType) { case GeneratorType.WhiteNoise: noiseGenerator = new WhiteNoiseGenerator(TextureSize); break; case GeneratorType.HaltonNoise: noiseGenerator = new HaltonNoiseGenerator(TextureSize); break; case GeneratorType.BlueNoise: noiseGenerator = new BlueNoiseGenerator(TextureSize); break; default: throw new ArgumentOutOfRangeException(); } for (var i = 0; i < sampleCount; i++) { var point = noiseGenerator.Next(); texture.SetPixel((int)point.x, (int)point.y, Color.white); } texture.Apply(); }
public static float[] CreateTable(int size, WaveformEnum type) { Generator generator; if (type == WaveformEnum.Sine) { generator = new SineGenerator(new GeneratorDescriptor()); } else if (type == WaveformEnum.Square) { generator = new SquareGenerator(new GeneratorDescriptor()); } else if (type == WaveformEnum.Triangle) { generator = new TriangleGenerator(new GeneratorDescriptor()); } else if (type == WaveformEnum.Saw) { generator = new SawGenerator(new GeneratorDescriptor()); } else if (type == WaveformEnum.WhiteNoise) { generator = new WhiteNoiseGenerator(new GeneratorDescriptor()); } else { return(null); } float[] table = new float[size]; double phase, increment; phase = generator.StartPhase; increment = generator.Period / size; for (int x = 0; x < table.Length; x++) { table[x] = generator.GetValue(phase); phase += increment; } return(table); }