The first time you open the engine, or a project, it will compile all shaders. If your project has many shaders, then this will take a while. This is why using “material instances” from a “master material” is so important! Don’t just create new “materials” willy nilly; instead, create one or a few “master materials,” and make all your configured materials be Material Instances.
When the engine compiles shaders, it forks as many compile workers as you have hardware threads. All of the threads should be available and working 100% for you – if that’s not happening, then something’s wrong, but it might be system-level rather than engine-level, because this generally works for most people.
Changing the priority of the compiler workers to something higher is not what you want – this will not make the work complete any faster, it will just make the rest of the computer a lot more laggy while it’s working. In fact, I frequently go into Process Monitor and lower priority of background crunching processes to “below normal” so that using the computer isn’t so terrible while the other things are going on.
In computer science terms: Thread priority affects latency not throughput. The thing you want to have the lowest latency should have the highest priority. As long as there are free CPU cycles, those will be used for whatever work needs to be done, so the shader compiler will still do its work, even if it’s at a lower priority. It just won’t lag your mouse, or the editor, as much.
If you find that the engine keeps re-compiling all shaders all the time, then there’s something else wrong. Your hard disk might be corrupted, your disk might be full, you may be accidentally changing all your base lighting/shading parameters all the time (e g, turn on/off ray tracing, switching between forward/deferred renderer, or somesuch,) or maybe you’re creating a lot of new Projects rather than just creating new Maps/Levels in an existing Project.
If you find that you need a lot of Projects, then you’ll want to point the shader/intermediate data cache for each of those projects all to the same directory, so they can re-use the compilation of shaders that are the same. I forget the exact details, but maybe this link can help: Reducing Shader Compile Time for Unreal Engine Landscape | by Arunoda Susiripala | GameDev4k | Medium
Once your project is big, you’ll also want to take a look at: Derived Data Cache | Unreal Engine Documentation