Advertisement
Guest User

Untitled

a guest
Mar 29th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //========= Copyright © 1996-2006, Valve Corporation, All rights reserved. ============//
  2.  
  3. // DYNAMIC: "COMPRESSED_VERTS"          "0..1"
  4. // DYNAMIC: "SKINNING"                  "0..1"
  5.  
  6. // Includes
  7. #include "common_vs_fxc.h"
  8.  
  9. const float4 g_mBaseTexCoordTransform[2] : register( SHADER_SPECIFIC_CONST_1 );
  10.                                                    //SHADER_SPECIFIC_CONST_2
  11. const float4 vEyePos : register(c1);
  12.  
  13. struct VS_OUTPUT
  14. {
  15.     float4 Position              : POSITION;   
  16.     float2 vFragPos              : TEXCOORD0;
  17.     float2 vBaseCoord            : TEXCOORD1;
  18.     float3 vNormal               : TEXCOORD2;
  19.     float3 vViewDir              : TEXCOORD3;
  20.     float3 worldPos_projPosZ     : TEXCOORD4;
  21.     float3 lightAtten            : TEXCOORD5;
  22.     float3 detailTexCoord_atten3 : TEXCOORD6;
  23.     float3 vBinormal             : TEXCOORD7;
  24.     float3 vTangent              : TEXCOORD8;
  25.     float3 wCameraPosition       : TEXCOORD9;
  26.    
  27.    
  28.    
  29. };
  30.  
  31.  
  32.  
  33. // Structs
  34. struct VS_INPUT
  35. {
  36.     float4 vPos                 : POSITION;     // Position
  37.     float4 vNormal              : NORMAL;       // Normal
  38.     float4 vBoneWeights         : BLENDWEIGHT;  // Skin weights
  39.     float4 vBoneIndices         : BLENDINDICES; // Skin indices
  40.     float4 vTexCoord0           : TEXCOORD0;    // Base texture coordinates
  41.     float4 vUserData            : TANGENT;
  42.    
  43. };
  44.  
  45.  
  46.  
  47.  
  48. VS_OUTPUT main( const VS_INPUT i )
  49. {
  50.  
  51.     VS_OUTPUT o;
  52.  
  53.  
  54.  
  55.     // Decompress compressed normal and tangent
  56.     float4 vObjPosition = i.vPos.xyzw;
  57.     float3 vObjNormal;
  58.     float4 vObjTangent;
  59.     DecompressVertex_NormalTangent( i.vNormal, i.vUserData, vObjNormal, vObjTangent );
  60.  
  61.     // Transform the position
  62.     float3 vWorldPosition = { 0.0f, 0.0f, 0.0f };
  63.     float3 vWorldNormal = { 0.0f, 0.0f, 0.0f };
  64.     float3 vWorldTangent = { 0.0f, 0.0f, 0.0f };
  65.     float3 vWorldBinormal = { 0.0f, 0.0f, 0.0f };
  66.    
  67.  
  68.     SkinPositionNormalAndTangentSpace( false, vObjPosition, vObjNormal.xyz, vObjTangent.xyzw, i.vBoneWeights, i.vBoneIndices, vWorldPosition, vWorldNormal, vWorldTangent, vWorldBinormal );
  69.        
  70.     vWorldPosition = vWorldPosition;
  71.     vWorldNormal.xyz = normalize( vWorldNormal.xyz );
  72.     vWorldTangent.xyz = normalize( vWorldTangent.xyz );
  73.     vWorldBinormal.xyz = normalize( vWorldBinormal.xyz );
  74.    
  75.    
  76.     float4 projPosition = mul( float4( vWorldPosition, 1.0f ), cViewProj );
  77.     projPosition.z = dot( float4( vWorldPosition, 1 ), cViewProjZ );
  78.  
  79.     o.Position = projPosition;
  80.     o.vFragPos = projPosition.xy;
  81.     o.vBaseCoord = i.vTexCoord0;
  82.     o.vNormal    = vWorldNormal;
  83.     o.vViewDir   = vWorldPosition - vEyePos;
  84.     o.worldPos_projPosZ = float4( vWorldPosition, projPosition.z );
  85.     //o.lightAtten = float3(1,1,1);
  86.     //o.detailTexCoord_atten3 = float3(0,0,0);
  87.     //o.mvpos    = i.vPos;
  88.    
  89.     o.lightAtten.x = GetVertexAttenForLight( vWorldPosition, 0, true );
  90.     o.lightAtten.y = GetVertexAttenForLight( vWorldPosition, 1, true );
  91.     o.lightAtten.z = GetVertexAttenForLight( vWorldPosition, 2, true );
  92.     o.detailTexCoord_atten3 = float3(0,0,GetVertexAttenForLight( vWorldPosition, 3, true ));
  93.     o.vBinormal    = vWorldBinormal;        
  94.     o.vTangent     = vWorldTangent;
  95.     o.wCameraPosition = vEyePos;
  96.    
  97.    
  98.    
  99.     return o;
  100.  
  101.  
  102.  
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement