25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

81 satır
1.9 KiB

  1. [vert.glsl]
  2. #version 130
  3. in vec3 in_position;
  4. in vec4 in_color;
  5. uniform mat4 u_projection;
  6. uniform mat4 u_view;
  7. uniform mat4 u_model;
  8. out vec4 pass_color;
  9. void main()
  10. {
  11. gl_Position = u_projection * u_view * u_model
  12. * vec4(in_position, 1.0);
  13. pass_color = in_color;
  14. }
  15. [frag.glsl]
  16. #version 130
  17. #if defined GL_ES
  18. precision highp float;
  19. #endif
  20. in vec4 pass_color;
  21. mat4 bayer = mat4( 0.0, 12.0, 3.0, 15.0,
  22. 8.0, 4.0, 11.0, 7.0,
  23. 2.0, 14.0, 1.0, 13.0,
  24. 10.0, 6.0, 9.0, 5.0);
  25. mat4 cluster = mat4(12.0, 5.0, 6.0, 13.0,
  26. 4.0, 0.0, 1.0, 7.0,
  27. 11.0, 3.0, 2.0, 8.0,
  28. 15.0, 10.0, 9.0, 14.0);
  29. float rand(vec2 p)
  30. {
  31. return fract(sin(dot(p, vec2(12.9898, 78.2333))) * 123.4567);
  32. }
  33. void main()
  34. {
  35. vec4 col = pass_color;
  36. #if defined GL_ES
  37. int dx = int(mod(gl_FragCoord.x, 4.0));
  38. int dy = int(mod(gl_FragCoord.y, 4.0));
  39. float t;
  40. if (dx == 0)
  41. {
  42. if (dy == 0) t = cluster[0][0]; else if (dy == 1) t = cluster[0][1]; else if (dy == 2) t = cluster[0][2]; else t = cluster[0][3];
  43. }
  44. else if (dx == 1)
  45. {
  46. if (dy == 0) t = cluster[1][0]; else if (dy == 1) t = cluster[1][1]; else if (dy == 2) t = cluster[1][2]; else t = cluster[1][3];
  47. }
  48. else if (dx == 2)
  49. {
  50. if (dy == 0) t = cluster[2][0]; else if (dy == 1) t = cluster[2][1]; else if (dy == 2) t = cluster[2][2]; else t = cluster[2][3];
  51. }
  52. else
  53. {
  54. if (dy == 0) t = cluster[3][0]; else if (dy == 1) t = cluster[3][1]; else if (dy == 2) t = cluster[3][2]; else t = cluster[3][3];
  55. }
  56. #else
  57. float t = cluster[int(mod(gl_FragCoord.x, 4.0))]
  58. [int(mod(gl_FragCoord.y, 4.0))];
  59. #endif
  60. t += rand(gl_FragCoord.xy) - 0.5;
  61. t = (t + 0.5) / 17.0;
  62. col.x += fract(t - col.x) - t;
  63. col.y += fract(t - col.y) - t;
  64. col.z += fract(t - col.z) - t;
  65. gl_FragColor = col;
  66. }