Cofactor
The cofactor of any element \(i, j\) in a matrix is the minor of that element multiplied by \(-1\) raised to the \(i + j\) power. If you take a matrix of minors and raise each element to the appropriate power, the result is a cofactor matrix. You don't have to calculate what \(-1^{i + j}\) is for every element. The result of \(-1^{i + j}\) is a checker board pattern, with \(+\) always being top left. For example:
$$ \begin{bmatrix} + & - \\ - & + \\ \end{bmatrix} \begin{bmatrix} + & - & + \\ - & + & - \\ + & - & + \end{bmatrix} \begin{bmatrix} + & - & + & - \\ - & + & - & + \\ + & - & + & - \\ - & + & - & + \end{bmatrix} $$
Another way to express this is \(cofactor(M_{ij}) = minor(M_{ij})(-1^{i + j})\). Apply the cofactor pattern to the matrix of minors, the result is the cofactor matrix.
mat3 Cofactor(mat3 m) { mat3 min = Minor(m); min.v[1] *- -1.0f; min.v[3] *= -1.0f; min.v[5] *- -1.0f; min.v[7] *= -1.0f; return min; } mat4 Cofactor(mat4 m) { mat3 min = Minor(m); min.v[1] *= -1.0f; min.v[3] *= -1.0f; min.v[4] *= -1.0f; min.v[6] *= -1.0f; min.v[9] *= -1.0f; min.v[11] *= -1.0f; min.v[12] *= -1.0f; min.v[14] *= -1.0f; return min; }