For some reason, when I turn on Clip Children (Clip + Draw) in Panel, both Panel and ColorRect with the shader become invisible. I found that they become invisible when using SCREEN_TEXTURE, or rather hint_screen_texture.
The clipping behavior of the panel is implemented as a shader of its own, and uses the back-buffer you need for your blur pass. See the Back-buffer Logic explanation for info.
There are some limited ways to run sequential back buffer operations (i.e. the BackBufferCopy node), but not (as far as I know) cascade them in the way you’d need for this use case.
You can probably achieve this by combining the blur effect and rounded corners into a single shader, but that’s obviously easier said than done and may still not fully solve the problem.
Having already decided to add rounded corners to my shader, I accidentally discovered that I could apply a shader not to TextureRect, but to an additional Panel and it worked! A fairly simple workaround.
Just create a second Panel and add a rounded corner style to it, and then apply a shader to it.
I’ve left them nested so far, but maybe I’ll make them siblings, I haven’t decided yet. You can turn on Clip Children at the blur panel and it will work, the main thing is that there are no nested blurs. I made a special node responsible for blurring and for the panel in my game.