This shader blurs using a 3x3-pixel averaging filter (9 texscreens in a square pattern), like, it filters only in a radius of 1. If you want to blur a larger radius, you need a bigger filter (so a 5x5 filter for radius of 3, 7x7 filter for radius of 5 etc).
Problem is, you cannot just add zillions of texture fetches by making the filter bigger, because it will make your shader terribly expensive in a somewhat exponential way.
There is a nice property of such a filter system though: applying it multiple times will blur more, and adding more steps requires more GPU at a linear cost rather than "exponential" cost.
Unfortunately, I don't know how to apply the same screen shader multiple times, maybe using several BackBufferCopy
nodes?
You can also complement your shader by rendering the blurred thing to a downscaled texture, and render that texture with filter enabled, which will add a cheap linear smoothing on top of your blur. It won't be as accurate as a blur you would get in an image processing program, but it should look good enough for a game.
(Also note that Godot 3.0 uses similar techniques to render bloom and depth-of-field).
Another performance tip: usually you can blur by fetching only 4 pixels in a "+" pattern rather than all 9 pixels. It is a bit less accurate but the difference won't be much noticeable, and you'll double performance of your shader.