1// Compatibility #ifdefs needed for parameters
2#ifdef GL_ES
3#define COMPAT_PRECISION mediump
4#else
5#define COMPAT_PRECISION
6#endif
7
8// Parameter lines go here:
9#pragma parameter RETRO_PIXEL_SIZE "Retro Pixel Size" 0.84 0.0 1.0 0.01
10#ifdef PARAMETER_UNIFORM
11// All parameter floats need to have COMPAT_PRECISION in front of them
12uniform COMPAT_PRECISION float RETRO_PIXEL_SIZE;
13#else
14#define RETRO_PIXEL_SIZE 0.84
15#endif
16
17#if defined(VERTEX)
18
19#if __VERSION__ >= 130
20#define COMPAT_VARYING out
21#define COMPAT_ATTRIBUTE in
22#define COMPAT_TEXTURE texture
23#else
24#define COMPAT_VARYING varying
25#define COMPAT_ATTRIBUTE attribute
26#define COMPAT_TEXTURE texture2D
27#endif
28
29#ifdef GL_ES
30#define COMPAT_PRECISION mediump
31#else
32#define COMPAT_PRECISION
33#endif
34
35COMPAT_ATTRIBUTE vec4 VertexCoord;
36COMPAT_ATTRIBUTE vec4 COLOR;
37COMPAT_ATTRIBUTE vec4 TexCoord;
38COMPAT_VARYING vec4 COL0;
39COMPAT_VARYING vec4 TEX0;
40// out variables go here as COMPAT_VARYING whatever
41
42vec4 _oPosition1;
43uniform mat4 MVPMatrix;
44uniform COMPAT_PRECISION int FrameDirection;
45uniform COMPAT_PRECISION int FrameCount;
46uniform COMPAT_PRECISION vec2 OutputSize;
47uniform COMPAT_PRECISION vec2 TextureSize;
48uniform COMPAT_PRECISION vec2 InputSize;
49
50// compatibility #defines
51#define vTexCoord TEX0.xy
52#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize
53#define OutSize vec4(OutputSize, 1.0 / OutputSize)
54
55void main()
56{
57    gl_Position = MVPMatrix * VertexCoord;
58    TEX0.xy = VertexCoord.xy;
59// Paste vertex contents here:
60}
61
62#elif defined(FRAGMENT)
63
64#if __VERSION__ >= 130
65#define COMPAT_VARYING in
66#define COMPAT_TEXTURE texture
67out vec4 FragColor;
68#else
69#define COMPAT_VARYING varying
70#define FragColor gl_FragColor
71#define COMPAT_TEXTURE texture2D
72#endif
73
74#ifdef GL_ES
75#ifdef GL_FRAGMENT_PRECISION_HIGH
76precision highp float;
77#else
78precision mediump float;
79#endif
80#define COMPAT_PRECISION mediump
81#else
82#define COMPAT_PRECISION
83#endif
84
85uniform COMPAT_PRECISION int FrameDirection;
86uniform COMPAT_PRECISION int FrameCount;
87uniform COMPAT_PRECISION vec2 OutputSize;
88uniform COMPAT_PRECISION vec2 TextureSize;
89uniform COMPAT_PRECISION vec2 InputSize;
90uniform sampler2D Texture;
91COMPAT_VARYING vec4 TEX0;
92// in variables go here as COMPAT_VARYING whatever
93
94// compatibility #defines
95#define Source Texture
96#define vTexCoord TEX0.xy
97
98#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize
99#define OutSize vec4(OutputSize, 1.0 / OutputSize)
100
101// delete all 'params.' or 'registers.' or whatever in the fragment
102float iGlobalTime = float(FrameCount)*0.025;
103vec2 iResolution = OutputSize.xy;
104
105// Created by inigo quilez - iq/2013
106// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
107
108// These are 316 gaussian points (201 brushes by using local symmetry) forming the picture
109// of Audrey Hepburn. They pack down to 800 bytes (34 bits per point) before huffman/arithmetic
110// compression.
111//
112// The points were chosen by (very quickly) runing this
113//
114// http://www.iquilezles.org/www/articles/genetic/genetic.htm
115//
116// with some importance sampling for the eyes, nouse and mouth.
117
118float brush( float col, vec2 p, in vec4 b, float an )
119{
120	p += an*cos( iGlobalTime + 100.0*b.yz );
121
122    vec2 dd = p - b.yz;
123    col = mix( col, b.x, exp( -b.w*b.w*dot(dd,dd) ) );
124    if( abs(b.z-0.5)<0.251 )
125    {
126        dd.x = p.x - 1.0 + b.y;
127        col =  mix( col, b.x, exp( -b.w*b.w*dot(dd,dd) ) );
128    }
129    return col;
130}
131
132void mainImage( out vec4 fragColor, in vec2 fragCoord )
133{
134    vec2 uv = fragCoord.xy / iResolution.y;
135    uv.x -=  0.5*(iResolution.x / iResolution.y - 1.0);
136
137    float an = smoothstep( 0.0, 1.0, cos(iGlobalTime) );
138
139	float col = 0.0;
140
141    col = brush( col, uv, vec4(1.000,0.371,0.379,11.770), an );
142    col = brush( col, uv, vec4(0.992,0.545,0.551,8.359), an );
143    col = brush( col, uv, vec4(0.749,0.623,0.990,36.571), an );
144    col = brush( col, uv, vec4(1.000,0.510,0.395,11.315), an );
145    col = brush( col, uv, vec4(1.000,0.723,0.564,15.170), an );
146    col = brush( col, uv, vec4(0.953,0.729,0.750,14.629), an );
147    col = brush( col, uv, vec4(0.706,0.982,0.033,16.254), an );
148    col = brush( col, uv, vec4(1.000,0.855,0.652,26.256), an );
149    col = brush( col, uv, vec4(1.000,0.664,0.623,81.920), an );
150    col = brush( col, uv, vec4(0.000,0.881,0.750,8.031), an );
151    col = brush( col, uv, vec4(0.686,0.682,0.900,27.676), an );
152    col = brush( col, uv, vec4(1.000,0.189,0.684,18.618), an );
153    col = brush( col, uv, vec4(0.000,0.904,0.750,8.031), an );
154    col = brush( col, uv, vec4(1.000,0.422,0.195,44.522), an );
155    col = brush( col, uv, vec4(1.000,0.779,0.750,16.787), an );
156    col = brush( col, uv, vec4(1.000,0.645,0.330,14.222), an );
157    col = brush( col, uv, vec4(1.000,0.197,0.648,22.505), an );
158    col = brush( col, uv, vec4(0.702,0.512,0.393,35.310), an );
159    col = brush( col, uv, vec4(1.000,0.744,0.621,14.949), an );
160    col = brush( col, uv, vec4(0.671,0.885,0.092,24.675), an );
161    col = brush( col, uv, vec4(0.000,0.344,0.750,8.031), an );
162    col = brush( col, uv, vec4(1.000,0.760,0.465,40.960), an );
163    col = brush( col, uv, vec4(0.008,0.908,0.311,8.031), an );
164    col = brush( col, uv, vec4(0.016,0.959,0.750,10.039), an );
165    col = brush( col, uv, vec4(0.004,0.930,0.750,12.800), an );
166    col = brush( col, uv, vec4(1.000,0.555,0.250,19.883), an );
167    col = brush( col, uv, vec4(1.000,0.770,1.018,15.876), an );
168    col = brush( col, uv, vec4(0.000,0.828,0.756,36.571), an );
169    col = brush( col, uv, vec4(0.580,0.566,0.424,89.043), an );
170    col = brush( col, uv, vec4(0.988,0.162,0.691,40.157), an );
171    col = brush( col, uv, vec4(0.000,0.314,0.750,8.031), an );
172    col = brush( col, uv, vec4(0.000,0.947,0.125,32.000), an );
173    col = brush( col, uv, vec4(0.914,0.844,0.725,52.513), an );
174    col = brush( col, uv, vec4(1.000,0.313,0.762,42.667), an );
175    col = brush( col, uv, vec4(0.996,0.676,0.689,85.333), an );
176    col = brush( col, uv, vec4(0.980,0.346,0.559,24.675), an );
177    col = brush( col, uv, vec4(1.000,0.553,0.250,18.789), an );
178    col = brush( col, uv, vec4(0.004,0.258,0.248,8.031), an );
179    col = brush( col, uv, vec4(1.000,0.420,0.742,30.567), an );
180    col = brush( col, uv, vec4(0.906,0.543,0.250,22.756), an );
181    col = brush( col, uv, vec4(0.863,0.674,0.322,20.078), an );
182    col = brush( col, uv, vec4(0.753,0.357,0.686,78.769), an );
183    col = brush( col, uv, vec4(0.906,0.795,0.705,37.236), an );
184    col = brush( col, uv, vec4(0.933,0.520,0.365,38.642), an );
185    col = brush( col, uv, vec4(0.996,0.318,0.488,14.734), an );
186    col = brush( col, uv, vec4(0.337,0.486,0.281,81.920), an );
187    col = brush( col, uv, vec4(0.965,0.691,0.516,16.650), an );
188    col = brush( col, uv, vec4(0.808,0.582,0.973,52.513), an );
189    col = brush( col, uv, vec4(0.012,0.240,0.928,8.063), an );
190    col = brush( col, uv, vec4(1.000,0.496,0.217,31.508), an );
191    col = brush( col, uv, vec4(0.000,0.658,0.953,34.133), an );
192    col = brush( col, uv, vec4(0.871,0.582,0.172,62.061), an );
193    col = brush( col, uv, vec4(0.855,0.346,0.342,17.504), an );
194    col = brush( col, uv, vec4(0.878,0.787,0.648,28.845), an );
195    col = brush( col, uv, vec4(0.000,0.984,0.111,35.310), an );
196    col = brush( col, uv, vec4(0.855,0.514,0.965,66.065), an );
197    col = brush( col, uv, vec4(0.561,0.613,0.350,81.920), an );
198    col = brush( col, uv, vec4(0.992,0.818,0.902,21.558), an );
199    col = brush( col, uv, vec4(0.914,0.746,0.615,40.157), an );
200    col = brush( col, uv, vec4(0.557,0.580,0.125,60.235), an );
201    col = brush( col, uv, vec4(0.475,0.547,0.414,70.621), an );
202    col = brush( col, uv, vec4(0.843,0.680,0.793,20.277), an );
203    col = brush( col, uv, vec4(1.000,0.230,0.758,56.889), an );
204    col = brush( col, uv, vec4(1.000,0.299,0.691,68.267), an );
205    col = brush( col, uv, vec4(0.737,0.518,0.100,68.267), an );
206    col = brush( col, uv, vec4(0.996,0.227,0.514,41.796), an );
207    col = brush( col, uv, vec4(0.929,0.850,0.770,62.061), an );
208    col = brush( col, uv, vec4(0.682,0.834,0.111,30.118), an );
209    col = brush( col, uv, vec4(0.996,0.854,0.793,58.514), an );
210    col = brush( col, uv, vec4(0.490,0.736,0.889,19.321), an );
211    col = brush( col, uv, vec4(0.980,0.465,0.725,16.126), an );
212    col = brush( col, uv, vec4(0.992,0.484,1.010,23.273), an );
213    col = brush( col, uv, vec4(0.008,0.949,0.727,23.540), an );
214    col = brush( col, uv, vec4(0.012,0.086,0.086,8.031), an );
215    col = brush( col, uv, vec4(1.000,0.121,0.750,44.522), an );
216    col = brush( col, uv, vec4(0.427,0.617,0.891,27.676), an );
217    col = brush( col, uv, vec4(0.804,0.693,0.633,78.769), an );
218    col = brush( col, uv, vec4(0.012,0.711,0.084,13.745), an );
219    col = brush( col, uv, vec4(0.082,0.584,0.338,107.789), an );
220    col = brush( col, uv, vec4(0.929,0.613,0.268,19.692), an );
221    col = brush( col, uv, vec4(0.200,0.549,0.420,128.000), an );
222    col = brush( col, uv, vec4(1.000,0.402,0.717,26.947), an );
223    col = brush( col, uv, vec4(0.000,0.551,0.168,45.511), an );
224    col = brush( col, uv, vec4(0.992,0.627,0.621,56.889), an );
225    col = brush( col, uv, vec4(0.902,0.361,0.748,40.960), an );
226    col = brush( col, uv, vec4(0.984,0.344,0.754,38.642), an );
227    col = brush( col, uv, vec4(0.902,0.203,0.818,51.200), an );
228    col = brush( col, uv, vec4(1.000,0.230,0.803,52.513), an );
229    col = brush( col, uv, vec4(0.922,0.738,0.691,47.628), an );
230    col = brush( col, uv, vec4(0.000,0.385,0.797,43.574), an );
231    col = brush( col, uv, vec4(0.000,0.725,0.305,62.061), an );
232    col = brush( col, uv, vec4(0.000,0.150,0.750,45.511), an );
233    col = brush( col, uv, vec4(1.000,0.742,0.408,47.628), an );
234    col = brush( col, uv, vec4(0.000,0.645,0.643,60.235), an );
235    col = brush( col, uv, vec4(1.000,0.645,0.438,35.310), an );
236    col = brush( col, uv, vec4(0.510,0.564,0.789,18.450), an );
237    col = brush( col, uv, vec4(0.863,0.211,0.781,30.567), an );
238    col = brush( col, uv, vec4(0.106,0.508,0.328,89.043), an );
239    col = brush( col, uv, vec4(0.012,0.410,0.875,14.629), an );
240    col = brush( col, uv, vec4(1.000,0.871,0.877,48.762), an );
241    col = brush( col, uv, vec4(1.000,0.258,0.779,37.926), an );
242    col = brush( col, uv, vec4(0.000,0.436,0.807,28.845), an );
243    col = brush( col, uv, vec4(0.918,0.861,0.836,49.951), an );
244    col = brush( col, uv, vec4(1.000,0.291,0.770,40.960), an );
245    col = brush( col, uv, vec4(0.000,0.750,0.283,27.676), an );
246    col = brush( col, uv, vec4(0.965,0.596,0.572,28.055), an );
247    col = brush( col, uv, vec4(0.902,0.803,0.953,24.976), an );
248    col = brush( col, uv, vec4(0.957,0.498,0.600,16.126), an );
249    col = brush( col, uv, vec4(0.914,0.322,0.432,15.634), an );
250    col = brush( col, uv, vec4(0.008,0.025,0.621,17.809), an );
251    col = brush( col, uv, vec4(0.000,0.916,0.713,56.889), an );
252    col = brush( col, uv, vec4(0.914,0.547,0.971,47.628), an );
253    col = brush( col, uv, vec4(0.000,0.207,0.432,37.926), an );
254    col = brush( col, uv, vec4(0.875,0.176,0.793,46.545), an );
255    col = brush( col, uv, vec4(0.000,0.646,0.668,41.796), an );
256    col = brush( col, uv, vec4(1.000,0.721,0.691,51.200), an );
257    col = brush( col, uv, vec4(0.451,0.559,0.754,49.951), an );
258    col = brush( col, uv, vec4(0.969,0.846,0.750,58.514), an );
259    col = brush( col, uv, vec4(0.000,0.900,0.146,36.571), an );
260    col = brush( col, uv, vec4(1.000,0.613,0.635,85.333), an );
261    col = brush( col, uv, vec4(0.596,0.807,0.150,58.514), an );
262    col = brush( col, uv, vec4(0.898,0.330,0.760,40.157), an );
263    col = brush( col, uv, vec4(0.694,0.594,0.012,51.200), an );
264    col = brush( col, uv, vec4(0.698,0.592,0.055,53.895), an );
265    col = brush( col, uv, vec4(0.902,0.268,0.773,39.385), an );
266    col = brush( col, uv, vec4(0.925,0.838,0.660,58.514), an );
267    col = brush( col, uv, vec4(0.843,0.670,0.242,28.444), an );
268    col = brush( col, uv, vec4(0.243,0.465,0.285,85.333), an );
269    col = brush( col, uv, vec4(0.816,0.588,0.674,44.522), an );
270    col = brush( col, uv, vec4(0.008,0.283,0.115,8.031), an );
271    col = brush( col, uv, vec4(0.247,0.414,0.691,60.235), an );
272    col = brush( col, uv, vec4(1.000,0.104,0.781,60.235), an );
273    col = brush( col, uv, vec4(0.000,0.619,0.660,60.235), an );
274    col = brush( col, uv, vec4(0.584,0.650,0.994,46.545), an );
275    col = brush( col, uv, vec4(0.000,0.219,0.393,36.571), an );
276    col = brush( col, uv, vec4(1.000,0.307,0.645,97.524), an );
277    col = brush( col, uv, vec4(0.953,0.639,0.771,38.642), an );
278    col = brush( col, uv, vec4(0.000,0.238,0.357,34.712), an );
279    col = brush( col, uv, vec4(0.922,0.713,0.352,53.895), an );
280    col = brush( col, uv, vec4(0.965,0.387,0.748,43.574), an );
281    col = brush( col, uv, vec4(0.000,0.898,0.633,41.796), an );
282    col = brush( col, uv, vec4(0.941,0.352,0.488,14.734), an );
283    col = brush( col, uv, vec4(0.933,0.439,0.725,30.567), an );
284    col = brush( col, uv, vec4(0.310,0.541,0.906,47.628), an );
285    col = brush( col, uv, vec4(0.941,0.502,0.689,24.094), an );
286    col = brush( col, uv, vec4(0.094,0.527,0.330,85.333), an );
287    col = brush( col, uv, vec4(0.000,0.090,0.688,55.351), an );
288    col = brush( col, uv, vec4(0.000,0.652,0.713,75.852), an );
289    col = brush( col, uv, vec4(0.949,0.320,0.623,107.789), an );
290    col = brush( col, uv, vec4(0.890,0.775,0.750,22.505), an );
291    col = brush( col, uv, vec4(0.012,0.918,0.490,14.322), an );
292    col = brush( col, uv, vec4(1.000,0.871,0.967,58.514), an );
293    col = brush( col, uv, vec4(0.000,0.324,0.676,64.000), an );
294    col = brush( col, uv, vec4(0.008,0.141,0.248,8.031), an );
295    col = brush( col, uv, vec4(0.000,0.633,0.707,75.852), an );
296    col = brush( col, uv, vec4(0.910,0.385,0.207,44.522), an );
297    col = brush( col, uv, vec4(0.012,0.703,0.182,31.508), an );
298    col = brush( col, uv, vec4(0.000,0.617,0.703,73.143), an );
299    col = brush( col, uv, vec4(0.890,0.352,0.225,45.511), an );
300    col = brush( col, uv, vec4(0.933,0.826,0.604,44.522), an );
301    col = brush( col, uv, vec4(0.914,0.777,0.574,25.924), an );
302    col = brush( col, uv, vec4(0.631,0.781,0.182,68.267), an );
303    col = brush( col, uv, vec4(1.000,0.873,0.916,48.762), an );
304    col = brush( col, uv, vec4(0.694,0.520,0.113,81.920), an );
305    col = brush( col, uv, vec4(0.000,0.900,0.926,58.514), an );
306    col = brush( col, uv, vec4(0.184,0.598,0.344,146.286), an );
307    col = brush( col, uv, vec4(0.863,0.678,0.250,35.310), an );
308    col = brush( col, uv, vec4(0.090,0.566,0.332,78.769), an );
309    col = brush( col, uv, vec4(0.420,0.445,0.301,56.889), an );
310    col = brush( col, uv, vec4(0.973,0.617,0.516,18.124), an );
311    col = brush( col, uv, vec4(0.000,0.191,0.500,39.385), an );
312    col = brush( col, uv, vec4(0.000,0.240,0.326,31.508), an );
313    col = brush( col, uv, vec4(0.000,0.264,0.322,55.351), an );
314    col = brush( col, uv, vec4(0.000,0.604,0.699,70.621), an );
315    col = brush( col, uv, vec4(0.000,0.113,0.604,43.574), an );
316    col = brush( col, uv, vec4(0.894,0.760,0.697,49.951), an );
317    col = brush( col, uv, vec4(0.914,0.725,0.383,55.351), an );
318    col = brush( col, uv, vec4(0.000,0.199,0.467,48.762), an );
319    col = brush( col, uv, vec4(0.000,0.904,0.660,52.513), an );
320    col = brush( col, uv, vec4(0.922,0.611,0.191,45.511), an );
321    col = brush( col, uv, vec4(0.059,0.789,0.869,30.118), an );
322    col = brush( col, uv, vec4(0.976,0.641,0.213,40.960), an );
323    col = brush( col, uv, vec4(0.918,0.402,0.742,47.628), an );
324    col = brush( col, uv, vec4(0.945,0.717,0.582,40.157), an );
325    col = brush( col, uv, vec4(0.000,0.299,0.672,58.514), an );
326    col = brush( col, uv, vec4(0.000,0.719,0.666,48.762), an );
327    col = brush( col, uv, vec4(0.882,0.697,0.271,58.514), an );
328    col = brush( col, uv, vec4(0.929,0.752,0.436,64.000), an );
329    col = brush( col, uv, vec4(1.000,0.867,0.813,56.889), an );
330    col = brush( col, uv, vec4(0.643,0.588,0.090,64.000), an );
331    col = brush( col, uv, vec4(0.012,0.063,0.922,10.952), an );
332    col = brush( col, uv, vec4(0.878,0.186,0.750,31.508), an );
333    col = brush( col, uv, vec4(0.953,0.648,0.613,120.471), an );
334    col = brush( col, uv, vec4(0.973,0.180,0.576,45.511), an );
335    col = brush( col, uv, vec4(0.741,0.943,0.076,52.513), an );
336    col = brush( col, uv, vec4(0.059,0.545,0.332,89.043), an );
337    col = brush( col, uv, vec4(0.094,0.295,0.734,85.333), an );
338    col = brush( col, uv, vec4(0.008,0.676,0.721,85.333), an );
339    col = brush( col, uv, vec4(0.550,0.350,0.650,85.000), an );
340
341	fragColor = vec4(col,col,col,1.0);
342}
343
344 void main(void)
345{
346  //just some shit to wrap shadertoy's stuff
347  vec2 FragCoord = vTexCoord.xy*OutputSize.xy;
348  mainImage(FragColor,FragCoord);
349}
350#endif
351