asm vertex shader question

Started by
2 comments, last by kauna 11 years, 4 months ago
this is my very small vertex shader i have learnt from my book ,

const char* strAsmVertexShader =
"vs_1_1\n"
"dcl_position v0\n"
"m4x4 oPos,v0,c0\n"
";\n"
"";

i am not understanding what c0 means , is it world*view*projection?

if i was making an fps game, how would the vertexshader look then , do you have to multiply the guns position vertices by projection only , or is it with the camera position ?
:)
Advertisement
I strongly suggest to use HLSL. Writing shader with assembly is rather complicated / outdated.

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.

Cheers!
Writing it in assembler would be good experience though, and once you understand how to write a shader, it will be much easier to understand how they work. smile.png
I'm not so sure that it will be a good experience. The high level shader languages don't contain any complex syntax and are pretty easy to understand how they map to the hardware. Writing ASM on the other hand is difficult (look at the syntax above), takes more time to write, more time to debug etc. and finally may not be any more efficient than the HLSL. The current HLSL optimizers are pretty good too.

Cheers!

This topic is closed to new replies.

Advertisement