+" vec4 spread0 = uTime*0.0002*vec4( 17.3,-19.6, 23.2,-47.7 );\n"
+" vec4 spread1 = uTime*0.0002*vec4( -13.3, 12.6,-28.2, 14.7 );\n"
+"\n"
+" vec2 p = aCo.xy + vec2(0.3);\n"
+" float a = atan( p.y/p.x );\n"
+" vec4 v0 = step( vec4(0.5), fract(vec4(a) + spread0) );\n"
+" vec4 v1 = step( vec4(0.5), fract(vec4(a) + spread1) );\n"
+"\n"
+" float d = ( v0.x+v0.y+v0.z+v0.w +\n"
+" v1.x+v1.y+v1.z+v1.w ) * 0.125;\n"
+" \n"
+" float dither = fract(dot(vec2(171.0,231.0),gl_FragCoord.xy)/71.0);\n"
+" float x = d*0.8+length(p)*0.3;\n"
+" x = (floor(x*8.0) + step(dither, fract(x * 8.0))) / 8.0;\n"
+"\n"
+" if( x + (uOpacity*2.0-1.0) < 0.5 ) \n"
+" discard;\n"
+"\n"
+" vfrag = mix( vec3(x), pal( x ), uColourize );\n"
+"\n"
+" if( g_light_preview == 1 ){\n"