Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vec4 simulate(vec4 input) {
- if (colorBlind < 0.5) {
- return inp;
- }
- float L = (17.8824 * inp.r) + (43.5161 * inp.g) + (4.11935 * inp.b);
- float M = (3.45565 * inp.r) + (27.1554 * inp.g) + (3.86714 * inp.b);
- float S = (0.0299566 * inp.r) + (0.184309 * inp.g) + (1.46709 * inp.b);
- float l = 0.0;
- float m = 0.0;
- float s = 0.0;
- if (colorBlind < 1.5) {
- l = 0.0 * L + 2.02344 * M + -2.52581 * S;
- m = 0.0 * L + 1.0 * M + 0.0 * S;
- s = 0.0 * L + 0.0 * M + 1.0 * S;
- } else if (colorBlind < 2.5) {
- l = 1.0 * L + 0.0 * M + 0.0 * S;
- m = 0.494207 * L + 0.0 * M + 1.24827 * S;
- s = 0.0 * L + 0.0 * M + 1.0 * S;
- } else {
- l = 1.0 * L + 0.0 * M + 0.0 * S;
- m = 0.0 * L + 1.0 * M + 0.0 * S;
- s = -0.395913 * L + 0.801109 * M + 0.0 * S;
- }
- vec4 error = vec4(0.0);
- error.r = (0.0809444479 * l) + (-0.130504409 * m) + (0.116721066 * s);
- error.g = (-0.0102485335 * l) + (0.0540193266 * m) + (-0.113614708 * s);
- error.b = (-0.000365296938 * l) + (-0.00412161469 * m) + (0.693511405 * s);
- error.a = 1.0;
- if (correct > 0.5) {
- error = (inp - error);
- vec4 correction;
- correction.r = 0.0;
- correction.g = (error.r * 0.7) + (error.g * 1.0);
- correction.b = (error.r * 0.7) + (error.b * 1.0);
- correction = inp + correction;
- correction.a = inp.a;
- return correction.rgba;
- } else {
- return error.rgba;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement