+ void uniform(const std::string &, const LinAl::Matrix<float, 2, 2> &);
+ void uniform_matrix2(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 2, 3> &);
+ void uniform_matrix3x2(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 2, 4> &);
+ void uniform_matrix4x2(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 3, 2> &);
+ void uniform_matrix2x3(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 3, 3> &);
+ void uniform_matrix3(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 3, 4> &);
+ void uniform_matrix4x3(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 4, 2> &);
+ void uniform_matrix2x4(const std::string &, const float *);
+ void uniform(const std::string &, const LinAl::Matrix<float, 4, 3> &);
+ void uniform_matrix3x4(const std::string &, const float *);
+ void uniform(const std::string &, const Matrix &);