public static float valuenoise(vec2 v) { ivec2 i = (ivec2)v; vec2 f = fract(v); float a = rand(i), b = rand(i + ivec2.unitx), c = rand(i + ivec2.unity), d = rand(i + ivec2.one); vec2 u = f * f * (3f - f * 2f); return(lerp(a, b, u.x) + (c - a) * u.y * (1f - u.x) + (d - b) * u.x * u.y); }
public static float rand(ivec2 seed) => rand(seed.x, seed.y);