add mat2 mat3 mat4 implementations; mat casting from low to high and high to low