1#property description CGA mode 1: black, cyan, magenta, white
2
3void main(void) {
4    // This is pretty gross
5    vec4 oc = texture(iInput, uv);
6    vec3 c = oc.rgb;
7    c = min(c / max(oc.a, 0.001), 1.);
8    float bDist = -length(c - vec3(0., 0., 0.));
9    float wDist = -length(c - vec3(1., 1., 1.));
10    float cDist = -length(c - vec3(0., 1., 1.));
11    float mDist = -length(c - vec3(1., 0., 1.));
12
13    if (wDist > bDist && wDist > cDist && wDist > mDist) {
14        c = vec3(1., 1., 1.);
15    } else if (cDist > bDist && cDist > wDist && cDist > mDist) {
16        c = vec3(0., 1., 1.);
17    } else if (mDist > bDist && mDist > wDist && mDist > cDist) {
18        c = vec3(1., 0., 1.);
19    } else {
20        c = vec3(0., 0., 0.);
21    }
22
23    fragColor.rgb = mix(oc.rgb, c, iIntensity * pow(defaultPulse, 2.));
24    fragColor.a = oc.a;
25}
26