{ "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 } }