I find myself torn between using Vec3's vs Vec4's for representing position, directions, etc in my non-gpu code. I see the obvious benefit of using Vec3s for stuff like data in buffers, to more tightly pack mesh data, reducing memory used.
The primary motivation for switching from Vec3 to Vec4 is to reduce the tedius conversions back and forth. For example the math library I am using (GLM) only lets mat4's multiply with vec4's.
I realise it dosn't make sense to have a fourth component in say a direction vector, and to make the distinction between say a position and a direction vector becomes more important.
It's not a big issue, but nonetheless I am curious is there any significant pros or cons between using vec3's or vec4's? What makes the most sense to other users?