Niewiem juz co z tym kodem jest źle. Pomóżcie!
Program nie przekazuje współrzędnych normalnej do Vertex Shadera. Zamiast wartosci zawsze przekazuje wektor [1, 1, 1].
Funkcja ktorej używam do rysowania:
public void Draw()
{
Cam.effect.Parameters["Projection"].SetValue(Cam.Projection);
Cam.effect.Parameters["View"].SetValue(Cam.ModelView);
Cam.effect.Parameters["World"].SetValue(Cam.WorldMatrix);
Cam.effect.Begin();
foreach(EffectPass pass in Cam.effect.CurrentTechnique.Passes)
{
pass.Begin();
Camera.Device.DrawUserPrimitives<VertexPositionNormal>(PrimitiveType.TriangleList, Triangle, 0, 1);
pass.End();
}
Cam.effect.End();
}
a tutaj kod Vertex Shadera:
VertexShaderOutput VertexShaderFunction(float4 Position : POSITION, float3 Normal : NORMAL)
{
VertexShaderOutput output;
float4 TransformedNormal = normalize(mul(float4(Normal, 0), World));
float4 WorldPosition = mul(Position, World);
float4 ViewPosition = mul(WorldPosition, View);
output.Position = mul(ViewPosition, Projection);
float NdotL = dot(TransformedNormal, -DiffuseDirection);
output.Color = float4(NdotL, NdotL, NdotL, 1);
return output;
}