More info on the loading issue.
I’ve tried a few things:
If I place the GPU particles on the title screen then the Godot splash progress bar fills up to 100% then hangs for several seconds before showing the title.
If I place the GPU particles on the title screen then start the game it still stutters a bit.
If I don’t preload the particles at all then it hangs before entering the room with the particles. If I abandon the quest and return to the title screen, then start a new run and go to that room again, it hangs again! I guess unloading the game/levels also unloads the compiled shader or something?
If there is music playing it continues to play but the UI is unresponsive.
If I load the scene with the particles there is no hang. It’s when I add child that the hang occurs.
There are still bits of stutter when I wander around the level, even if all the shaders and particles are already on the screen (in the Main class).
If I load the particles, add it to the scene tree in the Main class, then unload it, there’s no more lag (after the initial add to the scene tree).