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

游戏引擎

开发平台:

Visual C++

  1. attribute vec3 tangent;
  2. uniform mat4 world;
  3. uniform mat4 worldViewProj;
  4. uniform mat4 texViewProj;
  5. uniform vec4 lightPosition; // object space
  6. uniform vec4 shadowDepthRange;
  7. varying vec3 tangentLightDir;
  8. void main()
  9. {
  10. gl_Position = ftransform();
  11. vec4 worldPos = world * gl_Vertex;
  12. // Get object space light direction 
  13.     vec3 lightDir = normalize(lightPosition.xyz -  (gl_Vertex.xyz * lightPosition.w));
  14. // calculate shadow map coords
  15. gl_TexCoord[0] = texViewProj * worldPos;
  16. #if LINEAR_RANGE
  17. // adjust by fixed depth bias, rescale into range
  18. gl_TexCoord[0].z = (gl_TexCoord[0].z - shadowDepthRange.x) * shadowDepthRange.w;
  19. #endif
  20. // pass the main uvs straight through unchanged 
  21. gl_TexCoord[1] = gl_MultiTexCoord0;
  22. // Calculate the binormal (NB we assume both normal and tangent are 
  23. // already normalised) 
  24. vec3 binormal = cross(gl_Normal, tangent); 
  25. // Form a rotation matrix out of the vectors 
  26. mat3 rotation = mat3(tangent, binormal, gl_Normal); 
  27.     
  28. // Transform the light vector according to this matrix 
  29. tangentLightDir = normalize(rotation * lightDir); 
  30. }