How to properly implement Shader Model 3.0

Started by
0 comments, last by jischneider 12 years ago
I'm new to using effect file and therefore shader model too. I followed a tutorial that used SM 1.1 which I believe it's deprecated but it's the easiest to understand as far as I can find. this one.

Here's the fx file:

float4x4 xViewProjection;

struct VS_OUTPUT
{
float4 Pos : POSITION;
float4 Color : COLOR0;
float4 Position3D : TEXCOORD0;
};
struct PS_OUTPUT
{
float4 Color : COLOR0;
};

VS_OUTPUT VS(float4 inPos : POSITION)
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.Pos = mul(inPos, xViewProjection);
output.Color.rgb = 0.6f;
output.Position3D = inPos;
return output;
}
PS_OUTPUT PS(VS_OUTPUT ps_in) : COLOR
{
PS_OUTPUT output = (PS_OUTPUT)0;
output.Color = ps_in.Color;
return output;
}
technique BasicShader
{
pass P0
{
VertexShader = compile vs_3_0 VS();
PixelShader = compile ps_3_0 PS();
}
}


This is before I implement effect file http://i579.photobuc...21-46-25-98.jpg

Here's the result of implementing only pixel shader http://i579.photobucket.com/albums/ss231/hhygyulg/DXModelTest2012-04-1921-47-52-68.jpg
of implementing only vertex shader http://i579.photobuc...21-46-09-91.jpg
of implementing both shaders http://i579.photobuc...21-46-41-02.jpg

Where should I change? And if anyone knows tutorial on how to properly implement this with SM 3.0 would be great.
Advertisement
I recommend the “Shaders For game programmers and artists” book. It is a little old, but still very good for learning shaders.


VS_OUTPUT VS(float4 inPos : POSITION)
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.Pos = mul(inPos, worldViewProjection); // The world matrix rotate, scale and translate your object
// You also need the normal.
output.Normal = mul(in.Normal, worldIT); // The inverse transpose of the world matrix
// And maybe texture coordinates.
output.uv = in.uv;
// Sometimes some light information
...
return output;
}



float4 PS(VS_OUTPUT ps_in) : COLOR
{
// The illumination algorithm. I recommend Blinn Phong for your first try.
...
return output;
}


Ps: This should be in the beginners section.

[size=1]Project page: [size=1]<

[size=1] XNA FINAL Engine[size=1] [size=1]>

This topic is closed to new replies.

Advertisement