Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ready
- at start (app://1f842aa3-a9ed-43e6-9d01-e25e8c74cfe2/js/enroll_script.js:16:3)enroll_script.js:16:3
- Image loadedenroll_script.js:24:7
- 1
- 2 precision highp float;
- 3 precision highp int;
- 4 precision highp sampler2D;
- 5 varying vec2 resultUV;
- 6
- 7 const vec2 halfCR = vec2(0.5, 0.5);
- 8
- 9 struct ivec5
- 10 {
- 11 int x;
- 12 int y;
- 13 int z;
- 14 int w;
- 15 int u;
- 16 };
- 17
- 18 struct ivec6
- 19 {
- 20 int x;
- 21 int y;
- 22 int z;
- 23 int w;
- 24 int u;
- 25 int v;
- 26 };
- 27
- 28 uniform float NAN;
- 29
- 30 #define isnan(value) isnan_custom(value)
- 31 bool isnan_custom(float val) {
- 32 return (val > 0. || val < 1. || val == 0.) ? false : true;face-api.min.js:1:58117
- Fragment shader compilation failed.face-api.min.js:1:58143
- 33 } face-api.min.js:1:58173
- 34 bvec4 isnan_custom(vec4 val) {
- 35 return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));
- 36 }
- 37
- 38
- 39 uniform float INFINITY;
- 40
- 41 bool isinf(float val) {
- 42 return abs(val) == INFINITY;
- 43 }
- 44 bvec4 isinf(vec4 val) {
- 45 return equal(abs(val), vec4(INFINITY));
- 46 }
- 47
- 48
- 49 int round(float value) {
- 50 return int(floor(value + 0.5));
- 51 }
- 52
- 53 ivec4 round(vec4 value) {
- 54 return ivec4(floor(value + vec4(0.5)));
- 55 }
- 56
- 57
- 58 int imod(int x, int y) {
- 59 return x - y * (x / y);
- 60 }
- 61
- 62 int idiv(int a, int b, float sign) {
- 63 int res = a / b;
- 64 int mod = imod(a, b);
- 65 if (sign < 0. && mod != 0) {
- 66 res -= 1;
- 67 }
- 68 return res;
- 69 }
- 70
- 71 //Based on the work of Dave Hoskins
- 72 //https://www.shadertoy.com/view/4djSRW
- 73 #define HASHSCALE1 443.8975
- 74 float random(float seed){
- 75 vec2 p = resultUV * seed;
- 76 vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);
- 77 p3 += dot(p3, p3.yzx + 19.19);
- 78 return fract((p3.x + p3.y) * p3.z);
- 79 }
- 80
- 81
- 82 vec2 uvFromFlat(int texNumR, int texNumC, int index) {
- 83 int texR = index / texNumC;
- 84 int texC = index - texR * texNumC;
- 85 return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
- 86 }
- 87 vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {
- 88 int texelIndex = index / 2;
- 89 int texR = texelIndex / texNumC;
- 90 int texC = texelIndex - texR * texNumC;
- 91 return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
- 92 }
- 93
- 94
- 95 vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,
- 96 int texNumC, int row, int col) {
- 97 int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);
- 98 int texR = texelIndex / texNumC;
- 99 int texC = texelIndex - texR * texNumC;
- 100 return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
- 101 }
- 102
- 103
- 104 vec2 packedUVfrom3D(int texNumR, int texNumC,
- 105 int texelsInBatch, int texelsInLogicalRow, int b,
- 106 int row, int col) {
- 107 int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);
- 108 int texR = index / texNumC;
- 109 int texC = index - texR * texNumC;
- 110 return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
- 111 }
- 112
- 113
- 114
- 115 float sampleTexture(sampler2D textureSampler, vec2 uv) {
- 116 return texture2D(textureSampler, uv).r;
- 117 }
- 118
- 119
- 120 void setOutput(vec4 val) {
- 121 gl_FragColor = val;
- 122 }
- 123
- 124 uniform sampler2D A;
- 125 uniform int offsetA;
- 126
- 127 ivec4 getOutputCoords() {
- 128 ivec2 resTexRC = ivec2(resultUV.yx *
- 129 vec2(208, 416));
- 130 int index = resTexRC.x * 416 + resTexRC.y;
- 131
- 132
- 133 int b2 = index / 86528;
- 134 index -= b2 * 86528;
- 135
- 136
- 137 int b = index / 208;
- 138 index -= b * 208;
- 139
- 140 int r = 2 * (index / 1);
- 141 int c = imod(index, 1) * 2;
- 142
- 143 return ivec4(b2, b, r, c);
- 144 }
- 145
- 146
- 147
- 148 float getA(int row, int col) {
- 149 vec2 uv = (vec2(col, row) + halfCR) / vec2(416.0, 416.0);
- 150 return sampleTexture(A, uv);
- 151 }
- 152
- 153 float getA(int row, int col, int depth, int depth2) {
- 154 return getA(col, depth);
- 155 }
- 156
- 157 float getAAtOutCoords() {
- 158 ivec4 coords = getOutputCoords();
- 159
- 160 return getA(coords.x, coords.y, coords.z, coords.w);
- 161 }
- 162
- 163
- 164 void main() {
- 165 ivec4 rc = getOutputCoords();
- 166
- 167 if(rc.z >= 416||rc.w >= 1) {
- 168 setOutput(vec4(0));
- 169 } else {
- 170
- 171 int r = rc.z;
- 172 int c = rc.w;
- 173 int rp1 = r + 1;
- 174 int cp1 = c + 1;
- 175
- 176 bool cEdge = cp1 >= 1;
- 177 bool rEdge = rp1 >= 416;
- 178
- 179
- 180 setOutput(vec4(getA(rc.x,rc.y,r, c),
- 181 cEdge ? 0. : getA(rc.x,rc.y,r, cp1),
- 182 rEdge ? 0. : getA(rc.x,rc.y,rp1, c),
- 183 rEdge || cEdge ? 0. : getA(rc.x,rc.y,rp1, cp1)));
- 184 }
- 185 }
- 186 face-api.min.js:1:58266
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement