fog_pass.shader
上传用户:qccn516
上传日期:2013-05-02
资源大小:3382k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /* fog pass shader
  2.  *
  3.  * written by Alexander Zaprjagaev
  4.  * frustum@frustum.org
  5.  * http://frustum.org
  6.  */
  7. <matrix0> transform
  8. <vertex_local0> camera
  9. <vertex_local1> viewport
  10. <fragment_local0> fog_color
  11. /*
  12.  */
  13. <vertex>
  14. !!ARBvp1.0
  15. PARAM mvp[4] = { state.matrix.mvp };
  16. PARAM transform[4] = { state.matrix.program[0] };
  17. PARAM camera = program.local[0];
  18. PARAM viewport = program.local[1];
  19. ATTRIB xyz = vertex.attrib[0];
  20. DP4 result.position.x, mvp[0], xyz;
  21. DP4 result.position.y, mvp[1], xyz;
  22. DP4 result.position.z, mvp[2], xyz;
  23. DP4 result.position.w, mvp[3], xyz;
  24. TEMP dist;
  25. DP4 dist.x, transform[0], xyz;
  26. DP4 dist.y, transform[1], xyz;
  27. DP4 dist.z, transform[2], xyz;
  28. DP4 dist.w, transform[3], xyz;
  29. SUB dist, camera, dist;
  30. MUL result.texcoord[0], dist, 2;
  31. RCP result.texcoord[1].x, viewport.z;
  32. RCP result.texcoord[1].y, viewport.w;
  33. END
  34. /*
  35.  */
  36. <fragment>
  37. !!ARBfp1.0
  38. PARAM fog_color = program.local[0];
  39. TEMP front;
  40. DP3 front.w, fragment.texcoord[0], fragment.texcoord[0];
  41. RSQ front.w, front.w;
  42. RCP front.w, front.w;
  43. TEMP back;
  44. MUL back, fragment.position, fragment.texcoord[1];
  45. TEX back, back, texture[0], 2D;
  46. DP3 back.w, back, { 1.0, 256.0, 0.0, 0.0 };
  47. TEMP dist;
  48. SUB dist.w, back.w, front.w;
  49. MUL dist.w, dist.w, fog_color.w;
  50. EX2 result.color.w, -dist.w;
  51. MOV result.color.xyz, fog_color;
  52. END