Is making the distinction between rgba and xyzw really needed? xyzw / rgba / stpq should be equivalent and the distinction is mostly for readability if you know the variable type. However, since you can't decided that purely based on whether something is a vertex shader or a pixel shader, the way it's currently done might be misleading in some cases.