{ "QEN": { "description": "The Glow effect adds soft glowing effect for the source content.", "fragmentCode": [ "@requires BlurHelper", "@main", "{", " vec4 glow = texture(iSource, texCoord) * blurWeight1[0];", " glow += texture(iSourceBlur1, texCoord) * blurWeight1[1];", "#if (BLUR_HELPER_MAX_LEVEL > 2)", " glow += texture(iSourceBlur2, texCoord) * blurWeight1[2];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 8)", " glow += texture(iSourceBlur3, texCoord) * blurWeight1[3];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 16)", " glow += texture(iSourceBlur4, texCoord) * blurWeight2[0];", "#endif", "#if (BLUR_HELPER_MAX_LEVEL > 32)", " glow += texture(iSourceBlur5, texCoord) * blurWeight2[1];", "#endif", "", " glow = min(glow * glowBloom, vec4(glowMaxBrightness));", " glow = mix(glow, glow.a * glowColor, glowColor.a);", " ", " // Blend in the Glow", " if (glowBlendMode == 0) {", " // Additive", " fragColor += glow;", " } else if (glowBlendMode == 1) {", " // Screen", " fragColor = clamp(fragColor, vec4(0.0), vec4(1.0));", " fragColor = max((fragColor + glow) - (fragColor * glow), vec4(0.0));", " } else if (glowBlendMode == 2) {", " // Replace", " fragColor = glow;", " } else {", " // Outer", " fragColor = mix(glow, fragColor, fragColor.a);", " }", "}" ], "name": "Glow", "properties": [ { "defaultValue": "1", "description": "Blending mode for the glow effect. 0 = Additive, 1 = Screen, 2 = Replace, 3 = Outer.", "maxValue": "3", "minValue": "0", "name": "glowBlendMode", "type": "int" }, { "defaultValue": "1", "description": "This value defines the softness of the glow. Values are between 0..1.", "maxValue": "1", "minValue": "0", "name": "glowBlurAmount", "type": "float" }, { "defaultValue": "1", "description": "This value defines the bloom strength of the glow. Suitable values are between 0..2.", "maxValue": "2", "minValue": "0", "name": "glowBloom", "type": "float" }, { "defaultValue": "1", "description": "Sets the maximum brightness of the glow.", "maxValue": "1", "minValue": "0", "name": "glowMaxBrightness", "type": "float" }, { "defaultValue": "1, 1, 1, 0.5", "description": "Color of the glow. Alpha chanel defines how much color is applied vs. using the colors of the source item. The default value is white with 0.5 alpha.", "name": "glowColor", "type": "color" } ], "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(glowBlurAmount * (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);", "}" ] } }