home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 7 / Example 7.4 / Debug / Shaders / lighting.vs next >
Encoding:
Text File  |  2006-06-22  |  1.3 KB  |  45 lines

  1. //////////////////////////////////////////////////////////////////////////
  2. //                                                                      //
  3. //                    Unit Lighting Vertexshader                        //
  4. //                                                                      //
  5. //                   Written by C. Granberg, 2006                       //
  6. //                                                                      //
  7. //////////////////////////////////////////////////////////////////////////
  8.  
  9. uniform extern float4x4 matW;
  10. uniform extern float4x4 matVP;
  11. uniform extern float3 DirToSun;
  12.  
  13. struct VS_INPUT
  14. {
  15.    float4 position : POSITION0;
  16.    float3 normal : NORMAL0;
  17.    float2 uv : TEXCOORD0;
  18. };
  19.  
  20. struct VS_OUTPUT
  21. {
  22.    float4 position : POSITION0;
  23.    float2 uv : TEXCOORD0;
  24.    float  shade : TEXCOORD1;
  25. };
  26.  
  27. VS_OUTPUT Main(VS_INPUT input)
  28. {
  29.    VS_OUTPUT output = (VS_OUTPUT)0;
  30.  
  31.    // Project position homogeneous clip space.
  32.    float4 temp = mul(input.position, matW);
  33.    output.position = mul(temp, matVP);
  34.    input.normal = mul(input.normal, matW);
  35.  
  36.    // Do basic diffuse lighting calculating to compute vertex shade.
  37.    output.shade = max(0.0f, dot(normalize(input.normal), DirToSun));
  38.    output.shade = 0.2f + output.shade * 0.8f;
  39.  
  40.    output.uv = input.uv;
  41.  
  42.    return output;
  43. }
  44.  
  45.