Guest User

Untitled

a guest
Mar 24th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. vec3 hsv2rgb(vec3 c)
  2. {
  3. vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
  4. vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
  5. return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
  6. }
  7.  
  8. vec2 cMul(in vec2 c1, in vec2 c2)
  9. {
  10. return vec2(c1.x*c2.x - c1.y*c2.y, c1.x*c2.y + c1.y*c2.x);
  11. }
  12.  
  13. vec2 cInv(in vec2 c)
  14. {
  15. return vec2(c.x, -c.y)/length(c)/length(c);
  16. }
  17.  
  18. vec2 cDiv(in vec2 c1, in vec2 c2)
  19. {
  20. return cMul(c1, cInv(c2));
  21. }
  22.  
  23. vec2 cPow(in vec2 c1, in vec2 c2)
  24. {
  25. float l, a, r, t, x, y;
  26.  
  27. l = log(length(c1));
  28. a = atan(c1.y, c1.x);
  29.  
  30. r = exp(c2.x * l - c2.y * a);
  31. t = c2.x * a + c2.y * l;
  32.  
  33. x = r * cos(t);
  34. y = r * sin(t);
  35.  
  36. return vec2(x, y);
  37. }
  38.  
  39. vec2 f(in vec2 z) {
  40. //vec2 C = z;
  41. //vec2 C = cMul(z, vec2(cos(iTime/3.), sin(iTime/3.)));
  42. //vec2 C = z + vec2(cos(iTime/3.), sin(iTime/3.));
  43. //for (int i=0; i < int(iTime/2.); i++) {
  44. // C = cPow(C,cPow(C,C)) + z;
  45. //}
  46. //return C;
  47.  
  48. float s1 = iTime * .7;
  49. float s2 = -iTime * .3 + 1.0;
  50. float s3 = iTime * 1. - 1.0;
  51.  
  52. vec2 p1 = vec2(cos(s1), sin(s1));
  53. vec2 p2 = 2.0 * vec2(cos(s2), sin(s2));
  54. vec2 p3 = 3.0 * vec2(cos(s3), sin(s3));
  55.  
  56. vec2 a = cMul(z, z) - p1;
  57. vec2 b = cPow(z - p2, vec2(2, 0));
  58. vec2 c = cMul(z, z) + p3;
  59. return cMul(cMul(a, b), cInv(c));
  60. }
  61.  
  62. void mainImage( out vec4 fragColor, in vec2 fragCoord )
  63. {
  64. float SCALE = 5.;
  65.  
  66. // Normalized pixel coordinates (from 0 to 1)
  67. vec2 uv = fragCoord/iResolution.xy - vec2(.5);
  68. uv.x *= iResolution.x/iResolution.y;
  69. uv *= SCALE;
  70. uv.x += -1.;
  71.  
  72. vec2 o = f(uv);
  73. float h = atan(o.y, o.x);
  74. vec3 col = hsv2rgb(vec3(h/6.28, 1, 1));
  75.  
  76. float sa, sb;
  77. float w = 0.05;
  78.  
  79. sa = log(length(o)) + .24;
  80. sa = abs(sa - floor(sa));
  81. col *= mix(.8, 1.0, sa);
  82.  
  83. sb = atan(o.y, o.x);
  84. sb = (sb + 3.1415)/6.2832 * 8.0;
  85. sb = abs(sb - floor(sb));
  86. col *= mix(.8, 1.0, sb);
  87. //col = mix(col, vec3(1), smoothstep(2.0, .0, abs(fract(sb+.5+w)-.5-w)/fwidth(sb)));
  88.  
  89. if (sb < w) col = mix(col, vec3(1), .8);
  90.  
  91. // Output to screen
  92. fragColor = vec4(col,1.0);
  93. }
Add Comment
Please, Sign In to add comment