luaur-vm 0.1.0

The Luau register virtual machine and standard library (Rust).
Documentation
#[inline]
pub fn perlin_grad(hash: i32, x: f32, y: f32, z: f32) -> f32 {
    const KPERLINGRAD: [[f32; 3]; 16] = [
        [1.0, 1.0, 0.0],
        [-1.0, 1.0, 0.0],
        [1.0, -1.0, 0.0],
        [-1.0, -1.0, 0.0],
        [1.0, 0.0, 1.0],
        [-1.0, 0.0, 1.0],
        [1.0, 0.0, -1.0],
        [-1.0, 0.0, -1.0],
        [0.0, 1.0, 1.0],
        [0.0, -1.0, 1.0],
        [0.0, 1.0, -1.0],
        [0.0, -1.0, -1.0],
        [1.0, 1.0, 0.0],
        [0.0, -1.0, 1.0],
        [-1.0, 1.0, 0.0],
        [0.0, -1.0, -1.0],
    ];
    let g = KPERLINGRAD[(hash & 15) as usize];
    g[0] * x + g[1] * y + g[2] * z
}