Posted 06 December 2012 - 09:03 PM
c0 refers to the float4 at constant 0 (and in this case the c1,c2,c3 are needed too for the m4x4 command).
If you put a world * view * projection matrix to the constants c0-c3, the vertex shader will transform the position from object space to projection space.
Yes, the vertex shader could be used to draw a first person weapon, or any other object. Although the output will be rather dull since no normals or vertex coordinates are outputted.
FPS weapon doesn't differ from any other similar object in the 3d space. In order to draw it, you'll need a transformation matrix for it. So the question is, how to get one.
For this kind of simple case, you could for example use the camera look at direction to make the weapon point at desired direction. Then you could use the position of the camera with a little downward offset, to make the weapon follow your camera.
Remember that the view and projection matrices are rather constant for the frame, you'll need just to calculate the world matrix for the fps weapon.
I strongly suggest to use HLSL. Writing shader with assembly is rather complicated / outdated.