{ "QEN": { "description": "The FastBlur effect softens the source content by blurring it with algorithm which uses the source content downscaling and bilinear filtering.", "fragmentCode": [ "@requires BlurHelper", "@main", "{", " vec4 blurredColor = texture(iSource, texCoord) * blurWeight1[0];", " blurredColor += texture(iSourceBlur1, texCoord) * blurWeight1[1];", "#if (BLUR_HELPER_MAX_LEVEL > 2)", " blurredColor += texture(iSourceBlur2, texCoord) * blurWeight1[2];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 8)", " blurredColor += texture(iSourceBlur3, texCoord) * blurWeight1[3];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 16)", " blurredColor += texture(iSourceBlur4, texCoord) * blurWeight2[0];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 32)", " blurredColor += texture(iSourceBlur5, texCoord) * blurWeight2[1];", "#endif", "", " fragColor = blurredColor;", "}" ], "name": "FastBlur", "properties": [ { "defaultValue": "0", "description": "This value defines the softness of the shadow. A larger value causes the edges of the shadow to appear more blurry.", "maxValue": "1", "minValue": "0", "name": "fastBlurAmount", "type": "float" } ], "version": 1, "vertexCode": [ "out vec4 blurWeight1;", "out vec2 blurWeight2;", "", "float blurWeight(float v) {", " return max(0.0, min(1.0, 1.0 - v * 2.0));", "}", "", "@main", "{", " float blurLod = sqrt(fastBlurAmount * (BLUR_HELPER_MAX_LEVEL / 64.0)) * 1.2 - 0.2;", " float bw1 = blurWeight(abs(blurLod - 0.1));", " float bw2 = blurWeight(abs(blurLod - 0.3));", " float bw3 = blurWeight(abs(blurLod - 0.5));", " float bw4 = blurWeight(abs(blurLod - 0.7));", " float bw5 = blurWeight(abs(blurLod - 0.9));", " float bw6 = blurWeight(abs(blurLod - 1.1));", "", " float bsum = bw1 + bw2 + bw3 + bw4 + bw5 + bw6;", " blurWeight1 = vec4(bw1 / bsum, bw2 / bsum, bw3 / bsum, bw4 / bsum);", " blurWeight2 = vec2(bw5 / bsum, bw6 / bsum);", "}" ] } }