-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRidgidNoiseFilter.cs
37 lines (30 loc) · 1.02 KB
/
RidgidNoiseFilter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RidgidNoiseFilter : INoiseFilter {
NoiseSettings.RidgidNoiseSettings settings;
Noise noise = new Noise();
public RidgidNoiseFilter(NoiseSettings.RidgidNoiseSettings settings)
{
this.settings = settings;
}
public float Evaluate(Vector3 point)
{
float noiseValue = 0;
float frequency = settings.baseRoughness;
float amplitude = 1;
float weight = 1;
for (int i = 0; i < settings.numLayers; i++)
{
float v = 1-Mathf.Abs(noise.Evaluate(point * frequency + settings.centre));
v *= v;
v *= weight;
weight = Mathf.Clamp01(v * settings.weightMultiplier);
noiseValue += v * amplitude;
frequency *= settings.roughness;
amplitude *= settings.persistence;
}
noiseValue = Mathf.Max(0, noiseValue - settings.minValue);
return noiseValue * settings.strength;
}
}