ShadowGenerator.blurKernel issue on headless Chrome

Hi!

We created a React component that uses Babylon.js to render a simple model on the scene. The next step was to implement a solution to capture screenshots of the scene to generate thumbnails. We decided to create Azure Function and use the Puppeteer library to open a headless Chrome browser, go to the provided URL and take a screenshot of the canvas. The Azure Function is hosted on Linux.

We’ve encountered some issues - the Function worked fine locally (on Windows machine), but it returned blank images in the cloud.

After some investigation, we found in the logs (pasted below) that the ShadowGenerator.blurKernel caused the issue. We’ve set this property to 60, it was too high value. We’ve tried few lower values and it turned out that 59 works fine - the scene is rendered correctly and the screenshot was captured.

We still can’t figure out why the 60 was causing errors. Maybe it’s some hardware limitations? Do someone has any idea what happened?

'ERR BJS - [06:35:46]: Unable to compile effect:',
'ERR BJS - [06:35:46]: Uniforms:  delta, direction, cameraMinMaxZ, scale, circleOfConfusionSampler, textureSampler',
'ERR BJS - [06:35:46]: Attributes:  position',
'ERR BJS - [06:35:46]: Defines:\r\n' +
'#define KERNEL_OFFSET0 -29.42678023\r\n' +
'#define KERNEL_WEIGHT0 0.00104081\r\n' +
'#define KERNEL_OFFSET1 29.42678023\r\n' +
'#define KERNEL_WEIGHT1 0.00104081\r\n' +
'#define KERNEL_OFFSET2 -27.43168002\r\n' +
'#define KERNEL_WEIGHT2 0.00183783\r\n' +
'#define KERNEL_OFFSET3 27.43168002\r\n' +
'#define KERNEL_WEIGHT3 0.00183783\r\n' +
'#define KERNEL_OFFSET4 -25.43659321\r\n' +
'#define KERNEL_WEIGHT4 0.00311823\r\n' +
'#define KERNEL_OFFSET5 25.43659321\r\n' +
'#define KERNEL_WEIGHT5 0.00311823\r\n' +
'#define KERNEL_OFFSET6 -23.44151889\r\n' +
'#define KERNEL_WEIGHT6 0.00508374\r\n' +
'#define KERNEL_OFFSET7 23.44151889\r\n' +
'#define KERNEL_WEIGHT7 0.00508374\r\n' +
'#define KERNEL_OFFSET8 -21.4464561\r\n' +
'#define KERNEL_WEIGHT8 0.00796397\r\n' +
'#define KERNEL_OFFSET9 21.4464561\r\n' +
'#define KERNEL_WEIGHT9 0.00796397\r\n' +
'#define KERNEL_OFFSET10 -19.45140389\r\n' +
'#define KERNEL_WEIGHT10 0.011988\r\n' +
'#define KERNEL_OFFSET11 19.45140389\r\n' +
'#define KERNEL_WEIGHT11 0.011988\r\n' +
'#define KERNEL_OFFSET12 -17.45636131\r\n' +
'#define KERNEL_WEIGHT12 0.01733944\r\n' +
'#define KERNEL_OFFSET13 17.45636131\r\n' +
'#define KERNEL_WEIGHT13 0.01733944\r\n' +
'#define KERNEL_OFFSET14 -15.46132739\r\n' +
'#define KERNEL_WEIGHT14 0.02409876\r\n' +
'#define KERNEL_OFFSET15 15.46132739\r\n' +
'#define KERNEL_WEIGHT15 0.02409876\r\n' +
'#define KERNEL_OFFSET16 -13.46630116\r\n' +
'#define KERNEL_WEIGHT16 0.03218294\r\n' +
'#define KERNEL_OFFSET17 13.46630116\r\n' +
'#define KERNEL_WEIGHT17 0.03218294\r\n' +
'#define KERNEL_OFFSET18 -11.47128164\r\n' +
'#define KERNEL_WEIGHT18 0.04129793\r\n' +
'#define KERNEL_OFFSET19 11.47128164\r\n' +
'#define KERNEL_WEIGHT19 0.04129793\r\n' +
'#define KERNEL_OFFSET20 -9.47626785\r\n' +
'#define KERNEL_WEIGHT20 0.05092164\r\n' +
'#define KERNEL_OFFSET21 9.47626785\r\n' +
'#define KERNEL_WEIGHT21 0.05092164\r\n' +
'#define KERNEL_OFFSET22 -7.48125878\r\n' +
'#define KERNEL_WEIGHT22 0.06033203\r\n' +
'#define KERNEL_OFFSET23 7.48125878\r\n' +
'#define KERNEL_WEIGHT23 0.06033203\r\n' +
'#define KERNEL_OFFSET24 -5.48625347\r\n' +
'#define KERNEL_WEIGHT24 0.06868551\r\n' +
'#define KERNEL_OFFSET25 5.48625347\r\n' +
'#define KERNEL_WEIGHT25 0.06868551\r\n' +
'#define KERNEL_OFFSET26 -3.49125089\r\n' +
'#define KERNEL_WEIGHT26 0.07513701\r\n' +
'#define KERNEL_OFFSET27 3.49125089\r\n' +
'#define KERNEL_WEIGHT27 0.07513701\r\n' +
'#define KERNEL_OFFSET28 -1.49625007\r\n' +
'#define KERNEL_WEIGHT28 0.0789795\r\n' +
'#define KERNEL_OFFSET29 1.49625007\r\n' +
'#define KERNEL_WEIGHT29 0.0789795\r\n' +
'#define KERNEL_OFFSET30 0.\r\n' +
'#define KERNEL_WEIGHT30 0.03998534\r\n',
'ERR BJS - [06:35:46]: Vertex code:',
'ERR BJS - [06:35:46]: #version 300 es\n' +
'#define WEBGL2 \n' +
'#define KERNEL_OFFSET0 -29.42678023\r\n' +
'#define KERNEL_WEIGHT0 0.00104081\r\n' +
'#define KERNEL_OFFSET1 29.42678023\r\n' +
'#define KERNEL_WEIGHT1 0.00104081\r\n' +
'#define KERNEL_OFFSET2 -27.43168002\r\n' +
'#define KERNEL_WEIGHT2 0.00183783\r\n' +
'#define KERNEL_OFFSET3 27.43168002\r\n' +
'#define KERNEL_WEIGHT3 0.00183783\r\n' +
'#define KERNEL_OFFSET4 -25.43659321\r\n' +
'#define KERNEL_WEIGHT4 0.00311823\r\n' +
'#define KERNEL_OFFSET5 25.43659321\r\n' +
'#define KERNEL_WEIGHT5 0.00311823\r\n' +
'#define KERNEL_OFFSET6 -23.44151889\r\n' +
'#define KERNEL_WEIGHT6 0.00508374\r\n' +
'#define KERNEL_OFFSET7 23.44151889\r\n' +
'#define KERNEL_WEIGHT7 0.00508374\r\n' +
'#define KERNEL_OFFSET8 -21.4464561\r\n' +
'#define KERNEL_WEIGHT8 0.00796397\r\n' +
'#define KERNEL_OFFSET9 21.4464561\r\n' +
'#define KERNEL_WEIGHT9 0.00796397\r\n' +
'#define KERNEL_OFFSET10 -19.45140389\r\n' +
'#define KERNEL_WEIGHT10 0.011988\r\n' +
'#define KERNEL_OFFSET11 19.45140389\r\n' +
'#define KERNEL_WEIGHT11 0.011988\r\n' +
'#define KERNEL_OFFSET12 -17.45636131\r\n' +
'#define KERNEL_WEIGHT12 0.01733944\r\n' +
'#define KERNEL_OFFSET13 17.45636131\r\n' +
'#define KERNEL_WEIGHT13 0.01733944\r\n' +
'#define KERNEL_OFFSET14 -15.46132739\r\n' +
'#define KERNEL_WEIGHT14 0.02409876\r\n' +
'#define KERNEL_OFFSET15 15.46132739\r\n' +
'#define KERNEL_WEIGHT15 0.02409876\r\n' +
'#define KERNEL_OFFSET16 -13.46630116\r\n' +
'#define KERNEL_WEIGHT16 0.03218294\r\n' +
'#define KERNEL_OFFSET17 13.46630116\r\n' +
'#define KERNEL_WEIGHT17 0.03218294\r\n' +
'#define KERNEL_OFFSET18 -11.47128164\r\n' +
'#define KERNEL_WEIGHT18 0.04129793\r\n' +
'#define KERNEL_OFFSET19 11.47128164\r\n' +
'#define KERNEL_WEIGHT19 0.04129793\r\n' +
'#define KERNEL_OFFSET20 -9.47626785\r\n' +
'#define KERNEL_WEIGHT20 0.05092164\r\n' +
'#define KERNEL_OFFSET21 9.47626785\r\n' +
'#define KERNEL_WEIGHT21 0.05092164\r\n' +
'#define KERNEL_OFFSET22 -7.48125878\r\n' +
'#define KERNEL_WEIGHT22 0.06033203\r\n' +
'#define KERNEL_OFFSET23 7.48125878\r\n' +
'#define KERNEL_WEIGHT23 0.06033203\r\n' +
'#define KERNEL_OFFSET24 -5.48625347\r\n' +
'#define KERNEL_WEIGHT24 0.06868551\r\n' +
'#define KERNEL_OFFSET25 5.48625347\r\n' +
'#define KERNEL_WEIGHT25 0.06868551\r\n' +
'#define KERNEL_OFFSET26 -3.49125089\r\n' +
'#define KERNEL_WEIGHT26 0.07513701\r\n' +
'#define KERNEL_OFFSET27 3.49125089\r\n' +
'#define KERNEL_WEIGHT27 0.07513701\r\n' +
'#define KERNEL_OFFSET28 -1.49625007\r\n' +
'#define KERNEL_WEIGHT28 0.0789795\r\n' +
'#define KERNEL_OFFSET29 1.49625007\r\n' +
'#define KERNEL_WEIGHT29 0.0789795\r\n' +
'#define KERNEL_OFFSET30 0.\r\n' +
'#define KERNEL_WEIGHT30 0.03998534\r\n' +
'\n' +
'#define SHADER_NAME vertex:kernelBlur\n' +
'precision highp float;\r\n' +
'in vec2 position;\r\n' +
'uniform vec2 delta;\r\n' +
'out vec2 sampleCenter;\r\n' +
'out vec2 sampleCoord0;\r\n' +
'out vec2 sampleCoord1;\r\n' +
'out vec2 sampleCoord2;\r\n' +
'out vec2 sampleCoord3;\r\n' +
'out vec2 sampleCoord4;\r\n' +
'out vec2 sampleCoord5;\r\n' +
'out vec2 sampleCoord6;\r\n' +
'out vec2 sampleCoord7;\r\n' +
'out vec2 sampleCoord8;\r\n' +
'out vec2 sampleCoord9;\r\n' +
'out vec2 sampleCoord10;\r\n' +
'out vec2 sampleCoord11;\r\n' +
'out vec2 sampleCoord12;\r\n' +
'out vec2 sampleCoord13;\r\n' +
'out vec2 sampleCoord14;\r\n' +
'out vec2 sampleCoord15;\r\n' +
'out vec2 sampleCoord16;\r\n' +
'out vec2 sampleCoord17;\r\n' +
'out vec2 sampleCoord18;\r\n' +
'out vec2 sampleCoord19;\r\n' +
'out vec2 sampleCoord20;\r\n' +
'out vec2 sampleCoord21;\r\n' +
'out vec2 sampleCoord22;\r\n' +
'out vec2 sampleCoord23;\r\n' +
'out vec2 sampleCoord24;\r\n' +
'out vec2 sampleCoord25;\r\n' +
'out vec2 sampleCoord26;\r\n' +
'out vec2 sampleCoord27;\r\n' +
'out vec2 sampleCoord28;\r\n' +
'out vec2 sampleCoord29;\r\n' +
'out vec2 sampleCoord30;\r\n' +
'const vec2 madd=vec2(0.5,0.5);\r\n' +
'void main(void) {\r\n' +
'sampleCenter=(position*madd+madd);\r\n' +
'sampleCoord0=sampleCenter+delta*KERNEL_OFFSET0;\r\n' +
'sampleCoord1=sampleCenter+delta*KERNEL_OFFSET1;\r\n' +
'sampleCoord2=sampleCenter+delta*KERNEL_OFFSET2;\r\n' +
'sampleCoord3=sampleCenter+delta*KERNEL_OFFSET3;\r\n' +
'sampleCoord4=sampleCenter+delta*KERNEL_OFFSET4;\r\n' +
'sampleCoord5=sampleCenter+delta*KERNEL_OFFSET5;\r\n' +
'sampleCoord6=sampleCenter+delta*KERNEL_OFFSET6;\r\n' +
'sampleCoord7=sampleCenter+delta*KERNEL_OFFSET7;\r\n' +
'sampleCoord8=sampleCenter+delta*KERNEL_OFFSET8;\r\n' +
'sampleCoord9=sampleCenter+delta*KERNEL_OFFSET9;\r\n' +
'sampleCoord10=sampleCenter+delta*KERNEL_OFFSET10;\r\n' +
'sampleCoord11=sampleCenter+delta*KERNEL_OFFSET11;\r\n' +
'sampleCoord12=sampleCenter+delta*KERNEL_OFFSET12;\r\n' +
'sampleCoord13=sampleCenter+delta*KERNEL_OFFSET13;\r\n' +
'sampleCoord14=sampleCenter+delta*KERNEL_OFFSET14;\r\n' +
'sampleCoord15=sampleCenter+delta*KERNEL_OFFSET15;\r\n' +
'sampleCoord16=sampleCenter+delta*KERNEL_OFFSET16;\r\n' +
'sampleCoord17=sampleCenter+delta*KERNEL_OFFSET17;\r\n' +
'sampleCoord18=sampleCenter+delta*KERNEL_OFFSET18;\r\n' +
'sampleCoord19=sampleCenter+delta*KERNEL_OFFSET19;\r\n' +
'sampleCoord20=sampleCenter+delta*KERNEL_OFFSET20;\r\n' +
'sampleCoord21=sampleCenter+delta*KERNEL_OFFSET21;\r\n' +
'sampleCoord22=sampleCenter+delta*KERNEL_OFFSET22;\r\n' +
'sampleCoord23=sampleCenter+delta*KERNEL_OFFSET23;\r\n' +
'sampleCoord24=sampleCenter+delta*KERNEL_OFFSET24;\r\n' +
'sampleCoord25=sampleCenter+delta*KERNEL_OFFSET25;\r\n' +
'sampleCoord26=sampleCenter+delta*KERNEL_OFFSET26;\r\n' +
'sampleCoord27=sampleCenter+delta*KERNEL_OFFSET27;\r\n' +
'sampleCoord28=sampleCenter+delta*KERNEL_OFFSET28;\r\n' +
'sampleCoord29=sampleCenter+delta*KERNEL_OFFSET29;\r\n' +
'sampleCoord30=sampleCenter+delta*KERNEL_OFFSET30;\r\n' +
'gl_Position=vec4(position,0.0,1.0);\r\n' +
'}\r\n',
'ERR BJS - [06:35:46]: Fragment code:',
'ERR BJS - [06:35:46]: #version 300 es\n' +
'#define WEBGL2 \n' +
'#define KERNEL_OFFSET0 -29.42678023\r\n' +
'#define KERNEL_WEIGHT0 0.00104081\r\n' +
'#define KERNEL_OFFSET1 29.42678023\r\n' +
'#define KERNEL_WEIGHT1 0.00104081\r\n' +
'#define KERNEL_OFFSET2 -27.43168002\r\n' +
'#define KERNEL_WEIGHT2 0.00183783\r\n' +
'#define KERNEL_OFFSET3 27.43168002\r\n' +
'#define KERNEL_WEIGHT3 0.00183783\r\n' +
'#define KERNEL_OFFSET4 -25.43659321\r\n' +
'#define KERNEL_WEIGHT4 0.00311823\r\n' +
'#define KERNEL_OFFSET5 25.43659321\r\n' +
'#define KERNEL_WEIGHT5 0.00311823\r\n' +
'#define KERNEL_OFFSET6 -23.44151889\r\n' +
'#define KERNEL_WEIGHT6 0.00508374\r\n' +
'#define KERNEL_OFFSET7 23.44151889\r\n' +
'#define KERNEL_WEIGHT7 0.00508374\r\n' +
'#define KERNEL_OFFSET8 -21.4464561\r\n' +
'#define KERNEL_WEIGHT8 0.00796397\r\n' +
'#define KERNEL_OFFSET9 21.4464561\r\n' +
'#define KERNEL_WEIGHT9 0.00796397\r\n' +
'#define KERNEL_OFFSET10 -19.45140389\r\n' +
'#define KERNEL_WEIGHT10 0.011988\r\n' +
'#define KERNEL_OFFSET11 19.45140389\r\n' +
'#define KERNEL_WEIGHT11 0.011988\r\n' +
'#define KERNEL_OFFSET12 -17.45636131\r\n' +
'#define KERNEL_WEIGHT12 0.01733944\r\n' +
'#define KERNEL_OFFSET13 17.45636131\r\n' +
'#define KERNEL_WEIGHT13 0.01733944\r\n' +
'#define KERNEL_OFFSET14 -15.46132739\r\n' +
'#define KERNEL_WEIGHT14 0.02409876\r\n' +
'#define KERNEL_OFFSET15 15.46132739\r\n' +
'#define KERNEL_WEIGHT15 0.02409876\r\n' +
'#define KERNEL_OFFSET16 -13.46630116\r\n' +
'#define KERNEL_WEIGHT16 0.03218294\r\n' +
'#define KERNEL_OFFSET17 13.46630116\r\n' +
'#define KERNEL_WEIGHT17 0.03218294\r\n' +
'#define KERNEL_OFFSET18 -11.47128164\r\n' +
'#define KERNEL_WEIGHT18 0.04129793\r\n' +
'#define KERNEL_OFFSET19 11.47128164\r\n' +
'#define KERNEL_WEIGHT19 0.04129793\r\n' +
'#define KERNEL_OFFSET20 -9.47626785\r\n' +
'#define KERNEL_WEIGHT20 0.05092164\r\n' +
'#define KERNEL_OFFSET21 9.47626785\r\n' +
'#define KERNEL_WEIGHT21 0.05092164\r\n' +
'#define KERNEL_OFFSET22 -7.48125878\r\n' +
'#define KERNEL_WEIGHT22 0.06033203\r\n' +
'#define KERNEL_OFFSET23 7.48125878\r\n' +
'#define KERNEL_WEIGHT23 0.06033203\r\n' +
'#define KERNEL_OFFSET24 -5.48625347\r\n' +
'#define KERNEL_WEIGHT24 0.06868551\r\n' +
'#define KERNEL_OFFSET25 5.48625347\r\n' +
'#define KERNEL_WEIGHT25 0.06868551\r\n' +
'#define KERNEL_OFFSET26 -3.49125089\r\n' +
'#define KERNEL_WEIGHT26 0.07513701\r\n' +
'#define KERNEL_OFFSET27 3.49125089\r\n' +
'#define KERNEL_WEIGHT27 0.07513701\r\n' +
'#define KERNEL_OFFSET28 -1.49625007\r\n' +
'#define KERNEL_WEIGHT28 0.0789795\r\n' +
'#define KERNEL_OFFSET29 1.49625007\r\n' +
'#define KERNEL_WEIGHT29 0.0789795\r\n' +
'#define KERNEL_OFFSET30 0.\r\n' +
'#define KERNEL_WEIGHT30 0.03998534\r\n' +
'\n' +
'#define SHADER_NAME fragment:kernelBlur\n' +
'precision highp float;\r\n' +
'uniform sampler2D textureSampler;\r\n' +
'uniform vec2 delta;\r\n' +
'in vec2 sampleCenter;\r\n' +
'in vec2 sampleCoord0;\r\n' +
'in vec2 sampleCoord1;\r\n' +
'in vec2 sampleCoord2;\r\n' +
'in vec2 sampleCoord3;\r\n' +
'in vec2 sampleCoord4;\r\n' +
'in vec2 sampleCoord5;\r\n' +
'in vec2 sampleCoord6;\r\n' +
'in vec2 sampleCoord7;\r\n' +
'in vec2 sampleCoord8;\r\n' +
'in vec2 sampleCoord9;\r\n' +
'in vec2 sampleCoord10;\r\n' +
'in vec2 sampleCoord11;\r\n' +
'in vec2 sampleCoord12;\r\n' +
'in vec2 sampleCoord13;\r\n' +
'in vec2 sampleCoord14;\r\n' +
'in vec2 sampleCoord15;\r\n' +
'in vec2 sampleCoord16;\r\n' +
'in vec2 sampleCoord17;\r\n' +
'in vec2 sampleCoord18;\r\n' +
'in vec2 sampleCoord19;\r\n' +
'in vec2 sampleCoord20;\r\n' +
'in vec2 sampleCoord21;\r\n' +
'in vec2 sampleCoord22;\r\n' +
'in vec2 sampleCoord23;\r\n' +
'in vec2 sampleCoord24;\r\n' +
'in vec2 sampleCoord25;\r\n' +
'in vec2 sampleCoord26;\r\n' +
'in vec2 sampleCoord27;\r\n' +
'in vec2 sampleCoord28;\r\n' +
'in vec2 sampleCoord29;\r\n' +
'in vec2 sampleCoord30;\r\n' +
'out vec4 glFragColor;\n' +
'void main(void)\r\n' +
'{\r\n' +
'float computedWeight=0.0;\r\n' +
'vec4 blend=vec4(0.);\r\n' +
'computedWeight=KERNEL_WEIGHT0;\r\n' +
'blend+=texture(textureSampler,sampleCoord0)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT1;\r\n' +
'blend+=texture(textureSampler,sampleCoord1)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT2;\r\n' +
'blend+=texture(textureSampler,sampleCoord2)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT3;\r\n' +
'blend+=texture(textureSampler,sampleCoord3)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT4;\r\n' +
'blend+=texture(textureSampler,sampleCoord4)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT5;\r\n' +
'blend+=texture(textureSampler,sampleCoord5)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT6;\r\n' +
'blend+=texture(textureSampler,sampleCoord6)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT7;\r\n' +
'blend+=texture(textureSampler,sampleCoord7)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT8;\r\n' +
'blend+=texture(textureSampler,sampleCoord8)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT9;\r\n' +
'blend+=texture(textureSampler,sampleCoord9)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT10;\r\n' +
'blend+=texture(textureSampler,sampleCoord10)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT11;\r\n' +
'blend+=texture(textureSampler,sampleCoord11)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT12;\r\n' +
'blend+=texture(textureSampler,sampleCoord12)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT13;\r\n' +
'blend+=texture(textureSampler,sampleCoord13)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT14;\r\n' +
'blend+=texture(textureSampler,sampleCoord14)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT15;\r\n' +
'blend+=texture(textureSampler,sampleCoord15)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT16;\r\n' +
'blend+=texture(textureSampler,sampleCoord16)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT17;\r\n' +
'blend+=texture(textureSampler,sampleCoord17)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT18;\r\n' +
'blend+=texture(textureSampler,sampleCoord18)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT19;\r\n' +
'blend+=texture(textureSampler,sampleCoord19)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT20;\r\n' +
'blend+=texture(textureSampler,sampleCoord20)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT21;\r\n' +
'blend+=texture(textureSampler,sampleCoord21)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT22;\r\n' +
'blend+=texture(textureSampler,sampleCoord22)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT23;\r\n' +
'blend+=texture(textureSampler,sampleCoord23)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT24;\r\n' +
'blend+=texture(textureSampler,sampleCoord24)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT25;\r\n' +
'blend+=texture(textureSampler,sampleCoord25)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT26;\r\n' +
'blend+=texture(textureSampler,sampleCoord26)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT27;\r\n' +
'blend+=texture(textureSampler,sampleCoord27)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT28;\r\n' +
'blend+=texture(textureSampler,sampleCoord28)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT29;\r\n' +
'blend+=texture(textureSampler,sampleCoord29)*computedWeight;\r\n' +
'computedWeight=KERNEL_WEIGHT30;\r\n' +
'blend+=texture(textureSampler,sampleCoord30)*computedWeight;\r\n' +
'glFragColor=blend;\r\n' +
'}\r\n',
'ERR BJS - [06:35:46]: Error: Too many varyings\n\u0000',
'WAR WebGL: INVALID_OPERATION: useProgram: program not valid'

Most probably a limitation of the underlying software, as Azure is not using a true GPU but an emulation layer.

The number of varyings one can used in a shader is limited, depending on the GPU. It seems the limit is 60 for the emulation layer of the Azure server.