Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
231 lines
No EOL
6.1 KiB
GLSL
231 lines
No EOL
6.1 KiB
GLSL
vec2 iResolution = iWorldScale.xz;
|
|
|
|
// from https://www.shadertoy.com/view/Xd2XWR
|
|
|
|
// Created by Daniel Burke - burito/2014
|
|
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
|
|
|
// Inspiration from Dr Who (2005) S7E13 - The Name of the Doctor
|
|
|
|
vec2 rot(vec2 p, float a)
|
|
{
|
|
float c = cos(a);
|
|
float s = sin(a);
|
|
return vec2(p.x*c + p.y*s,
|
|
-p.x*s + p.y*c);
|
|
}
|
|
|
|
float circle(vec2 pos, float radius)
|
|
{
|
|
return clamp(((1.0-abs(length(pos)-radius))-0.99)*100.0, 0.0, 1.0);
|
|
|
|
}
|
|
|
|
float circleFill(vec2 pos, float radius)
|
|
{
|
|
return clamp(((1.0-(length(pos)-radius))-0.99)*100.0, 0.0, 1.0);
|
|
}
|
|
|
|
// Thanks Iñigo Quilez!
|
|
float line( in vec2 p, in vec2 a, in vec2 b )
|
|
{
|
|
vec2 pa = -p - a;
|
|
vec2 ba = b - a;
|
|
float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 );
|
|
float d = length( pa - ba*h );
|
|
|
|
return clamp(((1.0 - d)-0.99)*100.0, 0.0, 1.0);
|
|
}
|
|
|
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
|
{
|
|
vec2 uv = fragCoord.xy / iResolution.xy;
|
|
vec2 p = -1.0 + 2.0 * uv;
|
|
p.x *= iResolution.x / iResolution.y;
|
|
|
|
vec3 colour = vec3(0);
|
|
vec3 white = vec3(1);
|
|
|
|
|
|
|
|
float c = circle(p, 0.2);
|
|
c += circle(p, 0.1);
|
|
c += circle(p, 0.18);
|
|
c += circleFill(p, 0.005);
|
|
|
|
// c += circle(p, 1.3);
|
|
c += circle(p, 1.0);
|
|
if(p.x > 0.0)c += circle(p, 0.4);
|
|
if(p.x > 0.0)c += circle(p, 0.42);
|
|
if(p.x < 0.0)c += circle(p, 0.47);
|
|
c += circleFill(p+vec2(0.47, 0.0), 0.02);
|
|
c += circleFill(p+vec2(0.84147*0.47, 0.54030*0.47), 0.02);
|
|
c += circleFill(p+vec2(0.84147*0.47, -0.54030*0.47), 0.02);
|
|
c += circleFill(p+vec2(0.41614*0.47, 0.90929*0.47), 0.02);
|
|
c += circleFill(p+vec2(0.41614*0.47, -0.90929*0.47), 0.02);
|
|
|
|
float t = iGlobalTime;
|
|
float t2 = t * -0.01;
|
|
float t3 = t * 0.03;
|
|
|
|
vec2 angle1 = vec2(sin(t), cos(t));
|
|
vec2 a = angle1 * 0.7;
|
|
|
|
t *= 0.5;
|
|
vec2 angle2 = vec2(sin(t), cos(t));
|
|
vec2 b = angle2 * 0.8;
|
|
|
|
vec2 angle3 = vec2(sin(t2), cos(t2));
|
|
vec2 d = b + angle3* 0.4;
|
|
|
|
vec2 angle4 = vec2(sin(t3), cos(t3));
|
|
vec2 e = angle4 * 0.9;
|
|
|
|
vec2 angle5 = vec2(sin(t3+4.0), cos(t3+4.0));
|
|
vec2 f = angle5 * 0.8;
|
|
|
|
vec2 angle6 = vec2(sin(t*-0.1+5.0), cos(t*-0.1+5.0));
|
|
vec2 h = angle6 * 0.8;
|
|
|
|
|
|
|
|
|
|
|
|
float tt = t * 1.4;
|
|
|
|
float tm = mod(tt, 0.5);
|
|
float tmt = tt - tm;
|
|
if( tm > 0.4) tmt += (tm-0.4)*5.0;
|
|
vec2 tangle1 = vec2(sin(tmt), cos(tmt));
|
|
|
|
tt *= 0.8;
|
|
tm = mod(tt, 0.6);
|
|
float tmt2 = tt - tm;
|
|
if( tm > 0.2) tmt2 += (tm-0.2)*1.5;
|
|
|
|
vec2 tangle2 = vec2(sin(tmt2*-4.0), cos(tmt2*-4.0));
|
|
|
|
vec2 tangle3 = vec2(sin(tmt2), cos(tmt2));
|
|
|
|
tt = t+3.0;
|
|
tm = mod(tt, 0.2);
|
|
tmt = tt - tm;
|
|
if( tm > 0.1) tmt += (tm-0.1)*2.0;
|
|
vec2 tangle4 = vec2(sin(-tmt), cos(-tmt)); tmt += 0.9;
|
|
vec2 tangle41 = vec2(sin(-tmt), cos(-tmt)); tmt += 0.5;
|
|
vec2 tangle42 = vec2(sin(-tmt), cos(-tmt)); tmt += 0.5;
|
|
vec2 tangle43 = vec2(sin(-tmt), cos(-tmt)); tmt += 0.5;
|
|
vec2 tangle44 = vec2(sin(-tmt), cos(-tmt)); tmt += 0.5;
|
|
vec2 tangle45 = vec2(sin(-tmt), cos(-tmt));
|
|
|
|
tt = iGlobalTime+0.001;
|
|
tm = mod(tt, 1.0);
|
|
tmt = tt - tm;
|
|
if( tm > 0.9) tmt += (tm-0.9)*10.0;
|
|
|
|
vec2 tangle51 = 0.17*vec2(sin(-tmt), cos(-tmt)); tmt += 1.0471975511965976;
|
|
vec2 tangle52 = 0.17*vec2(sin(-tmt), cos(-tmt)); tmt += 1.0471975511965976;
|
|
vec2 tangle53 = 0.17*vec2(sin(-tmt), cos(-tmt));
|
|
|
|
c += line(p, tangle51, -tangle53);
|
|
c += line(p, tangle52, tangle51);
|
|
c += line(p, tangle53, tangle52);
|
|
c += line(p, -tangle51, tangle53);
|
|
c += line(p, -tangle52, -tangle51);
|
|
c += line(p, -tangle53, -tangle52);
|
|
|
|
c += circleFill(p+tangle51, 0.01);
|
|
c += circleFill(p+tangle52, 0.01);
|
|
c += circleFill(p+tangle53, 0.01);
|
|
c += circleFill(p-tangle51, 0.01);
|
|
c += circleFill(p-tangle52, 0.01);
|
|
c += circleFill(p-tangle53, 0.01);
|
|
|
|
|
|
|
|
c += circle(p+a, 0.2);
|
|
c += circle(p+a, 0.14);
|
|
c += circle(p+a, 0.1);
|
|
c += circleFill(p+a, 0.04);
|
|
c += circleFill(p+a+tangle3*0.2, 0.025);
|
|
|
|
|
|
c += circle(p+a, 0.14);
|
|
|
|
|
|
c += circle(p+b, 0.2);
|
|
c += circle(p+b, 0.03);
|
|
c += circle(p+b, 0.15);
|
|
c += circle(p+b, 0.45);
|
|
c += circleFill(p+b+tangle1*0.05, 0.01);
|
|
c += circleFill(p+b+tangle1*0.09, 0.02);
|
|
c += circleFill(p+b+tangle1*0.15, 0.03);
|
|
c += circle(p+b+tangle1*-0.15, 0.03);
|
|
c += circle(p+b+tangle1*-0.07, 0.015);
|
|
|
|
c += circle(p+d, 0.08);
|
|
|
|
|
|
c += circle(p+e, 0.08);
|
|
|
|
|
|
c += circle(p+f, 0.12);
|
|
c += circle(p+f, 0.10);
|
|
c += circleFill(p+f+tangle2*0.05, 0.01);
|
|
c += circleFill(p+f+tangle2*0.10, 0.01);
|
|
c += circle(p+f-tangle2*0.03, 0.01);
|
|
c += circleFill(p+f+vec2(0.085), 0.005);
|
|
c += circleFill(p+f, 0.005);
|
|
|
|
|
|
vec2 g = tangle4 * 0.16;
|
|
c += circle(p+h, 0.05);
|
|
c += circle(p+h, 0.1);
|
|
c += circle(p+h, 0.17);
|
|
c += circle(p+h, 0.2);
|
|
c += circleFill(p+h+tangle41 *0.16, 0.01);
|
|
c += circleFill(p+h+tangle42 *0.16, 0.01);
|
|
c += circleFill(p+h+tangle43 *0.16, 0.01);
|
|
c += circleFill(p+h+tangle44 *0.16, 0.01);
|
|
c += circleFill(p+h+tangle45 *0.16, 0.01);
|
|
c += circleFill(p+h+angle1 *0.06, 0.02);
|
|
c += circleFill(p+h+tangle43*-0.16, 0.01);
|
|
|
|
|
|
c += line(p, vec2(0.0), a);
|
|
c += circleFill(p+b, 0.005);
|
|
c += circleFill(p+d, 0.005);
|
|
c += circleFill(p+e, 0.005);
|
|
|
|
c += line(p, b, a);
|
|
c += line(p, d, e);
|
|
c += line(p, b+tangle1*0.15, e);
|
|
c += line(p, e, f+vec2(0.085));
|
|
|
|
c += line(p, h+angle1*0.06, f);
|
|
c += line(p, h+tangle43*-0.16, d);
|
|
c += line(p, h+tangle42*0.16, e);
|
|
|
|
|
|
// of course I'd write a line function that
|
|
// doesn't handle perfectly vertical lines
|
|
c += line(p, vec2(0.001, -0.5), vec2(0.0001, 0.5));
|
|
c += circleFill(p+vec2(0.001, -0.5), 0.005);
|
|
c += circleFill(p+vec2(0.001, 0.5), 0.005);
|
|
|
|
c = clamp(c, 0.0, 1.0);
|
|
colour = white * c;
|
|
|
|
|
|
fragColor = vec4(colour, 1.0);
|
|
}
|
|
|
|
|
|
vec4 getProceduralColor() {
|
|
vec4 result;
|
|
vec2 position = _position.xz;
|
|
position += 0.5;
|
|
|
|
mainImage(result, position * iWorldScale.xz);
|
|
return result;
|
|
} |