home *** CD-ROM | disk | FTP | other *** search
/ NVIDIA Tech Demo: DAWN / NVIDIA_demo.iso / Dawn.exe / Disk1 / data1.cab / Program_Executable_Files / shaders / _textureb1bv1m5.vp30 < prev    next >
Encoding:
Text File  |  2003-02-11  |  2.2 KB  |  63 lines

  1. // v2fConnector.HPOS is set to be the homogenous space coordinate
  2. // v2f.texture is set to be the texture coordinate
  3. // InverseTransposes not used, as we assume no nonuniform scales.
  4.  
  5.  
  6. // vecMul(matrix, float3) multiplies like a vector instead of point (no translate)
  7. float3 vecMul(const float4x4 matrix, const float3 vec){
  8.     return(float3(dot(vec, matrix._11_12_13),
  9.                   dot(vec, matrix._21_22_23),
  10.                   dot(vec, matrix._31_32_33)));
  11. }
  12.  
  13. struct a2vConnector : application2vertex {
  14.     float4 coord;
  15.     float3 normal;
  16.     float3 coordMorph0;
  17.     float3 normalMorph0;
  18.     float3 coordMorph1;
  19.     float3 normalMorph1;
  20.     float3 coordMorph2;
  21.     float3 normalMorph2;
  22.     float3 coordMorph3;
  23.     float3 normalMorph3;
  24.     float3 coordMorph4;
  25.     float3 normalMorph4;
  26.     float boneWeight0;
  27.     float boneIndex0;
  28.     float2 texture;
  29. };
  30.  
  31. struct v2fConnector : vertex2fragment {
  32.   float4 HPOS        :HPOS;
  33.     float2 texture    :TEX0;
  34. };
  35.  
  36. v2fConnector main(a2vConnector a2v,
  37.                   const uniform float morphWeight0,
  38.                   const uniform float morphWeight1,
  39.                   const uniform float morphWeight2,
  40.                   const uniform float morphWeight3,
  41.                   const uniform float morphWeight4,
  42.                   const uniform float4x4 modelViewProj[1]){
  43.     v2fConnector v2f;
  44.  
  45.  
  46.     v2f.texture = a2v.texture;
  47.  
  48.     float4 objectCoord = a2v.coord;
  49.     objectCoord.xyz = objectCoord.xyz + morphWeight0 * a2v.coordMorph0;
  50.     objectCoord.xyz = objectCoord.xyz + morphWeight1 * a2v.coordMorph1;
  51.     objectCoord.xyz = objectCoord.xyz + morphWeight2 * a2v.coordMorph2;
  52.     objectCoord.xyz = objectCoord.xyz + morphWeight3 * a2v.coordMorph3;
  53.     objectCoord.xyz = objectCoord.xyz + morphWeight4 * a2v.coordMorph4;
  54.     float4x4 projSkinMatrix;
  55.     projSkinMatrix[0] = a2v.boneWeight0.x * modelViewProj[a2v.boneIndex0.x][0];
  56.     projSkinMatrix[1] = a2v.boneWeight0.x * modelViewProj[a2v.boneIndex0.x][1];
  57.     projSkinMatrix[2] = a2v.boneWeight0.x * modelViewProj[a2v.boneIndex0.x][2];
  58.     projSkinMatrix[3] = a2v.boneWeight0.x * modelViewProj[a2v.boneIndex0.x][3];
  59.     float4 hpos = mul(projSkinMatrix, objectCoord);
  60.     v2f.HPOS = hpos;
  61.  
  62.     return v2f;
  63. }