NormalMapp_vp.cg 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. struct interpolants
  2. {
  3. float2 texcoords : TEXCOORD0;
  4. float4 tangentToEyeMat0 : TEXCOORD4;
  5. float3 tangentToEyeMat1 : TEXCOORD5;
  6. float3 tangentToEyeMat2 : TEXCOORD6;
  7. float4 eyeSpacePosition : TEXCOORD7;
  8. };
  9. void main(in float4 oPosition : POSITION,
  10. in float2 texcoord0 : TEXCOORD0,
  11. in float3 tangent : TEXCOORD1,//TANGENT,
  12. in float3 binormal : TEXCOORD2,//BINORMAL,
  13. in float3 normal : NORMAL,
  14. out float4 hPosition : POSITION,
  15. out float4 color : COLOR0,
  16. out interpolants OUT,
  17. uniform float bumpScale,
  18. uniform float4x4 modelViewProj,
  19. uniform float4x4 modelView)
  20. {
  21. hPosition = mul(modelViewProj, oPosition);
  22. color = float4(1.0, 1.0, 1.0, 1.0);
  23. OUT.texcoords = texcoord0;
  24. OUT.eyeSpacePosition = mul(modelView, oPosition);
  25. OUT.tangentToEyeMat0.x = dot(modelView[0].xyz, tangent);
  26. OUT.tangentToEyeMat0.y = dot(modelView[0].xyz, binormal);
  27. OUT.tangentToEyeMat0.z = dot(modelView[0].xyz, normal);
  28. OUT.tangentToEyeMat0.w = bumpScale;
  29. OUT.tangentToEyeMat1.x = dot(modelView[1].xyz, tangent);
  30. OUT.tangentToEyeMat1.y = dot(modelView[1].xyz, binormal);
  31. OUT.tangentToEyeMat1.z = dot(modelView[1].xyz, normal);
  32. OUT.tangentToEyeMat2.x = dot(modelView[2].xyz, tangent);
  33. OUT.tangentToEyeMat2.y = dot(modelView[2].xyz, binormal);
  34. OUT.tangentToEyeMat2.z = dot(modelView[2].xyz, normal);
  35. }