#pragma once template inline constexpr mat<4, 4, T> translate(vec<3, T> t) { return { 1, 0, 0, t.x, 0, 1, 0, t.y, 0, 0, 1, t.z, 0, 0, 0, 1 }; } template inline constexpr mat<4, 4, T> scale(vec<3, T> s) { return { s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1 }; } template