Revision control
++ {
++ "QEN": {
++ "description": "This node creates a medium quality but fast blur of the source item. Suitable when speed is more important than output quality. It uses mipmap levels and does not require BlurHelper node.",
++ "fragmentCode": [
++ "@requires NoiseHelper",
++ "@main",
++ "{",
++ " const float lod = sqrt(mipmapBlurAmount);",
++ " const vec3 r = mipmapBlurScatterAmount * lod * (hash23(fragCoord) - vec3(0.5));",
++ " const vec2 cCoord = texCoord + vec2(r.xy * 0.01);",
++ " const float m = (1.0 + r.z);",
++ "#if (MIPMAP_BLUR_QUALITY_LOW == 1)",
++ " vec4 blurredTex = textureLod(iSource, cCoord + m * 0.01, lod);",
++ "#else",
++ " // Take textures from suitable mipmap level, with offsets",
++ " const float o = m * mipmapBlurAmount / iResolution.x * 0.5;",
++ " vec2 lo1 = cCoord + vec2(o, o);",
++ " vec2 lo2 = cCoord + vec2(o, -o);",
++ " vec2 lo3 = cCoord + vec2(-o, o);",
++ " vec2 lo4 = cCoord + vec2(-o, -o);",
++ "",
++ " vec4 t = textureLod(iSource, texCoord, lod);",
++ " vec4 t1 = textureLod(iSource, lo1, lod);",
++ " vec4 t2 = textureLod(iSource, lo2, lod);",
++ " vec4 t3 = textureLod(iSource, lo3, lod);",
++ " vec4 t4 = textureLod(iSource, lo4, lod);",
++ " vec4 blurredTex = (0.28 * t + 0.18 * t1 + 0.18 * t2 + 0.18 * t3 + 0.18 * t4);",
++ "#endif",
++ " fragColor = blurredTex;",
++ "}"
++ ],
++ "name": "MipmapBlur",
++ "properties": [
++ {
++ "defaultValue": "0",
++ "description": "This value defines the amount (radius) of the blur.",
++ "maxValue": "30",
++ "minValue": "0",
++ "name": "mipmapBlurAmount",
++ "type": "float"
++ },
++ {
++ "defaultValue": "0",
++ "description": "This value defines the amount of scatter (randomness) in the blur. This creates frosty looking blur.",
++ "maxValue": "1",
++ "minValue": "0",
++ "name": "mipmapBlurScatterAmount",
++ "type": "float"
++ },
++ {
++ "defaultValue": "0",
++ "description": "When this is set to 1, only a single texture lookup is used for the blur. With this blur is very fast but also quite low quality.",
++ "name": "MIPMAP_BLUR_QUALITY_LOW",
++ "type": "define"
++ }
++ ],
++ "version": 1
++ }
++ }