Матрица 3x3 может быть транспонирована следующим образом:
mat3 yuv = mat3(
vec3(yuv_matrix[0].x, yuv_matrix[1].x, yuv_matrix[2].x),
vec3(yuv_matrix[0].y, yuv_matrix[1].y, yuv_matrix[2].y),
vec3(yuv_matrix[0].z, yuv_matrix[1].z, yuv_matrix[2].z));
Обратите внимание, что транспонированная матрица - это матрица, перевернутая по диагонали.
(a b c) T (a d g)
(d e f) = (b e h)
(g h i) (c f i)
Матрицы состоят из векторов столбцов. Таким образом, матрица может быть инициализирована векторами, например:
vec3 a, b, c;
mat3 m = mat3(a, b, c);
И к векторам матрицы можно получить доступ с помощью оператора индекса, например ::
mat3 m;
vec3 v = m[1];