Tell me about it. Physics and collisions nearly made me quit gamedev on my first ever game :D
I was making a tetris clone and couldn't for the life of me make the damn blocks update their physics processes when they should. I ended up using an unhealthy amount of raycasts with raycast physics update calls just to get things kinda working. So yeah, I feel your pain :D
I should try to make such shaders. When making my game I was constantly afraid that some kind of anti-aliasing or other godot rendering function would ruin my carefully png-indexed pallette :D