   separate vertex shader and pixelshader
  Hy,I have created this shader:float4x4 WMatrix;float4x4 WMatrixIT;float4x4 WVPMatrix ;float4 Light0WorldDirection ;float4 Light1WorldDirection ;float4 Light2WorldDirection ;float4 CameraModelPosition;float AmbientIntensity = 1;float4 AmbientColor : Ambient = float4(1,0,0,1);#define MaxLights 3float DiffuseIntensity[MaxLights] = {1,1,1};float4 DiffuseColor[MaxLights] : Diffuse = {float4(1,0,0,1),float4(0,1,0,1),float4(0,0,1,1)};float3 LightDirection[MaxLights] : Direction = {float3(1,0,0),float3(0,1,0),float3(0,0,1)};struct VS_IN{float4 Position : POSITION;float3 Normal : NORMAL;float3 Tex : TEXCOORD0;};struct VS_OUT{float4 Position : POSITION;float3 Light[MaxLights] : TEXCOORD0;float3 Normal : TEXCOORD3;float4 View : TEXCOORD4;float3 Tex : TEXCOORD5;};struct PS_OUT{float4 Color : COLOR;};VS_OUT mainVS(VS_IN input){VS_OUT output;output.Position = mul(input.Position,WVPMatrix);// Normalize the light directionsif(length(Light0WorldDirection)>0)output.Light[0] = normalize(Light0WorldDirection).xyz;elseoutput.Light[0] = float3(0, 0, 0);if(length(Light1WorldDirection)>0)output.Light[1] = normalize(Light1WorldDirection).xyz;elseoutput.Light[1] = float3(0, 0, 0);if(length(Light2WorldDirection)>0)output.Light[2] = normalize(Light2WorldDirection).xyz;elseoutput.Light[2] = float3(0, 0, 0);float3 norNormal;float3 NormalN = (mul(float4(input.Normal.xyz,1),WMatrixIT)).xyz;if(length(NormalN)>0)norNormal = normalize(NormalN);elsenorNormal = float3(0, 0, 0);float4 PosWorld = normalize(mul(input.Position, WMatrix)).xyzw;    output.View = CameraModelPosition - PosWorld;    // V    output.Normal = mul(float4(norNormal,1), WMatrix).xyz;// Noutput.Tex = input.Tex;return output;}sampler2D BaseSampler;PS_OUT mainPS(VS_OUT input){PS_OUT output = (PS_OUT)0;// Get ambient lightAmbientColor *= AmbientIntensity;// Get diffuse lightfloat4 TotalDiffuseColor = float4(0,0,0,0);float4 TotalReflectColor = float4(0,0,0,0);float4 TotalSpecularColor = float4(0,0,0,0);float3 ViewDir;   if(length(input.View)>0)    ViewDir = normalize(input.View).xyz; elseViewDir = float3(0, 0, 0);float3 LightDir;float3 Reflect = float3(0, 0, 0);float4 specular = float4(0, 0, 0, 0);float4 Diff = float4(0, 0, 0, 0);for(int l=0;l<MaxLights;l++){LightDir = float3(0, 1, 0);// (input.Light[l]);Diff = (DiffuseIntensity[l] * DiffuseColor[l]) * saturate(dot(input.Normal,LightDir));Reflect = 2 * Diff.xyz * input.Normal - LightDir;if(length(Reflect)>0)   Reflect = normalize(Reflect);elseReflect = float3(0, 0, 0);specular = pow(saturate(dot(Reflect, ViewDir)), 8); //TotalDiffuseColor += Diff;TotalReflectColor += float4(Reflect,1);TotalSpecularColor += specular;}float4 diffuse = { 1.0f, 0.0f, 0.0f, 1.0f};float4 diffuseColorTexture = tex2D(BaseSampler,input.Tex);output.Color = AmbientColor + diffuse * TotalDiffuseColor + TotalSpecularColor; //+ diffuseColorTexture; return output;}technique technique0 {pass p0 {CullFaceEnable = false;VertexProgram = compile vp40 mainVS();FragmentProgram = compile fp40 mainPS();}}now i would use wildmagic 4 and it require to have a compiled file with vertex shader and a separated compiled file with fragment shader.How i can separate the intere shader in two part?Thanks.   
  Remove the technique section. Compile it once using the vp40 profile and mainVS as the entry point. Compile it again using the fp40 profile and mainPS as the entry point.   ;  thanks, i have another problem:can you see my normals?because they are not correct in the visualization.The render(view,world ecc...)are correct , i have tested it.thanks.   