Files
jelito/Assets/Simple 3D Noise/ExampleScenes/Scripts/TextureNoise.cs
2025-09-15 15:53:18 +02:00

76 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextureNoise : MonoBehaviour {
public float noiseScale = 0.1f;
public RawImage noiseImage;
[Header("Octave options")]
public bool UseOctaves = false;
public int octaves = 4;
[Header("Seed options")]
public bool useSeed = false;
public int seed = 0;
Texture2D noiseTex = null;
// Use this for initialization
float prevNoiseScale = 1f;
void Start() {
MakeTexture();
prevNoiseScale = noiseScale;
}
void Update() {
if(noiseScale == prevNoiseScale)
return;
MakeTexture();
prevNoiseScale = noiseScale;
}
void MakeTexture() {
if(useSeed)
NoiseS3D.seed = seed;
if(noiseTex)
Destroy(noiseTex);
noiseTex = new Texture2D(Screen.width, Screen.height);
noiseTex.filterMode = FilterMode.Point;
for(int x = 0; x < noiseTex.width; x++) {
for(int y = 0; y < noiseTex.height; y++) {
float noiseValue = 0;
if(UseOctaves) {
NoiseS3D.octaves = octaves;
noiseValue = (float)NoiseS3D.NoiseCombinedOctaves(x * noiseScale, y * noiseScale);
} else {
noiseValue = (float)NoiseS3D.Noise(x * noiseScale, y * noiseScale);
}
//remap the value to 0 - 1 for color purposes
noiseValue = (noiseValue + 1) * 0.5f;
noiseTex.SetPixel(x, y, new Color(noiseValue, noiseValue, noiseValue));
}
}
noiseTex.Apply();
noiseImage.texture = noiseTex;
}
}