// MIT License // Copyright (c) 2024 Joao Chrisostomo, Kacper Michajłow // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. //!DESC ArtCNN C4F16 DN (Conv2D) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND LUMA //!SAVE conv2d //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared F inp[1][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(1, 1); inp[0][y][x] = F(LUMA_mul * texelFetch(LUMA_raw, input_base + ivec2(0, 0), 0).x); } } barrier(); V4 result0 = V4(0.005000432, -0.010236794, -0.014935676, -0.046207584); V4 result1 = V4(-0.028179219, -0.004517557, 0.00014788302, 0.0035856056); V4 result2 = V4(0.032914076, 0.00020142968, -0.0065285224, -0.0065012206); V4 result3 = V4(0.002272252, 0.010490689, 0.014113876, -0.06348713); const F inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const F inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const F inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const F inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const F inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const F inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const F inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const F inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const F inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += V4(-0.031936917, -0.12498426, 0.019247064, 0.043321293) * inp_0_0_0; result0 += V4(0.0324228, 0.15786779, 0.093572296, 0.12223211) * inp_0_1_0; result0 += V4(-0.008010341, 0.11386231, -0.07220623, 0.062144116) * inp_0_2_0; result0 += V4(-0.017256076, 0.051489502, -0.021640493, 0.16445197) * inp_0_0_1; result0 += V4(-0.05208898, -0.06893944, -0.34209797, 0.26306182) * inp_0_1_1; result0 += V4(-0.22330455, -0.13612887, 0.070612304, 0.11175349) * inp_0_2_1; result0 += V4(0.032759942, 0.1523859, 0.009016861, 0.094373636) * inp_0_0_2; result0 += V4(0.10492912, -0.10173742, 0.19048259, -0.00072423404) * inp_0_1_2; result0 += V4(0.16503376, -0.017707495, 0.051095057, 0.0885737) * inp_0_2_2; result1 += V4(0.075178064, -0.053005736, -0.1116903, 0.01338327) * inp_0_0_0; result1 += V4(-0.05177772, -0.03640289, 0.010358838, -0.18368039) * inp_0_1_0; result1 += V4(0.02753785, 0.112010606, 0.042722113, 0.117747955) * inp_0_2_0; result1 += V4(-0.04285177, 0.076704614, 0.11607434, -0.0305754) * inp_0_0_1; result1 += V4(0.099548064, -0.15293168, 0.12925005, 0.1437974) * inp_0_1_1; result1 += V4(-0.116974674, 0.23881362, -0.1826676, -0.091472775) * inp_0_2_1; result1 += V4(0.043361172, -0.013535253, 0.0058491337, 0.02681981) * inp_0_0_2; result1 += V4(0.08957939, -0.22580828, -0.08981081, 0.043160103) * inp_0_1_2; result1 += V4(-0.07271555, 0.051607724, 0.08303654, -0.040631983) * inp_0_2_2; result2 += V4(-0.05472001, 0.11004032, -0.06848912, -0.052433632) * inp_0_0_0; result2 += V4(0.07194944, -0.05754198, 0.11013715, 0.004388367) * inp_0_1_0; result2 += V4(0.06442394, 0.0031591335, 0.043304957, -0.0030882147) * inp_0_2_0; result2 += V4(-0.17313306, 0.24899231, 0.28330398, 0.134953) * inp_0_0_1; result2 += V4(-0.264359, -0.6773203, -0.28650266, -0.05620836) * inp_0_1_1; result2 += V4(0.12131029, 0.10487222, -0.07395276, -0.042340226) * inp_0_2_1; result2 += V4(0.04348287, 0.12302039, -0.076906785, -0.0013286016) * inp_0_0_2; result2 += V4(0.18425512, 0.056919117, 0.043003965, 0.14221072) * inp_0_1_2; result2 += V4(-0.13485871, 0.008584932, 0.025013693, -0.11905144) * inp_0_2_2; result3 += V4(0.054048687, -0.12823541, 0.22114806, -0.097227745) * inp_0_0_0; result3 += V4(-0.15910593, 0.15280719, 0.33969763, 0.158814) * inp_0_1_0; result3 += V4(-0.010616162, -0.00083789544, 0.062508926, 0.06668837) * inp_0_2_0; result3 += V4(0.036678676, -0.04860102, 0.016965836, -0.19173586) * inp_0_0_1; result3 += V4(0.01301608, -0.13192666, -0.39674488, -0.0031523537) * inp_0_1_1; result3 += V4(0.05387914, 0.1256965, -0.17243183, 0.19979002) * inp_0_2_1; result3 += V4(-0.056761082, 0.17714313, -0.053538978, -0.08099346) * inp_0_0_2; result3 += V4(0.09195001, -0.09233287, -0.16082087, 0.021915846) * inp_0_1_2; result3 += V4(-0.023340184, -0.06604176, -0.02217975, 0.15662381) * inp_0_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), result0); imageStore(out_image, output_base + ivec2(1, 0), result1); imageStore(out_image, output_base + ivec2(0, 1), result2); imageStore(out_image, output_base + ivec2(1, 1), result3); } //!DESC ArtCNN C4F16 DN (Conv2D-1-ReLU) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND conv2d //!SAVE conv2d_1 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(0.018518891, 0.01044156, 0.10742334, 0.019117992); V4 result1 = V4(0.0315516, -0.003101165, -0.005900468, 0.01796322); V4 result2 = V4(0.012152654, 0.0372149, 0.0062034694, 0.013527767); V4 result3 = V4(0.012821475, 0.0042249896, 0.005348711, -0.01585064); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.08158021, 0.36881328, 0.009337696, -0.0009789583, 0.037750937, 0.040755477, 0.0714818, -0.012739046, -0.2773645, 0.2561695, -0.058632262, -0.075576924, 0.0051597417, -0.056443274, -0.11626299, 0.029282145) * inp_0_0_0; result0 += M4(-0.2543517, 0.17065844, 0.023238523, 0.028492624, 0.5698986, 0.29756632, 0.01092044, 0.097128704, -0.58620644, -0.44175535, -0.04538299, -0.13136758, -0.33139026, 0.08738802, 0.03617108, 0.10536206) * inp_0_1_0; result0 += M4(0.28597814, 0.06761786, 0.031695373, -0.0001685063, 0.110344306, -0.22705741, 0.2060126, -0.11344653, -0.2720657, 0.11361883, -0.06406121, 0.04081346, -0.06697755, -0.015180183, -0.084198244, -0.051352747) * inp_0_2_0; result0 += M4(-0.19953443, -0.16561568, -0.016145311, -0.12404758, -0.24406543, -0.14811298, 0.18133426, -0.13655715, 0.20901665, 0.10636414, 0.010629017, 0.0012694868, 0.036070634, 0.08257848, -0.016764678, 0.029727168) * inp_0_0_1; result0 += M4(-0.016476957, -0.14075343, -0.027129613, -0.09375615, -0.4127245, 0.23950775, 0.07380672, -0.038304914, -0.43629092, 0.5668643, 0.003959636, -0.34658402, 0.036786683, 0.035260472, 0.09842313, 0.1163377) * inp_0_1_1; result0 += M4(-0.31004605, -0.027383834, -0.057797607, -0.06565806, -0.37349615, -0.1799183, -0.051468123, -0.013482798, 0.19511178, 0.16784772, 0.0873751, -0.13626054, -0.04529568, 0.06621906, 0.052487094, 0.038753424) * inp_0_2_1; result0 += M4(0.025760734, 0.0682206, 0.021064492, 0.09645464, -0.043032102, -0.090350024, -0.057754707, 0.21584348, 0.23827586, -0.2046949, 0.045325402, -0.05166749, -0.042437322, -0.04775122, -0.10365779, -0.014732966) * inp_0_0_2; result0 += M4(0.048722856, 0.059847943, -0.059764188, 0.13146837, 0.08909796, 0.15502933, -0.07234314, 0.44972214, 0.26456386, -0.10124527, -0.17855424, 0.7546552, 0.0073131733, -0.032900933, -0.054067727, 0.026600674) * inp_0_1_2; result0 += M4(-0.12436057, -0.118757546, 0.0055421446, 0.04157181, 0.17757356, -0.092545554, -0.12315032, -0.09666901, 0.07417201, -0.09220441, 0.06397222, -0.076993175, 0.039749417, -0.05841778, 0.04243489, -0.06851767) * inp_0_2_2; result1 += M4(-0.11722148, -0.0061892387, 0.06848117, 0.16003668, -0.08755155, -0.068747275, -0.0014338386, 0.03779672, 0.052676156, -0.018639429, -0.006693102, 0.010028507, 0.08024415, -0.06853072, -0.05706328, -0.10674639) * inp_0_0_0; result1 += M4(0.083671294, -0.06783407, 0.07313709, -0.059323583, -0.060965378, 0.10190591, 0.09578905, 0.037567582, -0.11148347, 0.035999145, 0.033164624, 0.0032623145, 0.13300337, -0.054992944, -0.10743194, -0.04395739) * inp_0_1_0; result1 += M4(0.124120355, 0.006012139, 0.0070194113, -0.069672555, -0.1248209, 0.2797554, 0.04898659, -0.051493958, 0.032890536, 0.089741014, -0.11906037, 0.10938999, -0.1058632, -0.035202727, -0.053617362, 0.13634445) * inp_0_2_0; result1 += M4(-0.05613976, 0.23736352, -0.08271523, 0.33858415, -0.052838147, -0.08813987, 0.11959564, 0.07715325, -0.10487306, 0.27775696, 0.053639818, 0.13109322, 0.06802656, -0.056209512, -0.037064414, -0.0980737) * inp_0_0_1; result1 += M4(0.10801823, -0.17027746, 0.24520864, -0.04071703, 0.19452968, -0.1938642, -0.058469426, -0.056257706, -0.17408915, 0.13860838, 0.8677695, -0.06589672, 0.16665006, 0.062873304, -0.10417198, -0.078668155) * inp_0_1_1; result1 += M4(0.11299836, -0.16422914, -0.01668893, -0.108578384, -0.059354007, -0.2227081, 0.21527202, -0.08852553, 0.35861865, -0.10954767, 0.13270578, 0.053942185, -0.19615677, 0.084271304, -0.024008721, 0.024257526) * inp_0_2_1; result1 += M4(-0.015522772, -0.051986128, 0.041688908, -0.17457847, 0.12935668, -0.47766116, -0.12874644, 0.07231539, 0.110829026, 0.023038093, -0.09328756, 0.12355365, -0.008493168, -0.060420107, 0.107696526, -0.029257013) * inp_0_0_2; result1 += M4(0.08537334, -0.10943739, -0.13253039, -0.030590365, 0.17257877, -0.02393788, -0.5174385, -0.31145024, -0.056017578, -0.41494638, -0.5895143, -0.12285, 0.08103754, 0.030467475, 0.07665997, 0.05880427) * inp_0_1_2; result1 += M4(0.22306499, -0.16341406, -0.032617003, -0.030138642, 0.049197238, -0.0073093753, -0.02096397, -0.033209585, 0.03180391, -0.12126392, -0.13509601, -0.109492645, -0.13087395, -0.110524945, 0.06554624, 0.088114955) * inp_0_2_2; result2 += M4(-0.22317149, -0.105257854, -0.44806245, -0.8211308, -0.0012629417, 0.0014245816, 0.08119637, -0.41005155, -0.18367659, -0.19599073, 0.2891237, -0.31146073, 0.007836013, -0.0669064, 0.025035841, 0.02578851) * inp_0_0_0; result2 += M4(0.056289867, 0.051651746, 0.05656635, -0.11885439, 0.03618975, 0.012015575, 0.1115286, -0.12006298, 0.060863193, 0.057269838, 0.047542762, -0.4887268, 0.052404482, 0.10434082, -0.04936943, -0.09836767) * inp_0_1_0; result2 += M4(0.07109209, 0.13785455, -0.15091667, -0.25805235, 0.010805854, 0.06264561, 0.086037695, -0.58574885, -0.023791019, 0.16590084, -0.29029366, -0.23060726, -0.053362925, -0.16459589, -0.096718736, -0.02735874) * inp_0_2_0; result2 += M4(-0.10414079, -0.12340095, 0.49401549, -0.14073892, -0.066095926, -0.1253798, 0.39639264, -0.17436138, -0.064127296, -0.1307199, -0.44053814, 0.3569489, 0.06666634, 0.08789653, -0.035794836, 0.08418898) * inp_0_0_1; result2 += M4(-0.15285149, 0.04148722, 0.11081226, 0.12484058, -0.07661206, 0.11236841, 0.111449584, 0.10748378, -0.44889763, -0.18959962, 0.100984305, 0.117501274, 0.20870645, 0.086722374, 0.108379565, 0.06595252) * inp_0_1_1; result2 += M4(-0.20687594, 0.075375594, 0.18697971, -0.07995671, -0.031449772, 0.33924067, -0.049182262, 0.117816344, -0.08333891, 0.2664345, -0.051763307, 0.17628752, 0.089142464, -0.0422957, 0.080444075, 0.14229459) * inp_0_2_1; result2 += M4(-0.14842649, -0.020612223, -0.12946494, 0.08084135, 0.10957246, -0.07722416, -0.27732036, 0.45523158, 0.024944447, 0.04615172, 0.4042039, -0.06821125, -0.06216265, -0.014172243, -0.0071577244, -0.076441325) * inp_0_0_2; result2 += M4(0.10278976, -0.053553503, 0.03299055, 0.13700132, 0.45211655, 0.06306276, -0.23173153, 0.11058303, 0.445607, -0.015421391, 0.021124022, 0.009541771, -0.18818715, 0.104489, -0.024238247, -0.13697147) * inp_0_1_2; result2 += M4(0.06978138, 0.124148354, -0.07856029, -0.026354562, -0.093780905, 0.036038373, -0.060816962, 0.018337868, 0.06645081, -0.05858366, -0.13793366, -0.016824184, -0.06711399, -0.0819759, -0.03183009, -0.051468354) * inp_0_2_2; result3 += M4(0.16131638, 0.08747187, 0.2232474, -0.10645834, 0.06430499, -0.0006621699, 0.23334499, 0.14628266, 0.022597592, -0.15203255, -0.104630314, -0.029531488, -0.028215444, -0.04535918, -0.008709482, 0.1452345) * inp_0_0_0; result3 += M4(-0.13373314, -0.061412312, -0.12493108, -0.052946113, -0.008902551, 0.024799017, -0.08800319, 0.04107042, 0.14848897, -0.1098717, -0.28355387, 0.06396569, -0.010536728, 0.05586966, -0.008885334, -0.044419076) * inp_0_1_0; result3 += M4(-0.14204812, 0.068020694, -0.013884517, 0.022137782, -0.032979365, -0.08916889, 0.14150646, 0.08900383, -0.18035354, -0.22498576, 0.033895392, 0.048459873, 0.0054915394, 0.05712692, -0.014543918, -0.08285043) * inp_0_2_0; result3 += M4(0.17746373, 0.025382174, -0.3035317, 0.13563722, 0.124491714, -0.030333819, -0.090750165, 0.13760728, 0.10073946, -0.24918145, 0.1361031, -0.42547154, -0.13805254, -0.11200974, 0.020551287, 0.096920095) * inp_0_0_1; result3 += M4(-0.08922989, -0.08255884, -0.04138672, -0.028369667, -0.29928356, 0.040867183, -0.094309516, 0.1026011, 0.44413975, 0.009281348, 0.33358377, 0.21845269, -0.028348757, 0.09453142, -0.05321312, 0.02089415) * inp_0_1_1; result3 += M4(-0.047704622, 0.011043317, -0.07679374, 0.045029003, -0.31111583, -0.18117893, -0.32338613, 0.016570436, -0.3581517, -0.40008298, 0.03622247, 0.017579695, 0.12364358, -0.109494194, -0.096710056, -0.019353407) * inp_0_2_1; result3 += M4(0.036737617, 0.02519177, -0.084634416, 0.032344878, 0.053083923, 0.41184092, 0.38243195, 0.05260934, -0.1394286, 0.04565893, 0.038154088, -0.02546723, -0.072452694, -0.048184097, -0.039186686, 0.04281284) * inp_0_0_2; result3 += M4(0.0058338325, -0.2543458, 0.12042379, -0.070077136, 0.045813743, 0.1468145, -0.43896076, -0.112355076, -0.019421367, 0.733559, -0.22101289, 0.111324206, 0.010727512, 0.110004716, 0.00076282595, -0.0066450904) * inp_0_1_2; result3 += M4(-0.08344221, 0.014829175, -0.35323924, 0.023303844, 0.13854398, -0.114221886, -0.13946506, -0.25489393, -0.07819825, 0.21465899, -0.20649455, -0.0028987315, 0.034729935, -0.021316195, -0.026745744, -0.008356087) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.72164506, 0.018288558, -0.06591416, 0.074569345, -0.21149036, 0.1474442, 0.19134012, -0.02592533, -0.72432745, 0.2582492, 0.0043500396, -0.09453925, -0.39937276, 0.89834344, 0.039114755, 0.055923916) * inp_1_0_0; result0 += M4(-0.35984844, 0.06269168, 0.07016981, -0.0015225906, 0.6178662, -0.38328934, -0.022328265, -0.20506714, 0.78900594, -0.051107157, -0.0022608007, 0.031170955, -0.24760152, -0.28433937, -0.12131391, 0.032623406) * inp_1_1_0; result0 += M4(0.21239252, 0.23945704, 0.024043579, 0.014504608, 0.20598255, -0.067947455, 0.040473804, 0.044428293, -0.3440289, -0.4316735, 0.024943529, 0.16416211, 0.11160529, -0.36807394, -0.07830294, 0.072336) * inp_1_2_0; result0 += M4(-0.3195053, -0.07976958, 0.036306683, -0.04592081, -0.09647929, 0.071587354, -0.14849941, 0.024569364, -0.099915326, -0.17369922, -0.06091567, 0.22157097, -0.25267142, 0.53701556, 0.12790658, 0.22127734) * inp_1_0_1; result0 += M4(0.16597632, -0.3883389, 0.062432997, 0.0972214, -0.1012063, 0.24494895, 0.03021673, 0.055670854, 0.06526557, 0.376742, 0.14340974, -0.017072873, 0.82189465, -0.72293985, -0.17981033, 0.21233626) * inp_1_1_1; result0 += M4(-0.1554899, 0.072184615, -0.10651488, -0.13018824, -0.22245629, -0.02320029, -0.1301921, 0.09648234, -0.16562808, 0.1294773, -0.083390065, -0.15823917, 0.40660805, 0.35197434, -0.04920767, 0.13327275) * inp_1_2_1; result0 += M4(0.067358494, 0.1422477, -0.040133163, 0.15110382, 0.09869929, -0.1186245, -0.07280646, 0.045959, 0.26460668, 0.12264547, -0.17942318, -0.2744159, 0.08971925, 0.17894845, -0.20504197, 0.087156005) * inp_1_0_2; result0 += M4(0.062161084, -0.08590047, 0.09589357, -0.13281456, 0.06829809, 0.0038718758, -0.006420576, 0.14728442, -0.010126074, 0.024393238, 0.013223916, 0.1758939, -0.17036694, -0.117363565, 0.20420311, -0.7380523) * inp_1_1_2; result0 += M4(-0.12145109, 0.19941732, -0.17008834, -0.00993392, 0.100649364, -0.0273662, -0.074412584, -0.12564808, 0.24122696, -0.4416123, 0.10973637, -0.03245888, -0.026124878, -0.35949913, 0.0060206624, -0.13740945) * inp_1_2_2; result1 += M4(-0.28135556, -0.12816247, 0.00927565, -0.030700523, 0.22488168, 0.386275, 0.01973531, 0.17973566, 0.017611176, 0.10182039, 0.21578212, -0.12072406, 0.038129807, -0.14172035, -0.38661945, -0.19367541) * inp_1_0_0; result1 += M4(0.10880221, 0.055308077, -0.06206928, -0.029075285, -0.21985433, 0.09760715, 0.1276963, -0.091291204, 0.11252581, -0.12605639, 0.08176556, 0.2329171, 0.09660159, -0.19551134, -0.032634694, 0.014902469) * inp_1_1_0; result1 += M4(0.04362259, 0.12093586, 0.10058922, -0.063211896, -0.03063525, -0.0718177, 0.10151616, -0.022002267, -0.12977113, 0.23369296, -0.18637884, 0.057102527, 0.077546895, -0.1827628, -0.07219268, 0.0064451615) * inp_1_2_0; result1 += M4(-0.024441756, -0.553644, 0.06287459, -0.39883167, 0.11990106, 0.41468042, -0.0017531842, 0.46919948, -0.0012697089, -0.14614597, -0.15402654, 0.029650608, -0.20866051, -0.43954766, -0.1112078, -0.5234324) * inp_1_0_1; result1 += M4(0.35144472, 0.045526616, -0.13527188, 0.16952574, -0.27335542, 0.043341637, -0.13505663, -0.2790121, 0.13391443, -0.17370008, -0.3792332, -0.21501258, 0.3133178, 0.06883651, -0.1797489, 0.15118234) * inp_1_1_1; result1 += M4(0.25560158, 0.05321205, 0.13950507, 0.0004991885, -0.1313396, 0.0783066, 0.0068611014, -0.13234797, -0.19038996, -0.2294891, 0.14160466, 0.12885077, 0.19642842, 0.007675367, -0.19471245, -0.053894732) * inp_1_2_1; result1 += M4(-0.15511228, -0.48028558, -0.04921662, -0.23800837, 0.27847198, 0.4507508, -0.15230134, 0.90686667, -0.2711042, -0.10576047, 0.12249669, -0.061491553, 0.0017004675, 0.06299976, 0.0014572758, 0.45245677) * inp_1_0_2; result1 += M4(0.12824023, -0.016851334, 0.16660528, 0.17237139, -0.14151968, -0.015689427, -0.3566005, -0.16689284, 0.23887937, 0.28564698, 0.021075096, -0.28045052, -0.025324656, 0.66232055, 0.8608372, 0.10494317) * inp_1_1_2; result1 += M4(0.14335355, -0.06338734, -0.16861156, -0.10027647, -0.22531734, 0.10135416, -0.020022657, -0.011353751, 0.004580195, 0.061768215, 0.18691881, 0.019155096, -0.23340766, -0.0024234657, 0.20248644, 0.13014443) * inp_1_2_2; result2 += M4(-0.049233675, 0.07624638, 0.5943272, -0.4973813, 0.19638538, 0.1301824, -0.19559596, 0.7835108, -0.19312719, -0.14374243, -0.8639567, -0.332298, -0.09658871, -0.0066547515, 0.6415259, -0.43265453) * inp_1_0_0; result2 += M4(-0.009802666, 0.10734677, 0.10694007, -0.12219212, -0.117720164, -0.25703412, 0.0044855676, -0.060265232, -0.15508443, 0.1785984, 0.16359016, 0.11787501, -0.11665248, 0.013285993, -0.12305527, -0.23920149) * inp_1_1_0; result2 += M4(0.002806554, 0.035941083, 0.3120165, -0.04826213, -0.00070391037, 0.0039376477, 0.10031828, 0.004702858, 0.2006178, -0.3198511, -0.124451004, 0.07901495, -0.18674225, 0.116389826, -0.11923203, 0.2916685) * inp_1_2_0; result2 += M4(-0.344682, 0.05420599, -0.22004089, -0.35942814, 0.24399707, 0.033294305, -0.013933306, 0.49081072, -0.018024554, -0.112732194, 1.1986871, -0.16292962, -0.4647388, -0.0348405, 0.7325666, 0.34274232) * inp_1_0_1; result2 += M4(-0.0610491, 0.21420495, -0.37941948, -0.18622869, -0.028356085, -0.26456088, -0.0072727576, 0.06732189, 0.5044612, 0.14536525, 0.22916222, 0.020554094, 0.20533557, 0.12670568, -0.2795911, -0.33917964) * inp_1_1_1; result2 += M4(-0.025338445, -0.070469044, -0.20153823, -0.028335916, 0.11853614, 0.11854914, 0.08299122, -0.05328127, 0.09887266, 0.1621798, 0.04498835, -0.06737825, -0.103590526, 0.0030295858, -0.11298676, 0.20399122) * inp_1_2_1; result2 += M4(-0.05683792, -0.12775756, 0.10930903, -0.2485709, 0.28490776, -0.094419, -0.052627686, 0.51110095, -0.1857649, -0.101588696, -0.8913312, 0.29039064, 0.7538355, -0.5058783, -0.77644837, -0.35420594) * inp_1_0_2; result2 += M4(0.17525502, -0.027327336, -0.040095776, 0.15332663, 0.2014526, -0.15496026, -0.17634419, 0.16050106, -0.07231266, 0.026510946, 0.090528615, 0.0887035, -0.38730365, 0.26286322, 0.003408012, 0.09772113) * inp_1_1_2; result2 += M4(0.022287218, -0.06052322, -0.059281927, 0.09664877, -0.05997564, -0.06534206, -0.0085624745, -0.010010594, -0.15282108, 0.0897475, 0.20933409, -0.023187436, -0.15313812, -0.058947094, -0.027878197, 0.12843025) * inp_1_2_2; result3 += M4(-0.003937112, 0.20518094, 0.0771354, 0.22444329, 0.015456235, -0.14577457, -0.12894447, -0.26506206, -0.021203775, 0.22630781, 0.4215828, 0.022456495, -0.09813322, -0.004733638, -0.75888735, 0.23814158) * inp_1_0_0; result3 += M4(0.08484186, 0.09765581, -0.12786573, 0.04304014, 0.11042919, -0.073823884, -0.046802975, 0.12905926, 0.12202273, 0.0751209, 0.34729373, -0.12610886, 0.032995537, 0.12921229, -0.0771964, -0.06711353) * inp_1_1_0; result3 += M4(-0.11231961, -0.014345472, -0.09755642, 0.0691713, -0.16038203, -0.03166293, 0.055798847, 0.028752662, 0.24725763, -0.076151825, -0.07436464, 0.012708381, -0.080829926, -0.26522171, 0.5869011, 0.016710358) * inp_1_2_0; result3 += M4(-0.009824536, 0.4414048, 0.041395355, 0.29336882, 0.08076516, -0.31064475, 0.12232841, -0.70193213, 0.14592314, 0.12272991, -0.5437079, 0.5466381, -0.15448089, 0.09042498, -0.61157215, 0.5307504) * inp_1_0_1; result3 += M4(-0.38973585, -0.012058615, -0.28255755, -0.052824855, 0.5554622, 0.078037836, 0.10585126, 0.26542544, -0.5771, 0.03181366, -0.12324723, -0.13891238, -0.720254, -0.050401688, -0.35769227, -0.45199102) * inp_1_1_1; result3 += M4(0.102019, 0.047530636, 0.090028346, 0.026745815, -0.15680729, -0.07535496, -0.029383676, 0.07378927, -0.025229298, -0.03338073, -0.04558827, 0.03267436, 0.36043796, -0.111484595, 0.32140726, -0.15194793) * inp_1_2_1; result3 += M4(0.015359823, 0.26671103, 0.029142445, -0.039014213, -0.08441585, -0.28824437, -0.010497031, -0.07560036, -0.059462238, 0.0667989, 0.22906078, -0.13750127, 0.08830839, 0.16389841, 0.25235716, -0.0016899604) * inp_1_0_2; result3 += M4(-0.061489914, -0.06748909, -0.0881657, -0.087360255, 0.16706166, 0.047119148, -0.16092622, 0.059784472, 0.053314257, -0.057572514, 0.08156234, -0.16042168, 0.21837589, -0.12367881, 0.42022827, 0.045596555) * inp_1_1_2; result3 += M4(0.07094984, 0.06026726, 0.24728064, 0.09497892, -0.022198712, -0.039015375, -0.10837422, -0.0033036652, 0.12734449, -0.1693527, -0.21206689, -0.05497136, 0.08475184, 0.38159713, 0.3236589, -0.041645885) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.04256589, -0.057455104, -0.06830638, 0.028153414, -0.13453066, 0.3233903, 0.015354678, -0.06444584, 0.3535047, 0.30708677, 0.003478761, -0.06716999, 0.80240256, 0.07171388, -0.01578971, 0.0011206177) * inp_2_0_0; result0 += M4(-0.6215379, -0.13642943, -0.07038322, 0.028909327, -0.016444681, -0.43158504, -0.025068643, -0.058017276, -0.005782409, -0.34137353, 0.09650508, -0.0037514556, -1.0238092, -0.16122559, 0.080625445, 0.035137672) * inp_2_1_0; result0 += M4(-0.22383825, 0.06208253, 0.11904405, 0.009952994, -0.1726713, 0.28898552, 0.022168713, -0.019437267, -0.62385464, -0.15004987, -0.18408431, 0.084049694, 0.3748493, 0.04143139, 0.065086745, 0.011626021) * inp_2_2_0; result0 += M4(0.0681582, 0.15099499, -0.020080687, -0.08308803, 0.16801971, -0.02431179, -0.09278321, -0.04697907, 0.04219066, -0.38023704, 0.12985593, -0.13566418, -0.20360187, 0.055301666, 0.17993948, -0.06442777) * inp_2_0_1; result0 += M4(-0.15837732, 0.38881418, 0.07222065, -0.3140311, -0.043131277, 0.116664514, 0.22358127, -0.5472262, -0.120311, 0.656539, 0.110623546, -0.34707507, 0.22051187, 0.23214042, -0.21843024, -0.14680062) * inp_2_1_1; result0 += M4(-0.020893915, 0.13086872, 0.10491547, -0.025550606, 0.1642857, -0.06431928, -0.068545826, -0.09408776, -0.0079795765, -0.14702086, -0.07562156, 0.10728752, -0.06257845, 0.14527969, -0.049221072, -0.0403216) * inp_2_2_1; result0 += M4(0.18161918, 0.005507461, -0.22721958, 0.1343501, -0.023941755, -0.03335047, -0.0051088985, 0.043421045, -0.02302553, 0.043418597, 0.02055797, 0.05089006, -0.08592344, 0.048256554, -0.054654334, 0.16824429) * inp_2_0_2; result0 += M4(-0.35490534, 0.08330619, -0.20484953, 0.652395, -0.20682874, 0.1851495, 0.12962595, 0.33940095, 0.055719107, 0.09425895, -0.18304382, 0.4282745, 0.0847327, -0.20704931, 0.10640055, -0.069394365) * inp_2_1_2; result0 += M4(0.09720971, -0.12941816, -0.08807019, -0.024312679, -0.084365055, 0.10128916, 0.08543042, 0.16308177, 0.18713482, -0.02709877, -0.13666499, 0.01343782, -0.030675972, -0.12788153, -0.045268264, 0.034257524) * inp_2_2_2; result1 += M4(-0.036231466, -0.14906812, -0.2163495, -0.10882328, 0.22017871, 0.33300683, 0.07531597, 0.107529216, -0.12212555, 0.083151855, 0.064100824, 0.09794713, -0.11281679, -0.068207875, -0.17347954, 0.11023207) * inp_2_0_0; result1 += M4(-0.11195457, 0.2016229, 0.12216203, 0.059058607, 0.07945666, 0.042394236, 0.21238974, -0.052221227, 0.094267204, -0.032677133, -0.084101684, -0.05460863, 0.11467904, 0.16121325, -0.06239751, -0.044531323) * inp_2_1_0; result1 += M4(0.028809708, -0.021367587, -0.087872215, 0.038153876, -0.077661544, 0.15180334, -0.047604185, -0.03892173, -0.16222112, -0.24894848, 0.07964237, 0.01986771, -0.11237971, -0.1332938, 0.105184644, -0.0797653) * inp_2_2_0; result1 += M4(0.06185562, 0.1519082, 0.028662642, -0.16989267, 0.16693884, 0.26041088, -0.007960158, -0.08790256, -0.123384945, 0.09140101, 0.016889561, 0.40687114, 0.030363439, 0.0464328, 0.106285945, -0.3460825) * inp_2_0_1; result1 += M4(-0.12505542, 0.4162586, 0.7731857, -0.029213076, -0.10355075, -0.112495385, 0.8156627, -0.07321731, 0.17511988, 0.11721996, 0.269587, -0.33248976, 0.15019023, -0.02579184, 0.3494378, 0.30933464) * inp_2_1_1; result1 += M4(0.3372204, -0.04602336, 0.018593347, 0.105547234, -0.3578493, -0.040491406, 0.1939867, -0.100538254, -0.25041017, 0.22854389, 0.26645324, 0.22165963, -0.124315895, -0.11459741, -0.08444975, 0.061610438) * inp_2_2_1; result1 += M4(0.21170476, -0.12291494, -0.15248169, 0.5043646, 0.14793558, 0.44562092, -0.18776904, 0.61066365, -0.10331699, -0.16002, -0.1020626, -0.105272144, 0.10265581, -0.36314335, -0.0660128, -0.23896961) * inp_2_0_2; result1 += M4(-0.17790489, -0.23951584, -0.37370497, 0.0356182, 0.09734611, -0.1663252, -0.5072115, -0.15187462, 0.46584716, -0.027298084, -0.4809559, -0.49998984, 0.06355988, 0.3243632, -0.08185578, -0.22161166) * inp_2_1_2; result1 += M4(0.27707264, -0.21105018, 0.0097964285, 0.117886774, -0.30207288, -0.1219943, -0.13568902, 9.984351e-05, -0.22822943, -0.35758457, -0.18161775, -0.025896693, -0.12328529, 0.12755047, 0.019568041, 0.11820903) * inp_2_2_2; result2 += M4(-0.11335045, -0.025213715, 0.3671941, -0.12569606, -0.0051200357, 0.10751498, 0.09835993, -0.21690853, 0.0011747455, -0.021246804, 0.37144434, 0.07385224, 0.008402882, 0.020230591, 0.827837, -0.56288654) * inp_2_0_0; result2 += M4(0.15004873, -0.09135614, 0.29311728, -0.82372725, 0.022060936, -0.06908088, -0.0038261623, -0.28900442, 0.0905421, -0.2562806, -0.43103755, 0.38759932, 0.11651572, 0.074125625, -0.38517615, 0.16932015) * inp_2_1_0; result2 += M4(0.017451392, 0.018631706, -0.22355828, -0.1470231, -0.10252976, -0.024352403, -0.073887445, -0.0031583635, -0.06174607, 0.112180546, -0.36698282, -0.6632088, -0.008145327, 0.004830594, -0.11721002, -0.1682484) * inp_2_2_0; result2 += M4(-0.011466107, -0.106991515, -0.21494715, 0.52026767, -0.13161404, 0.010299678, -0.20411071, 0.503436, -0.17195503, -0.0058013564, 0.4650719, -0.040354647, -0.09180797, 0.0007297521, -0.10614017, -0.23464453) * inp_2_0_1; result2 += M4(-0.33346987, -0.22299486, 0.061982702, 0.006013611, -0.44580674, -0.562892, -0.17729159, -0.09291823, -0.30597338, -0.66905504, 0.12532339, -0.09183773, -0.10309008, -0.03468434, 0.27397063, -0.16231245) * inp_2_1_1; result2 += M4(-0.19724974, -0.08496188, 0.0011250651, -0.07520479, 0.0072138174, 0.5876949, 0.21044241, 0.05994929, 0.17310944, 1.0155437, 0.36958796, -0.07705592, 0.13091235, 0.049728945, -0.08027103, 0.11413017) * inp_2_2_1; result2 += M4(0.1909451, -0.12837456, 0.22771415, 0.04871107, 0.25626042, 0.02452896, 0.08886128, 0.2882254, 0.003841777, -0.17768013, -0.11193124, 0.3361758, 0.12997533, -0.01598741, -0.40701142, 0.521639) * inp_2_0_2; result2 += M4(0.16306807, -0.002806859, -0.13454999, -0.0056483746, 0.2839354, -0.18097976, -0.1070421, 0.11069419, 0.4585172, 0.10414988, -0.50817287, 0.112123184, -0.031525154, -0.14773846, -0.098570555, 0.17056462) * inp_2_1_2; result2 += M4(-0.06377533, -0.056361195, -0.17087704, -0.19114155, 0.09501997, -0.086990006, -0.09350347, 0.112091735, -0.15213396, -0.06673392, -0.009524402, -0.035332825, -0.17942019, 0.117086336, -0.036675766, 0.0991752) * inp_2_2_2; result3 += M4(0.014119788, -0.1530021, -0.6598784, -0.091743246, 0.018681834, -0.14561804, -0.31938064, -0.28336397, 0.11773402, 0.0025194823, 0.17376806, -0.0811908, 0.105849914, -0.03490986, -0.021561904, -0.0465419) * inp_2_0_0; result3 += M4(0.17632496, -0.08657579, -0.16508013, 0.020691633, 0.23183344, -0.0486193, -0.17594159, 0.21328422, 0.13976601, -0.082881905, 0.38331172, -0.13637252, 0.06801605, -0.015394584, -0.11746331, -0.037952013) * inp_2_1_0; result3 += M4(-0.022896415, 0.11427195, 0.20661731, 0.029985474, -0.18118405, -0.05405648, -0.055975348, 0.09334181, -0.2557824, 0.13265432, -0.35544857, -0.101789705, -0.18965301, -0.072978824, -0.12240515, 0.072280906) * inp_2_2_0; result3 += M4(0.027696144, -0.13659404, -0.06610506, -0.8094958, 0.09747878, -0.11860859, -0.122414544, -0.4385381, -0.043527514, -0.05696309, 0.24627087, -0.26857823, -0.117713176, 0.3527726, -0.08570979, 0.23120539) * inp_2_0_1; result3 += M4(0.4373875, 0.037771374, 0.16940808, 0.105403505, 0.4451534, -0.35812908, 0.36439842, 0.69717586, 0.44700873, 0.14630258, 0.4997357, 0.97220594, -0.16700475, 0.019925851, -0.002722085, 0.11854253) * inp_2_1_1; result3 += M4(-0.059275504, -0.11808826, -0.097337954, 0.09735979, -0.7800526, 0.026558975, -0.22243494, -0.047459606, -0.906691, 0.21794005, 0.054156896, -0.0005618425, -0.2941001, 0.22645539, 0.074148886, -0.06827897) * inp_2_2_1; result3 += M4(-0.007425815, -0.15388812, 0.09830762, -0.21780552, 0.04366427, -0.28495625, -0.02364972, -0.18639018, 0.05241361, 0.10373086, -0.044158325, -0.032220438, 0.13479304, 0.04220594, 0.2876808, -0.113212444) * inp_2_0_2; result3 += M4(0.13081087, 0.29609486, -0.03609108, 0.13262877, 0.17139214, 0.3003695, -0.20718391, 0.23271501, 0.08192247, 0.39061674, -0.4763785, -0.26967633, 0.23024836, 0.12394194, -0.18859734, -0.073349416) * inp_2_1_2; result3 += M4(0.05887159, 0.1196755, -0.057659592, -0.1150622, -0.19209923, -0.13486893, -0.19202618, 0.06622768, 0.34750268, -0.2136066, -0.39501864, -0.003059928, 0.0751871, -0.33428118, 0.28953603, 0.1440403) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.36733896, 0.120810606, 0.084899135, -0.028072964, 0.58045185, -0.5477673, 0.102736555, 0.06085384, 0.068501554, -0.0042644823, 0.03544245, 0.0010101774, -0.00038007152, 0.16129111, -0.021748044, -0.009229226) * inp_3_0_0; result0 += M4(-0.27063042, -0.2945645, -0.05429445, -0.002818667, -0.3165862, 0.52556133, 0.03202137, 0.07269957, 0.19721422, -0.10747914, -0.035504896, -0.033914234, 0.061880335, -0.10455108, 0.006557116, -0.006734313) * inp_3_1_0; result0 += M4(0.283182, 0.08580259, -0.048522368, -0.0049355673, 0.34447473, -0.2235491, 0.233089, -0.23166, -0.07998459, 0.061613023, -0.016412698, 0.025180481, 0.27358752, -0.058879122, 0.05629695, -0.00032032022) * inp_3_2_0; result0 += M4(0.0016162104, 0.2208067, 0.038591713, -0.0027431601, 0.14541058, -0.20831224, -0.05712121, -0.107557245, -0.23516478, -0.049775254, 0.009276127, -0.03422157, 0.00917975, -0.03533405, -0.059446186, -0.050248377) * inp_3_0_1; result0 += M4(0.17984483, -0.03548409, 0.010735302, -5.0572207e-06, -0.4356768, 0.4133662, 0.092765875, 0.062441394, -0.41980788, 0.32264143, 0.074597746, 0.0069589824, -0.2225897, 0.052410778, 0.04569102, 0.072676964) * inp_3_1_1; result0 += M4(0.09299636, 0.15732586, -0.12247365, 0.041281838, -0.3666079, -0.18871637, -0.07472081, -0.08081123, 0.034227867, 0.044430524, -0.020448327, 0.12622808, -0.16463344, 0.10628103, 0.06670773, -0.021752916) * inp_3_2_1; result0 += M4(-0.11205389, 0.025732514, -0.01889727, 0.02386973, -0.111382045, 0.07972818, 0.07216562, -0.015585743, -0.09733908, -0.16276105, -0.085274786, 0.2808239, -0.07114288, 0.08995623, -0.0025133071, 0.11433572) * inp_3_0_2; result0 += M4(0.011182446, -0.04633337, 0.07153742, -0.56337124, 0.079070225, 0.13485742, -0.003328262, 0.3187381, 0.28463763, 0.012214205, -0.11977827, 1.328281, -0.017695827, 0.06272347, -0.060600247, 0.35486153) * inp_3_1_2; result0 += M4(-0.059007995, -0.0486234, -0.054655418, -0.11612161, 0.06235292, 0.09959283, -0.007318094, -0.08154405, -0.21751298, 0.022487422, -0.041354567, 0.2423481, -0.08487634, 0.011618974, -0.15818954, 0.18793553) * inp_3_2_2; result1 += M4(0.087050386, -0.013101368, 0.020112365, 0.04126226, -0.040389463, -0.10932573, 0.039049413, 0.06047448, -0.09316205, 0.1501985, 0.07612376, 0.08054575, 0.028132364, 0.05440732, 0.04248651, 0.0024384963) * inp_3_0_0; result1 += M4(-0.13326192, -0.052144784, -0.11060846, 0.0069459183, 0.09303126, 0.10168996, 0.072195575, 0.09111128, 0.060679317, -0.18648992, -0.076170094, -0.03236784, -0.26902756, -0.024043873, -0.009808308, 0.0392216) * inp_3_1_0; result1 += M4(-0.15908085, -0.101779796, 0.019627985, -0.0059587774, -0.21808574, 0.13117538, 0.1700561, -0.13529965, 0.0760653, -0.07204112, 0.0032713704, -0.036415305, 0.1994302, -0.035535507, -0.06429976, -0.0641242) * inp_3_2_0; result1 += M4(-0.004247483, 0.06709388, -0.05056652, 0.014545234, 0.27318817, -0.033956327, 0.19839963, -0.29083025, -0.26351207, 0.119596906, -0.010406042, 0.2588444, 0.1715634, 0.40474936, 0.0077148206, 0.43221804) * inp_3_0_1; result1 += M4(0.015562583, 0.018381853, 0.031486876, 0.080674455, -0.10923078, -0.032922465, 0.0021654787, 0.14775035, 0.021890922, -0.023405684, -0.11393657, -0.17932554, -0.3393822, 0.017793195, -0.0038569567, 0.048247334) * inp_3_1_1; result1 += M4(-0.026548184, -0.0025165165, 0.019464469, -0.03435614, -0.13774167, -0.2954069, 0.07725382, -0.09149756, 0.05516587, -0.032015447, 0.025228364, -0.0884544, 0.44068035, -0.005208149, 0.0576721, 0.012988196) * inp_3_2_1; result1 += M4(0.22042967, 0.31159514, 0.010285914, -0.049223058, 0.03164284, 0.2913916, -0.21184978, 0.4234152, 0.042843617, -0.8194387, -0.2179851, 0.2484293, 0.13648565, 0.110752456, -0.102725744, 0.39072388) * inp_3_0_2; result1 += M4(-0.07868454, 0.27120113, 0.44518745, 0.09819454, -0.18598305, -0.109068334, -0.38941643, -0.31572193, 0.5540453, -0.58171237, -0.93838793, -0.18796712, -0.29500878, -0.1537398, -0.122371465, -0.034472127) * inp_3_1_2; result1 += M4(-0.34090087, 0.06819797, 0.08022741, -0.011128243, 0.056417484, 0.14106189, -0.035492904, 0.045753032, 0.09714292, -0.28570873, -0.20885797, -0.05838821, 0.22791803, -0.17815742, -0.08708903, -0.031971667) * inp_3_2_2; result2 += M4(0.07528634, 0.056914855, 0.3357625, 0.19819817, 0.1117035, 0.17949508, 0.5139318, 0.18172126, 0.029876312, 0.011749594, -0.1879228, 0.29973686, -0.011746552, 0.031295277, 0.0036273622, 0.37291732) * inp_3_0_0; result2 += M4(0.086676516, -0.14179832, -0.10243249, -0.2772307, -0.12399953, 0.009510642, 0.26634774, -0.2902253, -0.08497385, -0.05849101, 0.057382982, 0.11190744, -0.003680814, -0.17920208, -0.007929802, 0.0121696545) * inp_3_1_0; result2 += M4(0.026872164, 0.30696696, 0.14890791, 0.16337602, 0.043986723, -0.08839631, 0.18021278, -0.4037058, 0.0085887285, 0.14331272, 0.022644548, -0.02593269, 0.12717476, 0.076925576, 0.0073064123, -0.1514839) * inp_3_2_0; result2 += M4(0.010491974, 0.006603315, -0.2939137, 0.04346714, 0.06654275, 0.20050405, -0.7691973, 0.08986719, 0.061388206, -0.12497501, 0.054427598, -0.07592876, 0.02049452, 0.11166367, -0.012802268, -0.02991804) * inp_3_0_1; result2 += M4(-0.117665276, -0.19609526, -0.26507315, -0.40971586, 0.17483136, -0.3138603, 0.109883465, 0.15247495, -0.11987127, 0.0718994, -0.022102179, 0.012642869, 0.052514356, -0.3338702, 0.016238265, 0.0882079) * inp_3_1_1; result2 += M4(-0.075426586, 0.0020331217, 0.032401416, -0.07776315, -0.06959914, -0.025238512, -0.2852096, 0.23582622, 0.11023071, 0.21111937, 0.13035461, -0.22710322, -0.12871753, -0.14268084, -0.10943566, 0.03911101) * inp_3_2_1; result2 += M4(0.04201086, -0.012963195, -0.19543609, 0.23719908, -0.01822625, 0.08628927, 0.39169812, 0.49805897, 0.11436396, -0.076317996, 0.18112947, -0.11262559, 0.0988932, -0.014426385, 0.13314663, 0.07347384) * inp_3_0_2; result2 += M4(-0.38043627, -0.12105403, -0.006394758, 0.16891451, 0.24906819, -0.057784002, -0.63066626, -0.15083745, 0.6196228, 0.16497311, 0.014231588, 0.05832787, 0.14861208, -0.14694726, 0.15849775, -0.007124366) * inp_3_1_2; result2 += M4(-0.3422523, -0.07228249, 0.095834956, 0.124101296, -0.11579715, 0.09673993, 0.24788864, -0.10846484, 0.21629424, -0.10218765, -0.1534286, -0.024911365, 0.12003127, 0.17081514, -0.02727458, -0.054370027) * inp_3_2_2; result3 += M4(-0.014016412, -0.057688944, -0.23767973, -0.0042918627, -0.09724506, -0.14070433, 0.14162341, 0.15542637, 0.012835791, -0.0182825, 0.07499818, -0.0998408, -0.014563157, -0.05807377, -0.0563918, -0.108260915) * inp_3_0_0; result3 += M4(0.08225181, -0.051668856, 0.048101787, 0.056275327, -0.05759994, -0.10425215, -0.34610695, 0.13427754, -0.038864583, 0.06722829, 0.15202336, 0.07506117, 0.17922252, 0.021899644, -0.107949354, 0.014223094) * inp_3_1_0; result3 += M4(-0.17685114, 0.057714254, -0.049130324, -0.03531577, -0.11131168, 0.07395846, -0.14475478, 0.23751749, -0.0551351, -0.036253937, -0.09095827, -0.021309597, 0.08938964, 0.04510626, -0.059612796, 0.0012349022) * inp_3_2_0; result3 += M4(-0.024774944, 0.20790052, 0.26872668, -0.0055432892, -0.028913742, 0.100962944, 0.1675351, -0.3844909, 0.13165843, -0.074256234, 0.025744213, -0.20890085, 0.082699485, -0.08460016, 0.03841593, -0.33188286) * inp_3_0_1; result3 += M4(0.17984228, 0.0034355298, -0.09214733, 0.20278285, 0.5258057, 0.053825684, 0.11324444, -0.08533413, 0.107915334, 0.121682934, 0.23985231, 0.18787254, 0.11089688, 0.005891157, -0.036705274, -0.54158276) * inp_3_1_1; result3 += M4(-0.1323219, 0.13006851, 0.20881477, 0.054278195, -0.08418863, -0.02641181, -0.042478006, 0.04165338, -0.3312497, 0.043345805, -0.27341872, 0.1446856, 0.16269426, 0.0767148, 0.24633065, 0.005798494) * inp_3_2_1; result3 += M4(0.06175354, -0.24067125, -0.24053709, -0.13607691, -0.012343404, -0.31307408, 0.23478378, -0.13953167, -0.005355255, 0.3151781, -0.18303783, -0.05388655, 0.09315305, -0.11180035, -0.15579537, -0.12870575) * inp_3_0_2; result3 += M4(0.052649803, -0.5878427, 0.19687527, -0.1324409, -0.080810875, 0.10021459, -0.46023566, 0.085872315, 0.11035065, 0.54093903, -0.35209057, 0.1029219, 0.09381203, 0.06549493, 0.024630984, -0.01802107) * inp_3_1_2; result3 += M4(-0.13794418, -0.09692936, 0.23778026, 0.108607806, -0.0047125355, -0.14283699, 0.20700337, 0.011474833, -0.17936805, 0.09877261, -0.23130193, -0.019650206, -0.03225095, 0.13196756, -0.05216315, 0.05364758) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0))); imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0))); } //!DESC ArtCNN C4F16 DN (Conv2D-2-ReLU) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND conv2d_1 //!SAVE conv2d_2 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(0.03909646, -0.004505271, 0.012983942, 0.026891395); V4 result1 = V4(0.041329455, 0.054632217, -0.015681814, 0.04566188); V4 result2 = V4(0.028717848, 0.054259814, 0.024503466, 0.019481014); V4 result3 = V4(-0.01950534, -0.015496908, 0.039383724, 0.00995921); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.02440927, 0.11754341, -0.06463376, 0.012533597, 0.018102981, 0.013319773, -0.029489769, -0.017739726, -0.10715741, 0.4366363, -0.060514566, -0.049784467, -0.028661227, -0.1262117, -0.0020947, -0.06646608) * inp_0_0_0; result0 += M4(-0.048752658, -0.17673871, 0.041007068, 0.017514301, -0.046728212, -0.15553582, -0.057974696, -0.011551316, 0.15017612, -0.22056383, -0.020404551, -0.071739115, -0.1809755, 0.3534336, 0.06647351, 0.16188721) * inp_0_1_0; result0 += M4(0.07888512, 0.08307376, 0.0483718, -0.011193644, -0.10661755, 0.12312801, -0.044594016, -0.020152, 0.050946027, -0.14507155, -0.0274148, 0.06933024, 0.0051011075, 0.04069506, 0.110716105, -0.029168531) * inp_0_2_0; result0 += M4(0.051297415, -0.20294258, 0.1337975, -0.012469544, 0.04685022, -0.056453686, 0.037336614, 0.005908606, 0.11399091, 0.18280078, 0.06590393, 0.08047819, -0.00018236927, -0.12257621, -0.018057104, -0.08690345) * inp_0_0_1; result0 += M4(-0.15180169, 0.36170676, -0.21996455, -0.09820703, -0.030552538, 0.057694733, 0.059468906, 0.07578781, -0.072388835, -0.09882225, -0.009585016, 0.09183813, -0.57449245, 0.08770197, -0.25731835, -0.04208811) * inp_0_1_1; result0 += M4(0.0434462, -0.13199183, 0.0804316, 0.089122415, -0.036931343, 0.20584461, 0.057138387, 0.05769624, -0.12585095, -0.06620342, -0.0044036433, -0.057915125, -0.58514696, 0.035301942, 0.077177316, 0.08770613) * inp_0_2_1; result0 += M4(0.06482732, -0.27184904, 0.1455255, 0.04302426, -0.0007465947, -0.023756802, 0.03880538, 0.014991691, 0.012131236, 0.036687985, -0.02731188, -0.1186913, 0.036057197, -0.27123633, 0.056178674, -0.029574448) * inp_0_0_2; result0 += M4(0.41464543, -0.42153788, 0.32305166, 0.46518198, -0.016301902, 0.08875886, 0.13891508, 0.03171341, -0.29737934, -0.050235823, -0.18061309, -0.07702682, 0.015756825, 0.0257382, 0.049465246, 0.013565939) * inp_0_1_2; result0 += M4(-0.3664773, -0.019989902, -0.33244714, -0.058345307, 0.046463378, 0.031554125, 0.011809284, 0.006650318, 0.1822308, 0.08917091, 0.10801117, 0.037158206, -0.33611676, 0.03688645, 0.018101992, -0.009498678) * inp_0_2_2; result1 += M4(0.11749309, -0.04482457, 0.021205656, 0.06133069, 0.0708238, 0.1466561, 0.05993039, 0.0065919133, -0.09735079, -0.054327242, 0.008364522, -0.06455671, -0.37437946, -0.16363223, -0.00419691, 0.3280814) * inp_0_0_0; result1 += M4(-0.12362751, -0.11176043, 0.03306611, -0.034291547, 0.011423073, 0.05345054, 0.11317504, 0.042010374, 0.12983204, -0.19023292, 0.15258941, -0.060436796, -1.462679, -0.51041776, 0.056788865, -0.09006912) * inp_0_1_0; result1 += M4(0.062058568, 0.20188984, -0.045832906, 0.037396107, 0.1055154, -0.029369133, -0.003626663, 0.086317055, -0.02834214, 0.36966154, -0.063973084, 0.2352488, -0.08492764, -0.21444978, -0.22300793, 0.10421281) * inp_0_2_0; result1 += M4(-0.07308949, -0.019476315, -0.14322327, 0.16887446, 0.18664466, 0.2679502, 0.06154644, -0.013832591, 0.04753997, -0.22159791, 0.108560055, -0.072306864, -0.17060934, -0.027640646, -0.07024213, 0.090557575) * inp_0_0_1; result1 += M4(-0.05689413, 0.12760733, 0.42274916, -0.16359092, 0.14861414, 0.3057243, 0.16690418, 0.055979155, -0.0538172, -0.089299604, -0.55645007, -0.6041546, -0.6507816, -0.34928736, 0.18818633, 0.42379308) * inp_0_1_1; result1 += M4(0.111729376, -0.12801322, -0.2342129, 0.080871485, 0.14011738, 0.3598516, 0.045143664, -0.078103095, 0.060249392, 0.42706493, 0.22994184, 0.32568684, -0.13819557, -0.25471863, 0.07110611, 0.021921877) * inp_0_2_1; result1 += M4(-0.16151632, -0.38663536, 0.13579574, 0.34884, 0.13509597, 0.20217174, 0.0826196, 0.016339105, -0.20061478, -0.018301496, -0.026964054, 0.056319073, -0.0384226, 0.009198581, -0.10160979, 0.024110269) * inp_0_0_2; result1 += M4(-0.3580269, -0.10945165, -0.79502887, -1.0808681, 0.08034371, -0.00019505927, 0.0660563, 0.06509454, 0.19992088, -0.16659474, 0.12616025, -0.06528491, -0.20889403, -0.04633464, -0.013882045, -0.3090062) * inp_0_1_2; result1 += M4(-0.10499065, 0.85637033, 0.2520677, 0.047252323, 0.18033579, 0.3353768, 0.035979122, -0.036911834, -0.015019046, -0.13328336, 0.063115984, 0.067050196, 0.13884822, -0.118288524, -0.0032560786, 0.085100934) * inp_0_2_2; result2 += M4(-0.0126198465, -0.0734874, -0.027395954, -0.0853285, 0.051168174, -0.02705187, 0.094908305, 0.16864067, -0.12344986, 0.09450904, -0.14364678, 0.05745028, 0.097139254, 0.16953447, -0.061624736, -0.3991716) * inp_0_0_0; result2 += M4(0.00921471, 0.06805091, 0.01030922, 0.04093222, -0.011051648, -0.020967891, 0.22419278, 0.0028383813, 0.07282784, -0.013201253, 0.0348395, -0.017543519, 0.08957112, 0.053494245, -0.17745622, -0.11878433) * inp_0_1_0; result2 += M4(0.07095997, -0.026192164, 0.049144126, 0.00052876986, -0.13303173, -0.047635056, 0.030952554, -0.05956805, 0.028867906, -0.1572823, -0.15248808, 0.06508216, 0.14638136, 0.067401476, -0.045208734, -0.2219912) * inp_0_2_0; result2 += M4(0.25552365, 0.06325234, -0.022327002, -0.009345007, 0.001329789, -0.057297945, 0.05957314, 0.17732276, -0.14024484, -0.09320315, -0.20933586, 0.048950456, 0.18000115, 0.0845512, -0.3985899, -0.1502637) * inp_0_0_1; result2 += M4(0.034084763, -0.27535194, 0.14564724, -0.0080224965, -0.15015432, 0.024011653, -0.040758032, 0.15372778, 0.0192831, -0.19247982, -0.3727847, -0.19563217, 0.12739773, -0.30046487, -2.2175372, -0.211632) * inp_0_1_1; result2 += M4(-0.22951029, 0.1351793, -0.085167915, -0.0074958974, 0.014629496, -0.2047836, 0.16958025, 0.095209494, -0.10398618, 0.22653079, -0.23317987, 0.041523606, 0.17875288, 0.083442956, 0.18114457, -0.30996907) * inp_0_2_1; result2 += M4(-0.10852791, -0.21087286, -0.0066274256, -0.44991815, -0.016353535, -0.15328182, 0.18231137, 0.17082796, 0.31353503, 0.09286742, -0.11985553, 0.22782911, -0.16178475, 0.047187667, -0.01489025, -0.049321964) * inp_0_0_2; result2 += M4(0.20071574, 1.3057673, -0.07988365, -0.43546632, -0.22936541, -0.15252951, -0.015971782, 0.38040942, -0.113343544, -0.31382155, 0.9983107, -0.2917266, 0.124553695, -0.14871721, -0.2745892, -0.3048683) * inp_0_1_2; result2 += M4(0.09837156, -0.5987839, -0.19037445, -0.16338153, 0.04359456, -0.21739283, 0.2381782, 0.28982294, -0.012633304, 0.06560762, 0.18924372, 0.038329646, 0.05656666, 0.023874031, -0.10105941, -0.13315415) * inp_0_2_2; result3 += M4(0.01960529, -0.011593507, -0.036536302, 0.049040895, 0.013677713, 0.010556614, -0.018876687, 0.047845744, -0.03350502, -0.04215747, -0.038327556, 0.0697508, -0.0127441455, 0.021315055, -0.0849465, 0.010319343) * inp_0_0_0; result3 += M4(-0.0057338085, -0.048959874, 0.038667534, -0.026692951, -0.013689571, -0.00884479, -0.04257194, 0.1583491, 0.056050207, 0.0053248806, -0.0011519056, 0.0003284773, 0.07296835, -0.20864008, -0.0022850034, -0.16858852) * inp_0_1_0; result3 += M4(-0.007834832, -0.039387133, 0.0049164942, -0.017396998, 0.02675699, -0.016915016, -0.010707609, 0.06844644, -0.14858186, 0.056976296, -0.0043929643, 0.05093918, 0.15655728, 0.11122824, 0.040920608, 0.09416295) * inp_0_2_0; result3 += M4(-0.010109101, 0.18780567, -0.077785134, 0.01691579, 0.037929032, -0.004217019, 0.04449027, 0.05083806, 0.025105303, 0.15873511, -0.0032121905, -0.023756256, -0.089006335, 0.16530332, -0.041360747, -0.03253172) * inp_0_0_1; result3 += M4(0.25909817, -0.047492925, 0.121079184, 0.100717224, -0.037364703, -0.057012778, 0.09413464, 0.3289494, 0.18611766, 0.0065839416, -0.03337482, 0.021420874, -0.20785086, 0.36919594, 0.45637164, -0.2501767) * inp_0_1_1; result3 += M4(-0.21674378, -0.007988644, -0.03859004, -0.11881898, 0.07572592, 0.0329369, 0.045173235, 0.16704929, 0.19382381, 0.006739837, -0.14585167, 0.08245774, -0.19375148, 0.24940033, 0.027207816, 0.15276702) * inp_0_2_1; result3 += M4(-0.33433664, -0.8812017, 0.023493927, -0.35139126, 0.025615621, -0.3524535, 0.03319005, 0.09156563, -0.022017434, -2.9544747, -0.08004048, 0.060804356, -0.04874923, 0.19946489, 0.04015675, 0.14206173) * inp_0_0_2; result3 += M4(0.24629617, -0.7684075, 0.15194592, 1.1895655, 0.040077683, -0.7937685, 0.10558391, 0.26215798, -0.04908062, -3.123559, -0.0018783193, -0.17312329, -0.052393068, 0.15867758, 0.01149309, -0.14940564) * inp_0_1_2; result3 += M4(0.12201637, -0.07937734, -0.18010414, 0.069006145, 0.0942661, -0.2583284, -0.033501256, 0.14710441, 0.013677819, -2.3417444, 0.14488895, -0.15634546, -0.08041966, 0.2580445, -0.047279548, 0.09213841) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.010942454, 0.09944874, -0.038099464, -0.0035068153, -0.044443708, 0.033071306, 0.057096764, 0.035378825, 0.14191636, -0.41590405, -0.062124513, 0.009347768, -0.008640163, 0.0172865, 0.015726998, -0.024364218) * inp_1_0_0; result0 += M4(0.09658633, 0.012754274, -0.04836428, 0.06653533, -0.099749744, 0.49495235, -0.0067024166, 0.0688448, -0.09610574, -0.45322427, -0.107889794, -0.0295604, -0.005036497, 0.1115163, -0.0354274, -0.08747497) * inp_1_1_0; result0 += M4(0.087985575, -0.03749691, -0.029689398, 0.020252384, -0.03769787, 0.13338475, 0.111861, 0.057815053, 0.13078515, -0.07676194, 0.025330864, 0.04935342, 0.11813498, -0.00037579343, 0.09607195, 0.03745005) * inp_1_2_0; result0 += M4(-0.029052768, -0.012241918, 0.07443995, -0.037203148, -0.16541001, 0.099179186, -0.010523857, 0.032190647, 0.02355864, -0.27200106, -0.023433903, 0.10015448, 0.1542766, 0.055397134, -0.05136382, -0.02538636) * inp_1_0_1; result0 += M4(0.18482365, 0.22372514, -0.026168073, -0.13267456, -0.027272766, 0.06126862, -0.016892115, 0.035903152, 0.2624843, 0.19245523, 0.73426795, 0.30889854, 0.038263354, -0.4166956, 0.02657839, 0.05607328) * inp_1_1_1; result0 += M4(-0.2943818, -0.02884446, -0.08053768, -0.08369378, -0.64114785, 0.012173066, 0.062701, -0.026087305, 0.41329235, -0.064962156, -0.04419734, -0.074548304, 0.4050007, -0.3372549, -0.07987614, -0.010794803) * inp_1_2_1; result0 += M4(-0.09040017, -0.01250534, 0.0707598, -0.011806016, -0.040823992, 0.016528446, 0.008413043, -0.03896818, -0.02583598, 0.0106597915, 0.025649821, 0.052619502, -0.057937264, -0.13386935, 0.052120358, 0.044491354) * inp_1_0_2; result0 += M4(-0.11679213, -0.02718018, 0.18067107, 0.1022573, -0.019883346, -0.007843462, -0.045243546, -0.010437931, 0.20035864, -0.02408216, -0.043721154, 0.00886646, -0.060950287, -0.016365241, 0.088595375, 0.010554224) * inp_1_1_2; result0 += M4(0.25176695, 0.06156835, 0.022066737, 0.06283851, -0.0952694, 0.09550917, -0.03866891, -0.019505467, 0.01132229, -0.12760882, -0.03194661, 0.0064781867, 0.0955626, -0.059972037, -0.0031118277, 0.02775382) * inp_1_2_2; result1 += M4(0.35346833, 0.16302755, -0.19224632, -0.1161477, 0.045230318, -0.025047584, -0.017656136, 0.11737884, -0.034554273, -0.15547289, -0.066790774, -0.2675812, 0.029990593, 0.0117417285, -0.021296734, -0.03733116) * inp_1_0_0; result1 += M4(-0.025646413, -0.08962891, 0.05215609, -0.39653596, -0.052810904, 0.077418156, 0.15208042, 0.11655323, -0.30117962, -0.35941458, 0.14308634, 0.2029073, 0.20133588, -0.0061818566, 0.03345282, -0.44253027) * inp_1_1_0; result1 += M4(0.12650868, 0.034587916, 0.004627745, -0.13341278, 0.1872406, -0.31258598, -0.2168529, 0.2204325, -0.18869215, -0.5661246, 0.11728899, -0.42303234, -0.21961051, -0.11842834, -0.13919923, -0.025098614) * inp_1_2_0; result1 += M4(-0.080008104, 0.3329807, -0.07305105, 0.20045449, -0.050357725, -0.039553504, -0.03886121, 0.070780426, -0.35480216, 0.16503237, -0.021656794, 0.0059471624, 0.115227535, 0.00886256, -0.036431976, -0.0952726) * inp_1_0_1; result1 += M4(0.15694916, 0.06909551, 0.1619984, -0.5557578, 0.09930702, -0.0027064765, -0.20367679, 0.14887923, -0.37142795, -0.2907718, 0.3478417, -0.06613804, -0.11903193, 0.02149074, -0.033953104, 0.22821529) * inp_1_1_1; result1 += M4(-0.16721477, -0.08190961, -0.02493532, 0.44571516, -0.039943814, 0.12512708, 0.108652264, 0.83032733, -0.10091783, 0.014339968, -0.19615686, -0.63110524, 0.0706177, -0.40280434, -0.3864074, -0.07591656) * inp_1_2_1; result1 += M4(0.12817994, 0.03732391, -0.12325779, 0.111811504, -0.019130345, -0.007990465, -0.00025505526, 0.060971685, -0.040297035, 0.082599476, 0.04672714, -0.04050323, 0.05867372, 0.0009782095, 0.0019360143, -0.08505782) * inp_1_0_2; result1 += M4(-0.03251864, 0.03200633, 0.13207147, 0.28494328, 0.01602087, -0.1191387, -0.008163741, 0.31449923, 0.02437599, 0.04256402, -0.020220181, -0.30878797, 0.026483066, 0.048830442, 0.020010727, -0.14318004) * inp_1_1_2; result1 += M4(-0.0324455, 0.08504996, 0.116202675, -0.21581794, 0.111519404, -0.30298898, -0.07813377, 0.3514701, -0.1039361, 0.12205865, -0.024969956, -0.23462017, 0.0021715404, -0.11644608, -0.020121662, -0.35634544) * inp_1_2_2; result2 += M4(-0.07506341, -0.18604699, 0.3643417, 0.05785531, 0.119916804, 0.0043638903, -0.028687544, -0.1384619, 0.07856802, -0.010579915, 0.037722453, 0.060087115, 0.06493423, -0.08166441, -0.08812353, 0.118907705) * inp_1_0_0; result2 += M4(-0.013671779, 0.12719049, 0.013628861, -0.03221296, 0.11845508, -0.100917354, -0.015596942, 0.008461241, -0.38821453, -0.027548704, 0.12525776, 0.085184135, 0.028874563, -0.11281509, -0.07687131, -0.07160905) * inp_1_1_0; result2 += M4(0.023920223, -0.16879302, 0.1391076, -0.07207932, 0.112463616, 0.05013536, -0.071803376, -0.05700094, -0.053969067, 0.04137503, 0.051742066, 0.09747581, -0.20432952, -0.08168226, -0.16408397, -0.006298357) * inp_1_2_0; result2 += M4(-0.11193911, -0.3299653, 0.46316102, -0.093632944, 0.0360988, 0.076418296, -0.016998924, -0.16631016, -0.21757469, -0.0755905, 0.3676647, -0.3099614, -0.0868556, -0.14957301, 0.074332766, 0.15925898) * inp_1_0_1; result2 += M4(0.15280448, -0.2528925, -0.16184416, 0.25375786, 0.5636532, 0.007741936, -0.5266848, -0.7979436, -0.07593423, 0.37916425, 0.18733892, 0.09965503, -0.16824372, -0.054025266, 0.4279841, 0.5501309) * inp_1_1_1; result2 += M4(-0.05905415, 0.03441564, -0.14000395, 0.070599794, 0.09891432, 0.05623498, 0.33777285, -0.31627867, -0.18136686, 0.15027462, -0.14182068, -0.03727184, 0.35730818, 0.09976829, -2.4111097, 0.2739688) * inp_1_2_1; result2 += M4(0.12513106, -0.10803769, 0.0072344155, -0.17701167, 0.13403879, -0.02390855, -0.07690207, -0.20836043, -0.1499199, -0.019585153, -0.20649935, -0.09064386, 0.05326226, -0.0059780395, 0.03161137, 0.026238658) * inp_1_0_2; result2 += M4(0.040802322, 0.12941146, 0.35536864, -0.073862076, 0.045912255, 0.04993951, 0.12683637, -0.6108439, -0.019681098, 0.11613508, -1.410698, 0.24978702, -0.18036038, -0.15424867, -0.20355783, 0.28145936) * inp_1_1_2; result2 += M4(0.02301297, 0.10841617, -0.054063883, -0.016699998, 0.15997717, -0.066217266, -2.08251, -0.3168746, -0.06719618, 0.033670276, 0.17262957, -0.059078004, -0.12887487, -0.10797655, 0.12330812, 0.29621586) * inp_1_2_2; result3 += M4(0.036373407, -0.10574444, -0.13995656, -0.19504063, 0.008477114, 0.027547328, 0.03694508, -0.0014364028, 0.013475774, -0.030643603, 0.028895844, -0.091765374, -0.031131774, -0.08468949, -0.03492025, 0.0044209934) * inp_1_0_0; result3 += M4(0.21722227, 0.0790196, 0.055232707, -0.068929255, -0.051214352, 0.057703253, 0.0031751248, -0.06671486, 0.020697853, 0.09311156, -0.06438965, -0.1565772, 0.0342633, 0.27882284, 0.023969011, 0.09564149) * inp_1_1_0; result3 += M4(-0.36703935, 0.103721865, -0.012000748, -0.06634204, -0.17179787, -0.04633118, 0.10582786, -0.0068166065, -0.4174795, -0.054771073, 0.0069963112, -0.13501774, -0.28178695, -0.19420552, -0.008778167, -0.101419784) * inp_1_2_0; result3 += M4(0.097344495, -0.4613829, 0.15552746, -0.19972534, 0.00529938, -0.24011123, 0.017323608, 0.00826645, -0.0014337935, -0.58909565, 0.05354866, -0.015075216, 0.0421298, 0.4274983, -0.015119621, -0.0026902535) * inp_1_0_1; result3 += M4(0.540735, 0.28868297, 0.20200054, -0.25962844, -0.013899553, 0.27178004, 0.047359616, 0.06696254, -0.09264581, -0.769925, -0.30157325, -0.04281579, 0.09774948, 0.4049582, -0.032872066, 0.08165663) * inp_1_1_1; result3 += M4(-0.060370874, -0.117583, 0.051016323, 0.05476952, -0.00360531, -0.09437053, -0.01656826, 0.0223665, -0.039108083, -0.8803417, 0.02915148, -0.18562444, -0.078956656, -1.0181186, -0.03725451, -0.20506951) * inp_1_2_1; result3 += M4(-0.049875084, 0.49808756, 0.008163257, -0.14750168, 0.012823809, -0.39525926, -0.009966971, 0.012099616, 0.014798962, 0.10790177, 0.056190513, 0.0026484877, 0.009062768, -0.3203171, 0.09407376, 0.066246524) * inp_1_0_2; result3 += M4(0.2236997, -1.0474347, 0.01777994, 0.12803492, -0.024419054, -0.8603769, 0.073769994, -0.026376901, 0.028914912, 0.33589706, -0.05176878, -0.043868214, -0.018920148, -1.7729781, 0.096696116, 0.062401805) * inp_1_1_2; result3 += M4(0.098097414, -0.060875047, -0.07423181, 0.0047103423, -0.062469732, 0.21964231, -0.048789505, 0.046979155, 0.032516025, -1.629462, -0.003667654, -0.037538934, -0.039485857, -2.1651514, 0.07569745, 0.079983406) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.072799414, 0.08744321, 0.040167782, 0.07801806, -0.13075572, -0.041201074, 0.15424213, -0.08775551, -0.03363911, -0.03419103, -0.013801273, -0.00023779462, 0.022803811, -0.116114564, -0.010712319, 0.024217663) * inp_2_0_0; result0 += M4(0.116282396, -0.22978795, 0.0010254681, 0.044921923, -0.27694124, 0.28832573, -0.14890853, -0.14285709, -0.0029613716, -0.104804, 0.0038539765, 0.02370719, 0.023678688, -0.12024093, 0.024828002, -0.0028414524) * inp_2_1_0; result0 += M4(-0.02999817, 0.2375918, -0.06304347, -0.02520088, -0.020348685, 0.012882685, 0.010424472, -0.03477082, 0.0075967344, -0.057727862, 0.04064625, 0.045959648, 0.057181083, -0.16637234, -0.009267095, 0.027016904) * inp_2_2_0; result0 += M4(0.03535756, 0.25735763, 0.061940547, 0.05169799, 0.15315002, 0.09639632, -0.1441255, 0.63641953, -0.016424038, 0.009807678, 0.010543245, -0.002645016, 0.061863508, -0.19666633, -0.02673549, 0.045145497) * inp_2_0_1; result0 += M4(0.5441342, -0.24739625, 0.19671685, 0.07384677, 0.17680992, -0.34100544, 0.20023882, 0.18809077, -0.107429236, 0.16537581, -0.035499882, -0.013783175, 0.0671155, -0.31121582, 0.01329084, 0.045274522) * inp_2_1_1; result0 += M4(0.5045321, -0.014700846, -0.03802451, 0.029056238, 0.047088422, -0.017848155, -0.024791554, 0.03144676, 0.027261524, 0.22264233, 0.061547857, 0.034849584, 0.19999838, -0.26441187, -0.016186351, -0.0005733585) * inp_2_2_1; result0 += M4(-0.04342559, 0.15420718, -0.11350817, 0.037585698, 0.11990897, 0.012997044, 0.26682645, 0.1361035, 0.035671446, 0.13826424, 0.024501644, -0.0057563004, 0.082340494, -0.05760183, 0.08970937, 0.07513736) * inp_2_0_2; result0 += M4(-0.13289104, -0.1250671, 0.062479753, 0.0053964024, -0.095126316, -0.16940954, 0.029271794, -0.06458968, 0.16199836, 0.13677524, -0.04327446, -0.017199488, 0.07083147, -0.19821729, 0.2484696, 0.10415683) * inp_2_1_2; result0 += M4(0.3950696, -0.02779432, -0.008416681, 0.032792997, -0.011090952, 0.009134894, 0.06158654, -0.013701681, -0.079472095, 0.031954937, 0.031148722, -0.00925102, 0.51940686, -0.0658239, 0.036954366, 0.039659005) * inp_2_2_2; result1 += M4(-0.13344434, -0.05061323, 0.095408544, -0.08625949, 0.18399197, -0.28417143, -0.05562017, 0.35825208, -0.02813501, -0.00033244916, 0.048123784, -0.050765194, 0.06428936, 0.053244866, 0.013941826, -0.067021795) * inp_2_0_0; result1 += M4(-0.4880999, -0.40759933, 0.24839535, 0.11334278, -0.22599585, 0.47816646, 0.035981376, 0.36705965, 0.026598345, 0.07833052, 0.05360656, -0.008302733, -0.078774944, -0.08263261, 0.0023377552, 0.0024999976) * inp_2_1_0; result1 += M4(-0.051072344, -0.0039665406, 0.021645017, 0.22113493, 0.060950276, -0.13074085, 0.0041375337, 0.24489175, 0.13239065, 0.2622611, 0.081917554, 0.08832118, 0.007404869, -0.10759696, -0.018897135, -0.06522433) * inp_2_2_0; result1 += M4(0.1548679, -0.19012247, 0.040739402, -0.11684377, 0.09749787, 0.43472815, 0.30111587, -0.13235483, -0.11852698, 0.08064614, 0.050126582, 0.0604606, -0.07711342, 0.017106608, 0.09800072, -0.10731661) * inp_2_0_1; result1 += M4(0.41855404, 0.70561653, -0.1048972, -0.44700545, 0.0023366297, -0.9075298, 0.16412388, -0.9492702, 0.07125288, -0.0009775743, 0.08054489, 0.037058916, -0.049970914, 0.12432605, -0.111967, -0.18291178) * inp_2_1_1; result1 += M4(0.06725966, 0.30761692, -0.014406864, 0.1336458, 0.028338261, 0.051551014, -0.12911175, -0.3341948, -0.093127325, 0.3172456, 0.24364054, 0.2379035, -0.19475909, -0.029400589, 0.006691412, -0.42334718) * inp_2_2_1; result1 += M4(0.064074695, -0.13376294, 0.07650361, -0.09864145, -0.019821458, 0.15614319, 0.12984146, 0.6133629, -0.03014574, 0.13625655, 0.024304224, 0.23896505, -0.09079825, 0.1872697, 0.07023439, -0.14040154) * inp_2_0_2; result1 += M4(0.0071960436, 0.06991962, -0.040481415, 0.4354086, 0.16354457, 0.3296082, 0.01033596, -0.06714803, -0.07215524, 0.20311038, -0.01418043, 0.04026604, -0.09893795, 0.12845664, 0.103764, -0.14395782) * inp_2_1_2; result1 += M4(-0.0751989, 0.090697154, -0.0123552475, -0.1950665, 0.016859578, 0.063860744, 0.033516552, 0.041306533, 0.07146868, 0.3165332, 0.07795557, 0.11117007, -0.22798586, 0.13899375, -0.16213746, -0.48850942) * inp_2_2_2; result2 += M4(0.15237708, -0.093690485, -0.019858027, 0.1296725, -0.012717826, 0.11369542, 0.18368796, -0.0037986266, 0.032529753, 0.13281688, 0.09390179, -0.106662616, -0.015035752, 0.024596656, 0.053266823, 0.059434105) * inp_2_0_0; result2 += M4(0.22088106, 0.21435592, 0.066211306, 0.020514933, 0.110036574, 0.046004176, 0.11759049, 0.08156271, 0.056655344, 0.11986657, 0.25629577, -0.07306872, -0.086689524, 0.030591225, -0.010039397, 0.049706254) * inp_2_1_0; result2 += M4(-0.22565156, 0.10976606, 0.02232104, 0.0941895, 0.11069228, 0.1200716, -0.090560555, -0.008581371, -0.1015723, 0.17354038, 0.19579205, -0.10567534, 0.032907687, 0.013541313, 0.002951452, 0.09654139) * inp_2_2_0; result2 += M4(0.06448949, -0.006854776, -0.11283963, -0.08448216, -0.20433678, -0.23100254, 0.38711995, 0.035240192, -0.021509502, 0.09027253, 0.06981108, -0.12453191, -0.17339708, 0.08405211, 0.042923033, 0.10962308) * inp_2_0_1; result2 += M4(-0.057601467, 0.14067733, -0.11439154, -0.21898924, -0.037575383, -0.044274174, 0.043474395, -0.12645152, -0.06800465, 0.1303356, 0.12144193, -0.08704225, -0.43908864, 0.13658917, 0.09110692, 0.022152238) * inp_2_1_1; result2 += M4(0.054993697, -0.044851016, -0.19236383, -0.02872818, -0.068216026, -0.047781873, -0.032338392, -0.066288285, -0.081951365, 0.123208925, 0.33749267, -0.15188901, -0.23813303, 0.22284123, 0.09201899, 0.062063165) * inp_2_2_1; result2 += M4(0.18088214, -0.03621234, 0.111584276, -0.06185883, -0.079901256, 0.081294745, 0.3466588, -0.016852016, -0.1728647, 0.0075069377, 0.07527052, -0.017532937, -0.18314874, 0.111777656, -0.01757962, 0.025657792) * inp_2_0_2; result2 += M4(-0.096723825, 0.15362471, 0.27789408, -0.37709025, -0.26250958, 0.058698505, -0.4031661, -0.1343675, 0.022980133, 0.08884035, 0.08319577, -0.07469558, -0.5274334, 0.1826839, 0.13579038, 0.047112245) * inp_2_1_2; result2 += M4(-0.060920365, -0.02281752, -0.026471514, 0.05238651, 0.026928412, -0.046293512, 0.20830363, 0.09074479, 0.103096575, 0.2375537, -0.10920924, -0.09786074, -0.38563517, 0.122289844, 0.006439691, 0.0679703) * inp_2_2_2; result3 += M4(-0.06332975, -0.045362424, 0.06336836, 0.04757446, 0.016607732, -0.04284567, 0.029675823, 0.08636747, 0.037303764, 0.009950395, -0.00733445, -0.06005233, 0.016153969, -0.0008884444, -0.0032025373, -0.034683444) * inp_2_0_0; result3 += M4(-0.24719793, 0.090185344, -0.03767582, 0.07020827, -0.05447242, 0.118457206, -0.02587372, 0.16932541, 0.03610353, -0.020108169, 0.019735262, -0.16801701, 0.0007604271, -0.0012140255, -0.0024629282, 0.015910422) * inp_2_1_0; result3 += M4(-0.07372321, -0.034131594, -0.04057007, -0.057027996, 0.024751434, -0.048019934, 0.033641532, -0.02014, 0.10906949, 0.015583992, 0.05991447, -0.03566063, -0.0056983666, 0.04507956, -0.012921162, -0.0062985355) * inp_2_2_0; result3 += M4(0.06364227, 0.2866662, 0.039823856, 0.09935332, -0.13515139, 0.065582104, 0.11825642, 0.053079695, -0.031755637, 0.010345929, -0.009890781, -0.03741963, -0.00715705, 0.0012790078, 0.005006744, -0.051825915) * inp_2_0_1; result3 += M4(0.29026803, 0.3158196, 0.31176165, 0.13595597, 0.23772418, 0.24806638, 0.14339897, -0.026260424, -0.03874301, -0.09009171, -0.058700938, -0.071720496, -0.019458614, -0.04415241, 0.05115, -0.011578325) * inp_2_1_1; result3 += M4(0.20564541, 0.2561305, 0.04521215, -0.09180184, -0.010420101, 0.006472085, -0.0032282514, -0.022307277, 0.06771457, -0.02482564, 0.088228256, 0.022646531, 0.027913377, 0.017049076, -0.05283625, 0.0056922087) * inp_2_2_1; result3 += M4(0.051853072, 0.011956129, -0.058225747, -0.052184515, -0.09241479, -0.0043889955, -0.087238386, 0.004991534, -0.0028273119, 0.23908603, -0.005600015, -0.036348272, -0.03955941, -0.06988106, 0.07995407, -0.0017726986) * inp_2_0_2; result3 += M4(0.022193674, -0.49433565, -0.041616276, 0.11763259, 0.030960362, -0.5798498, -0.014916329, 0.10095068, 0.05894431, 0.04858647, -0.08104756, -0.10843685, -0.053030152, -0.5437696, 0.24242237, -0.09370472) * inp_2_1_2; result3 += M4(0.05510592, -0.41354832, 0.08075133, -0.036698166, 0.058322094, 0.07087921, 0.022004507, 0.02445239, 0.11281988, 0.80824155, -0.0503837, -0.14536782, -0.07139452, -0.8448055, 0.034852218, -0.13722979) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.028229274, -0.15808907, 0.0029349672, 0.048995692, 0.002644965, 0.31930134, -0.116009064, -0.012212212, -0.001142441, 0.0015908619, 0.06726233, -0.009835712, 0.12112165, -0.17337134, 0.029518513, 0.026719) * inp_3_0_0; result0 += M4(-0.04731849, -0.15287589, 0.047197033, 0.0723312, 0.30545032, -0.2030436, 0.15785033, -0.061221592, -0.117341705, 0.276046, -0.043229923, -0.018675653, 0.11536683, -0.059095472, -0.12083619, -0.0012550695) * inp_3_1_0; result0 += M4(-0.04275924, -0.0013328195, -0.00053214835, 0.0030408858, -0.18982571, -0.2500298, -0.16711596, -0.06754797, -0.1284676, 0.07549749, 0.024914779, 0.008913011, 0.1576947, -0.02323942, 0.0495373, -0.0016789264) * inp_3_2_0; result0 += M4(-0.05329475, -0.26152134, 0.24998888, -0.4073586, 0.15245098, 0.15509467, -0.0090638595, -0.024546094, -0.32494077, 0.057003286, -0.020988716, 0.01160119, -0.03176068, -0.20947576, -0.025002478, -0.050115187) * inp_3_0_1; result0 += M4(-0.11647435, 0.3421739, 0.038057614, -0.020363536, -0.024888787, -0.11973555, 0.19738191, -0.0399157, -0.23331755, -0.023038194, 0.03979752, 0.08568473, -0.3479674, -0.06537933, 0.097977616, 0.43557504) * inp_3_1_1; result0 += M4(0.18954818, 0.052447174, -0.00559989, 0.002748732, -0.042568576, -0.07263501, -0.015797198, 0.01110267, -0.20603408, 0.16414873, 0.04915119, 0.042721037, -0.15841815, 0.21831283, -0.113570996, -0.034846157) * inp_3_2_1; result0 += M4(0.06316668, 0.274095, 0.045388404, -0.102868915, 0.006839498, 0.24644312, -0.08802566, 0.008921657, -0.10284603, 0.0188134, 0.111351326, 0.007533085, -0.10760515, -0.13009074, 0.044235133, 0.035270248) * inp_3_0_2; result0 += M4(-0.44240746, 0.20148173, -0.03848018, 0.043000404, 0.082922965, 0.18317346, -0.042247277, -0.04995591, -0.18334667, 0.09915136, 0.06934556, 0.004800439, 0.05574841, 0.13553965, 0.06714108, 0.04783485) * inp_3_1_2; result0 += M4(-0.011692011, -0.057334714, -0.045064032, 0.0015405063, 0.03675992, 0.008795961, -0.1392408, -0.04973309, -0.18971889, 0.08004836, 0.0070512933, -0.009305137, 0.22364588, 0.051634047, 0.05805451, 0.018030219) * inp_3_2_2; result1 += M4(0.03547299, 0.05851019, -0.0081921425, 0.085203506, 0.0013783668, 0.014833073, 0.0713247, -0.10794005, 0.11669975, 0.18794234, -0.007436312, 0.019923756, 0.011684142, 0.051879328, 0.029590584, -1.215527e-05) * inp_3_0_0; result1 += M4(0.03689211, -0.5839489, -0.011177477, -0.11696028, -0.22489724, 0.30125484, -0.23497492, -0.17400064, 0.08691893, -0.028360978, 0.052778564, 0.06633927, -0.0013068747, -0.024958352, -0.09970068, -0.27149665) * inp_3_1_0; result1 += M4(0.019699043, 0.02610097, -0.026687765, -0.14701466, -0.032561384, -0.27974248, 0.19027138, 0.17831229, -0.007870156, -0.07446247, -0.013146453, 0.34408414, 0.1929401, -0.5529677, -0.123961024, -0.066796646) * inp_3_2_0; result1 += M4(0.006607319, -0.071695104, 0.024131488, 0.2758632, -0.03878548, -0.11731504, 0.0021283203, 0.07485747, -0.02205156, -0.02549247, 0.04853896, 0.097996734, 0.045671396, 0.051710986, -0.028297408, -0.03133342) * inp_3_0_1; result1 += M4(0.1262738, -0.408174, 0.60694927, 0.009159394, -0.0022468935, -0.15571602, 0.09440904, -0.096211806, 0.07922945, 0.24831027, 0.0047393334, 0.052152175, -0.21231282, -0.33517617, 0.5245132, 0.08751944) * inp_3_1_1; result1 += M4(0.025296621, -0.22410855, 0.0042572175, -0.34757662, 0.088625416, -0.2722951, -0.104385555, 0.17578018, 0.06467597, 0.1710617, 0.06241217, 0.2748244, 0.08033286, -0.417735, -0.075683504, -0.38483784) * inp_3_2_1; result1 += M4(0.11022106, -0.08966795, -0.10224968, -0.36379373, 0.047402475, -0.027613077, 0.060701806, 0.101724945, 0.010951261, 0.058559462, 0.06629261, 0.08052335, -0.012587537, -0.04941149, 0.022848893, -0.11876117) * inp_3_0_2; result1 += M4(0.058699477, 0.1441915, 0.35178068, -0.34961215, 0.20973763, 0.13676962, 0.03482411, -0.030854367, 0.040238474, 0.20211528, 0.063762456, 0.1486921, 0.04960421, 0.01980245, 0.066835575, -0.36922836) * inp_3_1_2; result1 += M4(-0.0085519785, -0.036524754, -0.009898647, -0.18509723, 0.016218416, 0.24959671, 0.11126359, 0.08500051, 0.089658245, 0.1887928, 0.07986775, 0.1871863, -0.050901197, -0.37088227, -0.029208146, -0.4654414) * inp_3_2_2; result2 += M4(-0.07062753, -0.17764631, 0.110274054, 0.093388826, -0.23699687, -0.063923724, -0.042797353, 0.27830544, 0.06987477, -0.007036766, 0.124464676, -0.09610872, 0.011860872, 0.013104085, -0.044358406, 0.019261397) * inp_3_0_0; result2 += M4(-0.07819913, -0.07821445, -0.14890507, 0.017445445, 0.105565205, 0.0194577, -0.055422295, 0.014694824, 0.17635679, -0.11911035, 0.07212651, -0.17742957, 0.04089121, -0.034174975, -0.367417, -0.0020178915) * inp_3_1_0; result2 += M4(-0.017635105, -0.023483574, 0.07303234, 0.011463963, 0.014501976, -0.31889856, 0.15147841, -0.0681412, 0.11242115, -0.045445487, -0.051736005, -0.14182724, 0.050621122, -0.07541121, 0.004984524, -0.04769511) * inp_3_2_0; result2 += M4(0.18549538, -0.3461141, 0.14092724, 0.118560426, 0.03003999, 0.14992955, -0.20096691, 0.0004782822, 0.09892659, 0.009632844, 0.029848214, -0.21411105, 0.045754626, 0.010341653, 0.07142335, -0.011409884) * inp_3_0_1; result2 += M4(0.13191569, 0.18247747, -0.095738664, 0.15164803, 0.058459304, 0.054026682, -1.2770208, 0.11147907, 0.18119441, -0.27731737, -0.025941458, -0.10154562, 0.09371109, 0.083652884, -0.37354496, 0.12748018) * inp_3_1_1; result2 += M4(-0.019956289, -0.0008922446, 0.07510559, 0.06480862, -0.17211545, -0.37512273, -0.011657241, -0.012069124, 0.023464805, -0.009468669, 0.08297992, -0.02813354, 0.05020553, -0.44460508, 0.07396968, 0.18682356) * inp_3_2_1; result2 += M4(0.27052638, -0.18151847, -0.14909685, 0.18196584, -0.08121016, -0.034422684, 0.17616731, -0.08992287, 0.08317913, -0.09990855, 0.03395792, -0.03219029, 0.06662035, 0.023967143, -0.09593995, 0.0409232) * inp_3_0_2; result2 += M4(0.07255279, -0.22483088, -0.24502246, 0.03624853, 0.0071962625, -0.0092357835, -0.19045441, 0.029129693, -0.051086012, -0.049864367, 0.3883846, -0.08690167, 0.0068329787, 0.019896312, -2.074018, 0.05893891) * inp_3_1_2; result2 += M4(-0.005017375, 0.0419022, -0.1385052, -0.013220369, -0.14568825, 0.060737297, 0.22865447, 0.13756444, 0.113874584, -0.09395729, 0.065711625, -0.069827855, 0.1642554, -0.16244127, -0.026328873, -0.031566203) * inp_3_2_2; result3 += M4(0.1014589, -0.014833683, 0.008208296, -0.020643512, -0.016634094, 0.03571846, 0.06496934, -0.112473115, 0.07333354, 0.0001321044, 0.06860599, 0.0033938074, 0.000107696455, 0.03696719, 0.02836111, 0.019694965) * inp_3_0_0; result3 += M4(-0.11211915, -0.11346576, 0.038090814, -0.028592154, 0.23409663, 0.18085325, 0.109985724, 0.061777465, 0.08796477, -0.00070777815, -0.0040811733, -0.036895335, -0.046381988, 0.082006946, -0.025298502, 0.024579044) * inp_3_1_0; result3 += M4(0.07765319, 0.025547238, -0.0106491055, 0.014916862, -0.010984025, -0.035625678, -0.0052736867, 0.086563304, 0.0630867, 0.06560121, 0.044427283, 0.013414062, -0.026453167, -0.01222179, -0.012707303, -0.013987003) * inp_3_2_0; result3 += M4(-0.1657694, -0.13384472, 0.2649824, -0.1557415, -0.05946729, -0.11069863, -0.11955934, 0.026888687, 0.008828967, -0.08834899, -0.007061245, 0.043610103, 0.016584713, 0.029276473, 0.03197604, 0.092329465) * inp_3_0_1; result3 += M4(0.051200595, 0.12516646, -0.037845865, 0.44136465, -0.047560405, 0.32929957, -0.01667233, -0.30584052, -0.07320588, 0.021124983, 0.009349959, 0.24658766, -0.077031195, -0.20990203, 0.004546854, 0.42629874) * inp_3_1_1; result3 += M4(-0.10160456, -0.025241196, 0.022817455, 0.045562264, -0.17488277, -0.1752493, -0.021545727, -0.22657886, 0.21162148, 0.080916315, 0.056348268, 0.040147092, -0.4680261, 0.06179451, 0.1105306, -0.1934967) * inp_3_2_1; result3 += M4(-0.00035547843, 0.14046781, -0.015938537, -0.09040939, 0.016596265, 0.20661904, -0.015420129, -0.06767596, -0.011444506, 0.1458512, 0.021674052, 0.06173179, -0.015764581, 0.10346476, 0.032934316, 0.06355381) * inp_3_0_2; result3 += M4(-0.025236825, 0.62611204, 0.021639993, 0.18076484, -0.03906318, -0.8003873, -0.13554086, -0.079016104, 0.046530988, -1.0408324, 0.057111077, 0.10992777, -0.027221091, -1.8143699, 0.12154521, 0.16609849) * inp_3_1_2; result3 += M4(0.025872175, 0.47021398, -0.028681872, -0.029060496, 0.04642599, 0.23709211, -0.016820239, -0.14024179, -0.018264806, -0.47421166, 0.03545667, 0.07336715, -0.083956845, -2.1798747, 0.071906306, 0.026066884) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0))); imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0))); } //!DESC ArtCNN C4F16 DN (Conv2D-3-ReLU) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND conv2d_2 //!SAVE conv2d_3 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(0.0037328722, 0.0058725104, 0.014844512, -0.010170196); V4 result1 = V4(-0.0037970059, 0.0066255014, 0.007933397, 0.021553462); V4 result2 = V4(0.01128321, -0.01463951, -0.0019001827, 0.0040911147); V4 result3 = V4(-0.015792493, -0.005102591, 0.010113186, 0.007888773); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.057311125, -0.33730522, 0.17722802, 0.099562034, 0.04489983, 0.066418335, 0.0025516888, -0.031703223, 0.04261083, 0.008025669, -0.031327475, 0.028717587, -0.0021385073, 0.06751389, -0.0018151092, -0.035716765) * inp_0_0_0; result0 += M4(-0.29858246, -0.49254423, 0.0342645, -0.23860483, 0.20589676, 0.12836272, -0.018455105, 0.08420646, -0.08268355, 0.0062804697, -0.13761322, 0.029906414, 0.026897382, -0.32939956, 0.024576906, -0.06813576) * inp_0_1_0; result0 += M4(-0.17761756, -0.112442896, -0.0010267365, 0.059175014, 0.14254588, 0.053389143, 0.14026527, 0.09227782, -0.09193419, 0.05739666, -0.08340119, -0.11782619, -0.036528263, -0.11322737, 0.0047511104, -0.022319866) * inp_0_2_0; result0 += M4(-0.0026187329, 0.05192515, -0.35563847, 0.018763697, 0.080300055, 0.19880784, -0.07495418, 0.011154424, 0.060256362, -0.18936585, 0.0506482, 0.010638225, -0.02450057, -0.090643086, 0.06135241, 0.08848365) * inp_0_0_1; result0 += M4(-0.00026681082, 0.25067797, -0.284964, -0.12559184, 0.14472395, -0.26301527, 0.10322377, -0.050515495, -0.20266251, -0.050360467, 0.5620355, -0.12746911, 0.12380374, 0.25418535, 0.25700554, -0.27655384) * inp_0_1_1; result0 += M4(0.07324497, 0.14240251, -0.035483994, -0.033564057, -0.18969204, -0.3118714, 0.061486945, -0.23348323, 0.022422135, -0.11645774, 0.0527955, -0.07180278, -0.011491041, 0.2347098, 0.040632453, 0.28610966) * inp_0_2_1; result0 += M4(-0.060701624, 0.02892825, -0.029021867, -0.04644597, 0.1812817, -0.31875467, 0.1466932, 0.01871686, -0.014059611, 0.015782023, 0.12227289, -0.043247525, -0.16047347, 0.0040257545, -0.12969261, 0.046771348) * inp_0_0_2; result0 += M4(-0.16605069, -0.009466687, 0.06974187, -0.007174108, 0.10242719, 0.124690115, -0.3884307, -0.08188579, 0.13683674, -0.039301425, 0.027998246, 0.039255895, -0.05257704, 0.025434602, -0.36315975, -0.060723685) * inp_0_1_2; result0 += M4(-0.11046759, -0.039235678, -0.10805639, -0.0022571879, 0.16817255, 0.19854929, -0.0024788599, -0.0014621204, 0.027354334, 0.0127763515, 0.08901011, 0.03333765, -0.109630555, -0.19170083, -0.028727, -0.044065822) * inp_0_2_2; result1 += M4(0.15415266, -0.020546548, -0.059446156, -0.1280987, 0.0045443214, -0.055239834, -0.023375025, -0.07507093, -0.030234301, -0.054547466, -0.050885428, -0.07283002, -0.0451633, 0.0033173177, 0.021325724, -0.19910954) * inp_0_0_0; result1 += M4(0.20146526, 0.009274158, -0.009369634, 0.26728374, -0.050820924, 0.016226776, -0.04178401, -0.56331444, 0.05084628, 0.047705546, 0.026667554, 0.02055655, -0.046001945, 0.040772464, -0.02160904, -0.034682248) * inp_0_1_0; result1 += M4(-0.06735462, 0.023717906, -0.0147328805, -0.042945515, 0.0045133294, 0.027662719, -0.003877345, -0.36353222, -0.025560386, -0.03483773, 0.031655077, -0.07050543, 0.045928318, 0.030316144, -0.030757774, 0.06193463) * inp_0_2_0; result1 += M4(-0.26449147, -0.06658087, -0.18341315, -0.08120221, -0.04409864, -0.10057631, -0.06163193, 0.12324599, -0.038345274, 0.12648982, -0.011846925, 0.062293634, 0.027566293, -0.014313978, 0.0030416888, 0.021438379) * inp_0_0_1; result1 += M4(-0.37453195, 0.103699595, 0.049381275, -0.35834262, 0.05558604, 0.16094159, -0.13492739, -0.69478434, -0.15806107, 0.3930051, 0.08528715, -0.061892487, 0.15677974, 0.24826813, -0.038633473, -0.19416066) * inp_0_1_1; result1 += M4(0.024870683, 0.043322604, 0.0039035035, 0.109675616, 0.09069931, 0.045144923, -0.017851543, -0.27103412, -0.104906276, 0.09456023, 0.024502281, 0.06409243, 0.00036319965, -0.012959684, -0.04537507, -0.2768153) * inp_0_2_1; result1 += M4(-0.0001310049, 0.042455357, -0.07644763, 0.1332962, 0.19978717, -0.08062351, 0.042941224, 0.2592865, -0.07169434, 0.033888675, 0.07653987, -0.08345706, -0.081177115, -0.03707285, -0.0966338, -0.11672543) * inp_0_0_2; result1 += M4(0.01046906, 0.05332057, -0.015239124, 0.03420666, -0.16968647, 0.061304532, 0.0072402013, -0.26372555, 0.011594187, 0.03648952, 0.11088155, -0.010853507, -0.09365042, -0.03236388, -0.18072683, 0.14938737) * inp_0_1_2; result1 += M4(0.0074982196, -0.010905732, -0.037048172, 0.105806135, -0.20452976, -0.008387096, -0.015883567, -0.005840342, 0.06923332, -0.014491837, -0.04346129, 0.18234922, -0.12291954, 0.003822335, 0.08380928, -0.30222356) * inp_0_2_2; result2 += M4(-0.14737174, 0.12668476, 0.039674796, 0.0019796097, -0.041919395, 0.10225956, -0.046957072, -0.091206774, -0.08142077, 0.062196873, -0.045064557, 0.020962138, 0.09562319, 0.0002813835, 0.006137338, -0.051575977) * inp_0_0_0; result2 += M4(-0.07843492, -0.18126814, 0.029349761, 0.036800716, 0.114595495, -0.06434297, 0.07369903, 0.014313645, 0.08571309, 0.02971206, -0.093930274, 0.032504056, 0.09469144, -0.07230047, 0.07137617, 0.04168533) * inp_0_1_0; result2 += M4(-0.0378474, 0.055589337, 0.02806545, 0.15738419, 0.042789325, 0.1632531, 0.057394493, -0.014136403, -0.03237198, 0.07195159, -0.029715361, -0.14924638, 0.047915243, -0.08276493, -0.007835794, -0.02210075) * inp_0_2_0; result2 += M4(-0.21651964, 0.4412457, 0.03280652, 0.13598813, 0.07218968, -0.09764164, -0.18918325, -0.18227437, 0.10279276, -0.05060742, -0.033106044, 0.046505257, 0.07210037, -0.07728526, -0.074096695, -0.00029055317) * inp_0_0_1; result2 += M4(-0.02678047, -0.19298227, 0.1549211, -0.12486826, -0.018778423, -0.23496163, 0.06532005, -0.20513189, 0.42357862, -0.16753252, -0.14087535, 0.074602485, -0.27450734, -0.17410919, 0.5533737, 0.08614045) * inp_0_1_1; result2 += M4(-0.09029694, 0.015931137, 0.0743981, 0.01909146, -0.10399329, 0.14246273, 0.04153277, -0.35467854, 0.056509368, -0.07503476, 0.064372435, 0.024670899, -0.11719109, 0.15818635, -0.04747414, 0.15476778) * inp_0_2_1; result2 += M4(-0.023030885, -0.07294554, 0.063414015, 0.04494725, 0.119585514, -0.17223276, -0.03650087, -0.236611, 0.031771086, 0.10642711, -0.0077042966, 0.0011706111, -0.04822736, -0.026068194, -0.006286887, 0.05509064) * inp_0_0_2; result2 += M4(-0.04365382, -0.10037996, 0.007977033, 0.015273977, -0.070039675, 0.4532462, -0.014230738, 0.019286774, 0.03710506, -0.109425515, 0.04906851, -0.018390283, -0.10975576, -0.22251898, -0.050223477, -0.17851599) * inp_0_1_2; result2 += M4(0.02767426, 0.035828777, 0.012412095, 0.09910354, -0.053543106, -0.0046022977, 0.09781934, -0.04686058, 0.042102795, 0.025042376, -0.039929982, 0.073552944, -0.10253105, -0.0154435625, 0.07313006, -0.12352622) * inp_0_2_2; result3 += M4(-0.0114304265, -0.054385502, 0.033188645, 0.055635832, 0.022074416, 0.10337773, -0.05266332, -0.013529274, -0.0072458913, -0.053168047, -0.039922617, -0.025124865, -0.011270478, 0.060973402, 0.04120601, 0.03821678) * inp_0_0_0; result3 += M4(0.08077055, -0.031046102, -0.0024996796, -0.06846161, -0.050653562, 0.30045447, 0.0006201094, -0.058525722, -0.010223777, 0.117760874, 0.0891194, 0.0080667315, -0.011669109, -0.029468624, -0.010653135, 0.036980182) * inp_0_1_0; result3 += M4(-0.07125412, -0.09232983, 0.022352181, 0.08297323, -0.030222695, 0.27985922, 0.011070039, -0.32528615, -0.06738612, -0.010199246, 0.0075620855, -0.42562532, 0.0036646973, -0.12825595, 0.009720933, -0.027377712) * inp_0_2_0; result3 += M4(-0.06598496, -0.3177966, -0.048268646, -0.085706666, 0.0142342085, 0.23555645, -0.0800571, -0.024977325, 0.046872094, 0.109668575, 0.08928605, 0.048477955, 0.05575906, -0.07255419, -0.01175848, -0.023029475) * inp_0_0_1; result3 += M4(0.0769893, -0.22401986, 0.11066653, -0.0893753, 0.1292731, 0.52361447, 0.030467212, 0.04053145, -0.1566641, -0.22413911, 0.10816599, 0.107783474, 0.020059573, -0.3243195, -0.27325553, -0.10052702) * inp_0_1_1; result3 += M4(-0.08552759, 0.07555734, 0.03014692, -0.21292642, 0.08157099, 0.3045615, -0.028390385, 0.22297645, -0.10555077, -0.009558497, 0.053637836, 0.12255976, 0.20098098, -0.022126397, -0.054854847, -0.2733438) * inp_0_2_1; result3 += M4(-0.03238179, -0.044636417, 0.07305584, -0.01680133, 0.01573967, 0.17757595, 0.005263989, 0.049440477, 0.0004803389, 0.01569422, 0.008749287, -0.008612325, -0.016214097, -0.18174773, 0.011452576, 0.03661822) * inp_0_0_2; result3 += M4(0.04198888, -0.06944021, 0.008626933, -0.017396564, -0.006598903, 0.47955868, 0.021522667, 0.070495084, 0.013385762, 0.016531087, 0.05296396, 0.05821235, -0.03639729, -0.0137632955, -0.17826952, -0.050428025) * inp_0_1_2; result3 += M4(-0.012103764, -0.0015183222, 0.015929924, -0.030985666, 0.23147166, 0.032427263, 0.08017996, 0.11206087, -0.054225363, -0.11097816, 0.0027947426, 0.0018414989, -0.0192582, -0.075916626, 0.07855342, -0.018122781) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.064635575, -0.19836202, -0.021761142, 0.055908635, 0.12697479, -0.112800576, 0.035145603, 0.028566537, 0.010227013, 0.025797663, -0.02420788, 0.015162584, 0.10334518, -0.091016054, 0.05793684, 0.049134534) * inp_1_0_0; result0 += M4(-0.1068277, -0.45457143, -0.14095666, 0.016418293, -0.0968267, -0.058457382, 0.030517995, -0.14341317, 0.020955076, 0.26496652, -0.07544986, 0.0385109, -0.036384083, -0.26250187, 0.035307683, -0.21457018) * inp_1_1_0; result0 += M4(0.10602439, -0.4249803, -0.16876768, 0.058436945, 0.02310732, 0.056188162, -0.016591296, 0.09825222, 0.10470303, 0.11498233, 0.020271882, 0.07126519, -0.12668677, 0.0024808717, -0.07129154, -0.18679684) * inp_1_2_0; result0 += M4(0.0134678995, -0.3026336, -0.10053992, -0.0021864031, -0.06533563, -0.1175363, 0.059084207, 0.012906392, -0.04117483, 0.011936351, -0.05788392, -0.11920587, -0.14810948, 0.36511353, 0.06058582, -0.009389634) * inp_1_0_1; result0 += M4(-0.20641549, -0.28057954, -0.08179525, -0.12345122, -0.26783782, -0.047627326, -0.08628124, -0.19976877, 0.49624243, -0.038870372, -0.039042618, 0.16322885, -0.12391084, 0.27275205, -0.06819445, -0.07791087) * inp_1_1_1; result0 += M4(0.25412214, -0.36657393, -0.03698488, 0.21699896, -0.056221366, -0.29055485, -0.04474108, -0.08842575, 0.14233609, 0.08508943, 0.079451114, 0.27008066, 0.19608529, 0.111376286, 0.052274898, -0.094468184) * inp_1_2_1; result0 += M4(0.09823228, 0.22193311, 0.004547766, -0.044004858, -0.17202128, 0.040115863, -0.29274777, 0.019130897, 0.20466413, 0.009757409, 0.17860956, -0.067145266, 0.049977195, -0.20854245, -0.07865578, -0.067860074) * inp_1_0_2; result0 += M4(-0.08140916, -0.016183913, -0.16555955, 0.16173053, -0.27565897, 0.012991762, -0.24500275, -0.14935103, -0.03185973, 0.008508981, 0.30507913, 0.09633955, 0.021306138, -0.09650847, 0.062071867, -0.3949359) * inp_1_1_2; result0 += M4(-0.039056715, 0.15500458, -0.09322355, -0.16704942, 0.22802258, 0.02940326, -0.24282627, -0.016224101, -0.040328983, -0.02556315, 0.021358714, 0.12810113, -0.06526214, -0.0010595241, 0.065223075, -0.020621695) * inp_1_2_2; result1 += M4(0.0879546, -0.033016626, -0.0070018354, 0.17959453, 0.031718485, 0.029317882, -0.062298536, 0.02195874, 0.064314224, 0.006145347, -0.027452173, 0.12968588, 0.00550207, 0.014228396, -0.04277051, -0.02710164) * inp_1_0_0; result1 += M4(0.076653786, -0.028272716, -0.021867068, -0.29692534, 0.0034413435, 0.019480824, 0.014396733, 0.192671, -0.008372062, 0.021276029, -0.0048600165, 0.055097096, -0.0039592823, -0.08152834, 0.007803608, -0.22398606) * inp_1_1_0; result1 += M4(0.15371776, -0.08345578, 0.02183168, 0.17630763, -0.015404357, -0.018420875, 0.0029649881, 0.013670328, -0.07125709, 0.0033065167, 0.018581372, -0.025726117, -0.26193857, 0.012576833, -0.005868319, -0.31578586) * inp_1_2_0; result1 += M4(-0.073959365, 0.00033603763, 0.08458416, 0.29985818, -0.006801125, -0.019592974, -0.07067609, -0.22987774, -0.049043745, 0.08805297, 0.056997526, 0.14354225, -0.0054788515, -0.037050486, -0.06897279, -0.27980012) * inp_1_0_1; result1 += M4(-0.31769165, 0.10134186, -0.042652737, -0.05692838, 0.05131074, -0.025483308, 0.031998184, -0.19680986, -0.20419957, 0.083706304, 0.044261165, 0.30023435, 0.53163344, 0.02401546, 0.017665062, 0.21223086) * inp_1_1_1; result1 += M4(-0.21697037, -0.009032971, 0.04160413, 0.076278895, 0.06834075, 0.021274738, -0.00037423655, 0.12081354, 0.044798497, 0.0105751185, -0.01539362, 0.14540946, 0.20215076, 0.05851951, -0.052253757, -1.0678191) * inp_1_2_1; result1 += M4(-0.23572817, 0.02660997, 0.007971347, -0.019506771, -0.1042133, 0.0038162116, -0.15216173, -0.06995908, 0.1704218, 0.02127488, 0.16194439, -0.0011293028, -0.053386584, -0.101891816, -0.016208246, -0.2716569) * inp_1_0_2; result1 += M4(-0.4117975, 0.07848588, 0.020361321, -0.23860869, -0.21115085, 0.089730784, -0.0087175565, -0.23265773, 0.4137555, -0.023885092, -0.061168768, 0.112749904, 0.110101365, -0.06801267, -0.048692144, 0.37191698) * inp_1_1_2; result1 += M4(-0.13204733, -0.010949663, -0.03706695, 0.034934383, -0.0648263, 0.011819965, 0.010707643, 0.052589357, 0.14337738, -0.027416432, 0.009636546, 0.26372597, 0.084866345, -0.0072827893, -0.0212521, -0.31661683) * inp_1_2_2; result2 += M4(0.04035527, -0.017316733, 0.011689872, -0.09518651, 0.08074247, 0.058552887, -0.028824281, -0.014180605, -0.09423785, 0.025767181, 0.017518284, 0.071245134, 0.12381295, -0.029249229, -0.10879951, -0.035357144) * inp_1_0_0; result2 += M4(-0.071576595, 0.08298009, -0.026430612, 0.0074916393, -0.06223611, 0.07461952, -0.035599675, -0.055486828, -0.08531671, -0.021416565, -0.02658609, -0.02484598, -0.14924097, 0.10654974, -0.05462158, -0.20455745) * inp_1_1_0; result2 += M4(-0.093800455, -0.0033841708, -0.049712677, -0.11978762, -0.03408858, 0.09003755, -0.034858696, 0.11337182, 0.00703125, -0.05594614, 0.00835779, -0.06744898, 0.013101136, 0.068808496, 0.049306642, -0.2024081) * inp_1_2_0; result2 += M4(0.1128564, 0.06483098, 0.046601634, 0.046991065, -0.13544942, 0.10566286, -0.051272973, -0.10581953, -0.0399486, -0.0802472, 0.16060595, 0.03244527, 0.09795031, 0.39165917, -0.05140297, -0.03681519) * inp_1_0_1; result2 += M4(0.2626928, -0.093770996, -0.024563592, 0.021592934, -0.19125529, 0.16897103, 0.09587122, -0.17313519, 0.377054, -0.029573312, 0.05840241, 0.41140825, 0.113769755, 0.010943671, 0.0956784, -0.045683797) * inp_1_1_1; result2 += M4(-0.025805825, 0.10162252, 0.00054252776, 0.14143053, -0.080749884, 0.036776923, -0.025050428, -0.033903494, 0.055847973, 0.10161979, 0.004042486, 0.096927956, 0.03371332, 0.0069152676, 0.100909024, 0.12545516) * inp_1_2_1; result2 += M4(-0.09145994, 0.016366532, -0.017075414, -0.023316022, -0.08669089, -0.056836553, -0.0031958094, -0.0326252, 0.029263152, -0.054057084, -0.0022970156, -0.10546944, -0.023081899, 0.088110805, -0.052521393, -0.22186917) * inp_1_0_2; result2 += M4(-0.006966543, 0.09195034, 0.01321291, 0.119268015, -0.11246801, 0.10336377, -0.0021902958, -0.1688245, 0.0045004673, 0.040309045, -0.005312909, -0.009582241, 0.007413412, -0.3428319, -0.101993926, -0.2402694) * inp_1_1_2; result2 += M4(0.037336282, -0.011441819, 0.046190716, -0.19637376, 0.016460652, 0.057905503, -0.00813096, -0.015268983, -0.0099185, 0.058853894, -0.02376407, 0.07680481, 0.007379123, 0.0831982, 0.002739225, 0.029244155) * inp_1_2_2; result3 += M4(0.015821027, 0.021100663, 0.007608764, 0.012485533, 0.026919948, 0.104333505, 0.018111547, 0.112735204, -0.015223109, -0.042692628, -0.001755492, -0.00068888516, -0.021349102, 0.27093062, -0.039633453, 0.13004722) * inp_1_0_0; result3 += M4(-0.034961153, 0.23967126, -0.0022346678, 0.058189902, 0.10207113, -0.05425977, -0.011510399, 0.015147186, 0.0486267, 0.09567271, 0.033346858, -0.024370417, 0.08859623, 0.08285227, -0.06074484, -0.034162886) * inp_1_1_0; result3 += M4(0.019782502, 0.07446156, -0.026075305, -0.1462709, 0.048057016, 0.01440537, -0.013998919, 0.16413637, -0.0055024396, 0.031014197, -0.01241874, -0.114800036, -0.004189944, 0.13158269, -0.016131738, 0.13775526) * inp_1_2_0; result3 += M4(-0.037508957, 0.06663466, 0.027408179, 0.026563229, -0.012067508, 0.0026841047, -0.008295769, 0.05006022, -0.00072103995, -0.066296935, 0.023772482, 0.027933216, -0.057277035, 0.2177611, 0.028595591, 0.07420207) * inp_1_0_1; result3 += M4(-0.035451714, -0.1403673, -0.0045600575, 0.09662095, 0.04496836, -0.0044004438, 0.07769002, -0.12002895, 0.031108193, -0.08988085, 0.036074776, 0.12800618, 0.18041886, 0.13634633, 0.036399633, 0.1641856) * inp_1_1_1; result3 += M4(0.04266117, 0.18987007, 0.006148413, -0.054817174, 0.03728923, 0.066090465, -0.03653267, 0.13088347, 0.06018789, 0.12113287, 0.010795441, -0.009296045, -0.15010966, 0.23944269, 0.05392461, -0.4040098) * inp_1_2_1; result3 += M4(-0.026160134, 0.023919683, -0.03395546, -0.03470103, 0.031370226, -0.029447485, 0.028847316, -0.030334778, 0.006648905, 0.20081076, -0.021005023, 0.008886418, -0.046030175, 0.063995056, -0.010483795, 0.12908041) * inp_1_0_2; result3 += M4(0.014633682, 0.14989322, -0.06841363, 0.08567676, 0.04050588, -0.11836059, 0.0041233604, 0.0007188805, 0.056597404, 0.06586901, 0.056220595, 0.07655318, 0.008944085, 0.08967679, -0.05457944, 0.059189234) * inp_1_1_2; result3 += M4(-0.13379431, -0.068811804, 0.014212837, 0.05204989, 0.07668834, 0.08014223, 0.011227577, 0.07779124, 0.07577975, -0.05987471, 0.0036609427, -0.0023543087, 0.023952609, 0.06771816, 0.0068097836, -0.035313968) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.08693307, -0.17065081, 0.02139556, -0.030592747, -0.082750045, 0.23090185, -0.0031490277, -0.010562262, 0.015483159, 0.0020871374, -0.04655774, 0.12630165, -0.22085539, -0.16003695, -0.022152767, 0.073887035) * inp_2_0_0; result0 += M4(-0.034414124, -0.26465952, 0.07190282, -0.036128797, 0.010475648, -0.1101459, 0.10406679, 0.0322411, -0.16600713, -0.13674136, -0.20712182, -0.10773136, 0.21288748, -0.11352627, -0.20985527, 0.072240576) * inp_2_1_0; result0 += M4(-0.11169629, -0.3425102, 0.038066078, -0.17851852, -0.039806835, -0.005631269, -0.019329347, -0.012230255, -0.099507704, -0.080405585, -0.094689496, -0.20508128, -0.19254299, -0.22259642, -0.12937008, -0.12696697) * inp_2_2_0; result0 += M4(0.0019668678, 0.02143185, -0.070310004, -0.061805986, -0.25092497, 0.08604996, 0.020442959, 0.03588982, 0.041495904, -0.014598018, 0.01900437, 0.11005241, -0.0017620308, 0.13998301, -0.21371387, -0.01986202) * inp_2_0_1; result0 += M4(-0.048302174, 0.14728042, -0.15273394, 0.1321596, -0.25160158, 0.032884177, -0.09878093, 0.0024988288, -0.24327305, -0.032637794, -0.25463334, 0.052673325, 0.0120140845, -0.23976275, -0.08505831, -0.06446488) * inp_2_1_1; result0 += M4(-0.051554512, -0.12408508, -0.10820404, -0.26008892, 0.010385675, 0.0772672, 0.015134421, -0.11121075, -0.057776544, 0.0074493457, -0.021145655, 0.088842094, 0.03401228, 0.03792837, -0.1963977, -0.015956495) * inp_2_2_1; result0 += M4(0.068534, 0.0924, 0.03035767, 0.069969915, 0.06627623, -0.038117707, 0.04019549, 0.06364771, 0.029199759, -0.028264062, 0.059588578, 0.054205336, -0.06039334, 0.050723672, 0.007056707, 0.06353082) * inp_2_0_2; result0 += M4(-0.15534253, 0.056620944, -0.14271495, -0.056332547, -0.19474366, 0.12321013, 0.01036483, -0.025593193, -0.0015963401, -0.01145436, 0.09820064, 0.05964219, -0.023103386, 0.17248192, -0.075484894, 0.007442714) * inp_2_1_2; result0 += M4(0.043611422, 0.08544304, -0.06249114, -0.15859029, 0.072452195, 0.04134663, -0.06620151, -0.11465052, 0.029403238, 0.030644985, 0.096108645, 0.0072367415, -0.036580753, -0.024625713, -0.3187224, -0.0280319) * inp_2_2_2; result1 += M4(-0.004454486, 0.05834628, -0.012924568, -0.37472776, 0.08252636, 0.072584234, 0.00592066, 0.02537231, 0.0654167, -0.034857713, -0.04314882, -0.25448936, -0.04042044, 0.08771209, 0.07018442, 0.18050739) * inp_2_0_0; result1 += M4(-0.000967292, 0.03862141, -0.033549648, -0.047140855, -0.028668344, -0.05847452, -0.0062128534, 0.064767234, -0.07083433, 0.078675754, -0.001477483, -0.20136821, 0.06169485, 0.013113486, -0.013994646, -0.44361335) * inp_2_1_0; result1 += M4(0.15813215, 0.004134095, 0.022878574, 0.097924024, -0.021102453, -0.008426715, 0.015019701, 0.08162131, 0.08906046, 0.04260382, 0.00075325626, 0.034683563, 0.028574366, -0.043164268, 0.014318217, 0.38759363) * inp_2_2_0; result1 += M4(-0.12522721, 0.069173336, -0.040488705, -0.07868339, -0.06788939, 0.043450426, -0.008449798, 0.07729012, -0.02299943, -0.0030704122, -0.15255092, -0.021611657, 0.0744391, 0.0018362101, -0.03894265, -0.22794332) * inp_2_0_1; result1 += M4(-0.1580109, -0.02756036, -0.09412902, 0.018727422, 0.11647076, -0.11746908, -0.051888343, -0.20360778, -0.04686845, 0.09895321, -0.0926199, -0.17273769, -0.36080354, 0.12071697, 0.025097406, 0.39789715) * inp_2_1_1; result1 += M4(-0.22594833, 0.0026147836, 0.030267097, -0.21973489, 0.16349053, -0.013097791, -0.0039449097, -0.05241686, -0.037861373, 0.038856905, 0.05024988, 0.030154739, 0.18097909, -0.07648695, -0.033047095, -0.037038796) * inp_2_2_1; result1 += M4(-0.062484283, 0.060117625, -0.055314973, -0.13637567, 0.12328895, 0.023053851, -0.06164984, 0.057503, 0.030249804, -0.0011671329, -0.10160986, 0.112754814, -0.13527262, 0.07738453, -0.026142327, -0.01884289) * inp_2_0_2; result1 += M4(-0.15617636, 0.022888018, -0.106631406, -0.104274504, -0.015902499, -0.012276889, -0.12850161, -0.073125124, -0.08795187, 0.045019627, 0.04648159, 0.0037987735, 0.23930883, -0.068329036, 0.054500047, 0.214235) * inp_2_1_2; result1 += M4(-0.07621754, 0.085056655, 0.007952461, -0.3316923, 0.03021259, -0.03413086, -0.034499064, -0.1442444, -0.007256017, -0.023825426, 0.034957547, -0.035687182, 0.023364687, 0.142062, 0.004490117, 0.10633194) * inp_2_2_2; result2 += M4(0.0058248662, -0.022090416, 0.08324298, -0.11713383, 0.06348201, -0.006018769, -0.014847065, 0.079931535, -0.14967066, 0.14211667, -0.07751118, -0.016927801, -0.052836828, -0.105575055, 0.020811426, 0.050663218) * inp_2_0_0; result2 += M4(-0.027677637, -0.016862823, -0.03723962, -0.12170521, -0.08804449, 0.044675115, -0.06492734, -0.0445724, -0.2292301, 0.18049008, 0.08087464, -0.11929889, -0.12307612, 0.26611283, 0.032856025, 0.32367548) * inp_2_1_0; result2 += M4(0.074571244, -0.1359584, 0.0076102363, 0.14377402, -0.010866609, -0.021425126, -0.012563005, 0.032009874, -0.042469706, 0.06373109, 0.008247611, -0.123839855, 0.07936991, -0.10466879, -0.025932126, -0.27297425) * inp_2_2_0; result2 += M4(0.04605778, -0.02024964, 0.09176006, 0.1332358, 0.11362848, -0.12425884, -0.031933445, -0.09694159, 0.060391363, 0.20319493, 0.0077123214, 0.11044802, -0.1110636, 0.003289694, -0.042722244, -0.005420704) * inp_2_0_1; result2 += M4(-0.21746966, -0.06753049, 0.06957026, 0.00929675, -0.23789741, 0.00056044257, -0.15806296, -0.23176935, -0.07820704, 0.20272218, 0.04149118, 0.00652215, 0.06933115, 0.14265442, 0.08155157, -0.1713965) * inp_2_1_1; result2 += M4(-0.058762427, -0.17342776, 0.014982224, -0.16786353, -0.06949061, 0.049996514, -0.036930192, 0.013639558, 0.07561608, 0.07422858, 0.00084817206, 0.038239725, -0.19279233, -0.043070424, 0.009139869, 0.016415402) * inp_2_2_1; result2 += M4(0.05960569, -0.09840411, 0.06079903, -0.05432497, 0.009538931, 0.10017572, 0.010566671, 0.0682006, -0.011331594, 0.052025422, -0.046343185, 0.009512244, 0.07680127, 0.10840038, 0.026848562, 0.10226063) * inp_2_0_2; result2 += M4(-0.05441211, 0.007620672, 0.04898413, 0.016237747, 0.08523733, 0.1008421, -0.016069591, 0.13920736, 0.023195423, 0.09577443, -0.05025333, 0.062203858, 0.115916625, -0.07159564, 0.019350711, 0.051842786) * inp_2_1_2; result2 += M4(0.09460671, -0.106210634, 0.030534955, -0.1922735, -0.02180319, -0.041184213, -0.011801764, -0.028470462, 0.02066972, 0.009972696, -0.06250501, -0.002671642, -0.017733835, 0.09246019, 0.0152162835, 0.036849305) * inp_2_2_2; result3 += M4(0.013653418, 0.011209737, 0.05195148, 0.00052129483, 0.026601542, -0.020930406, 0.025614375, -0.05213661, 0.047446735, 0.32998148, -0.03154811, -0.03994428, 0.0681432, -0.22614044, 0.058815055, 0.0070781177) * inp_2_0_0; result3 += M4(0.054749466, -0.054752223, -0.03880007, -0.0076104626, -0.0042746123, 0.020084158, -0.01708166, -0.23105499, 0.13129725, 0.05165562, 0.039911408, -0.25163162, 0.0045669484, 0.16142978, 0.0028432074, -0.027801039) * inp_2_1_0; result3 += M4(0.027611684, -0.111409254, 0.029255027, 0.17930311, 0.036068276, 0.014293913, -0.010299533, 0.07962782, 0.14310342, 0.09096752, 0.0019909753, 0.073413424, 0.14182977, -0.104282916, -0.02193382, 0.10353244) * inp_2_2_0; result3 += M4(-0.027803004, -0.0054363934, 0.03462184, -0.019776775, -0.013811756, -0.016983695, 0.07945102, 0.054471068, 0.02892569, 0.15335307, 0.02548671, -0.00079713966, -0.0272622, 0.07675037, -0.018749729, -0.033545755) * inp_2_0_1; result3 += M4(0.0047113053, -0.19591737, 0.10511281, -0.26956907, 0.08151275, 0.16827774, -0.031831272, -0.1284985, 0.07563294, 0.29861048, 0.101399206, -0.056886517, 0.07329864, 0.28858513, 0.13025235, -0.11513965) * inp_2_1_1; result3 += M4(-0.03520097, -0.051618017, -0.0005094083, -0.20378071, 0.14233756, -0.048920494, -0.014952656, -0.074660905, 0.17109272, 0.017767409, 0.040378034, -0.013631757, -0.017902832, -0.21197207, 0.02267449, 0.011469238) * inp_2_2_1; result3 += M4(0.025841124, 0.059367023, 0.050303422, -0.021874394, 0.034771312, 0.08063455, 0.015433658, 0.023556221, 0.008661646, 0.0216571, -0.017842129, 0.019407727, 0.01801039, -0.063731365, 0.06588262, 0.055482883) * inp_2_0_2; result3 += M4(0.03721624, -0.08508771, 0.050330747, -0.14914006, -0.005661827, -0.044399496, 0.0078945765, -0.04097424, 0.05613064, 0.055422217, -0.011771005, 0.020723779, 0.029433575, -0.03057195, -0.01739016, -0.09306693) * inp_2_1_2; result3 += M4(-0.0025235803, 0.04354556, 0.025213884, 0.015466238, -0.050181773, 0.073123336, -0.021807548, 0.016036587, 0.03960988, 0.054143436, -0.044757236, 0.066858016, -0.013835072, 0.018757863, 0.02605898, -0.12627815) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.29331043, -0.65134513, -0.09568241, 0.30595055, 0.41973484, -0.19069259, 0.11450455, 0.49766144, -0.0144500965, 0.08511677, 0.0306714, -0.00222399, -0.031124996, -0.3049307, 0.068836264, 0.0697639) * inp_3_0_0; result0 += M4(0.13214809, -0.10355065, 0.18974772, -0.12940946, 0.7363369, 0.02181728, 0.3035599, 0.054012407, 0.07044149, 0.15703188, 0.058442768, -0.118907176, -0.17151129, -0.52445394, 0.013431938, 0.077401474) * inp_3_1_0; result0 += M4(-0.0016434641, -0.25046545, 0.03426973, 0.059594158, 0.29475465, -0.283165, 0.3430277, -0.6775914, 0.12928636, 0.10802228, -0.06445197, 0.0002316847, 0.11736478, -0.050811768, 0.016172409, 0.13938946) * inp_3_2_0; result0 += M4(-0.7271733, -0.16638061, -0.7151816, 0.2229782, 0.033997662, 0.0064102933, 0.16239409, -0.09820371, -0.045126047, 0.09123416, -0.0039047091, 0.0042754556, 0.17513506, 0.20754345, 0.04437171, -0.034857318) * inp_3_0_1; result0 += M4(-0.31226203, 0.035098568, 0.059601694, 0.052784514, -0.047278155, -0.118859135, -0.17026788, 0.20707436, 0.054290563, -0.23348564, -0.3370832, 0.12680693, -0.46709326, 0.053526495, -0.08707539, 0.13533548) * inp_3_1_1; result0 += M4(-0.091123275, 0.22284336, 0.0004082688, -0.12275304, -0.010187943, 0.113089226, 0.24644089, -0.040277157, -0.086181626, 0.012649849, 0.07180187, -0.1702207, 0.02711439, -0.10095026, 0.05267242, -0.035415858) * inp_3_2_1; result0 += M4(-0.5525359, 0.013622019, -0.38750458, -0.33257785, -0.010041472, -0.04280583, 0.05258217, -0.041685894, -0.06449196, 0.030908382, -0.07413317, -0.000142608, 0.05386494, 0.025279734, -0.08958719, -0.0333841) * inp_3_0_2; result0 += M4(-0.019637544, -0.026034161, -0.3154136, 0.057586942, 0.015503398, 0.01286974, 0.052676495, 0.062401555, -0.029826092, -0.028712852, -0.088876314, 0.024794703, 0.08045395, -0.07798036, -0.1867407, 0.005052557) * inp_3_1_2; result0 += M4(-0.022020457, -0.06625262, -0.08575337, -0.03185336, 0.07079994, -0.06675598, 0.03136564, 0.032442454, 0.03324187, 0.017196575, 0.06327241, -0.056735367, -0.013993971, 0.09015031, -0.04969764, 0.012548671) * inp_3_2_2; result1 += M4(-0.25348434, -0.0027920124, -0.22405544, -0.6551902, 0.03886823, 0.07083372, -0.10281821, -1.6235825, 0.05245514, -0.0036389965, 0.03506393, 0.0275485, 6.205095e-05, -0.014367808, 0.015460845, 0.2314782) * inp_3_0_0; result1 += M4(-0.06960072, 0.05878519, -0.037354827, 6.20384e-05, -0.23495986, 0.52467465, -0.37882438, -1.1928656, -0.12926176, 0.008683721, 0.015578641, -0.020937784, 0.08035078, -0.051837415, 0.019532701, -0.11615856) * inp_3_1_0; result1 += M4(0.031722657, 0.018048, 0.0027426707, -0.003734051, -0.23190165, 0.34762144, -0.09495745, -1.0429838, -0.08445675, 0.023699716, -0.0026799662, 0.021530788, -0.0075454107, -0.00039693766, -0.015276738, -0.07271316) * inp_3_2_0; result1 += M4(-0.23174834, -0.13209529, -0.19401728, -0.66928273, -0.0038258058, -0.05235682, 0.35788742, -0.23198242, 0.04934844, -0.15510008, 0.019713508, -0.1335248, -0.0146158915, -0.02901011, -0.0048464984, -0.11951175) * inp_3_0_1; result1 += M4(0.20075168, 0.06585916, -0.056418177, -0.32109964, 0.046115667, 0.14204009, 0.5762242, 0.23112637, 0.44695127, -0.331473, 0.09270788, 0.15044361, -0.40329382, 0.12278225, -0.009131341, -0.37936768) * inp_3_1_1; result1 += M4(-0.036146384, 0.07687927, -0.0054054754, -0.11028452, -0.07586812, 0.037179697, 0.15583162, 0.07782492, 0.071678534, 0.0026992327, -0.054894257, 0.04508182, -0.05324789, 0.015786594, 0.008175969, 0.10140928) * inp_3_2_1; result1 += M4(-0.87673324, -0.3025884, -0.5566484, -0.7876726, 0.0928883, -0.08137358, 0.050119635, 0.13488306, -0.0026967183, -0.022458546, -0.09903374, -0.07593027, 0.00954073, -0.044409025, -0.08390191, 0.2044652) * inp_3_0_2; result1 += M4(-0.26082185, -0.17667769, 0.007517952, 0.10776434, 0.01278051, 0.017400231, 0.051507194, -0.015931614, -0.19612557, 0.08023725, 0.09892996, -0.0226856, -0.30799457, -0.14527254, 0.12882468, -0.17808507) * inp_3_1_2; result1 += M4(-0.06306353, -0.054495078, 0.02439301, -0.10317908, 0.0302134, -0.04173077, -0.013272951, 0.12012308, 0.09887524, 0.012970351, -0.041545805, -0.059782024, -0.017693106, 0.03156086, 0.0045670774, 0.0027636376) * inp_3_2_2; result2 += M4(-0.20144346, 0.008712933, -0.075261384, -0.36317047, 0.5086468, 0.5427755, 0.09623957, -1.0044582, 0.06291748, -0.051731467, -0.013319902, -0.057448927, 0.026144058, -0.094469674, -0.08719515, -0.0005656063) * inp_3_0_0; result2 += M4(0.24697809, -0.062479902, -0.07002259, -0.041172896, 0.8642167, -0.14940973, 0.20617324, -0.66097945, -0.049823277, -0.02518739, 0.2186299, -0.12120603, 0.05995945, 0.1300007, -0.029941244, 0.17990863) * inp_3_1_0; result2 += M4(0.009326906, 0.0037161903, -0.0053637316, 0.13570231, 0.730324, -0.04082691, -0.0955507, -0.09399726, 0.069702126, -0.041782245, 0.086260274, 0.09996367, 0.025720311, 0.051068645, -0.005021416, 0.09827582) * inp_3_2_0; result2 += M4(-0.76068705, 0.68030065, -0.029912097, -0.41790232, 0.018840808, -0.07995391, 0.013972523, -0.090490066, -0.052537132, 0.04310287, -0.02764603, -0.03967031, -0.0748654, 0.2913346, -0.013958741, -0.0134184) * inp_3_0_1; result2 += M4(-0.18920162, 0.20166536, -0.0030654322, -0.075543545, 0.007748557, 0.22134826, 0.1577859, 0.086432666, -0.3115508, -0.2062658, 0.25531858, -0.15933642, -0.15985927, 0.1087903, -0.0461201, -0.41595927) * inp_3_1_1; result2 += M4(-0.1418203, 0.003930493, 0.06983122, -0.04268959, 0.17384261, -0.0029162853, -0.11858095, 0.0694216, 0.13090529, 0.028877735, -0.084912844, -0.047109142, -0.01880874, -0.03648126, -0.004192422, -0.026673542) * inp_3_2_1; result2 += M4(-0.8132464, 0.00028948364, -0.048362605, -0.2240111, -0.030052396, -0.0007855427, -0.050095633, -0.045051746, -0.042445764, 0.00046762917, -0.009439505, 0.025868075, 0.026378391, -0.13082972, -0.0010010166, -0.024644386) * inp_3_0_2; result2 += M4(-0.1411771, -0.012740163, -0.091763794, 0.022893801, 0.018405993, 0.058371857, -0.01256255, 0.05162234, 0.011817537, 0.058343552, 0.09502954, 0.036101297, -0.10378635, 0.11927344, -0.0943947, -0.049324565) * inp_3_1_2; result2 += M4(0.041735645, -0.05504158, -0.037157748, -0.12814182, 0.007035172, -0.046590902, -0.018629909, 0.043037876, 0.03682162, 0.0103306, -0.04390027, -0.023723379, 0.093299285, -0.026278881, -0.011165699, 0.020702822) * inp_3_2_2; result3 += M4(0.20946784, -0.061636258, 0.005867587, 0.13153915, 0.19424273, -0.9881449, 0.14904043, 0.12721889, 0.01805199, 0.07062746, 0.018206235, 0.005357882, 0.013032781, 0.020222718, -0.03712409, 0.040184762) * inp_3_0_0; result3 += M4(0.14709976, -0.1630133, -0.02093563, 0.19440834, 0.3460318, -0.049277145, 0.24367408, 0.3400163, -0.06265202, -0.08215433, -0.013862488, 0.010900778, -0.031556007, -0.08406643, -0.038086377, 0.0956199) * inp_3_1_0; result3 += M4(0.053559713, -0.035656653, 0.0035685876, 0.122467466, 0.3002568, -0.12376134, 0.076163664, 0.28286678, -0.07123029, -0.032319725, 0.038096048, 0.2394619, 0.00022420919, 0.08835556, 0.007234805, 0.18054554) * inp_3_2_0; result3 += M4(0.19193918, -2.2039819, 0.10748303, -0.54407996, 0.078228086, -0.47569034, 0.29334813, 0.014020992, -0.044548374, 0.037887417, -0.06892848, -0.004981244, -0.053659465, 0.088396825, -0.046439134, -0.056549717) * inp_3_0_1; result3 += M4(0.35448378, -0.09493189, -0.01705788, 0.30046645, 0.35604927, -0.5172242, 0.6333852, 0.11109572, 0.2333543, 0.17949948, 0.2522828, -0.0106073795, 0.016260436, -0.35237148, 0.053269006, -0.08483123) * inp_3_1_1; result3 += M4(-0.026958898, -0.03869937, 0.03943161, -0.1440067, 0.2621812, -0.41849393, 0.037529465, 0.076904066, -0.13265266, -0.09460549, -0.020180644, -0.028084535, 0.0020274273, 0.041577503, 0.03072593, -0.1682099) * inp_3_2_1; result3 += M4(-0.16202508, -0.50075394, 0.07069585, -0.10742512, -0.00989692, -0.014762547, 0.029606273, 0.009444442, -0.028881554, -0.09548789, -0.00038876964, 0.012579589, -0.001990668, 0.049019277, -0.0077309147, -0.048075207) * inp_3_0_2; result3 += M4(0.11969819, 0.16745526, -0.063689075, 0.027267152, 0.06244547, -0.076096006, -0.026568405, 0.061310668, 0.07393112, 0.049375687, 0.039074425, -0.009690288, -0.07793207, 0.054376584, -0.065702945, -0.08929367) * inp_3_1_2; result3 += M4(0.008781726, 0.08592548, -0.035295513, 0.06523619, -0.07667418, 0.1083951, -0.03946963, 0.011626628, -0.08317993, 0.01853213, -0.025292184, -0.0032334356, 0.0066494923, 0.0053733597, 0.0065964023, -0.050833173) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0))); imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0))); } //!DESC ArtCNN C4F16 DN (Conv2D-4-ReLU) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND conv2d_3 //!SAVE conv2d_4 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(-0.0026729486, -0.009118031, -0.004540173, 0.0025627601); V4 result1 = V4(0.0010126249, -0.005367281, -0.0069887056, -0.012432767); V4 result2 = V4(0.00539171, -0.0775509, -0.006941183, 0.0041552046); V4 result3 = V4(0.011853503, 0.0043568853, -0.0006060599, -0.0006150335); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.021914218, -0.11617246, -0.009368583, 0.05684142, -0.005133314, 0.011350818, 0.026205866, -0.028534824, -0.03062303, -0.09732941, 0.025517836, -0.069901094, -0.013303909, 0.062747434, -0.02568686, 0.037145246) * inp_0_0_0; result0 += M4(-0.010360038, 0.015028782, -0.030567572, 0.1106487, -0.0049328087, 0.020606536, 0.0297191, 0.0013530798, 0.047092088, 0.16738015, 0.08345388, -0.16187893, 0.022272006, -0.092916265, 0.03022449, -0.016449388) * inp_0_1_0; result0 += M4(0.01982294, 0.019875335, 0.01996053, -0.012867403, 0.00044470024, -0.010377027, -0.0006554032, -0.010035933, -0.016700005, -0.07441203, 0.07416025, 0.018944684, -0.010561674, -0.0019200646, -0.049225237, 0.033712704) * inp_0_2_0; result0 += M4(0.045345485, 0.09474655, -0.06943947, 0.054978676, -0.009174117, -0.14775373, -0.05860814, 0.05651886, -0.009118274, -0.0027854848, 0.033663277, 0.018826002, 0.042624157, 0.40488443, -0.024503676, 0.013733116) * inp_0_0_1; result0 += M4(0.054090824, 0.00046856125, 0.30721238, 0.1362059, -0.068569876, -0.024960056, -0.28240675, 0.12252294, 0.070837885, -0.07752152, 0.11132685, -0.041233696, 0.0044298647, -0.02591389, -0.14131497, -0.13089809) * inp_0_1_1; result0 += M4(0.0047843037, 0.029245751, -0.07881148, 0.08345751, 0.009018998, -0.00029674076, 0.050434228, 0.0073297, -0.012123766, -0.08651535, 0.103444204, -0.030845152, 0.024352966, 0.048987303, 0.026123606, -0.10305901) * inp_0_2_1; result0 += M4(-0.062391043, 0.00033705082, 0.03076704, -0.016758792, 0.0022186157, 0.03866735, 0.040886477, -0.020763757, -0.017459437, -0.1524573, 0.00772104, 0.01819153, 0.08693081, 0.27039582, 0.030538807, -0.15906724) * inp_0_0_2; result0 += M4(-0.018527227, 0.04462623, -0.052682225, 0.015176739, 0.18499543, -0.054205116, 0.13735813, 0.046176717, -0.06778874, -0.13747382, 0.011973823, 0.06718452, -0.009913105, -0.122881696, 0.066367164, 0.017406069) * inp_0_1_2; result0 += M4(-0.03978319, -0.05712093, -0.07798799, -0.014469282, -0.018711641, 0.00088872586, 0.0131670525, -0.004277697, 0.0032192068, -0.031519994, -0.0057276185, 0.08477646, -0.0074445987, 0.032388695, -0.014035215, 0.059175678) * inp_0_2_2; result1 += M4(-0.022636406, -0.0317987, 0.009924718, -0.02755363, -0.012476474, 0.008858244, 0.008336963, 0.021115713, -0.038300052, 0.038209908, 0.029868802, 0.063013546, 0.08995586, -0.022677617, -0.0012756002, -0.09218601) * inp_0_0_0; result1 += M4(0.08527425, -0.05057232, -0.033574633, -0.0312959, 0.0046156878, 0.03250658, -0.015200698, 0.037020586, -0.052733626, 0.06011997, -0.018855006, 0.05681049, -0.02258977, -0.002664506, -0.04954991, 0.142494) * inp_0_1_0; result1 += M4(-0.023235567, 0.007500269, -0.030917551, 0.0072317133, 0.007158622, -0.0024224983, 0.012482237, 0.02289667, 0.07065561, 0.025944293, 0.0014435597, 0.009262399, -0.045243554, -0.005633511, 0.023493696, 0.009249902) * inp_0_2_0; result1 += M4(0.048096385, 0.029852595, -0.0133559285, 0.022333201, -0.026130898, -0.04073744, 0.0067113335, -0.08450368, 0.02872919, 0.037127454, -0.02849763, 0.008312485, 0.19058801, 0.023126625, 0.10608803, 0.0054010903) * inp_0_0_1; result1 += M4(0.2142595, 0.10368686, 0.14137582, 0.2276841, -0.2762845, 0.0638718, -0.02803275, -0.25499943, 0.08047295, 0.2840706, 0.043346327, 0.42839414, 0.028717794, -0.03153078, -0.04262977, -0.25685337) * inp_0_1_1; result1 += M4(-0.021053022, 0.028336195, -0.008409941, 0.06323808, 0.012621629, -0.048663706, -0.007692989, -0.008808492, -0.074138805, -0.019989787, -0.060010724, 0.026547564, -0.05273946, 0.0060660257, 0.07014408, 0.019586938) * inp_0_2_1; result1 += M4(-0.02078598, 0.045829583, -0.14027956, -0.012883261, 0.020552302, 0.07820469, -0.12777452, 0.1382588, 0.014396063, -0.00068621116, -0.04793995, 0.011032088, 0.20897827, 0.0822608, 0.021842653, 0.057548907) * inp_0_0_2; result1 += M4(-0.032614954, -0.105935656, 0.17362007, -0.09422867, 0.14629605, 0.20561257, 0.027214428, 0.32978624, -0.027780017, -0.2749673, -0.03141362, -0.007930343, -0.06896758, -0.1809557, -0.2074018, -0.052662022) * inp_0_1_2; result1 += M4(-0.009896517, 0.044701114, -0.09129433, 0.010653113, -0.01603519, 0.12504293, -0.046071548, 0.30467135, 0.012440922, -0.055328626, 0.029698366, -0.027931482, 0.01550809, -0.023697475, 0.010139957, -0.032961883) * inp_0_2_2; result2 += M4(-0.01083501, -0.013205528, 0.02171723, 0.03952358, -0.0072034732, 0.048146565, 0.009342348, -0.018610718, 0.04162874, 0.055757895, 0.023857849, -0.0023682597, 0.006735038, -0.027995862, -0.02188188, -0.073906764) * inp_0_0_0; result2 += M4(0.020816028, -0.07236795, 0.010545047, -0.10577178, -0.004693639, -0.106242865, -0.03869585, -0.0023009356, -0.012141896, 0.0182246, 0.030711, 0.04527034, -0.015984364, 0.018912438, -0.022966016, -0.037378892) * inp_0_1_0; result2 += M4(-0.03574745, -0.098603316, -0.039416097, 0.004244213, -0.012500202, 0.06638324, 0.006413618, 0.020164093, 0.010199427, -0.01930046, 0.027108775, -0.025017312, -0.005244926, -0.08917895, 0.09999863, -0.037757203) * inp_0_2_0; result2 += M4(0.014028899, -0.0130630415, 0.0023326976, -0.03877837, -0.031694643, 0.033852294, 0.01874934, 0.066198945, 0.007474204, -0.025111675, -0.028084328, -0.0065908534, -0.00590667, 0.058012716, -0.019149536, -0.17256194) * inp_0_0_1; result2 += M4(-0.14539951, 0.03998901, -0.11717134, -0.058644366, 0.006408735, 0.04666625, 0.049062427, -0.02491412, -0.28878614, -0.041233588, -0.092074364, -0.14267835, -0.08365703, 0.0406808, 0.21130432, 0.2682896) * inp_0_1_1; result2 += M4(-0.02708198, -0.015422843, -0.06906002, 0.042163003, 0.02414785, -0.048834134, -0.22201012, -0.0021014155, -0.029413834, -0.019117769, -0.045291685, -0.04816397, -0.030427815, -0.072023846, -0.18592322, 0.033404402) * inp_0_2_1; result2 += M4(-0.01480917, -0.09777779, -0.0043074386, -0.011114537, 0.057193402, -0.0999652, -0.0025167288, -0.022626963, 0.047978405, 0.04829804, -0.015542103, -0.0036211882, 0.036602892, -0.016875776, 0.007938298, -0.04066141) * inp_0_0_2; result2 += M4(-0.1538022, 0.017257746, -0.013787097, 0.017655334, 0.11901589, -0.07126396, -0.014715636, 0.07018272, 0.02493138, -0.01330049, 0.02054418, -0.0057723266, 0.047818337, -0.05447998, -0.058911216, 0.0051705465) * inp_0_1_2; result2 += M4(-0.017634943, -0.03843806, -0.0139824925, -0.022553438, -0.011063969, 0.068129465, 0.08750126, 0.006165332, 0.013532302, 0.010584766, -0.0029774788, -0.007267035, 0.030596418, -0.039675947, 0.13740534, 0.017895224) * inp_0_2_2; result3 += M4(0.02400641, -0.030053487, 0.029978657, -0.011472378, -0.015705207, 0.0020864124, 0.012621335, -0.0015994518, -0.038646378, 0.08283212, -0.14588745, -0.069090776, -0.0253787, 0.08982443, 0.12616988, 0.19617043) * inp_0_0_0; result3 += M4(-0.041714545, 0.09706045, -0.004786727, 0.11758148, 0.0064028953, 0.015090976, -0.014620722, -0.013272027, 0.056923486, -0.15268135, 0.10741715, -0.026256103, -0.022867711, 0.19453919, 0.16719228, 0.02380112) * inp_0_1_0; result3 += M4(0.023517817, -0.13354391, -0.0037430539, 0.017306717, 0.015342763, 0.074930035, 0.023201792, -0.024335487, -0.013311295, -0.1150749, -0.007604741, -0.042021632, -0.030143825, 0.08355529, -0.043661103, -0.0038049892) * inp_0_2_0; result3 += M4(0.01569501, -0.14677982, 0.08849391, 0.39460534, 0.11121792, -0.056983557, 0.053217273, -0.2879503, 0.067050174, -0.13749118, 0.0906637, 0.17839515, -0.12297249, -0.010817937, 0.26691332, -0.021792648) * inp_0_0_1; result3 += M4(-0.01561178, 0.3136138, 0.025481842, 0.063206874, 0.0053315097, 0.085575454, -0.08153937, 0.0733605, -0.062703975, -0.18080904, -0.07564181, -0.12950756, 0.10764349, -0.21262601, 0.349146, 0.13234591) * inp_0_1_1; result3 += M4(0.03953356, -0.08297436, 0.06468856, 0.068263195, 0.0013706506, 0.035552897, 0.033942375, -0.1047216, -0.015826162, 0.0765416, 0.031275272, -0.036474463, 0.0045872545, 0.14914781, 0.0010758708, 0.00592594) * inp_0_2_1; result3 += M4(-0.025000282, -0.15813701, 0.0519935, 0.20247252, -0.06564599, 0.05463698, -0.057924747, 0.017237851, -0.003947944, -0.05726331, 0.033640172, 0.0063196914, -0.05535237, 0.085298754, 0.0078039947, 0.059405714) * inp_0_0_2; result3 += M4(0.031319655, 0.10970675, -0.0139634665, 0.15957037, -0.045529045, -0.085457146, 0.018284436, -0.04103284, -0.00945746, 0.0026015304, -0.010887531, -0.06979818, -0.03884228, 0.099270575, 0.054990254, -0.055025492) * inp_0_1_2; result3 += M4(-0.008159392, 0.062612526, 0.017000064, 0.008448395, -0.022207238, -0.05284995, -0.0045499234, -0.018014405, -0.0041577164, 0.07368823, 0.0012046184, -0.038139135, -0.009365521, 0.042610925, -0.036690906, 0.000729563) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.0034388818, -0.22251937, 0.015777363, -0.021770088, 0.017489126, 0.03589511, -0.0916312, 0.11796661, -0.0035037077, 0.18664715, -0.027220918, -0.025669707, 0.04000356, 0.19243294, 0.02600755, -0.025025833) * inp_1_0_0; result0 += M4(0.059549175, -0.16614975, 0.21939614, 0.043308586, -0.10604001, -0.07033872, -0.14174762, 0.15222417, -0.29018486, 0.18095215, -0.06730326, -0.2907948, -0.01268461, 0.042411525, -0.0032481707, -0.004444033) * inp_1_1_0; result0 += M4(-0.04943294, 0.020744942, 0.001127501, 0.06722202, 0.016904969, 0.096810736, -0.08340058, 0.012369877, -0.07199274, 0.033250358, -0.15037698, 0.1194357, 0.019775502, 0.047764156, -0.08906369, -0.043471884) * inp_1_2_0; result0 += M4(0.0005035524, -0.23813362, 0.00093171897, 0.043691058, 0.026167134, -0.16768363, -0.10153279, 0.050802443, -0.010336683, -0.3315735, 0.010909711, 0.016040836, -0.026837667, 0.22961362, -0.029229645, -0.02952048) * inp_1_0_1; result0 += M4(-0.06502538, 0.14627588, -0.23347846, 0.3320102, 0.0016062058, 0.072593614, -0.21032543, 0.27012083, 0.16581939, 0.22792867, -0.14786328, 0.03359701, 0.13694751, -0.14298105, -0.05472996, -0.042857062) * inp_1_1_1; result0 += M4(0.07553243, 0.08353711, -0.023384081, 0.1039068, -0.059030533, 0.035383586, -0.18214476, 0.11393003, 0.14167774, 0.3084042, 0.021511517, -0.06643137, -0.02965274, 0.030708699, 0.08792437, -0.20370322) * inp_1_2_1; result0 += M4(-0.016985402, -0.11716031, -0.012229469, -0.06267599, -0.019581117, -0.17806175, -0.007790088, -0.042735703, 0.041139144, 0.23682407, 0.03239123, -0.0019922866, 0.048376363, 0.10858235, -0.019264022, -0.025549449) * inp_1_0_2; result0 += M4(0.11800596, 0.3079564, -0.003688073, -0.027492886, 0.09356869, 0.20233992, -0.053107467, -0.001968934, 0.06199058, 0.08166848, 0.022896048, -0.022796337, -0.039976187, -0.2079883, -0.057612967, -0.013818615) * inp_1_1_2; result0 += M4(0.014574165, -0.0384134, 0.04750934, -0.03633887, -0.02541977, -0.011050764, -0.014376186, -0.055349994, 0.009267849, -0.060408834, -0.008768118, 0.030549001, 0.033920042, 0.047876347, -0.06073797, -0.0010981291) * inp_1_2_2; result1 += M4(0.028379917, 0.011210592, 0.019203654, 0.11054584, -0.047909312, 9.788465e-05, 0.02348728, -0.0037367179, 0.008654384, -0.077300586, -0.010734743, 0.012730441, -0.014930329, -0.025063215, 0.012640007, 0.049787458) * inp_1_0_0; result1 += M4(0.2915809, -0.096177585, -0.023518667, 0.15956287, -0.026792454, -0.076637276, 0.008837276, -0.21254142, -0.12555294, -0.17625237, 0.1897836, -0.35824615, 0.05468509, -0.033178657, 0.070616506, -0.098863155) * inp_1_1_0; result1 += M4(-0.016640538, 0.037484664, 0.028590482, 0.16368777, -0.11102847, -0.016844792, 0.027420374, -0.008949887, 0.12293318, 0.109256506, 0.266119, -0.24282989, -0.043449447, -0.032302603, -0.011179436, -0.15413104) * inp_1_2_0; result1 += M4(-0.01972686, 0.013956036, 0.023198597, -0.03308292, -0.041099463, -0.0336348, -0.013545791, -0.0008662928, -0.016514443, -0.12550876, -0.07553051, -0.021900078, -0.05558041, 0.034059007, 0.06549839, -0.05871351) * inp_1_0_1; result1 += M4(-0.23278229, 0.047352415, 0.07494679, -0.29979485, -0.1302117, -0.1902857, 0.083591044, -0.059333637, -0.1672969, -0.46168566, 0.38621432, -0.3404379, 0.23329675, 0.034085, -0.10168409, 0.11679009) * inp_1_1_1; result1 += M4(-0.00012295214, 0.025385812, 0.054497138, -0.113505885, -0.025128443, 0.01302705, 0.05143675, 0.031367294, -0.015637888, -0.16113235, 0.05322388, 0.16249835, -0.06623687, -0.06481244, 0.05881237, -0.0005509477) * inp_1_2_1; result1 += M4(0.008287356, 0.05481202, -0.0031455504, 0.03494167, -0.009636335, 0.014740706, -0.018926574, 0.014098675, 0.05158682, 0.08743864, -0.053138684, -0.023413943, 0.017271196, -0.06987205, -0.0035899857, -0.047700323) * inp_1_0_2; result1 += M4(-0.038841106, 0.2481033, 0.036087137, 0.09782248, -0.011248842, 0.011795868, 0.09937443, -0.034050684, -0.022367714, 0.16136482, 0.13208714, 0.0888113, -0.061618242, -0.18804665, 0.0031957757, -0.04843446) * inp_1_1_2; result1 += M4(0.022460306, 0.08452179, -0.058385942, 0.0013175992, -0.03691133, 0.07601965, -0.09082835, 0.014730101, 0.004300361, -0.036070473, 0.048449922, -0.023776386, 0.023770131, 0.008518323, 0.11813234, 0.00757947) * inp_1_2_2; result2 += M4(-0.020158121, -0.09850521, -0.01808786, -0.046930075, -0.027790267, -0.103127845, 0.01063326, 0.072075725, -0.017249933, 0.022990294, -0.044194583, -0.022566233, -0.018338412, 0.024666967, -0.012920887, 0.002205528) * inp_1_0_0; result2 += M4(0.0043274807, -0.025987314, -0.0048197987, -0.14275232, -0.0032608795, -0.09790321, -0.030660104, -0.05750191, -0.07502013, -0.02613252, -0.025338776, 0.17625573, -0.015900005, -0.005271009, 0.066648126, -0.0234273) * inp_1_1_0; result2 += M4(-0.039598502, -0.03328797, 0.32940257, -0.04562815, -0.0353374, -0.04504794, -0.21068643, 0.008190476, 0.073044285, 0.06614034, -0.16404161, -0.3555844, -0.0038737059, 0.05293928, 0.14013302, 0.05310725) * inp_1_2_0; result2 += M4(-0.03245594, -0.0006681101, 0.028493475, 0.013937221, 0.022651397, -0.060017616, 0.00045232504, 0.039613184, -0.016315138, -0.07699356, 0.03116988, -0.0013970529, -0.018040176, -0.0078056287, 0.009626658, -0.005372535) * inp_1_0_1; result2 += M4(-0.015245987, -0.081190355, 0.042198323, 0.12110874, 0.3102424, -0.0781962, -0.048363935, 0.19533187, 0.060880117, 0.03948593, -0.0036099968, 0.0745693, 0.073447965, -0.05394071, 0.04728113, 0.11637924) * inp_1_1_1; result2 += M4(0.026860232, -0.08676453, 0.05316562, 0.005580267, 0.119789205, -0.10438388, 0.2348632, 0.09106093, -0.067379184, 0.03127854, -0.0292501, -0.016699823, -0.025111338, 0.0058932444, 0.018528486, 0.005884707) * inp_1_2_1; result2 += M4(-0.014241679, -0.03549539, -0.0047758385, 0.0024502946, 0.00646248, -0.0824427, -0.011903519, 0.0036518613, 0.023506565, -0.083743975, -0.01732398, -0.016005794, 0.041228626, 0.051526003, -0.015401267, 0.0075635584) * inp_1_0_2; result2 += M4(1.5450622e-06, -0.034358263, -0.005129755, 0.009393682, 0.049481627, -0.0407186, 0.007249781, 0.040843047, -0.042809896, -0.044957284, 0.0230393, -0.010794798, 0.15940621, 0.02652011, 0.0049234307, -0.01672704) * inp_1_1_2; result2 += M4(-0.019379763, -0.09619411, 0.015969643, 0.00918782, 0.04712389, 0.022143684, 0.025466282, 0.0108416155, -0.051184606, -0.016457088, 0.05162733, 0.030954542, 0.07769302, 0.038485624, 0.030722763, -0.00725257) * inp_1_2_2; result3 += M4(-0.018023018, -0.22268036, -0.010118457, 0.12083423, 0.08868193, -0.08723853, 0.054014914, -0.07871126, 0.0014852068, -0.27475482, 0.1344719, 0.35642904, -0.039651792, 0.1442475, -0.12684906, -0.10184133) * inp_1_0_0; result3 += M4(-0.0062152115, -0.14542343, 0.0689232, -0.12393639, -0.06774685, -0.06895931, 0.021166941, 0.17175993, -0.46087044, 0.86618984, -0.2544583, -0.031175148, 0.014467316, -0.23921335, 0.15917084, 0.0762022) * inp_1_1_0; result3 += M4(0.004867307, 0.11595519, -0.13230495, 0.10551799, -0.013391747, 0.19720493, -0.101588905, 0.003120132, -0.2507478, 0.7528746, -0.19852473, -0.1611645, 0.024158075, 0.020770704, -0.05832225, -0.06270948) * inp_1_2_0; result3 += M4(-0.0050929687, 0.0863073, -0.0054171965, -0.26847932, 0.019065605, -0.010229373, 0.0005582388, -0.06430581, -0.070207946, -0.015083051, 0.08486984, -0.043621033, -0.04721619, 0.06524787, -0.049205672, -0.17376764) * inp_1_0_1; result3 += M4(0.0899495, -0.10129062, -0.16424108, -0.04958253, 0.03987438, -0.22187415, -0.13767736, -0.08229199, -0.19647618, 0.2683044, 0.16675515, 0.14442638, -0.13335909, 0.0024356258, 0.04635373, 0.07521537) * inp_1_1_1; result3 += M4(0.021234225, -0.007909786, 0.063831486, 0.04684496, 0.021934262, 0.056450114, 0.038840026, 0.10748965, -0.03119394, 0.27394497, -0.12684338, -0.07638854, -0.023557354, -0.027721949, -0.10537403, -0.031434588) * inp_1_2_1; result3 += M4(0.016883172, 0.07640007, 0.016733358, -0.07860764, 0.005891939, -0.033956338, 0.044089694, 0.029401427, 0.014568519, 0.014736637, 0.07419951, 0.12602183, 0.001177508, 0.026857853, -0.004555376, -0.061354365) * inp_1_0_2; result3 += M4(-0.0029344645, 0.0021290176, -0.061407614, 0.057441633, 0.018483112, 0.11891605, -0.040536378, 0.049786873, -0.045275364, 0.06532136, 0.019390369, 0.046174325, 0.0038830922, 0.044246383, 0.033863187, -0.094401844) * inp_1_1_2; result3 += M4(0.004250417, -0.19011125, 0.024171567, 0.030616688, -0.0009285442, -0.13717915, -0.005568848, 0.064350225, -0.011079808, 0.14001597, 0.012137072, -0.015471606, 0.0053901244, 0.21411322, 0.02529913, 0.0011231042) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.006544937, 0.20037472, 0.05033, -0.041819345, -0.015686484, -0.28013623, 0.018032836, -0.0040389886, -0.009043295, 0.042341605, 0.008686977, -0.053913094, 0.011873743, -0.12808876, 0.015899561, -0.008667955) * inp_2_0_0; result0 += M4(0.02852179, -0.11842061, 0.115211405, -0.08087732, -0.04863151, 0.03568601, -0.14492416, 0.041267157, 0.020076822, -0.09829242, 0.030316172, -0.058378298, 0.032858066, -0.011191043, 0.06708765, -0.10711039) * inp_2_1_0; result0 += M4(-0.021147534, -0.029282019, 0.03145295, 0.03709564, 0.032923583, 0.025628008, 0.05886124, -0.07339989, -0.013056337, -0.00027571403, 0.038693853, 0.0026567068, -0.0074959155, -0.048250403, 0.014360964, -0.02788644) * inp_2_2_0; result0 += M4(-0.0007655318, 0.33527058, 0.08791671, -0.033950493, -0.032871395, -0.26882422, -0.031202178, -0.039565343, -0.06362505, 0.07952772, 0.102085434, -0.1028801, 0.07634172, -0.016678646, -0.033579424, 0.13230798) * inp_2_0_1; result0 += M4(-0.132355, -0.24674733, 0.13423389, 0.32768652, 3.3065012e-06, -0.37074685, -0.122270614, -0.12637337, -0.08032441, 0.009011351, 0.22942197, -0.3551515, -0.027475819, 0.0030045623, 0.12694083, 0.27990055) * inp_2_1_1; result0 += M4(0.023728292, -0.03154482, 0.09700635, -0.008571529, -0.1625927, -0.05563605, -0.07958493, -0.1376181, 0.021673266, -0.04591957, 0.19080557, -0.09853852, 0.022094866, -0.047617644, -0.05100719, 0.050611723) * inp_2_2_1; result0 += M4(-0.017482402, 0.35230842, -0.029921815, 0.0870144, -0.039402463, -0.29561433, -0.032131974, 0.013368336, 0.028527563, 0.08090538, 0.0049523516, 0.016600365, -0.038189407, -0.21114638, 0.03908797, -0.00045737863) * inp_2_0_2; result0 += M4(-0.0147597315, -0.027696725, 0.1006539, -0.124979205, -0.12613972, -0.18010202, 0.040683333, 0.04398686, -0.17378564, -0.099880986, 0.05311167, 0.04438637, 0.31442344, 0.07070489, 0.08360837, -0.30857858) * inp_2_1_2; result0 += M4(0.0482595, 0.08756133, 0.013397927, -0.13135742, -0.047784545, 0.112133294, 0.0063924794, 0.07607172, -0.019850073, -0.019522717, 0.04631542, -0.07066603, 0.013587011, 0.03984567, -0.058910504, -0.008669553) * inp_2_2_2; result1 += M4(-4.6390644e-05, 0.007916008, -0.034629934, 0.05132497, 0.04577068, 0.042978056, 0.03687802, 0.0074186316, 0.01617834, 0.019615643, -0.012439609, -0.012771611, 0.009521936, -0.019483749, 0.025724342, 0.03006194) * inp_2_0_0; result1 += M4(0.03434348, -0.0061711813, -0.052097272, 0.15398455, -0.20019253, -0.098319, 0.0089352885, -0.5355899, -0.00864451, -0.018339537, 0.010410758, 0.058595143, 0.05815213, 0.010708401, -0.009529101, 0.07719009) * inp_2_1_0; result1 += M4(0.034309804, -0.026743265, -0.015421511, -0.028691316, 0.13008156, 0.0028013894, 0.032863535, 0.016447697, 0.017459905, 0.010298156, 0.006842976, -0.03940576, 0.002881879, 0.02232878, 0.014156417, -0.024331298) * inp_2_2_0; result1 += M4(-0.036917035, -0.05445811, -0.0052488716, -0.1304934, -0.017699966, -0.5425492, 0.06660457, -0.091407195, 0.0014985848, -0.040697455, 0.007729487, -0.049600273, 0.08233694, -0.16426156, -0.032801367, 0.03943374) * inp_2_0_1; result1 += M4(0.23900944, -0.20509693, -0.08359304, -0.079740815, -0.25834337, -0.52895516, -0.12921919, -0.65159136, 0.013416304, -0.0055010784, -0.028395982, -0.09397283, -0.015769552, -0.07127774, -0.05852494, -0.08654528) * inp_2_1_1; result1 += M4(-0.056234617, -0.10241435, 0.019168172, -0.0056578577, -0.08265089, -0.3069197, 0.012041601, -0.67089635, -0.06044606, 0.09445191, 0.10352455, 0.12538698, 0.100340895, -0.074211754, -0.048824742, -0.19160897) * inp_2_2_1; result1 += M4(0.002882114, 0.2818049, 0.118393354, 0.14363639, -0.051528692, -0.023970496, 0.0051588146, 0.032540258, 0.015679443, -0.051805012, 0.06392477, -0.0664962, 0.06424042, 0.04272967, -0.117686935, -0.008106264) * inp_2_0_2; result1 += M4(0.11797134, 0.45655525, -0.012624519, -0.0803568, -0.050741155, -0.31472182, -0.06176874, -0.045772642, -0.0013649948, -0.2081288, -0.016546978, -0.0636714, -0.008198913, 0.4061505, 0.26698568, -0.040717427) * inp_2_1_2; result1 += M4(-0.0323195, 0.110138424, 0.0862328, -0.048688423, 0.03862147, -0.109717965, -0.0929096, 0.09991721, 0.0005059013, -0.036268096, 0.17718583, -0.1122647, 0.026055383, 0.0022242763, -0.012423542, -0.0039228927) * inp_2_2_2; result2 += M4(0.04044038, -0.096371375, -0.021789981, -0.071445, 0.0009957566, -0.105978206, -0.0143226115, -0.010027241, 0.0047718785, -0.018525716, -0.016413042, -0.026458079, -0.005588679, -0.013299267, -0.021630894, 0.011111079) * inp_2_0_0; result2 += M4(-0.044821437, -0.04006827, -0.08219836, 0.012845246, 0.020986784, -0.07655452, -0.024724279, -0.08059459, 0.007297331, -0.07705266, -0.021004222, 0.054187544, -0.018772515, -0.058386773, 0.058217317, 0.061819173) * inp_2_1_0; result2 += M4(0.0044753267, -0.030351259, 0.003868879, -0.036649525, 0.028296432, -0.08032102, -0.6220036, -0.09046587, 0.030391065, -0.04676867, 0.024380652, -0.04397051, -0.0029766718, 0.058755606, 0.003642061, 0.035753977) * inp_2_2_0; result2 += M4(-0.04666091, -0.050807245, -0.00086310366, -0.10128759, -0.036126237, -0.09760189, -0.0020485597, -0.021196295, 0.014236133, -0.06755122, -0.024824101, -0.014859435, 0.072358176, -0.062384933, -0.00085328973, -0.09911439) * inp_2_0_1; result2 += M4(-0.08460168, -0.012899483, 0.15668939, -0.19732508, -0.060123093, 0.06282193, 0.0050411485, -0.09242387, -0.022566162, -0.03835818, 0.11863054, 0.11179486, -0.0030568535, -0.09531466, 0.02557796, -0.13444778) * inp_2_1_1; result2 += M4(-0.06505708, 0.05338256, 0.0006118085, -0.06960286, -0.13220876, -0.015021538, -0.6336587, -0.02202983, -0.14596632, -0.078776665, -0.3834913, -0.12987532, 0.07981082, -0.05431106, 0.39070937, -0.001598135) * inp_2_2_1; result2 += M4(-0.088688895, -0.052006915, 0.001872688, -0.01005774, -0.023486566, -0.10563882, -0.0035660893, -0.009143066, -0.0012877774, -0.097410575, 0.0036268611, -0.014035817, -0.04607928, -0.012480915, 0.007927078, 0.032361407) * inp_2_0_2; result2 += M4(-0.23370704, -0.11009587, -0.07994988, -0.0451615, -0.064652205, -0.097089745, -0.02986755, -0.009491615, -0.13273087, 0.015557675, 0.029492814, -0.112398036, -0.22572236, 0.009743795, -0.05587966, -0.071701504) * inp_2_1_2; result2 += M4(-0.0133471135, -0.086374104, -0.12500928, 0.010345139, -0.10274953, -0.0815484, -0.033199195, 0.0012338199, 0.105033636, -0.0008189531, -0.059250694, 0.041190587, 0.024323355, -0.005404571, 0.031993072, 0.0042580417) * inp_2_2_2; result3 += M4(-0.055380687, 0.16669409, -0.0938755, 0.10752451, 0.021946238, 0.05103282, 0.014277077, -0.25002837, -0.046155676, 0.08389975, -0.07493241, 0.046846, -0.037565015, -0.25558692, 0.017759074, -0.027032515) * inp_2_0_0; result3 += M4(-0.02166214, -0.045312904, 0.1094712, 0.061236303, -0.010012408, -0.5659751, -0.24484539, -0.10113387, -0.004530273, -0.12730299, 0.04622873, -0.05087922, 0.029602518, 0.11414425, -0.0009816709, -0.1326802) * inp_2_1_0; result3 += M4(-0.012073087, -0.062373415, -0.016276214, 0.0040893494, -0.031947974, -0.16934228, -0.03264203, 0.116392694, -0.023850702, 0.000800109, -0.08675568, -0.03475479, 0.012771642, 0.07130754, 0.023760373, 0.0076029086) * inp_2_2_0; result3 += M4(-0.17638233, 0.03595908, -0.1650435, -0.14176641, -0.022237023, -0.018819911, -0.17166752, 0.00687222, -0.08570393, 0.060104117, -0.025958924, -0.12837827, 0.05335692, -0.21326685, 0.13832414, 0.17622389) * inp_2_0_1; result3 += M4(-0.15794072, 0.18866552, 0.28993157, 0.0218225, -0.037377886, -0.256043, -0.2566959, -0.38136497, -0.23947175, -0.15923594, 0.0072759874, -0.034053214, 0.013555624, 0.46617824, -0.06487164, -0.09585598) * inp_2_1_1; result3 += M4(-0.022814212, -0.05666551, -0.06700641, -0.05313354, 0.0010661898, -0.42204764, 0.15316229, -0.035778888, -0.103586145, 0.041284427, -0.11302881, -0.06529739, 0.021034274, -0.18391745, 0.009974232, 0.02652567) * inp_2_2_1; result3 += M4(0.0025376459, 0.20382702, -0.12666345, 0.089404844, 0.0051221945, 0.09071796, -0.031966656, -0.30140343, -0.021731537, 0.043591, -0.068466306, -0.03629854, 0.03593656, -0.064715445, -0.009038506, -0.060983896) * inp_2_0_2; result3 += M4(-0.001579426, -0.23231557, 0.05045837, -0.10650394, -0.004394364, 0.043083694, 0.020183617, 0.087281354, -0.057550546, -0.039534494, 0.07643428, -0.10138858, -0.059534606, 0.13166727, -0.07082291, 0.058117766) * inp_2_1_2; result3 += M4(0.008781179, 0.08334107, 0.011425899, -0.055121806, -0.008902418, 0.07012958, -0.051271096, -0.07378069, -0.017613834, 0.21545696, -0.01606559, -0.08676065, 0.019279307, -0.19573654, 0.009117223, 0.0025168955) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.047176953, 0.06546972, 0.061290484, -0.08785169, -0.0025562202, -0.097058795, -0.005496038, -0.034214366, -0.014340389, -0.12554163, 0.0039833146, 0.06317304, -0.015697563, 0.40280426, -0.08270903, 0.01913588) * inp_3_0_0; result0 += M4(-0.017820647, 0.1808409, -0.013894654, 0.01266456, -0.0031195942, 0.036018193, -0.0043291138, -0.0357511, 0.016819967, -0.113933586, 0.039245002, 0.01045358, 0.057540763, -0.25602683, -0.022592431, 0.04708544) * inp_3_1_0; result0 += M4(0.021587303, -0.00592277, 0.000121763864, 0.0033892011, 0.041231796, 0.12641995, 0.017967332, 0.021465212, 0.047604345, 0.04323011, -0.051885728, -0.10163784, -0.06306999, 0.017898155, -0.017956039, 0.0015216748) * inp_3_2_0; result0 += M4(0.078702845, -0.8549312, 0.011044799, 0.0025655187, -0.10345831, -0.2555163, 0.01855684, -0.026774418, 0.029036265, -0.087231815, -0.020669347, 0.020434786, 0.084973276, -0.095972836, 0.0566549, -0.17423083) * inp_3_0_1; result0 += M4(0.028819082, 0.064568385, 0.06841548, -0.08379316, -0.17367502, -0.118805714, -0.09016372, -0.12723123, 0.18929319, -0.08041561, 0.0054725185, 0.090767704, 0.043644324, -0.030495595, 0.0061680325, -0.030583985) * inp_3_1_1; result0 += M4(0.020270335, 0.03830618, -0.011277325, 0.08435309, -0.04558835, 0.025401825, -0.06886786, 0.06149104, -0.034091864, -0.11810014, -0.046813693, 0.031524304, 0.06839769, -0.08676655, 0.040075045, -0.024072835) * inp_3_2_1; result0 += M4(0.057000365, -0.38540158, -0.014076238, -0.044200398, 0.111268215, -0.17368038, 0.020275686, 0.06348695, -0.020360367, -0.06140743, -0.010654506, 0.0083129015, -0.5010304, 0.3049326, -0.11942746, -0.20294948) * inp_3_0_2; result0 += M4(0.030985683, 0.17419535, -0.0132487845, -0.015778255, -0.24990435, -0.14213361, -0.022769483, -0.0032053238, -0.08411269, -0.01908517, -0.04310704, 0.036254123, -0.17422047, -0.14021742, -0.025097467, 0.08136049) * inp_3_1_2; result0 += M4(-0.00877972, 0.007853932, 0.010431558, -0.0422538, 0.0219132, 0.042034097, 0.07400563, -0.010340563, -0.033042695, -0.05594977, -0.011721329, 0.015070252, -0.04482626, 0.025839189, -0.0030424611, -0.03862292) * inp_3_2_2; result1 += M4(-0.057687134, 0.11115435, -0.03051037, 0.2550234, -0.06588612, 0.07204563, -0.0057049966, -0.003429887, 0.04804781, -0.0640858, 0.00963969, -0.11559419, -0.08179765, 0.04089692, -0.0025251927, -0.1679003) * inp_3_0_0; result1 += M4(0.03092165, 0.07689156, -0.024868615, 0.069487825, 0.058287278, -0.076148294, -0.003958981, -0.072882414, 0.11731506, -0.041059308, -0.005271441, -0.1530415, 0.0136738885, -0.07863047, -0.016996045, -0.0435093) * inp_3_1_0; result1 += M4(-0.01146854, -0.016600708, -0.033588447, 0.0012270089, 0.035951294, 0.054894537, -1.13159795e-05, 0.17634025, 0.053525146, 0.021500906, -0.072299995, -0.051633034, 0.002965773, -0.08495711, 0.072476394, -0.1223996) * inp_3_2_0; result1 += M4(0.005871206, -0.105177775, -0.0791218, -0.016229464, 0.07280378, -0.004122874, -0.113126144, 0.044805117, 0.045362312, 0.101477936, 0.037946038, 0.04767734, -0.00034516538, 0.31684762, -0.067382894, 0.48992357) * inp_3_0_1; result1 += M4(-0.2756899, 0.0072091864, 0.03579761, -0.025060056, -0.34965304, 0.12822221, 0.19560874, -0.077734984, 0.26401618, 0.09215094, -0.18350019, 0.2263465, 0.07463906, 0.23723441, 0.021495258, 0.41249377) * inp_3_1_1; result1 += M4(0.024807172, 0.030604724, -0.03160554, 0.012514526, 0.08407682, -0.13079299, -0.0052058324, -0.28281787, 0.051948566, -0.120411694, -0.18100208, -0.056026626, -0.0017428737, 0.21138218, 0.024954556, 0.26825067) * inp_3_2_1; result1 += M4(-0.07940626, 0.15188265, 0.051784057, -0.040623672, -0.014308438, -0.089954354, 0.031299967, -0.06854617, -0.046330813, -0.13673227, -0.006247856, -0.037827484, -0.11631821, -0.8061699, -0.23532005, -1.002454) * inp_3_0_2; result1 += M4(-0.013199798, 0.049193125, 0.1632797, -0.054099705, 0.05546928, -0.1596701, -0.26618502, 0.07581473, 0.04443022, -0.13839734, -0.17592144, 0.0397375, 0.16645041, -0.25150985, -0.13356121, -0.33840844) * inp_3_1_2; result1 += M4(-0.028304888, 0.05541919, -0.01743208, 0.10305273, -0.004793849, 0.09517237, 0.06883767, 0.0053431964, 0.04019572, -0.04500617, -0.11817994, -0.006176183, -0.017990861, -0.17088811, 0.0071092104, -0.23767042) * inp_3_2_2; result2 += M4(0.0013994346, -0.06837961, -0.025102375, 0.025612231, -0.002886228, -0.035188034, 0.009497263, 0.04956617, 0.018853564, -0.017829113, 0.014429178, 0.012447693, 0.005771668, -0.093399666, -0.007896787, 0.02203381) * inp_3_0_0; result2 += M4(0.0028603678, -0.07274729, 0.059039123, 0.017157476, -0.002110275, 0.03883774, 0.026422914, 0.022414958, -0.018913966, 0.00640773, -0.03321349, 0.051801093, -0.008502038, 0.041384976, -0.02903082, 0.040413838) * inp_3_1_0; result2 += M4(0.021003386, -0.06688817, 0.046146005, 0.027099816, -0.0050547775, 0.06658122, -0.115234755, 0.020772832, 0.038237665, -0.015973236, 0.17125757, 0.15080918, -0.024309648, -0.031557668, 0.12372848, -0.018880576) * inp_3_2_0; result2 += M4(0.015328117, -0.013828317, -0.04727279, 0.037072692, 0.047769833, -0.10539521, -0.0132302875, 0.012750267, 0.028841773, -0.012490696, -0.01268388, 0.03381839, 0.006256026, -0.04213708, -0.081615455, 0.0366397) * inp_3_0_1; result2 += M4(-0.14221717, -0.04776609, 0.29248273, -0.10310992, 0.0392348, 0.022912111, -0.01991929, 0.08570591, 0.00038357486, 0.051011663, 0.0572705, -0.13345142, 0.030156648, 0.023023918, 0.15148051, 0.17381103) * inp_3_1_1; result2 += M4(0.02596927, -0.068958506, -0.046814606, -0.050394855, 0.046611857, 0.008979287, -0.30064848, -0.0023000767, 0.09949388, 0.043234073, -0.116611056, 0.13711512, -0.042148784, 0.054749742, -0.16850804, 0.04142267) * inp_3_2_1; result2 += M4(-0.08161432, -0.07602858, -0.015840046, 0.013777974, 0.0026979486, 0.07105437, 0.021291763, 0.010337297, 0.04458804, 0.018306274, 0.017809602, 0.024937486, 0.072553195, -0.07977882, 0.053772118, -0.035464216) * inp_3_0_2; result2 += M4(0.028709304, -0.022457212, 0.08779636, 0.0057748095, 0.112574026, -0.038724136, 0.008563079, 0.013568348, 0.16295987, 0.018681744, -0.025352206, 0.03788631, 0.15554075, 0.020520987, 0.0998091, 0.0074922573) * inp_3_1_2; result2 += M4(0.029526303, 0.0025282714, -0.088060245, -0.015813017, 0.029920185, -0.10505919, 0.04108355, 0.00897648, -0.101660796, 0.0007604975, -0.03198941, -0.043820553, -0.010520588, 0.07659737, 0.12798415, 0.025953313) * inp_3_2_2; result3 += M4(-0.024235457, 0.25527453, -0.15874892, -0.056536045, 0.017701514, -0.0040107914, -0.05249745, -0.014781824, 0.016323995, -0.012834976, -0.047403287, -0.119762935, 0.006082971, -0.010637851, 0.026278764, -0.21723838) * inp_3_0_0; result3 += M4(0.041858945, -0.08642385, -0.10919711, -0.15835606, 0.0196558, 0.0053978614, -0.030226529, 0.0073835272, 0.119405404, -0.3707116, 0.26469165, -0.067286305, 0.0013275777, 0.29494864, 0.19798565, 0.20371196) * inp_3_1_0; result3 += M4(0.03123018, -0.03964481, -0.016400093, -0.013420101, 0.011345609, -0.023958415, 0.075129904, 0.028670214, 0.07178742, -0.15100259, 0.057549924, 0.0057663694, -0.011026996, 0.25405392, -0.027079811, 0.008135458) * inp_3_2_0; result3 += M4(-0.078388974, 0.18629561, -0.18023401, -0.025949337, 0.0109509295, -0.012847668, 0.0998278, -0.07543268, 0.10949399, -0.008418669, -0.03613263, -0.034801338, -0.07420326, 0.098999076, -0.033478837, -0.3266737) * inp_3_0_1; result3 += M4(-0.057539783, -0.15052891, -0.54861397, -0.10363378, 0.05402106, -0.45087954, -0.07335091, 0.111176655, 0.27929747, -0.2028497, 0.1893921, 0.0875546, -0.0365288, 0.072757944, 0.31756896, 0.06242136) * inp_3_1_1; result3 += M4(-0.013704621, -0.17614125, 0.03911541, -0.00017532289, 0.0067429147, -0.14264733, -0.08522978, 0.015170842, 0.095153235, -0.23932184, 0.16221853, 0.07148039, -0.029124409, -0.13477075, -0.006440073, 0.04786291) * inp_3_2_1; result3 += M4(-0.0009950326, 0.012303017, -0.025330728, -0.20560485, -0.019842902, 0.10210815, -0.007610416, -0.07080631, 0.0054788617, 0.014626018, -0.020641312, -0.05595626, -0.03600435, -0.26272658, -0.26962242, -0.11484998) * inp_3_0_2; result3 += M4(0.004385065, 0.10421658, -0.047686987, 0.03491564, 0.004855821, -0.111317754, 0.092621565, -0.02201178, 0.048912246, -0.16542295, -0.01776309, 0.09115785, -0.007184291, -0.12095103, 0.1376195, -0.01581858) * inp_3_1_2; result3 += M4(0.005102185, -0.05795764, -0.00033205023, -0.0069221654, 0.008030218, 0.08920834, -0.034672797, 0.044737794, 0.00018649735, -0.18196213, -0.020412631, -0.021360455, 0.0069087883, 0.2503944, -0.0019101449, -0.027599907) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0))); imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0))); imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0))); } //!DESC ArtCNN C4F16 DN (Conv2D-5) //!COMPUTE 24 32 12 16 //!HOOK LUMA //!BIND conv2d_4 //!SAVE conv2d_5 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(-0.00066560536, -0.004267358, 0.013700342, -0.010605738); V4 result1 = V4(0.007793551, 0.0055348487, -0.002082268, -0.005440815); V4 result2 = V4(0.011697394, 0.006271419, 0.0030887362, 0.0042083524); V4 result3 = V4(-0.0019972357, 0.0037007425, 0.028737424, -0.022928216); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.15228379, -0.25934345, -0.11419248, 0.0703704, -0.02266989, 0.0074991584, 0.02454297, -0.094354294, 0.11919308, 0.0185809, -0.09347553, 0.07704794, -0.12788355, -0.055209093, 0.1020032, -0.11747591) * inp_0_0_0; result0 += M4(-0.47476625, -0.8797664, -0.034893505, -0.4080733, 0.04113397, -0.008068711, 0.12391422, -0.08341381, -0.074739404, -0.0482087, 0.0343656, 0.022221148, -0.044353478, 0.026387818, 0.03598677, 0.018865792) * inp_0_1_0; result0 += M4(0.5445769, -0.33104816, -0.48626894, -0.39698526, 0.1447335, 0.15126938, 0.1371385, -0.20998126, -0.027114732, -0.07065593, -0.027376443, 0.018132303, 0.03706828, 0.05178587, 0.011902456, 0.007173037) * inp_0_2_0; result0 += M4(-0.011347984, 0.08322174, 0.060797025, 0.08035429, -0.00029398515, 0.11792953, 0.077595904, -0.00886318, -0.06414977, -0.08463474, 0.016560731, -0.108837925, 0.07225561, 0.027533732, -0.09835147, 0.022437882) * inp_0_0_1; result0 += M4(0.114816844, 0.11201063, 0.15985383, 0.24260275, 0.08136122, 0.10847248, 0.3143596, 0.18179609, 0.24953835, -0.6216014, -0.05571118, -0.1388548, -0.52645916, 0.5687038, -0.15531687, 0.039321054) * inp_0_1_1; result0 += M4(0.096968345, -0.04716302, -0.09469266, 0.014701046, -0.1700745, 0.30237105, -0.10796567, -0.015666882, -0.17671658, -0.11622637, 0.030288136, 0.08226056, 0.17375855, 0.14730288, 0.005767191, -0.104275204) * inp_0_2_1; result0 += M4(0.016927969, -0.0018098992, -0.021982238, -0.0077893916, -0.015062246, 0.042035844, 0.033359475, -0.06499395, -0.049140204, -0.042745672, 0.11996156, -0.009120171, -0.05935973, -0.016914872, -0.09649818, -0.042753927) * inp_0_0_2; result0 += M4(0.115467384, -0.12131776, 0.23447265, 0.03347102, 0.18611404, 0.07775757, -0.2234488, -0.014020021, -0.009293939, -0.06386259, 0.023736458, 0.079777285, -0.27342042, 0.081071086, -0.3568592, -0.028344741) * inp_0_1_2; result0 += M4(-0.03451169, 0.03041176, -0.068031244, -0.0017649088, -0.1531782, 0.07438657, 0.08671593, -0.032308184, 0.12365933, -0.02567487, -0.0018599047, 0.011061754, -0.2239928, 0.05512914, -0.050210867, -0.013839882) * inp_0_2_2; result1 += M4(0.42044833, 0.09139118, -0.031338345, 0.29923415, -0.0782589, -0.06670472, -0.006200433, 0.06583141, 0.02536095, 0.10939067, -0.04757893, 0.0684861, -0.05710764, -0.15114392, 0.10495465, 0.008636842) * inp_0_0_0; result1 += M4(-0.33283237, -0.45576587, -0.12327764, 1.6663848, -0.22656503, -0.08802973, -0.11729253, -0.0012770586, 0.06853347, 0.04181065, -0.084558345, -0.007913115, 0.014951679, -0.011758787, 0.016327554, 0.112345226) * inp_0_1_0; result1 += M4(-0.7499238, -0.23489033, 0.565112, 0.44545415, -0.22645289, -0.11375609, -0.2734333, -0.014415298, 0.044661075, -0.032955483, -0.035931762, 0.07296206, -0.04006262, 0.015606515, -0.049282063, 0.039458033) * inp_0_2_0; result1 += M4(0.07396102, 0.01046475, 0.0056302156, 0.033440884, -0.12380839, -0.038003772, -0.033991396, -0.1300765, 0.05909884, 0.02309516, 0.046019033, 0.025603142, 0.004536333, -0.07757971, -0.16693692, 0.04280377) * inp_0_0_1; result1 += M4(0.21149969, -0.010937823, -0.22258133, -0.05940373, 0.0012873803, 0.03266663, 0.049319632, 0.017018383, 0.44431573, 0.14444889, 0.030129518, -0.056658786, -0.2682246, -0.20932731, -0.15003063, 0.20862558) * inp_0_1_1; result1 += M4(0.059984926, -0.15958123, 0.12180312, 0.13633728, -0.46592835, -0.09439296, 0.054290153, -0.31976694, 0.03508736, -0.11450499, -0.2098999, 0.02958971, 0.025931498, 0.057804022, 0.07903001, 0.072106786) * inp_0_2_1; result1 += M4(0.00054549356, 0.014195052, -0.008454055, -0.018963598, -0.07186459, -0.01295819, 0.024590783, -0.071887195, 0.017509485, 0.0788656, 0.16558293, -0.017320778, 0.082002126, -0.12859355, -0.10581103, -0.0630115) * inp_0_0_2; result1 += M4(-0.018334122, 0.080359824, 0.14668614, 0.19671398, -0.118237585, -0.1948746, -0.37297612, -0.20195223, 0.03734402, -0.18862157, -0.060484987, -0.026093386, 0.058910653, 0.013444777, -0.028658701, -0.20481518) * inp_0_1_2; result1 += M4(0.043126494, -0.015273791, -0.06544163, -0.027579932, -0.072950155, -0.0075957826, 0.16306221, -0.16609783, -0.02322585, 0.02409431, 0.032177083, -0.05557277, 0.10449215, -0.036802717, -0.075240776, -0.074344285) * inp_0_2_2; result2 += M4(0.20713963, -0.0074280747, -0.25755468, 0.10935757, -0.024330806, 0.027258292, -0.07897445, 0.027408015, 0.039555445, -0.07173757, 0.057648543, -0.026310395, 0.028806305, 0.02603988, -0.15666586, 0.05703645) * inp_0_0_0; result2 += M4(-0.42792878, 0.4166773, -1.1369015, -0.35219547, -0.38047707, 0.032265037, 0.010817288, 0.0057257633, 0.048836414, -0.010003746, -0.05811516, -0.04563043, -0.036789898, 0.036127653, 0.096561454, 0.04470076) * inp_0_1_0; result2 += M4(-0.47562087, 0.0956977, -0.6043192, -0.11615837, -0.333417, -0.036880802, 0.09985428, 0.0052436604, 0.060985703, -0.004572727, 0.017785816, 0.025914222, -0.07232141, -0.0033102306, -0.029004408, 0.009881425) * inp_0_2_0; result2 += M4(0.078016885, -0.034783974, 0.021339143, 0.040964674, -0.11020447, -0.014687999, 0.03503615, 0.029542414, 0.17713836, -0.06631594, 0.03953721, -0.02359265, -0.1969768, 0.0021205603, -0.12186631, -0.027358938) * inp_0_0_1; result2 += M4(-0.046395242, -0.11621295, -0.2069934, -0.13893403, -0.40677166, -0.17871375, 0.08457459, 0.31469494, 0.38130078, -0.07613339, -0.13566646, -0.24561194, -0.5143804, 0.1983892, -0.017989682, 0.3344005) * inp_0_1_1; result2 += M4(-0.12809497, 0.00920857, 0.027143857, 0.045005415, -0.34509876, 0.033415426, -0.34369496, -0.06441566, 0.04275144, 0.07397243, 0.044052083, -0.10053789, -0.09565462, -0.083086416, -0.057006463, 0.19614513) * inp_0_2_1; result2 += M4(0.008530628, 0.009415946, -0.006625927, 0.04497307, -0.068972185, -0.010734124, -0.024879888, -0.03710777, 0.022717142, -0.052597694, 0.028096773, 0.13392162, -0.017758513, -0.03596069, -0.08686512, -0.1358663) * inp_0_0_2; result2 += M4(0.054078218, 0.09259047, 0.053878248, -0.12129669, -0.13638441, -0.029486543, 0.12661247, -0.086886816, 0.12519233, 0.072738126, 0.059940964, 0.007956649, -0.12641248, -0.12738594, -0.2246871, -0.056692123) * inp_0_1_2; result2 += M4(0.008012401, -0.023637226, -0.05933463, -0.0052669086, -0.10753271, -0.043887958, 0.22317608, 0.04975425, -0.06497535, 0.03305645, -0.064770505, -0.09860522, 0.091177724, -0.016228886, 0.05160639, 0.1502113) * inp_0_2_2; result3 += M4(-0.00371995, 0.36658028, -0.11891324, -0.21244504, 0.030703211, 0.06255351, -0.004045325, -0.04756288, -0.024804411, 0.011104954, -0.034700043, 0.07403255, 0.011467033, -0.05754256, 0.050533902, 0.010418247) * inp_0_0_0; result3 += M4(-0.25203764, 0.8289802, 0.15988642, -0.2204692, 0.16888995, 0.19596434, -0.033864506, -0.14218558, 0.13858193, -0.021329874, 0.06977607, 0.030036984, -0.25428066, -0.023632463, -0.092985064, 0.028348554) * inp_0_1_0; result3 += M4(-0.006087358, 0.4168152, 0.22097266, -0.052822206, -0.14947116, 0.05548053, 0.06595264, -0.12141969, 0.08367746, 0.06271193, -0.033112586, -0.016154263, -0.059285726, 0.023126226, 0.040031128, 0.008779683) * inp_0_2_0; result3 += M4(-0.04559228, 0.026958544, -0.04410878, 0.1296342, 0.04093165, 0.12484392, -0.0020598816, -0.044914927, 0.036819544, -0.16047594, -0.0026843955, 0.02915087, -0.06682115, 0.1867351, 0.003270594, -0.0032575221) * inp_0_0_1; result3 += M4(0.13566947, -0.09808188, -0.23261791, -0.012768287, -0.17310879, 0.60787576, -0.078859575, -0.09550091, 0.34966168, 0.13961165, -0.05175308, 0.23212951, -0.5523887, -0.007217352, 0.06348733, -0.11562457) * inp_0_1_1; result3 += M4(-0.13549614, 0.08730312, 0.024036532, 0.1093391, 0.22212294, 0.25449377, -0.051883537, -0.22385317, 0.12847373, 0.027390668, -0.07329402, 0.19208232, -0.26090455, -0.12784322, 0.11870981, -0.1384872) * inp_0_2_1; result3 += M4(0.0021524501, 0.06499572, 0.023340443, -0.016808685, 0.04318715, 0.13337825, -0.009670598, -0.08566974, 0.05764847, 0.09106587, -0.009484496, 0.041625164, -0.041381914, -0.06726323, -0.028376551, -0.018208517) * inp_0_0_2; result3 += M4(0.010665511, -0.019889489, -0.02785346, 0.019856218, -0.082684614, 0.20047869, -0.061707236, -0.014605732, 0.16756125, -0.24216011, -0.08848716, 0.1552565, -0.10749872, 0.22642796, 0.08391309, -0.037362874) * inp_0_1_2; result3 += M4(-0.080623455, -0.0389238, -0.0005101827, -0.022789814, 0.15671669, 0.2016802, -0.045024592, -0.01439396, -0.015410027, -0.034121547, -0.020367585, 0.07937576, 0.0076316916, 0.042749483, -0.0327426, -0.041869294) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.040723167, 0.10290719, 0.024453644, -0.026991514, 0.0701637, 0.075388186, -0.10299315, 0.09226433, 0.05182314, -0.095707655, -0.03596757, 0.037925906, 0.06847971, 0.06383416, -0.051153876, -0.0011783829) * inp_1_0_0; result0 += M4(0.15361904, 0.07042462, -0.095296994, 0.007169839, -0.13733219, 0.34344006, 0.28902298, 0.14442137, -0.14283116, -0.2232948, 0.055889446, 0.0735773, 0.16575955, 0.018068776, -0.22914128, 0.03217882) * inp_1_1_0; result0 += M4(0.12565501, 0.12819126, 0.09992667, 0.06625316, 0.09425644, 0.11375466, 0.016886754, -0.047239512, -0.13701424, -0.15512301, -0.19903982, 0.06742162, 0.016296843, -0.03631613, 0.01242206, -0.012962755) * inp_1_2_0; result0 += M4(-0.013207135, 0.06261857, 0.059315678, 0.0357193, -0.003890795, 0.050735734, 0.07370917, -0.009964293, -0.007135836, -0.03876946, -0.05344414, -0.05180688, -0.09944942, -0.11225642, -0.031996816, -0.07549484) * inp_1_0_1; result0 += M4(0.29406646, 0.24804352, 0.03188204, 0.07845633, 0.3573021, -0.0038448398, 0.3549362, 0.012195495, 0.25750464, -0.24155386, 0.29536426, -0.04965773, 0.59308416, -0.4569277, -0.11124022, 0.21249588) * inp_1_1_1; result0 += M4(-0.013533957, 0.12447901, 0.059007857, -0.11595287, -0.06129243, 0.017544778, 0.06716418, -0.07123394, 0.008651594, -0.013330616, -0.0015759553, 0.04161432, -0.060072184, -0.060663987, 0.02190254, -0.04106046) * inp_1_2_1; result0 += M4(-0.002703736, -0.0019947996, -0.013566274, -0.056228526, -0.035102233, 0.069993384, -0.016005104, -0.03568588, -0.03887615, 0.006351711, -0.001200243, 0.013661951, -0.008263708, -0.08305672, 0.16477668, 0.025128929) * inp_1_0_2; result0 += M4(0.124693096, 0.021332633, 0.07920853, 0.09676734, 0.1664507, -0.017634535, -0.013750344, 0.046142437, 0.025862355, 0.07386788, 0.065824226, -0.011462528, 0.0006665422, -0.20498453, 0.08280951, -0.00844116) * inp_1_1_2; result0 += M4(0.0686169, -0.023229051, -0.009465385, -0.020949127, -0.0016535893, 0.037785493, 0.07076111, 0.00959746, -0.07350752, 0.02131633, -0.02447295, -0.014944953, 0.045654483, -0.008964649, -0.059602328, -0.009855985) * inp_1_2_2; result1 += M4(-0.1015417, -0.023655182, -0.043494146, -0.11266454, 0.18057679, 0.14716166, -0.24125148, 0.10619911, 0.20513503, 0.06113501, -0.061850008, 0.011653437, -0.034414694, 0.09305246, -0.114050135, 0.047689185) * inp_1_0_0; result1 += M4(-0.008857786, 0.020251147, 0.014090451, -0.28709465, -0.075664595, -0.09752603, -0.0359198, -0.056616146, 0.203693, 0.19002625, -0.16918886, 0.02710682, -0.04983945, 0.014330246, 0.25632045, -0.1640301) * inp_1_1_0; result1 += M4(-0.08740711, 0.023734821, -0.0765108, -0.23593315, -0.0803962, 0.08280885, 0.23108557, -0.053758577, 0.13135374, 0.06386941, 0.19771923, -0.0004423806, 0.051542647, 0.02038078, -0.034512445, -0.074727975) * inp_1_2_0; result1 += M4(-0.14777711, 0.06243661, 0.118357286, 0.052739277, -0.036850315, 0.02379505, 0.036346912, -0.009594393, 0.05334373, 0.037325267, -0.07639955, 0.064760454, -0.06899779, -0.06317257, 0.21496281, -0.0074179564) * inp_1_0_1; result1 += M4(-0.3552624, -0.096824996, -0.13637872, 0.40217885, -0.020524148, 0.1482927, -0.14381906, -0.055536866, 0.16164467, 0.31904873, 0.31885135, 0.32766697, -0.14052036, 0.33783752, 0.26156804, -0.24749953) * inp_1_1_1; result1 += M4(-0.09884035, -0.18774457, -0.10663036, -0.123091094, 0.05551248, 0.040077243, 0.099074535, 0.28842744, 0.0420913, 0.050438844, 0.101150565, 0.18013735, -0.04141766, -0.21716288, -0.18048409, 0.08162634) * inp_1_2_1; result1 += M4(-0.06643082, -0.051800843, -0.024549246, -0.010877945, -0.03728947, -0.019144312, 0.0029812518, -0.0824919, -0.0034312902, -0.0046558753, 0.022370294, -0.07054546, 0.022577789, 0.056475185, 0.103583746, 0.032625906) * inp_1_0_2; result1 += M4(-0.052677162, -0.019368112, -0.021073481, 0.05651742, -0.02027629, 0.15907177, 0.05508377, -0.058393985, 0.060045213, 0.08397106, -0.04010984, -0.13182399, -0.19958472, -0.1781544, 0.0802536, 0.06703687) * inp_1_1_2; result1 += M4(-0.045365516, -0.042258345, 0.020862048, 0.005617462, 0.035014577, 0.031454567, -0.023808664, 0.16814293, 0.014277544, 0.00561674, -0.0023265022, -0.004083426, 0.029253118, -0.012853658, -0.024322728, -0.15352531) * inp_1_2_2; result2 += M4(-0.07779541, 0.060802557, 0.11191545, -0.04884983, 0.14782678, 0.010548979, 0.021984328, -0.071180955, 0.15668559, -0.06679843, 0.02899989, 0.05245265, -0.03484072, -0.027319461, 0.033748187, -0.08145663) * inp_1_0_0; result2 += M4(0.054144043, -0.097976305, -0.075455144, 0.07224936, -0.26215205, 0.25759834, 0.020076228, -0.040707104, 0.17801441, -0.10342682, 0.0008888017, -0.15591703, 0.083157, -0.09217712, -0.052539498, 0.02090432) * inp_1_1_0; result2 += M4(-0.18236737, -0.055540256, 0.061169937, -0.039592467, -0.023379741, -0.024150258, 0.13775331, -0.051347625, 0.18109894, 0.092030376, 0.021340486, -0.03129976, 0.07545886, -0.004479823, -0.04330895, -0.009599) * inp_1_2_0; result2 += M4(-0.065699376, 0.048651297, 0.041967258, 0.14233845, 0.1394108, 0.02755879, 0.02716701, 0.09439604, 0.074985825, -0.01711441, 0.0077531887, -0.11071775, 0.062168915, -0.021103064, -0.05768379, 0.011883313) * inp_1_0_1; result2 += M4(0.23396698, -0.042781234, 0.1706115, 0.05636571, -0.09507714, 0.13553582, 0.045914657, -0.08394405, -0.20752959, 0.06834719, -0.17978092, -0.10282836, 0.4284452, -0.13264708, 0.053699575, -0.21897718) * inp_1_1_1; result2 += M4(-0.17582834, -0.0799378, 0.0017582314, -0.0069946973, 0.09023618, -0.029318415, 0.06719171, -0.00024511488, 0.030110141, -0.011027371, 0.020726368, 0.03871072, -0.11410049, -0.0054008327, 0.09000739, 0.045879137) * inp_1_2_1; result2 += M4(-0.043004986, -0.0067721438, 0.024206046, -0.027493246, -0.02930331, -0.0044381176, -0.0039002514, -0.067369126, 0.0077759637, -0.00051355857, 0.036480434, 0.04718503, 0.011400215, -0.0014388447, 0.04060367, 0.06041421) * inp_1_0_2; result2 += M4(-0.060623262, 0.024944598, 0.094709076, -0.07917765, -0.043623313, 0.021574868, 0.07463516, 0.18118042, -0.04644309, -0.026072979, 0.017020375, 0.06792525, 0.065678425, 0.07914909, 0.15767038, -0.21683237) * inp_1_1_2; result2 += M4(-0.02621448, 0.031197775, -0.017339211, -0.05211419, 0.05386343, -0.024733037, -0.04400378, 0.055561375, 0.038218267, -0.015473702, 0.029516824, 0.067975715, -0.020430777, 0.052676447, -0.03802631, -0.10429695) * inp_1_2_2; result3 += M4(0.047870837, -0.024173232, 0.015717607, -0.048827466, -0.11553747, 0.063227795, -0.022878075, -0.030344496, -0.13541436, -0.0056452956, -0.022413848, 0.07996879, 0.05715147, 0.10244957, 0.03446308, -0.054846086) * inp_1_0_0; result3 += M4(0.2619952, -0.021664254, 0.039668713, -0.08112599, -0.5204319, 0.15852149, 0.04977735, 0.064210914, -0.27236086, 0.199884, -0.13594757, 0.08928597, 0.32363915, -0.109912075, 0.04318235, -0.026941264) * inp_1_1_0; result3 += M4(-0.050667938, -0.0034649791, -0.0023268624, -0.020193972, -0.3151294, -0.12193365, -0.10047455, -0.23668252, -0.13677779, -0.02014419, -0.10750775, 0.14588971, 0.03040366, -0.02044588, 0.012440982, -0.026255222) * inp_1_2_0; result3 += M4(0.14374228, 0.060202856, 0.05964123, -0.029219657, -0.12943551, -0.05633395, -0.029549824, -0.047238734, -0.17972538, -0.24248683, 0.048725717, 0.058531336, 0.03218308, -0.23860532, 0.027896676, -0.0461429) * inp_1_0_1; result3 += M4(0.55738693, -0.27220434, -0.03944867, -0.17013578, -0.71307975, 0.13095184, -0.11927473, 0.019474799, -0.48243576, -0.08986895, 0.16017684, 0.16262695, 0.695821, -0.09149468, 0.08275695, -0.051214755) * inp_1_1_1; result3 += M4(0.38632187, 0.10833884, 0.055175457, -0.11037573, -0.0012200685, 0.13097695, 0.018878344, -0.24353062, -0.15080582, -0.053681318, 0.024264038, 0.029159484, 0.27708054, 0.0988952, 0.091210626, 0.076201364) * inp_1_2_1; result3 += M4(0.016676452, -0.03425577, 0.007711722, -0.024097264, -0.057177123, 0.022868399, -0.036487997, -0.035584576, -0.056572337, 0.0032611394, -0.027759474, 0.015402272, 0.13042803, 0.08279839, 0.011803775, -0.012998555) * inp_1_0_2; result3 += M4(0.09141486, 0.028292624, -0.023803705, 0.027571993, -0.33181727, -0.11122669, -0.020363942, 0.037873093, -0.16352287, 0.14086236, -0.06469259, -0.07142384, 0.49466637, -0.13132095, 0.063666515, 0.078424506) * inp_1_1_2; result3 += M4(0.012560006, 0.048121657, 0.0085602775, -0.011154724, 0.0036971576, 0.033957228, 0.0017313072, -0.030987738, -0.04842094, 0.0017907956, -0.00086237903, -0.024611166, -0.06038988, -0.041346937, -0.030376166, 0.04113015) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.014694248, -0.024930727, -0.01021243, 0.04694146, 0.00932608, 0.08333568, -0.08284857, -0.034396477, -0.07106256, 0.10157369, 0.20548375, 0.018945143, 0.031774692, 0.023098834, 0.06497257, -0.006925593) * inp_2_0_0; result0 += M4(-0.039136406, -0.0415032, 0.08546093, 0.023873826, -0.026421824, -0.007760049, -0.037245497, -0.05732687, -0.15260299, -0.008224246, -0.05384761, 0.13934413, 0.060129385, 0.0067948704, -0.08729183, 0.07581047) * inp_2_1_0; result0 += M4(-0.003293959, 0.041236475, 0.02051056, 0.031852, -0.043645486, 0.038336862, 0.048915327, 0.07568821, 0.010416601, -0.026456133, -0.01742711, -0.03738146, 0.24022166, -0.0040591555, -0.09206588, -0.008506987) * inp_2_2_0; result0 += M4(-0.103650875, 0.014343571, 0.067458145, -0.02318691, -0.024746615, -0.010223326, -0.015307855, 0.012205415, -0.6746849, 0.11943456, 0.08582022, -0.5794754, 0.017518, -0.1389424, -0.09390798, -0.023360977) * inp_2_0_1; result0 += M4(0.06295731, -0.17672047, 0.0683662, 0.0072814263, -0.03004361, -0.0069039147, 0.020227736, 0.01027067, -0.06973203, 0.15497494, -0.09678961, 0.21699183, 0.009487642, 0.29306316, -0.152098, 0.046976574) * inp_2_1_1; result0 += M4(0.012141389, -0.042064562, 0.016394977, -0.05699144, 0.03990081, 0.019388106, -0.07120837, 0.007870123, -0.037840996, 0.005604628, 0.098205715, 0.025410755, -0.07321332, 0.17570975, 0.16909444, 0.0010606574) * inp_2_2_1; result0 += M4(-0.0132269105, 0.04569394, 0.009248518, 0.0059233243, 0.0029233946, -0.013934235, 0.07315021, 0.06747305, -0.6580047, 0.033228036, -0.732393, -0.265595, -0.0028665466, 0.026947591, -0.034445856, 0.09790875) * inp_2_0_2; result0 += M4(-0.07143128, 0.0145611735, 0.01978241, -0.027229335, -0.054260124, 0.03827392, 0.038515024, -0.04875465, 0.16571963, -0.096779965, 0.028925505, 0.13517864, 0.20107114, 0.00057858793, 0.19207887, 0.039124053) * inp_2_1_2; result0 += M4(-0.024759889, 0.016459407, -0.035851996, -0.00018493594, 0.07099459, 0.027845634, -0.016697466, -0.025208268, 0.02104728, -0.010249471, -0.055860672, 0.020715464, 0.12480938, 0.0034335845, -0.00050889765, 0.023905937) * inp_2_2_2; result1 += M4(0.030302566, 0.031225177, -0.006213296, 0.02646077, 0.058812745, 0.07538881, 0.015286775, -0.03947174, 0.015725859, -0.054209758, 0.06500324, -0.45138457, -0.07156139, -0.05860914, -0.058326118, -0.17699906) * inp_2_0_0; result1 += M4(0.0523587, 0.07063431, -0.16791384, -0.09645183, -0.057216465, 0.006062099, -0.014260421, -0.039000094, 0.09093237, 0.06657898, -0.01288626, 0.26400948, -0.060846668, -0.003710247, 0.2278457, -0.24294244) * inp_2_1_0; result1 += M4(0.07577356, 0.02059924, -0.03459449, 0.020671902, 0.07231851, -0.08076063, -0.026263714, 0.077624336, -0.016676899, -0.009598495, 0.00805601, 0.10095437, -0.058140982, 0.040824655, 0.10134044, 0.06618465) * inp_2_2_0; result1 += M4(0.0538292, 0.055548757, 0.043508373, -0.009169649, 0.0032984847, 0.078286424, 0.0046469104, -0.07711276, 0.15452036, -0.36816692, 0.008160976, -0.91783047, 0.12924357, 0.063634865, -0.014169615, 0.29540476) * inp_2_0_1; result1 += M4(0.08034367, -0.15636909, 0.10648017, -0.2108428, -0.077513084, -0.050486244, 0.006880326, -0.027164739, 0.049132913, 0.26581234, -0.327413, -0.14157401, 0.07701436, 0.25974786, -0.019908825, 0.6703545) * inp_2_1_1; result1 += M4(-0.030866193, 0.08373007, -0.047335885, -0.03651422, -0.043856986, -0.08762735, -0.076225035, 0.07256697, 0.050397, 0.023758996, -0.041889187, 0.066279866, -0.117533594, 0.074742064, -0.19393961, 0.009071731) * inp_2_2_1; result1 += M4(-0.08659937, 0.046207182, 0.056805063, -0.052921515, 0.03723353, -0.0100750495, -0.08756387, 0.008432355, -0.2203128, -0.42373574, -0.07908905, -1.1824073, 0.009477418, -0.13720948, -0.09980396, -0.054229755) * inp_2_0_2; result1 += M4(0.12324832, -0.10142917, -0.04773348, -0.13287991, 0.009926872, -0.06350376, 0.042166047, -0.060333565, 0.051860157, 0.10472002, 0.010519754, 0.0028532587, -0.17224081, 0.23671019, 0.08840737, 0.31772146) * inp_2_1_2; result1 += M4(-0.0174561, 0.053775594, -0.00826821, -0.058324452, -0.043048203, -0.031678855, 0.004483846, -0.03731989, -0.0084619345, -0.057676528, 0.052093487, -0.03361723, -0.24009396, -0.03818895, 0.12598912, 0.1791608) * inp_2_2_2; result2 += M4(0.043484975, -0.032706052, -0.014286072, 0.026690139, -0.024882175, 0.0019923132, 0.05829981, -0.0077951103, 0.044464864, -0.14099023, 0.3713713, 0.028265545, -0.20770459, -0.019744247, 0.15486282, -0.06965174) * inp_2_0_0; result2 += M4(0.16309074, 0.06303906, 0.0737395, -0.051950067, -0.08467811, -0.04915987, 0.06645121, 0.06313872, 0.0017153876, 0.05436006, 0.12273285, 0.0001455138, 0.08789372, 0.016816322, 0.07658035, -0.088643976) * inp_2_1_0; result2 += M4(0.027618825, -0.016911319, 0.07419916, 0.07543407, -0.02434799, -0.07212924, 0.059357606, 0.083103836, 0.0038496288, 0.01652408, -0.107218884, 0.012039525, -0.110178374, -0.049930166, -0.12736773, 0.05118953) * inp_2_2_0; result2 += M4(0.10731966, 0.046853017, 0.018964764, 0.010637609, 0.078031115, -0.028057542, -0.044524886, -0.04204207, 0.038443416, -0.34136552, 0.31944996, -0.06489262, -0.08664032, 0.102687486, -0.015948663, 0.10823785) * inp_2_0_1; result2 += M4(-0.114635706, -0.019412292, 0.07234911, -0.17818251, 0.051716108, 0.026100453, 0.09072499, 0.07828673, -0.14634745, -0.098658904, -0.3539634, 0.330272, 0.4647091, 0.06822966, -0.18251027, -0.060631104) * inp_2_1_1; result2 += M4(0.07799342, 0.053093754, 0.05468944, 0.01990193, -0.029323135, 0.07627821, -0.083613485, -0.077892765, 0.023279592, 0.0018264052, 0.033911567, -0.015601787, 0.064719394, 0.0076871742, 0.10192039, -0.22257967) * inp_2_2_1; result2 += M4(-0.005940444, 0.021655, 0.07231104, 0.03963639, 0.023546318, -0.053978067, 0.0025632118, 0.026056489, -0.18124716, -0.25320172, 0.057237078, 0.2696152, -0.048270535, -0.0039532003, 0.05689378, 0.12102169) * inp_2_0_2; result2 += M4(0.10790308, 0.0063439035, -0.01607246, 0.1006821, -0.054494638, 0.08104181, -0.038722143, 0.040811, -0.1852778, -7.106777e-05, 0.095709585, -0.2454842, -0.037950136, -0.0070773414, 0.12813486, 0.18571706) * inp_2_1_2; result2 += M4(-0.022376185, -0.009717118, -0.023262924, 0.00733764, 0.07918365, -0.018120382, 0.03904425, -0.053265642, -0.04215542, 0.0003603456, 0.023023833, 0.001569353, -0.12597036, -0.022806574, -0.0897559, -0.13535577) * inp_2_2_2; result3 += M4(0.03656063, 0.013225568, 0.04615406, 0.07623223, 0.07374492, -0.0748677, -0.015573213, -0.07879655, -0.28500423, -0.01890638, -0.07766735, 0.2827856, -0.02175362, 0.08715394, -0.014131477, -0.04535663) * inp_2_0_0; result3 += M4(0.08108834, 0.007058892, 0.13878661, 0.010749319, 0.08100445, -0.07912032, -0.055361237, 0.039773926, -0.064426266, 0.016226817, -0.07367919, 0.16234662, 0.075943835, -0.04433474, 0.1698753, 0.01013037) * inp_2_1_0; result3 += M4(-0.00073270645, -0.07383499, 0.012668962, 0.0010627048, -0.022402735, -0.048168007, 0.09301184, 0.04674196, 0.0012500825, 0.02016717, 0.050205782, -0.024444602, -0.06743075, -0.0035221402, 0.054790214, -0.06272361) * inp_2_2_0; result3 += M4(0.075116016, -0.042665917, 0.08363271, -0.057631582, -0.07397671, -0.0048534814, -0.0329083, 0.06862696, -0.71580774, -0.4949592, 0.021718385, 0.37913385, -0.028093198, 0.023330433, 0.0150892455, -0.09080696) * inp_2_0_1; result3 += M4(-0.07964138, -0.1313887, 0.010378329, 0.11288589, -0.07722471, 0.016218448, 0.046069533, 0.03891755, 0.20184892, -0.09521052, -0.24484545, 0.17308034, 0.15055482, 0.19630484, -0.30349073, 0.13001522) * inp_2_1_1; result3 += M4(-0.105074555, 0.012319249, 0.02570819, 0.045201056, 0.08727875, 0.023341816, -0.009852337, 0.036962494, -0.037519444, -0.036323838, -0.056242518, 0.005703453, 0.017902981, 0.07327699, -0.09035582, -0.15054089) * inp_2_2_1; result3 += M4(-0.021943102, -0.009474551, -0.016728165, -0.017946139, 0.021480452, -0.035543486, -0.05210149, -0.015988195, 0.070480525, 0.1412092, -0.13912518, -0.034101885, -0.028829632, -0.027790343, -0.09634996, 0.048652958) * inp_2_0_2; result3 += M4(0.023261504, -0.070056304, -0.041690975, -0.05893201, -0.030522548, -0.080227286, -0.070274495, -0.0541942, -0.006041988, -0.10772397, 0.010078592, 0.3697933, -0.13736941, -0.27040747, 0.08957606, 0.07472304) * inp_2_1_2; result3 += M4(-0.025846258, -0.040265493, 0.005441039, -0.01203128, -0.041348312, -0.071078196, -0.05666592, 0.09529744, 0.0073093143, 0.046447407, -0.023978245, 0.063334614, 0.14421363, 0.14862713, 0.075828366, 0.012320167) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.03176028, 0.08617464, -0.063211694, 0.013302033, 0.10006294, 0.002679664, -0.12859592, 0.07016565, -0.054847077, 0.01245787, 0.010185286, -0.074334726, -0.014526408, -0.03931362, -0.031091223, 0.027339123) * inp_3_0_0; result0 += M4(-0.18142875, 0.013356488, 0.15020342, 0.0022209163, -0.26063114, -0.22939578, 0.17768925, 0.047011167, 0.12577578, 0.15530124, -0.119327754, -0.010051626, -0.12700576, -0.120637104, 0.13986821, 0.080179885) * inp_3_1_0; result0 += M4(-0.06001588, 0.10015262, 0.11963958, 0.0014363321, -0.075328514, -0.14221087, -0.12464646, -0.035628922, -0.0074474704, 0.10252074, 0.08466043, 0.0027356634, 0.025020078, 0.0050776945, -0.056735955, 0.08657737) * inp_3_2_0; result0 += M4(-0.02382756, 0.14017165, 0.28374383, -0.022483002, 0.14228939, -0.24800049, 0.12366338, -0.058590874, -0.20254931, 0.21587323, -0.15978903, -0.003649713, -0.10194189, -0.024264475, 0.03704183, 0.041506696) * inp_3_0_1; result0 += M4(0.23357078, -0.47839254, 0.21166445, -0.0076709995, -0.33184478, -0.63671803, -0.40977743, -0.25953278, 0.24819253, 0.534081, 0.284702, 0.15090849, -0.32343972, -0.046391804, -0.08234474, 0.14983347) * inp_3_1_1; result0 += M4(-0.14786011, -0.13531761, -0.22840059, 0.05553503, -0.20598812, -0.054726813, 0.035892747, 0.07573408, 0.079025194, 0.045341786, -0.012997995, -0.067813724, -0.19303118, -0.6824706, 0.04251921, -0.25382867) * inp_3_2_1; result0 += M4(-0.06097097, -0.0073334617, -0.12618788, -0.069494605, -0.2145243, -0.17659311, 0.21359767, 0.12681575, 0.12684382, 0.054079786, -0.23725946, -0.050983116, 0.025629165, 0.025365792, -0.03386172, -0.007513327) * inp_3_0_2; result0 += M4(0.037771896, -0.02234905, 0.039809275, -0.030036382, -0.10181322, -0.15963826, -0.35284102, 0.009662694, 0.107231125, 0.018343832, 0.14691715, -0.02740675, -0.124688, 0.02029298, 0.09588565, 0.02139954) * inp_3_1_2; result0 += M4(0.06293819, 0.0011491816, 0.11247184, -0.012265004, 0.18297389, -0.08813316, 0.07677992, 0.035955735, -0.15227091, 0.03787937, -0.0029915748, -0.016141266, 0.06250109, 0.10619298, -0.2013516, -0.06617775) * inp_3_2_2; result1 += M4(0.048149947, 0.12296049, -0.088171884, 0.054872204, 0.03931412, 0.031041326, -0.054495923, 0.17580496, -0.02953313, -0.036984965, -0.012989323, -0.008394384, 0.027978685, -0.050847508, 0.07960085, -0.058006987) * inp_3_0_0; result1 += M4(0.0965942, -0.11519937, -0.19019625, 0.0407206, 0.14651947, -0.027624268, -0.16302195, 0.12567022, 0.028487781, 0.046802837, 0.16551968, 0.05103621, 0.15989448, 0.008082777, 0.19533232, 0.09407662) * inp_3_1_0; result1 += M4(-0.07062237, -0.001632943, -0.0976763, -0.16128758, 0.083613, -0.06747135, 0.036556598, 0.16303353, -0.0009637208, 0.09381429, -0.016695762, -0.024280978, 0.14748144, 0.1410366, 0.15871496, 0.20239113) * inp_3_2_0; result1 += M4(-0.014341, 0.030410416, -0.025682516, -0.3172001, 0.3344304, 0.0058800303, -0.24147226, -0.04634479, -0.23883356, -0.08175221, 0.18828933, -0.07229628, 0.09256102, -0.015982877, 0.09743615, 0.024533354) * inp_3_0_1; result1 += M4(-0.21449116, -0.23806658, 0.13190807, -0.5499556, 0.7577387, 0.14578693, 0.18278232, 0.21803997, -0.65685594, -0.15832815, 0.09304606, -0.42718533, 0.42287254, -0.028865445, -0.11482927, -0.8060826) * inp_3_1_1; result1 += M4(0.116003625, -0.0247948, 0.13885607, -0.31590903, -0.019591063, 0.057178706, -0.11289954, -0.07565211, -0.13765414, -0.0513045, 0.08464213, -0.019983115, 0.4231269, -0.32583478, -0.03588424, -0.21475634) * inp_3_2_1; result1 += M4(-0.12690863, 0.07117167, 0.0973391, -0.12499765, 0.25243437, 0.050152775, 0.27841622, -0.12918511, -0.17173965, -0.068483666, -0.1936192, 0.15468375, -0.03847498, 0.008680702, -0.03761723, 0.08706351) * inp_3_0_2; result1 += M4(0.023577463, 0.025229104, 0.05535227, -0.10517333, 0.09796849, -0.07879407, -0.18865138, -0.06009927, -0.0633315, 0.17857942, 0.078501955, 0.30460045, 0.22036606, 0.14340088, 0.09173917, -0.046547595) * inp_3_1_2; result1 += M4(0.22690284, 0.0843387, -0.03317772, 0.030411543, -0.06398493, 0.024037158, 0.0999914, 0.083395064, 0.07979538, 0.08052319, -0.057529118, -0.032755222, -0.034407146, -0.2505589, -0.1721898, -0.112052225) * inp_3_2_2; result2 += M4(0.07144714, 0.04860799, 0.18796456, -0.008940498, 0.09751216, -0.021358397, -0.057165038, 0.037870962, -0.0022102885, 0.03516535, -0.03152495, 0.013673393, 0.012652816, -0.028296616, 0.026428506, 0.061794654) * inp_3_0_0; result2 += M4(-0.009246917, 0.0036254907, -0.13488288, 0.089671195, 0.033152584, 0.06873389, -0.074508265, -0.04184344, 0.15599069, -0.019295117, 0.11008436, 0.12903734, 0.027692948, 0.046989884, -0.14720443, 0.14251089) * inp_3_1_0; result2 += M4(-0.039733563, 0.004011115, 0.2622712, -0.06641854, 0.15757705, 0.04206312, -0.0845983, 0.081600964, -0.02220041, -0.0032050458, 0.14553745, -0.060560342, 0.07822985, -0.03640382, -0.01697521, 0.05986297) * inp_3_2_0; result2 += M4(0.004501368, -0.07197194, 0.17217839, 0.011888041, -0.10260012, -0.12320194, 0.121634856, -0.03501524, 0.12985681, 0.06895572, -0.07847785, 0.019900749, 0.044049725, 0.0030787722, -0.13110259, -0.06495563) * inp_3_0_1; result2 += M4(-0.31736562, -0.052524365, 0.298328, -0.2625663, 0.42101672, 0.14106293, 0.6377784, -0.010755404, -0.38662922, -0.07558525, -0.38478288, -0.3280244, -0.43625966, 0.12313629, -0.09546718, -0.388331) * inp_3_1_1; result2 += M4(-0.027121155, -0.00070691656, -0.09406641, 0.009046444, 0.062131234, 0.10425972, 0.18508205, -0.25697273, -0.022531303, -0.031683493, -0.15189157, 0.06733816, 0.19320157, 0.07263877, 0.07007402, 0.17454606) * inp_3_2_1; result2 += M4(-0.089573525, 0.01793548, 0.011946598, -0.0463608, -0.06218468, -0.050948866, -0.12812068, 0.22846973, 0.110572085, 0.066749945, 0.09187166, -0.13514233, 0.08955194, 0.010040904, 0.02156031, 0.010211972) * inp_3_0_2; result2 += M4(0.04298041, 0.00705809, 0.040936597, -0.06612535, 0.18576951, -0.033023495, -0.16229568, 0.10335522, 0.0054550995, 0.036599975, 0.011638951, 0.0030739396, 0.25804025, 0.05982614, -0.10304795, 0.30527377) * inp_3_1_2; result2 += M4(0.09490947, -0.00716633, -0.0022280274, 0.1913396, -0.07171818, 0.042458996, 0.020741682, -0.2153116, 0.07776136, -0.025600057, 0.008262909, 0.18053958, 0.015921356, 0.070382506, -0.09346383, -0.054357376) * inp_3_2_2; result3 += M4(0.010675445, -0.094492145, -0.067404695, 0.009858076, -0.019705603, 0.0764461, 0.01989241, 0.119120464, 0.04731911, 0.0036826984, 0.039175566, -0.07803653, -0.002339228, -0.07289485, -0.034417335, 0.08115894) * inp_3_0_0; result3 += M4(0.3034057, 0.014508629, -0.009653358, -0.009528063, -0.109899744, -0.09516355, 0.07298525, 0.08555445, -0.103651315, 0.06729398, -0.07419558, -0.043434076, -0.27029064, -0.09416238, 0.01365751, 0.15428263) * inp_3_1_0; result3 += M4(-0.07251891, 0.009557849, 0.032190654, 0.065284744, 0.052022208, 0.06008626, 0.06368103, 0.020260934, -0.1677007, -0.08894624, -0.087381296, -0.03351093, -0.23756462, -0.10275538, -0.0064452975, 0.0054920195) * inp_3_2_0; result3 += M4(-0.29741964, -0.025272254, 0.0124155, -0.14098033, -0.13442364, 0.1628203, -0.068504535, -0.12609297, 0.16272418, -0.078787886, -0.056569472, 0.01556576, 0.07147792, -0.053351227, -0.015282394, 0.13356528) * inp_3_0_1; result3 += M4(-0.14325735, -0.14359723, 0.15650293, -0.16316506, -0.55424386, 0.7588329, -0.29013917, 0.1782268, 0.25165534, -0.4912153, 0.26692742, -0.08597831, 0.11829198, -0.20075902, 0.18355475, -0.02318546) * inp_3_1_1; result3 += M4(0.17860836, 0.053504955, -0.07985402, 0.09514076, -0.13190688, 0.06234389, -0.20284946, 0.09839304, 0.13225365, 0.05888839, 0.15391159, -0.0986885, 0.14323825, -0.11281144, 0.13367787, 0.133107) * inp_3_2_1; result3 += M4(-0.007970765, 0.046493, 0.0354178, -0.10482211, 0.10123911, 0.23966072, -0.08733909, -0.012262444, -0.065748, -0.37108713, 0.08701075, 0.07387389, -0.025984963, -0.15536834, 0.057252336, 0.10107016) * inp_3_0_2; result3 += M4(-0.14050348, 0.05323467, -0.050587416, -0.020338882, -0.124422, 0.03674322, 0.024045456, 0.1352922, 0.036790885, -0.04608185, 0.10258329, -0.021294698, 0.11533333, -0.04097626, 0.07097334, -0.16049099) * inp_3_1_2; result3 += M4(-0.19474778, -0.1872548, -0.012087479, 0.028696787, -0.020285983, 0.07701064, -0.00807582, 0.14659113, -0.040408507, -0.09989952, 0.013445806, -0.10228686, -0.011706706, -0.019810664, -0.07358774, -0.179241) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2); imageStore(out_image, output_base + ivec2(0, 0), result0); imageStore(out_image, output_base + ivec2(1, 0), result1); imageStore(out_image, output_base + ivec2(0, 1), result2); imageStore(out_image, output_base + ivec2(1, 1), result3); } //!DESC ArtCNN C4F16 DN (Conv2D-6) //!COMPUTE 12 16 12 16 //!HOOK LUMA //!BIND conv2d //!BIND conv2d_5 //!SAVE conv2d_6 //!WIDTH LUMA.w 1.0 * //!HEIGHT LUMA.h 1.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif const ivec2 ksize = ivec2(3, 3); const ivec2 offset = ksize / 2; const ivec2 wg_size = ivec2(gl_WorkGroupSize); const ivec2 isize = wg_size + ksize - 1; shared V4 inp[4][isize.y][isize.x]; void hook() { const uvec2 local_xy = gl_LocalInvocationID.xy; ivec2 base = ivec2(gl_WorkGroupID) * wg_size; for (uint y = local_xy.y; y < isize.y; y += wg_size.y) { for (uint x = local_xy.x; x < isize.x; x += wg_size.x) { const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2); inp[0][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(0, 0), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 0), 0)); inp[1][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(1, 0), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 0), 0)); inp[2][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(0, 1), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 1), 0)); inp[3][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(1, 1), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 1), 0)); } } barrier(); V4 result0 = V4(0.07271819, 0.07408561, 0.07958637, 0.07517085); const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0]; const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1]; const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2]; const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0]; const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1]; const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2]; const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0]; const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1]; const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.11052887, -0.07697451, -0.006262107, -0.008855362, -0.003626129, -0.014807857, -0.0031811814, -0.008162876, -0.0035636881, 0.01288355, -0.0025423856, 0.010605611, 0.14204222, 0.10337986, 0.07260029, 0.07481801) * inp_0_0_0; result0 += M4(-0.22344403, -0.27549806, -0.0054420936, 0.01298951, -0.006403426, 0.012560562, -0.06436685, -0.0015406028, -0.075257435, -0.18355387, 0.066717714, 0.027680533, 0.023645515, 0.13078682, 0.061577693, 0.014555285) * inp_0_1_0; result0 += M4(-0.010880208, -0.05555989, -0.0016314732, -0.009418431, -0.0637804, -0.07077896, -0.04127708, -0.07141868, -0.06028899, 0.013831819, -0.018538343, 0.05493195, 0.08652545, 0.0462384, 0.059484288, 0.042846415) * inp_0_2_0; result0 += M4(0.19552194, -0.009633629, 0.0184625, -0.012037606, 0.07602969, -0.069619924, 0.1593734, -0.05729545, 0.018906403, 0.04209646, 0.07573993, 0.029780095, 0.17108138, 0.111199856, 0.15905194, 0.110970214) * inp_0_0_1; result0 += M4(0.05016589, 0.2279535, -0.121738926, -0.13402493, -0.24290715, 0.14992028, -0.1408541, 0.32835025, -0.16157764, -0.018112838, -0.13210484, -0.10627683, 0.19480368, 0.18954037, 0.14365369, 0.22168672) * inp_0_1_1; result0 += M4(0.019234665, 0.10734386, 0.06970447, 0.05047115, 0.016147712, -0.11809574, 0.026651476, -0.12163402, 0.0027371563, -0.040244758, -0.025878316, 0.074350275, 0.14819853, 0.17685336, 0.1396654, 0.21519417) * inp_0_2_1; result0 += M4(-0.0021193644, 0.015825957, 0.0094249, -0.0020462363, 0.0015233255, 0.0026083353, -0.013203229, -0.009530751, 0.045554053, 0.021221293, 0.056164518, 0.0438064, 0.10312659, 0.028968854, 0.1811472, 0.012346328) * inp_0_0_2; result0 += M4(0.006628667, -0.017926425, 0.12260225, 0.07392818, 0.067719795, 0.028340915, 0.08378757, -0.023936274, 0.022562867, 0.023725968, -0.13231404, 0.040477663, 0.043604765, 0.06736832, 0.067457795, 0.16776384) * inp_0_1_2; result0 += M4(-0.0051788255, 0.0041696993, -0.012309292, 0.053527154, 0.058346972, 0.065110356, 0.064430885, 0.011086612, 0.010099725, 0.01896994, -0.013210603, -0.08213418, 0.059180517, 0.114863895, 0.06993585, 0.10959468) * inp_0_2_2; const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0]; const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1]; const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2]; const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0]; const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1]; const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2]; const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0]; const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1]; const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.11064285, -0.046025235, -0.05533973, -0.052432343, -0.0014481689, -0.048249394, -0.036527276, -0.028274043, -0.060719475, -0.0015808593, -0.0003527875, -0.0040547615, 0.034501992, 0.057392165, 0.011225125, 0.007050131) * inp_1_0_0; result0 += M4(0.02653982, -0.17030618, -0.12056442, -0.025082339, 0.17117025, 0.16521132, 0.11793986, 0.0072816517, 0.10802516, -0.041749265, 0.018026298, 0.009324859, 0.03031558, -0.050473776, 0.021880977, 0.0068390947) * inp_1_1_0; result0 += M4(-0.07158384, 0.049813397, -0.032333646, -0.026022488, -1.7584209e-05, 0.12895854, -0.006877865, 0.10035208, -0.04955792, 0.06555474, -0.016377443, 0.035125718, 0.010668563, -0.023090232, 0.007869214, -0.0094331205) * inp_1_2_0; result0 += M4(0.00067774905, -0.10407797, 0.055904485, -0.047745354, -0.1890952, -0.06710201, -0.20372243, -0.14966783, 0.13191131, 0.010246681, -0.01815384, 0.011779004, -0.017254144, 0.013290562, 0.10028235, 0.048043754) * inp_1_0_1; result0 += M4(0.19216534, 0.06417686, 0.22366552, 0.036800906, 0.09332922, 0.11766825, -0.11517164, -0.04274507, -0.041144982, 0.035578478, -0.025101721, -0.045496177, 0.12836005, -0.013541115, -0.016936697, 0.11902651) * inp_1_1_1; result0 += M4(0.03914219, 0.12133629, 0.007049254, 0.06718766, -0.025751773, -0.026819643, -0.050741676, -0.13672985, 0.018762344, -0.07456111, -0.017892253, 0.025676029, 0.020884115, 0.030332875, 0.013759702, -0.022487322) * inp_1_2_1; result0 += M4(-0.031400107, -0.00758405, -0.06486476, -0.012059706, -0.06977188, -0.041464116, -0.07648823, -0.0028541824, 0.008078981, 0.0010211513, 0.0076195626, -0.030062709, -0.030346613, -0.018186508, -0.060373902, -0.034212597) * inp_1_0_2; result0 += M4(0.023702748, 0.07458331, 0.07968132, 0.0014261048, 0.0112605775, -0.02659619, 0.1424807, 0.084615074, -0.017425252, 0.004562479, 0.0390508, -0.062455457, -0.0780076, -0.053377103, -0.06846882, -0.1426072) * inp_1_1_2; result0 += M4(0.020173749, -0.0129420385, 0.01681474, 0.039360076, -0.005459472, -0.017207736, 0.01362342, 0.07577378, 0.034591917, 0.0037711556, 0.033172652, -0.073326394, -0.0077665304, -0.031631965, 0.0033790749, -0.006301254) * inp_1_2_2; const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0]; const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1]; const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2]; const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0]; const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1]; const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2]; const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0]; const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1]; const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2]; result0 += M4(0.013083165, 0.034154475, 0.025614286, 0.03139089, -0.1413365, -0.082499556, -0.043219004, -0.04719983, 0.029777477, 0.061117973, 0.0047203363, 0.0022017923, 0.12330046, -0.0048554074, 0.0075573656, 0.004187335) * inp_2_0_0; result0 += M4(-0.1602344, -0.05905934, 0.028250353, 0.013459905, -0.17247726, -0.083132066, 0.03193639, 0.016519472, 0.023434801, -0.06390237, 0.02209028, -0.00053547224, -0.12736855, 0.06542147, 0.020078529, -0.023709863) * inp_2_1_0; result0 += M4(-0.012959428, -0.12338614, -0.00810836, -0.026653918, 0.04978496, 0.0748422, 0.0336254, 0.0485389, 0.03398226, 0.035850268, 0.028866226, 0.027670028, -0.00587918, 0.07028672, -0.0010275246, 0.0722516) * inp_2_2_0; result0 += M4(0.027973281, 0.07572117, 0.006771348, 0.08127684, -0.22449759, -0.023798523, -0.28257576, -0.051694185, -0.028261956, 0.013541968, 0.060502384, 0.10552989, 0.033905968, -0.031837028, 0.07281349, -0.071909115) * inp_2_0_1; result0 += M4(-0.08009671, -0.21595009, -0.28178242, -0.26800653, -0.44602138, -0.3758408, -0.23921145, -0.21635108, 0.0071607353, -0.20857185, -0.18601577, -0.21349259, -0.015367647, -0.08957724, -0.014101079, 0.026888022) * inp_2_1_1; result0 += M4(-0.12394569, -0.05230506, -0.06969546, -0.06226867, 0.37334234, 0.046758395, 0.38907847, 0.059717365, 0.018366504, 0.0028442962, 0.033769175, -0.006013132, 0.01707536, 0.006596491, 0.05326109, 0.07743139) * inp_2_2_1; result0 += M4(0.034684036, 0.00754263, 0.089671604, 0.024472205, -0.07107379, -0.019766891, -0.13100386, 0.022800472, 0.0005258315, -0.0037487745, 0.019303946, 0.006672416, -0.017788958, 0.0046294746, -0.052216258, -0.009869868) * inp_2_0_2; result0 += M4(0.016474392, -0.03568857, 0.12841606, 0.0045111165, 0.06310754, 0.029309828, -0.13135292, -0.118457764, 0.012217446, 0.06634226, 0.03782437, -0.099642165, -0.01644281, -0.044345483, -0.060020033, -0.065026216) * inp_2_1_2; result0 += M4(0.00071679585, 0.044558905, -0.012215743, 0.0027069089, 0.108876586, 0.121081196, 0.12522358, 0.077328525, 0.010120945, -0.0018939214, 0.02202548, 0.055934835, 0.0004609579, 0.023280632, -0.012411851, 0.00853768) * inp_2_2_2; const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0]; const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1]; const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2]; const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0]; const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1]; const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2]; const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0]; const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1]; const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2]; result0 += M4(-0.044885118, -0.0043905643, -0.031385314, -0.01542357, -0.013951076, 0.019043041, 0.009709691, -0.0017127702, 0.019437317, 0.012032936, 0.016434522, 0.0047549233, -0.10754678, -0.055641238, -0.039444465, -0.04248104) * inp_3_0_0; result0 += M4(0.00037009746, -0.052082922, 0.036785655, 0.019489769, 0.038895205, -0.00095879706, -0.0045939577, 0.0018091998, -0.028269527, -0.064318754, -0.072977915, -0.04789887, -0.070526175, -0.091885485, 0.019623667, 0.02267402) * inp_3_1_0; result0 += M4(0.013514295, 0.050747994, 0.00783876, 0.028317524, -0.102624774, 0.019744175, -0.037904106, 0.02806474, 0.03270408, 0.05844836, 0.027982773, 0.027863946, -0.07076939, -0.0903884, -0.04131429, -0.028999286) * inp_3_2_0; result0 += M4(-0.018297665, -0.059446804, 0.06000978, 4.2880365e-05, -0.056170322, 0.030379962, -0.07320575, 0.07109784, 0.024477813, -0.040817976, 0.014381656, 0.01748121, -0.04967369, 0.0013691587, -0.08493897, 0.025795482) * inp_3_0_1; result0 += M4(0.13520333, 0.25901404, -0.22616078, -0.04321116, 0.09231137, -0.20430428, 0.13897236, -0.16301434, -0.47063208, -0.38243693, -0.40296456, -0.35352623, 0.32733408, 0.32106978, 0.3462488, 0.24352162) * inp_3_1_1; result0 += M4(0.025929468, -0.012797406, 0.039035384, -0.058699243, -0.04971871, 0.118507594, -0.09156245, 0.064601004, 0.022143906, -0.03970071, -0.0072154184, -0.023678243, -0.11779652, -0.121469386, -0.10123547, -0.13811521) * inp_3_2_1; result0 += M4(-0.048197895, -0.018932771, -0.07062681, -0.01378064, 0.00356286, 0.0084597515, 0.0234383, 0.0011797515, 0.12672411, 0.063356735, 0.16087574, 0.0074442565, -0.023697801, 0.014501549, -0.052783508, 0.009866516) * inp_3_0_2; result0 += M4(-0.0007714689, -0.034123003, 0.1099913, 0.0427165, 0.036767494, 0.0040027383, -0.0015076951, -0.09645526, 0.18582019, 0.20294748, -0.03859839, 0.07184512, 0.1416856, 0.055417456, 0.08189293, -0.027125463) * inp_3_1_2; result0 += M4(-0.03168433, -0.032534044, -0.027452188, -5.8044236e-05, 0.017230647, 0.03138485, 0.023622097, 0.08155887, 0.109860465, 0.17336306, 0.09693941, 0.13778093, -0.02176953, 0.006647579, -0.046749473, -0.028793886) * inp_3_2_2; const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(1, 1); imageStore(out_image, output_base + ivec2(0, 0), result0); } //!DESC ArtCNN C4F16 DN (Depth-To-Space) //!COMPUTE 12 16 12 16 //!HOOK LUMA //!BIND conv2d_6 //!WIDTH LUMA.w 2.0 * //!HEIGHT LUMA.h 2.0 * //!COMPONENTS 4 //!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > * #extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable #ifdef GL_EXT_shader_explicit_arithmetic_types_float16 # define V4 f16vec4 # define M4 f16mat4 # define F float16_t #else # define V4 vec4 # define M4 mat4 # define F float #endif void hook() { vec4 result = vec4(0.0, 0.0, 0.0, 1.0); vec2 f0 = fract(conv2d_6_pos * conv2d_6_size); ivec2 i0 = ivec2(f0 * vec2(2.0)); result.x = conv2d_6_tex((vec2(0.5) - f0) * conv2d_6_pt + conv2d_6_pos)[i0.y * 2 + i0.x]; imageStore(out_image, ivec2(gl_GlobalInvocationID), clamp(result, 0.0, 1.0)); }