@@ -7,8 +7,7 @@ namespace Gameframe.Procgen
77 [ ExecuteAlways ]
88 public class NoiseVisualizer2D : MonoBehaviour
99 {
10- [ SerializeField ]
11- private Renderer _renderer ;
10+ [ SerializeField ] private Renderer _renderer ;
1211
1312 [ SerializeField ] private int textureResolution = 256 ;
1413
@@ -22,6 +21,16 @@ public class NoiseVisualizer2D : MonoBehaviour
2221
2322 private Texture2D _texture ;
2423
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+
2534 public enum Dimension
2635 {
2736 Value1D ,
@@ -32,10 +41,14 @@ public enum Dimension
3241 Perlin3D ,
3342 SamplePerlin2D ,
3443 SamplePerlin3D ,
44+ SimplexValue1D ,
45+ SimplexValue2D ,
3546 }
3647
3748 [ SerializeField ] private Dimension dimension = Dimension . Value2D ;
3849
50+ [ SerializeField ] private Vector3 offset ;
51+
3952 private void OnEnable ( )
4053 {
4154 Generate ( ) ;
@@ -48,7 +61,7 @@ private void OnDisable()
4861
4962 private Texture2D CreateTexture ( )
5063 {
51- var tex = new Texture2D ( textureResolution , textureResolution )
64+ var tex = new Texture2D ( textureResolution , textureResolution )
5265 {
5366 filterMode = filterMode
5467 } ;
@@ -75,10 +88,10 @@ private void Generate()
7588
7689 _texture . filterMode = filterMode ;
7790
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 ) ) ;
8093 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 ) ) ;
8295
8396 var stepSize = 1f / textureResolution ;
8497
@@ -89,43 +102,62 @@ private void Generate()
89102
90103 for ( var x = 0 ; x < textureResolution ; x ++ )
91104 {
92- var point = Vector3 . Lerp ( point0 , point1 , ( x + 0.5f ) * stepSize ) ;
105+ var point = Vector3 . Lerp ( point0 , point1 , ( x + 0.5f ) * stepSize ) + offset ;
93106 var v = 0f ;
94107
95108 switch ( dimension )
96109 {
97110 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 ) ;
99113 break ;
100114 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 ) ;
102117 break ;
103118 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 ) ;
105121 break ;
106122 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 ) ;
108125 break ;
109126 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 ) ;
111129 break ;
112130 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 ) ;
114133 break ;
115134 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 ;
117137 break ;
118138 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 ;
120147 break ;
121148 default :
122149 throw new ArgumentOutOfRangeException ( ) ;
123150 }
124151
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 ) ) ;
126156 }
127157 }
128158
159+ Debug . Log ( $ "Min: { minValue } Max: { maxValue } ") ;
160+
129161 _texture . Apply ( ) ;
130162
131163 _renderer . sharedMaterial . mainTexture = _texture ;
@@ -139,7 +171,8 @@ private void SaveTexture()
139171 Debug . LogError ( "Texture does not exist" ) ;
140172 return ;
141173 }
142- TextureUtility . SaveTextureAsPNG ( _texture , Application . dataPath + "GeneratedTexture.png" ) ;
174+
175+ TextureUtility . SaveTextureAsPNG ( _texture , Application . dataPath + "GeneratedTexture.png" ) ;
143176 }
144177
145178 private void ClearTexture ( )
@@ -165,6 +198,4 @@ private void OnValidate()
165198 }
166199 }
167200 }
168-
169-
170201}
0 commit comments