[MethodImpl(Inline)] public static int3 abs(int3 a) => (a + (a >> 31)) ^ (a >> 31);
[MethodImpl(Inline)] public static int3 min(int3 a, int3 b) => int3(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z));
[MethodImpl(Inline)] public static int3 sign(int3 a) => int3(sign(a.x), sign(a.y), sign(a.z));
[MethodImpl(Inline)] public static int3 step(int3 a, int3 b) => int3(step(a.x, b.x), step(a.y, b.y), step(a.z, b.z));
[MethodImpl(Inline)] public static int3 lerp(int3 a, int3 b, int3 c) => a + c * (b - a);
[MethodImpl(Inline)] public static int3 mad(int3 a, int3 b, int3 c) => a * b + c;
[MethodImpl(Inline)] public static int3 reflect(int3 a, int3 b) => a - 2 * b * dot(a, b);
[MethodImpl(Inline)] public static int dot(int3 a, int3 b) => a.x * b.x + a.y * b.y + a.z * b.z;
[MethodImpl(Inline)] public static int3 clamp(int3 v, int3 a, int3 b) => max(a, min(b, v));