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