struct a2v
{
float4 Position : POSITION;
float2 TexCoord0 : TEXCOORD0;
};
struct v2f
{
float4 HPosition : POSITION;
float2 TexCoord0 : TEXCOORD0;
float3 Eye : TEXCOORD1;
};
v2f main(a2v IN,
uniform float4x4 ModelViewProj,
uniform float4 EyePos,
uniform float4 T,
uniform float4 B,
uniform float4 N
)
{
v2f OUT;
OUT.HPosition = mul(ModelViewProj, IN.Position);
OUT.TexCoord0 = IN.TexCoord0;
float3x3 TBN = float3x3(T.xyz, B.xyz, N.xyz);
float3 E = EyePos.xyz-IN.Position.xyz;
E = mul(TBN, E);
OUT.Eye = E;
return OUT;
}