Skip to content

Commit 6dc301a

Browse files
author
Cory Leach
committed
Perlin Noise
1 parent 3ef9d38 commit 6dc301a

16 files changed

+1015
-87
lines changed

Runtime/ScriptableObjects.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
using UnityEngine;
2+
3+
namespace Gameframe.Procgen
4+
{
5+
[CreateAssetMenu(menuName = "Gameframe/Procgen/NoiseGenerator/BasicNoise")]
6+
public class NoiseGenerator : ScriptableObject
7+
{
8+
[SerializeField]
9+
private uint seed;
10+
11+
[SerializeField]
12+
private float frequency = 1.0f;
13+
14+
public uint Seed
15+
{
16+
get => seed;
17+
set => seed = value;
18+
}
19+
20+
public float Frequency
21+
{
22+
get => frequency;
23+
set => frequency = value;
24+
}
25+
26+
public float Value1D(float x)
27+
{
28+
return ValueNoise.Noise1D(x*frequency, seed);
29+
}
30+
31+
public float Value2D(float x, float y)
32+
{
33+
return ValueNoise.Noise2D(x*frequency, y*frequency, seed);
34+
}
35+
36+
public float Value3D(float x, float y, float z)
37+
{
38+
return ValueNoise.Noise3D(x*frequency, y*frequency, z*frequency, seed);
39+
}
40+
41+
public float Value2D(Vector2 v)
42+
{
43+
return Value2D(v.x, v.y);
44+
}
45+
46+
public float Value3D(Vector3 v)
47+
{
48+
return Value3D(v.x, v.y, v.z);
49+
}
50+
51+
}
52+
53+
public class SimplexNoiseGenerator : ScriptableObject
54+
{
55+
56+
/// <summary>
57+
/// Map coordinate to position in a 1d simplex lattice
58+
/// </summary>
59+
/// <param name="x"></param>
60+
/// <returns></returns>
61+
private static float SkewCoordinate1d(float x)
62+
{
63+
const float f = 0.41421356237f; // (Mathf.Sqrt(1 + 1) - 1) / 1;
64+
var skewed = 0f;
65+
skewed = x + x * f;
66+
return skewed;
67+
}
68+
69+
/// <summary>
70+
/// Map coordinate to position in a 2d simplex lattice
71+
/// </summary>
72+
/// <param name="v"></param>
73+
/// <returns></returns>
74+
private static Vector2 SkewCoordinate2d(Vector2 v)
75+
{
76+
const float f = 0.36602540378f; // (Mathf.Sqrt(2 + 1) - 1) / 2;
77+
var skewed = Vector2.zero;
78+
skewed.x = v.x + (v.x + v.y) * f;
79+
skewed.y = v.y + (v.x + v.y) * f;
80+
return skewed;
81+
}
82+
83+
/// <summary>
84+
/// Map coordinate to position in 3d simplex lattice
85+
/// </summary>
86+
/// <param name="v"></param>
87+
/// <returns></returns>
88+
private static Vector3 SkewCoordinate3d(Vector3 v)
89+
{
90+
const float f = 0.33333333333f; // (Mathf.Sqrt(3 + 1) - 1) / 3;
91+
var skewed = Vector3.zero;
92+
var sum = (v.x + v.y + v.z) * f;
93+
skewed.x = v.x + sum;
94+
skewed.y = v.y + sum;
95+
skewed.z = v.z + sum;
96+
return skewed;
97+
}
98+
99+
}
100+
}

Runtime/ScriptableObjects/NoiseGenerator.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using UnityEngine;
2+
3+
namespace Gameframe.Procgen
4+
{
5+
[CreateAssetMenu(menuName = "Gameframe/Procgen/NoiseGenerator/PerlinNoise")]
6+
public class PerlinNoiseGenerator : ScriptableObject
7+
{
8+
[SerializeField]
9+
private uint seed;
10+
11+
[SerializeField]
12+
private float frequency = 1.0f;
13+
14+
public uint Seed
15+
{
16+
get => seed;
17+
set => seed = value;
18+
}
19+
20+
public float Frequency
21+
{
22+
get => frequency;
23+
set => frequency = value;
24+
}
25+
26+
public float Value1D(float x)
27+
{
28+
return ValueNoise.Noise1D(x*frequency, seed);
29+
}
30+
31+
public float Value2D(float x, float y)
32+
{
33+
return ValueNoise.Noise2D(x*frequency, y*frequency, seed);
34+
}
35+
36+
public float Value3D(float x, float y, float z)
37+
{
38+
return ValueNoise.Noise3D(x*frequency, y*frequency, z*frequency, seed);
39+
}
40+
41+
public float Value2D(Vector2 v)
42+
{
43+
return Value2D(v.x, v.y);
44+
}
45+
46+
public float Value3D(Vector3 v)
47+
{
48+
return Value3D(v.x, v.y, v.z);
49+
}
50+
51+
}
52+
}

Runtime/ScriptableObjects/PerlinNoiseGenerator.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)