Beispiel #1
0
        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));
        }
Beispiel #2
0
 public override Vector3 Generate() => uvw.Local(OldMath.RandomCosineDirection());