I actually did not use any shaders, I used mostly animations and particles. I actually can't write in that shader language lol so I found other ways to do things like when the enemies are hit I changed the modulate of the enemies to a slightly different shade of the original colour and then I reset it back to the original colour of the enemy, so it creates this flashing effect. One way I managed to decrease lag was that I added a visibility notifier node to the bullets. With this node, I can say that every time a bullet goes offscreen then get_tree.queue_free() to delete it. This way, the game won't lag as much. I made this game in Godot btw.