splash-screen.effect 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
  2. CCEffect %{
  3. techniques:
  4. - name: default
  5. passes:
  6. - vert: splash-screen-vs:vert
  7. frag: splash-screen-fs:frag
  8. properties:
  9. mainTexture: { value: grey }
  10. resolution: { value: [640, 960], target: u_buffer0.xy }
  11. percent: { value: 0.5, target: u_percent }
  12. scale: { value: [200, 500], target: u_buffer1.xy }
  13. translate: { value: [320, 480], target: u_buffer1.zw }
  14. depthStencilState:
  15. depthTest: false
  16. depthWrite: false
  17. blendState:
  18. targets:
  19. - blend: true
  20. blendSrc: src_alpha
  21. blendDst: one_minus_src_alpha
  22. blendDstAlpha: one_minus_src_alpha
  23. rasterizerState:
  24. cullMode: none
  25. }%
  26. CCProgram splash-screen-vs %{
  27. precision mediump float;
  28. #pragma define u_resolution u_buffer0.xy
  29. #pragma define u_worldScale u_buffer1.xy
  30. #pragma define u_worldTranslate u_buffer1.zw
  31. in vec2 a_position;
  32. in vec2 a_texCoord;
  33. out vec2 v_uv;
  34. uniform Constant {
  35. vec4 u_buffer0;
  36. vec4 u_buffer1;
  37. mat4 u_projection;
  38. };
  39. vec4 vert () {
  40. vec2 worldPos = a_position * u_worldScale + u_worldTranslate;
  41. vec2 clipSpace = worldPos / u_resolution * 2.0 - 1.0;
  42. vec4 screenPos = u_projection * vec4(clipSpace, 0.0, 1.0);
  43. v_uv = a_texCoord;
  44. return screenPos;
  45. }
  46. }%
  47. CCProgram splash-screen-fs %{
  48. precision mediump float;
  49. in vec2 v_uv;
  50. uniform Factor {
  51. float u_percent;
  52. };
  53. uniform sampler2D mainTexture;
  54. vec4 frag () {
  55. vec4 color = texture(mainTexture, v_uv);
  56. float percent = clamp(u_percent, 0.0, 1.0);
  57. color.xyz *= percent;
  58. return color;
  59. }
  60. }%