varianceshadowreceivervp.cg
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // shadowreceivervp.cg
  4. //
  5. // Hamilton Chong
  6. // (c) 2006
  7. //
  8. // This is an example vertex shader for shadow receiver objects.  
  9. //
  10. /////////////////////////////////////////////////////////////////////////////////
  11. // Define inputs from application.
  12. struct VertexIn
  13. {
  14.   float4 position       : POSITION;     // vertex position in object space
  15.   float4 normal         : NORMAL;       // vertex normal in object space
  16. };
  17. // Define outputs from vertex shader.
  18. struct Vertex
  19. {
  20.   float4 position       : POSITION;     // vertex position in post projective space
  21.   float4 shadowCoord    : TEXCOORD0;    // vertex position in shadow map coordinates
  22.   float  diffuse        : TEXCOORD1;    // diffuse shading value
  23. };
  24. Vertex main(VertexIn         In,
  25.             uniform float4x4 uModelViewProjection,   // model-view-projection matrix
  26.             uniform float4   uLightPosition,         // light position in object space
  27.             uniform float4x4 uModel,                 // model matrix
  28.             uniform float4x4 uTextureViewProjection  // shadow map's view projection matrix
  29.             )
  30. {
  31.     Vertex Out;
  32.     // compute diffuse shading
  33.     float3 lightDirection = normalize(uLightPosition.xyz - In.position.xyz);
  34.     Out.diffuse = dot(In.normal.xyz, lightDirection);
  35.     // compute shadow map lookup coordinates
  36.     Out.shadowCoord = mul(uTextureViewProjection, mul(uModel, In.position));
  37.     // compute vertex's homogenous screen-space coordinates
  38.     Out.position = mul(uModelViewProjection, In.position);
  39.     return Out;
  40. }