   Vertex shader return value missing semantics
  My shader will not compile. It reports the error in the title of this post.I assume it has a problem with/* Data passed from vertex shader to pixel shader */struct VS_OUTPUT{   float4 position : SV_POSITION;   float2 texCoord : TEXCOORD;   float3 lightDir;   float3 viewDir;};I don't know what semantic to give lightDir and viewDir though.If I change it to/* Data passed from vertex shader to pixel shader */struct VS_OUTPUT{   float4 position : SV_POSITION;   float2 texCoord : TEXCOORD;   float3 lightDir : NORMAL1;   float3 viewDir  : NORMAL2;};It compiles, is it safe for me to call them normals?   
  AFAIK NORMAL isn't a valid vertex shader output semantic.  They valid input and output semantics are listed here.Typically you'd just store data like that in TEXCOORD1 and TEXCOORD2.   ;  I'm guessing that your second attempt compiles because you are compiling to a sm 4.0 or higher shader target (alternatively you could be doing a 4_0_level_9_x target and it will also compile).  Only sm 3.0 and below require specific semantics in order to compile.  All outputs must have a semantic so that the pipeline can be validated for communication between shader stages.If you are comiling for an sm 4.0 or higher target, then any word you can think up should be accepted. Only the SV_ semantics have special meanings.   