#define IN_HLSL #include "shdrConsts.h" struct a2v { float4 texcoord : TEXCOORD0; float2 lmCoord : TEXCOORD1; float3 tangent : TEXCOORD2; float3 binormal : TEXCOORD3; float3 N : TEXCOORD4; float3 normal : NORMAL; float4 pos : POSITION; }; struct v2f { float4 hpos : POSITION; float3 eye : TEXCOORD0; float3 light : TEXCOORD1; float2 texcoord : TEXCOORD2; float2 lmcoord : TEXCOORD3; }; v2f main(a2v IN, uniform float4x4 modelview : register(VC_WORLD_PROJ), uniform float4x4 texMat : register(VC_TEX_TRANS1), uniform float3 lightdir : register(VC_LIGHT_DIR1), uniform float3 eyePos : register(VC_EYE_POS), uniform float4x4 objTrans : register(VC_OBJ_TRANS)) { v2f OUT; // vertex position in clip space OUT.hpos=mul(modelview, IN.pos); // copy color and texture coordinates OUT.texcoord = mul(texMat, IN.texcoord); // tangent vectors in view space float3x3 tangentspace=float3x3(normalize(IN.tangent),normalize(IN.binormal),normalize(IN.normal)); OUT.eye = mul( tangentspace, IN.pos.xyz - eyePos ); OUT.light = mul( tangentspace, -lightdir ); return OUT; }