fsr1.effect 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
  2. CCEffect %{
  3. techniques:
  4. - passes:
  5. - vert: vs
  6. frag: fs-easu
  7. pass: cc-fsr-easu
  8. rasterizerState:
  9. cullMode: none
  10. depthStencilState:
  11. depthTest: false
  12. depthWrite: false
  13. - vert: vs
  14. frag: fs-rcas
  15. pass: cc-fsr-rcas
  16. rasterizerState:
  17. cullMode: none
  18. depthStencilState:
  19. depthTest: false
  20. depthWrite: false
  21. }%
  22. CCProgram vs %{
  23. #include <./chunks/vs1>
  24. }%
  25. CCProgram ubo %{
  26. #pragma rate FsrUBO pass
  27. uniform FsrUBO {
  28. vec4 fsrTexSize;
  29. vec4 fsrParams;
  30. };
  31. #pragma rate outputResultMap pass
  32. uniform sampler2D outputResultMap;
  33. }%
  34. CCProgram fs-easu %{
  35. precision highp float;
  36. #include <./chunks/fsr>
  37. in vec2 v_uv;
  38. #include <ubo>
  39. vec4 FsrRcasLoadF(vec2 p) {
  40. vec4 color = texture(outputResultMap, p/fsrTexSize.zw);
  41. return color;
  42. }
  43. vec3 FsrEasuCF(vec2 p) {
  44. vec4 color = texture(outputResultMap, p);
  45. return color.rgb;
  46. }
  47. layout(location = 0) out vec4 fragColor;
  48. void main () {
  49. vec3 c;
  50. vec4 con0, con1, con2, con3;
  51. // "rendersize" refers to size of source image before upscaling.
  52. vec2 rendersize = fsrTexSize.xy;
  53. FsrEasuCon(
  54. con0, con1, con2, con3,
  55. rendersize, rendersize, fsrTexSize.zw
  56. );
  57. FsrEasuF(c, gl_FragCoord.xy, con0, con1, con2, con3);
  58. float alpha = texture(outputResultMap, v_uv).a;
  59. fragColor = vec4(c.xyz, alpha);
  60. }
  61. }%
  62. CCProgram fs-rcas %{
  63. precision highp float;
  64. #include <./chunks/fsr>
  65. in vec2 v_uv;
  66. #include <ubo>
  67. vec4 FsrRcasLoadF(vec2 p) {
  68. vec4 color = texture(outputResultMap, p/fsrTexSize.zw);
  69. return color;
  70. }
  71. vec3 FsrEasuCF(vec2 p) {
  72. vec4 color = texture(outputResultMap, p);
  73. return color.rgb;
  74. }
  75. layout(location = 0) out vec4 fragColor;
  76. void main () {
  77. // Set up constants
  78. float con;
  79. FsrRcasCon(con, fsrParams.x);
  80. // Perform RCAS pass
  81. vec3 col = FsrRcasF(gl_FragCoord.xy, con);
  82. float alpha = texture(outputResultMap, v_uv).a;
  83. fragColor = vec4(col, alpha);
  84. }
  85. }%