Advertisement
thesola10

Try it !

Jan 22nd, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #ifdef GL_ES
  2. precision mediump float;
  3. #endif
  4.  
  5. uniform float time;
  6. uniform vec2 mouse;
  7. uniform vec2 resolution;
  8.  
  9. // Source edited by David Hoskins - 2013.
  10.  
  11. // I took and completed this http://glsl.heroku.com/e#9743.20 - just for fun! 8|
  12. // Locations in 3x7 font grid, inspired by http://www.claudiocc.com/the-1k-notebook-part-i/
  13. // Had to edit it to remove line doubling.
  14. // ABC  a:GIOMJL b:AMOIG c:IGMO d:COMGI e:OMGILJ f:CBN g:OMGIUS h:AMGIO i:EEHN j:GHTS k:AMIKO l:BN m:MGHNHIO n:MGIO
  15. // DEF  o:GIOMG p:SGIOM q:UIGMO r:MGI s:IGJLOM t:BNO u:GMOI v:GJNLI w:GMNHNOI x:GOKMI y:GMOIUS z:GIMO ?:DA BC FI HK QQ
  16. // GHI
  17. // JKL
  18. // MNO
  19. // PQR
  20. // STU
  21.  
  22.  
  23. #define font_size 20.
  24. #define font_spacing .05
  25. #define STROKEWIDTH 0.05
  26. #define PI 3.14159265359
  27.  
  28. #define A_ vec2(0.,0.)
  29. #define B_ vec2(1.,0.)
  30. #define C_ vec2(2.,0.)
  31.  
  32. #define D_ vec2(0.,1.)
  33. #define E_ vec2(1.,1.)
  34. #define F_ vec2(2.,1.)
  35.  
  36. #define G_ vec2(0.,2.)
  37. #define H_ vec2(1.,2.)
  38. #define I_ vec2(2.,2.)
  39.  
  40. #define J_ vec2(0.,3.)
  41. #define K_ vec2(1.,3.)
  42. #define L_ vec2(2.,3.)
  43.  
  44. #define M_ vec2(0.,4.)
  45. #define N_ vec2(1.,4.)
  46. #define O_ vec2(2.,4.)
  47.  
  48. #define P_ vec2(0.,5.)
  49. #define Q_ vec2(1.,5.)
  50. #define R_ vec2(1.,5.)
  51.  
  52. #define S_ vec2(0.,6.)
  53. #define T_ vec2(1.,6.)
  54. #define U_ vec2(2.0,6.)
  55.  
  56. #define A(p) t(G_,I_,p) + t(I_,O_,p) + t(O_,M_, p) + t(M_,J_,p) + t(J_,L_,p)
  57. #define B(p) t(A_,M_,p) + t(M_,O_,p) + t(O_,I_, p) + t(I_,G_,p)
  58. #define C(p) t(I_,G_,p) + t(G_,M_,p) + t(M_,O_,p)
  59. #define D(p) t(C_,O_,p) + t(O_,M_,p) + t(M_,G_,p) + t(G_,I_,p)
  60. #define E(p) t(O_,M_,p) + t(M_,G_,p) + t(G_,I_,p) + t(I_,L_,p) + t(L_,J_,p)
  61. #define F(p) t(C_,B_,p) + t(B_,N_,p) + t(G_,I_,p)
  62. #define G(p) t(O_,M_,p) + t(M_,G_,p) + t(G_,I_,p) + t(I_,U_,p) + t(U_,S_,p)
  63. #define H(p) t(A_,M_,p) + t(G_,I_,p) + t(I_,O_,p)
  64. #define I(p) t(E_,E_,p) + t(H_,N_,p)
  65. #define J(p) t(E_,E_,p) + t(H_,T_,p) + t(T_,S_,p)
  66. #define K(p) t(A_,M_,p) + t(M_,I_,p) + t(K_,O_,p)
  67. #define L(p) t(B_,N_,p)
  68. #define M(p) t(M_,G_,p) + t(G_,I_,p) + t(H_,N_,p) + t(I_,O_,p)
  69. #define N(p) t(M_,G_,p) + t(G_,I_,p) + t(I_,O_,p)
  70. #define O(p) t(G_,I_,p) + t(I_,O_,p) + t(O_,M_, p) + t(M_,G_,p)
  71. #define P(p) t(S_,G_,p) + t(G_,I_,p) + t(I_,O_,p) + t(O_,M_, p)
  72. #define Q(p) t(U_,I_,p) + t(I_,G_,p) + t(G_,M_,p) + t(M_,O_, p)
  73. #define R(p) t(M_,G_,p) + t(G_,I_,p)
  74. #define S(p) t(I_,G_,p) + t(G_,J_,p) + t(J_,L_,p) + t(L_,O_,p) + t(O_,M_,p)
  75. #define T(p) t(B_,N_,p) + t(N_,O_,p) + t(G_,I_,p)
  76. #define U(p) t(G_,M_,p) + t(M_,O_,p) + t(O_,I_,p)
  77. #define V(p) t(G_,J_,p) + t(J_,N_,p) + t(N_,L_,p) + t(L_,I_,p)
  78. #define W(p) t(G_,M_,p) + t(M_,O_,p) + t(N_,H_,p) + t(O_,I_,p)
  79. #define X(p) t(G_,O_,p) + t(I_,M_,p)
  80. #define Y(p) t(G_,M_,p) + t(M_,O_,p) + t(I_,U_,p) + t(U_,S_,p)
  81. #define Z(p) t(G_,I_,p) + t(I_,M_,p) + t(M_,O_,p)
  82. #define QU(p) t(D_,A_,p) + t(A_,B_,p) + t(B_,C_,p) + t(C_,F_,p) + t(F_,I_,p) + t(I_,H_,p) + t(H_,K_,p) + t(N_,N_,p)
  83. //?:DA BC FI HK QQ
  84. #define STOP(p) t(N_,N_,p)
  85. vec2 caret_origin = vec2(3.0, .7);
  86. vec2 caret;
  87. //float time = mod(iGlobalTime, 11.0);
  88.  
  89. //-----------------------------------------------------------------------------------
  90. float minimum_distance(vec2 v, vec2 w, vec2 p)
  91. {   // Return minimum distance between line segment vw and point p
  92.   float l2 = (v.x - w.x)*(v.x - w.x) + (v.y - w.y)*(v.y - w.y); //length_squared(v, w);  // i.e. |w-v|^2 -  avoid a sqrt
  93.   if (l2 == 0.0) {
  94. return distance(p, v);   // v == w case
  95. }
  96. // Consider the line extending the segment, parameterized as v + t (w - v).
  97.   // We find projection of point p onto the line.  It falls where t = [(p-v) . (w-v)] / |w-v|^2
  98.   float t = dot(p - v, w - v) / l2;
  99.   if(t < 0.0) {
  100. // Beyond the 'v' end of the segment
  101. return distance(p, v);
  102. } else if (t > 1.0) {
  103. return distance(p, w);  // Beyond the 'w' end of the segment
  104. }
  105.   vec2 projection = v + t * (w - v);  // Projection falls on the segment
  106. return distance(p, projection);
  107. }
  108.  
  109. //-----------------------------------------------------------------------------------
  110. float textColor(vec2 from, vec2 to, vec2 p)
  111. {
  112. p *= font_size;
  113. float inkNess = 0., nearLine, corner;
  114. nearLine = minimum_distance(from,to,p); // basic distance from segment, thanks http://glsl.heroku.com/e#6140.0
  115. inkNess += smoothstep(0., 1., 1.- 14.*(nearLine - STROKEWIDTH)); // ugly still
  116. inkNess += smoothstep(0., 2.5, 1.- (nearLine  + 5. * STROKEWIDTH)); // glow
  117. return inkNess;
  118. }
  119.  
  120. //-----------------------------------------------------------------------------------
  121. vec2 grid(vec2 letterspace)
  122. {
  123. return ( vec2( (letterspace.x / 2.) * .65 , 1.0-((letterspace.y / 2.) * .95) ));
  124. }
  125.  
  126. //-----------------------------------------------------------------------------------
  127. float count = 0.0;
  128. float t(vec2 from, vec2 to, vec2 p)
  129. {
  130. count++;
  131. if (count > time*20.0) return 0.0;
  132. return textColor(grid(from), grid(to), p);
  133. }
  134.  
  135. //-----------------------------------------------------------------------------------
  136. vec2 r()
  137. {
  138. vec2 pos = gl_FragCoord.xy/resolution.xy;
  139. pos.y -= caret.y;
  140. pos.x -= font_spacing*caret.x;
  141. return pos;
  142. }
  143.  
  144. //-----------------------------------------------------------------------------------
  145. void add()
  146. {
  147. caret.x += 1.0;
  148. }
  149.  
  150. //-----------------------------------------------------------------------------------
  151. void space()
  152. {
  153. caret.x += 1.5;
  154. }
  155.  
  156. //-----------------------------------------------------------------------------------
  157. void newline()
  158. {
  159. caret.x = caret_origin.x;
  160. caret.y -= .18;
  161. }
  162.  
  163. //-----------------------------------------------------------------------------------
  164. void main(void)
  165. {
  166. float d = 0.;
  167. vec3 col = vec3(0.1, .07+0.07*(.5+sin(gl_FragCoord.y*3.14159*1.1+time*2.0)) + sin(gl_FragCoord.y*.01+time+2.5)*0.05, 0.1);
  168. caret = caret_origin;
  169.  
  170. // the quick brown fox jumps over the lazy dog...
  171.    
  172. d += H(r()); add(); d += E(r()); add(); d += L(r()); add();d += L(r()); add();d += O(r()); add();  space();
  173. newline();
  174. d += I(r()); space(); add();d += A(r()); add();d += M(r()); add(); space(); d += S(r()); add();d += O(r()); add();d += L(r()); add(); d += A(r()); add();
  175. newline();
  176. d += O(r()); add();d+= K(r());add();d += QU(r()); add();
  177. newline();
  178.  
  179. d = clamp(d* (.75+sin(gl_FragCoord.x*PI*.5-time*4.3)*.5), 0.0, 1.0);
  180.      
  181.     col += vec3(d*.5, d, d*.85);
  182. vec2 xy = gl_FragCoord.xy / resolution.xy;
  183. col *= vec3(.4, .4, .3) + 0.5*pow(100.0*xy.x*xy.y*(1.0-xy.x)*(1.0-xy.y), .4 );
  184.     gl_FragColor = vec4( col , 1.0 );
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement