Sign in to follow this  
Anddos

asm vertex shader question

Recommended Posts

Anddos    588
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 ? Edited by Anddos

Share this post


Link to post
Share on other sites
kauna    2922
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!

Share this post


Link to post
Share on other sites
heavycat    387
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. [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

Share this post


Link to post
Share on other sites
kauna    2922
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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this