1#ifndef EYE_SHADERS_MEDIAN_HPP
2#define EYE_SHADERS_MEDIAN_HPP
4#include <shrimp/ColorTypes.hpp>
6#include "shadersDllApi.h"
12extern shaders_API
constinit const char Median_GLSL[];
15#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
16#define mn3(a, b, c) s2(a, b); s2(a, c);
17#define mx3(a, b, c) s2(b, c); s2(a, c);
19#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b);
20#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d);
21#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e);
22#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f);
64 mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]);
65 mnmx5(v[1], v[2], v[3], v[4], v[6]);
66 mnmx4(v[2], v[3], v[4], v[7]);
67 mnmx3(v[3], v[4], v[8]);
122#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
123#define t2(a, b) s2(v[a], v[b]);
124#define t24(a, b, c, d, e, f, g, h) t2(a, b); t2(c, d); t2(e, f); t2(g, h);
125#define t25(a, b, c, d, e, f, g, h, i, j) t24(a, b, c, d, e, f, g, h); t2(i, j);
132 t25(0, 1, 3, 4, 2, 4, 2, 3, 6, 7);
133 t25(5, 7, 5, 6, 9, 7, 1, 7, 1, 4);
134 t25(12, 13, 11, 13, 11, 12, 15, 16, 14, 16);
135 t25(14, 15, 18, 19, 17, 19, 17, 18, 21, 22);
136 t25(20, 22, 20, 21, 23, 24, 2, 5, 3, 6);
137 t25(0, 6, 0, 3, 4, 7, 1, 7, 1, 4);
138 t25(11, 14, 8, 14, 8, 11, 12, 15, 9, 15);
139 t25(9, 12, 13, 16, 10, 16, 10, 13, 20, 23);
140 t25(17, 23, 17, 20, 21, 24, 18, 24, 18, 21);
141 t25(19, 22, 8, 17, 9, 18, 0, 18, 0, 9);
142 t25(10, 19, 1, 19, 1, 10, 11, 20, 2, 20);
143 t25(2, 11, 12, 21, 3, 21, 3, 12, 13, 22);
144 t25(4, 22, 4, 13, 14, 23, 5, 23, 5, 14);
145 t25(15, 24, 6, 24, 6, 15, 7, 16, 7, 19);
146 t25(3, 11, 5, 17, 11, 17, 9, 17, 4, 10);
147 t25(6, 12, 7, 14, 4, 6, 4, 7, 12, 14);
148 t25(10, 14, 6, 7, 10, 12, 6, 10, 6, 17);
149 t25(12, 17, 7, 17, 7, 10, 12, 18, 7, 12);
150 t24(10, 18, 12, 20, 10, 20, 10, 12);