uint3 v = (uint3) (int3) round(p); v.x ^= 1103515245U; v.y ^= v.x + v.z; v.y = v.y * 134775813; v.z += v.x ^ v.y; v.y += v.x ^ v.z; v.x += v.y * v.z; v.x = v.x * 0x27d4eb2du; v.z ^= v.x << 3; v.y += v.z << 3; Out = v * (1.0 / float(0xffffffff));