I still don't get why you don't precompile at first load. At this point you know the os, gpu, drivers,etc...
Honestly, while some devs point at true technical problems, other seem just outclassed. "If the solution is not in the engine I use (and know nothing about) in a one big "fix it" button, then it can't be fixed" attitude....
The issue doesn't seem to be about when to pre-compile... but rather the difficulty for developers themselves to collect all the pipeline state data so that they CAN properly pre-compile at any given point. They need to know which pipelines and shaders will be in use so they can pre-compile them. If they don't have the pipeline data, they can't pre-compile everything they need before time to avoid hitches.
To get this data they basically need to play the game as they develop it, which contributes to the collection of PSO data, and continually do it after any changes which might affect it. Not only that but they have to play through everything multiple times, and at different graphics settings levels, to generate a more complete PSO dataset. So it's not exactly easy to catch everything when you're in active development with things constantly changing.
Some devs seemingly create their own methods for somewhat automating it as much as possible, which may make it easier for them to do so, but obviously not every studio that uses UE will have the knowledge and ability to do so.
For the most part they should:
-Play the game as they develop it, continually going through all the levels collecting all the pipeline state after any changes, and do so multiple times to ensure best coverage
-Build mini levels (time-demo type run throughs) which contain the graphics and effects they have in their levels they can run to update the PSO collection
-Probably some code specific methods I'd know nothing about
-ect ect
So it seems to be an issue that some developers do a more thorough job at this currently than others. Some may think that everything is caught during normal development? I dunno.. UE4 documentation also apparently maybe wasn't perfectly clear on how to do this more efficiently either. This is one area they've already addressed for UE5, and as stated above, it seems that they're working on implementing some way of automatically gathering all that information when the assets are loaded. This will include data from particle systems like Cascade and Niagara, which I believe Alex said some developers had mention was difficult to do before. And if I'm understanding this right, the way it is currently is that they essentially have to build the project and play it to gather the data (it can only be gathered from cooked projects because that's the only way to generate the files which map the shaders to materials) but in the future there may be a way for them to gather this data without having to do so???
I dunno, wayyy over my head.. but anyway lets hope the folks at Epic can figure out a better way to make it as easy as possible for ALL developers to collect the data they need so they can properly pre-compile their shaders.