public static float Noise(Vector3 p) { var u = p.x - Mathf.Floor(p.x); var v = p.y - Mathf.Floor(p.y); var w = p.z - Mathf.Floor(p.z); var i = OldMath.Floor2Int(p.x); var j = OldMath.Floor2Int(p.y); var k = OldMath.Floor2Int(p.z); var c = new Vector3[2, 2, 2]; for (var di = 0; di < 2; di++) { for (var dj = 0; dj < 2; dj++) { for (var dk = 0; dk < 2; dk++) { c[di, dj, dk] = ranvec[perm_x[(i + di) & 255] ^ perm_y[(j + dj) & 255] ^ perm_z[(k + dk) & 255]]; } } } return(TrillinearInterp(c, u, v, w)); }
public override Vector3 Generate() => uvw.Local(OldMath.RandomCosineDirection());