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

游戏引擎

开发平台:

Visual C++

  1. /* particle shader
  2.  *
  3.  * written by Alexander Zaprjagaev
  4.  * frustum@frustum.org
  5.  * http://frustum.org
  6.  */
  7. <vertex_local0> fog_color
  8. <vertex>
  9. !!ARBvp1.0
  10. ATTRIB xyz = vertex.attrib[0]; // coordinate
  11. ATTRIB attrib = vertex.attrib[1]; // texture coord + dx + dy
  12. ATTRIB color = vertex.attrib[2]; // color
  13. ATTRIB sincos = vertex.attrib[3]; // sin(rotation), cos(rotation)
  14. PARAM mvp[4] = { state.matrix.mvp };
  15. PARAM tmv[4] = { state.matrix.modelview.transpose };
  16. PARAM fog_color = program.local[0];
  17. TEMP v, dx, dy;
  18. MOV v.z, 0.0; // 2D
  19. MOV v.x, attrib.z; // dx
  20. MOV v.y, 0.0;
  21. DP3 dx.x, tmv[0], v;
  22. DP3 dx.y, tmv[1], v;
  23. DP3 dx.z, tmv[2], v;
  24. MOV v.x, 0.0;
  25. MOV v.y, attrib.w; // dy
  26. DP3 dy.x, tmv[0], v;
  27. DP3 dy.y, tmv[1], v;
  28. DP3 dy.z, tmv[2], v;
  29. ADD v, dx, dy;
  30. ADD v, v, xyz;
  31. DP4 result.position.x, mvp[0], v;
  32. DP4 result.position.y, mvp[1], v;
  33. DP4 result.position.z, mvp[2], v;
  34. DP4 result.position.w, mvp[3], v;
  35. TEMP texcoord;
  36. MOV v.z, 0.0; // 2D
  37. MOV v.x, sincos.y;
  38. MOV v.y, -sincos.x;
  39. DP3 texcoord.x, v, attrib;
  40. MOV v.x, sincos.x;
  41. MOV v.y, sincos.y;
  42. DP3 texcoord.y, v, attrib;
  43. MOV texcoord.z, 0.0;
  44. MOV texcoord.w, 1.0;
  45. ADD result.texcoord, texcoord, { 0.5, 0.5, 0.0, 0.0 };
  46. MUL result.color, color, fog_color.w;
  47. END
  48. /*
  49.  */
  50. <fragment>
  51. !!ARBtec1.0
  52. modulate texture primary
  53. END