@@ -7,8 +7,7 @@ namespace Gameframe.Procgen
7
7
[ ExecuteAlways ]
8
8
public class NoiseVisualizer2D : MonoBehaviour
9
9
{
10
- [ SerializeField ]
11
- private Renderer _renderer ;
10
+ [ SerializeField ] private Renderer _renderer ;
12
11
13
12
[ SerializeField ] private int textureResolution = 256 ;
14
13
@@ -22,6 +21,16 @@ public class NoiseVisualizer2D : MonoBehaviour
22
21
23
22
private Texture2D _texture ;
24
23
24
+ private float minValue = float . MaxValue ;
25
+ private float maxValue = float . MinValue ;
26
+
27
+ [ ContextMenu ( "ResetMinMax" ) ]
28
+ public void ResetMinMax ( )
29
+ {
30
+ minValue = float . MaxValue ;
31
+ maxValue = float . MinValue ;
32
+ }
33
+
25
34
public enum Dimension
26
35
{
27
36
Value1D ,
@@ -32,10 +41,14 @@ public enum Dimension
32
41
Perlin3D ,
33
42
SamplePerlin2D ,
34
43
SamplePerlin3D ,
44
+ SimplexValue1D ,
45
+ SimplexValue2D ,
35
46
}
36
47
37
48
[ SerializeField ] private Dimension dimension = Dimension . Value2D ;
38
49
50
+ [ SerializeField ] private Vector3 offset ;
51
+
39
52
private void OnEnable ( )
40
53
{
41
54
Generate ( ) ;
@@ -48,7 +61,7 @@ private void OnDisable()
48
61
49
62
private Texture2D CreateTexture ( )
50
63
{
51
- var tex = new Texture2D ( textureResolution , textureResolution )
64
+ var tex = new Texture2D ( textureResolution , textureResolution )
52
65
{
53
66
filterMode = filterMode
54
67
} ;
@@ -75,10 +88,10 @@ private void Generate()
75
88
76
89
_texture . filterMode = filterMode ;
77
90
78
- var point00 = transform . TransformPoint ( new Vector3 ( - 0.5f , - 0.5f ) ) ;
79
- var point10 = transform . TransformPoint ( new Vector3 ( 0.5f , - 0.5f ) ) ;
91
+ var point00 = transform . TransformPoint ( new Vector3 ( - 0.5f , - 0.5f ) ) ;
92
+ var point10 = transform . TransformPoint ( new Vector3 ( 0.5f , - 0.5f ) ) ;
80
93
var point01 = transform . TransformPoint ( new Vector3 ( - 0.5f , 0.5f ) ) ;
81
- var point11 = transform . TransformPoint ( new Vector3 ( 0.5f , 0.5f ) ) ;
94
+ var point11 = transform . TransformPoint ( new Vector3 ( 0.5f , 0.5f ) ) ;
82
95
83
96
var stepSize = 1f / textureResolution ;
84
97
@@ -89,43 +102,62 @@ private void Generate()
89
102
90
103
for ( var x = 0 ; x < textureResolution ; x ++ )
91
104
{
92
- var point = Vector3 . Lerp ( point0 , point1 , ( x + 0.5f ) * stepSize ) ;
105
+ var point = Vector3 . Lerp ( point0 , point1 , ( x + 0.5f ) * stepSize ) + offset ;
93
106
var v = 0f ;
94
107
95
108
switch ( dimension )
96
109
{
97
110
case Dimension . Value1D :
98
- v = ValueNoise . Fractal1D ( point . x * frequency , seed , frequency , octaves , lacunarity , persistence ) ;
111
+ v = ValueNoise . Fractal1D ( point . x * frequency , seed , frequency , octaves , lacunarity ,
112
+ persistence ) ;
99
113
break ;
100
114
case Dimension . Value2D :
101
- v = ValueNoise . Fractal2D ( point * frequency , seed , frequency , octaves , lacunarity , persistence ) ;
115
+ v = ValueNoise . Fractal2D ( point * frequency , seed , frequency , octaves , lacunarity ,
116
+ persistence ) ;
102
117
break ;
103
118
case Dimension . Value3D :
104
- v = ValueNoise . Fractal3D ( point * frequency , seed , frequency , octaves , lacunarity , persistence ) ;
119
+ v = ValueNoise . Fractal3D ( point * frequency , seed , frequency , octaves , lacunarity ,
120
+ persistence ) ;
105
121
break ;
106
122
case Dimension . Perlin1D :
107
- v = PerlinGradientNoise . Fractal1D ( point . x , seed , frequency , octaves , lacunarity , persistence ) ;
123
+ v = PerlinGradientNoise . Fractal1D ( point . x , seed , frequency , octaves , lacunarity ,
124
+ persistence ) ;
108
125
break ;
109
126
case Dimension . Perlin2D :
110
- v = PerlinGradientNoise . Fractal2D ( point . x , point . y , seed , frequency , octaves , lacunarity , persistence ) ;
127
+ v = PerlinGradientNoise . Fractal2D ( point . x , point . y , seed , frequency , octaves , lacunarity ,
128
+ persistence ) ;
111
129
break ;
112
130
case Dimension . Perlin3D :
113
- v = PerlinGradientNoise . Fractal3D ( point . x , point . y , point . z , seed , frequency , octaves , lacunarity , persistence ) ;
131
+ v = PerlinGradientNoise . Fractal3D ( point . x , point . y , point . z , seed , frequency , octaves ,
132
+ lacunarity , persistence ) ;
114
133
break ;
115
134
case Dimension . SamplePerlin2D :
116
- v = PerlinGradientNoise . FractalSample2D ( point . x , point . y , seed , frequency , octaves , lacunarity , persistence ) . value ;
135
+ v = PerlinGradientNoise . FractalSample2D ( point . x , point . y , seed , frequency , octaves ,
136
+ lacunarity , persistence ) . value ;
117
137
break ;
118
138
case Dimension . SamplePerlin3D :
119
- v = PerlinGradientNoise . FractalSample3D ( point . x , point . y , point . z , seed , frequency , octaves , lacunarity , persistence ) . value ;
139
+ v = PerlinGradientNoise . FractalSample3D ( point . x , point . y , point . z , seed , frequency , octaves ,
140
+ lacunarity , persistence ) . value ;
141
+ break ;
142
+ case Dimension . SimplexValue1D :
143
+ v = SimplexGradientNoise . SimplexValue1D ( point . x , seed , frequency ) . value ;
144
+ break ;
145
+ case Dimension . SimplexValue2D :
146
+ v = SimplexGradientNoise . SimplexValue2D ( point . x , point . y , seed , frequency ) . value ;
120
147
break ;
121
148
default :
122
149
throw new ArgumentOutOfRangeException ( ) ;
123
150
}
124
151
125
- _texture . SetPixel ( x , y , new Color ( v , v , v , 1f ) ) ;
152
+ minValue = Mathf . Min ( v , minValue ) ;
153
+ maxValue = Mathf . Max ( v , maxValue ) ;
154
+
155
+ _texture . SetPixel ( x , y , new Color ( v , v , v , 1f ) ) ;
126
156
}
127
157
}
128
158
159
+ Debug . Log ( $ "Min: { minValue } Max: { maxValue } ") ;
160
+
129
161
_texture . Apply ( ) ;
130
162
131
163
_renderer . sharedMaterial . mainTexture = _texture ;
@@ -139,7 +171,8 @@ private void SaveTexture()
139
171
Debug . LogError ( "Texture does not exist" ) ;
140
172
return ;
141
173
}
142
- TextureUtility . SaveTextureAsPNG ( _texture , Application . dataPath + "GeneratedTexture.png" ) ;
174
+
175
+ TextureUtility . SaveTextureAsPNG ( _texture , Application . dataPath + "GeneratedTexture.png" ) ;
143
176
}
144
177
145
178
private void ClearTexture ( )
@@ -165,6 +198,4 @@ private void OnValidate()
165
198
}
166
199
}
167
200
}
168
-
169
-
170
201
}
0 commit comments