grid.effect 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
  2. CCEffect %{
  3. editor:
  4. hide: true
  5. techniques:
  6. - passes:
  7. - vert: grid-vs:vert
  8. frag: grid-fs:frag
  9. priority: min + 11
  10. depthStencilState:
  11. depthTest: true
  12. depthWrite: false
  13. blendState:
  14. targets:
  15. - blend: true
  16. blendSrc: src_alpha
  17. blendDst: one_minus_src_alpha
  18. blendDstAlpha: one_minus_src_alpha
  19. }%
  20. CCProgram grid-vs %{
  21. precision mediump float;
  22. #include <builtin/uniforms/cc-local>
  23. #include <builtin/uniforms/cc-global>
  24. in vec2 a_position;
  25. in vec4 a_color;
  26. out vec4 color;
  27. out vec3 pos_w;
  28. vec4 vert () {
  29. vec4 position = vec4(a_position, 0, 1);
  30. vec4 pos = cc_matWorld * position;
  31. pos_w = pos.xyz;
  32. color = a_color;
  33. pos = cc_matProj * (cc_matView * cc_matWorld) * position;
  34. return pos;
  35. }
  36. }%
  37. CCProgram grid-fs %{
  38. precision mediump float;
  39. #include <builtin/uniforms/cc-global>
  40. #include <legacy/output>
  41. in vec4 color;
  42. in vec3 pos_w;
  43. vec4 frag () {
  44. vec4 o = color;
  45. // fade out at grazing angles
  46. float scale = abs(normalize(cc_cameraPos.xyz - pos_w).y);
  47. if (scale < 0.5) o.a *= max(0.3, scale * 2.0);
  48. return CCFragOutput(o);
  49. }
  50. }%