I’m trying to match the behavior of Apple’s private variableBlur CAFilter using Inferno’s variable blur effect, and I’m seeing two differences when comparing them side-by-side (left: Variablur in Inferno, right: private variableBlur CAFilter).

Differences observed
1. Blur radius mismatch (minor)
For the same blur radius value, the amount of blur does not visually match between Variablur and the private variableBlur filter.
- This is not a blocker, since we can compensate by adjusting the radius depending on which implementation we use.
- Still, it would be nice to understand if there’s a systematic offset or scaling factor we can rely on.
2. Unwanted “vignette” effect (major)
The more problematic difference is an unwanted vignetting / darkening at the edges when using Inferno’s Variablur.
- With the private variableBlur CAFilter, this is avoided by setting inputNormalizeEdges = true on the filter.
- I haven’t found an equivalent way to normalize edges with Inferno’s implementation.
I am not sure the intention was ever to replicate perfectly the variable blur, but it would be great.
I’m trying to match the behavior of Apple’s private variableBlur CAFilter using Inferno’s variable blur effect, and I’m seeing two differences when comparing them side-by-side (left: Variablur in Inferno, right: private variableBlur CAFilter).
Differences observed
1. Blur radius mismatch (minor)
For the same blur radius value, the amount of blur does not visually match between Variablur and the private variableBlur filter.
2. Unwanted “vignette” effect (major)
The more problematic difference is an unwanted vignetting / darkening at the edges when using Inferno’s Variablur.
I am not sure the intention was ever to replicate perfectly the variable blur, but it would be great.