Microsoft's fix for shader compilation wait is coming to Nvidia, Intel, and Qualcomm GPUs

Skye Jacobs

Posts: 2,249   +63
Staff
Something to look forward to: Microsoft is preparing to expand its Advanced Shader Delivery service to PCs with Intel, Nvidia and Qualcomm graphics hardware, a move aimed at cutting down the lengthy shader-compilation process that can hold up a game's first launch. The service has already appeared in the PC version of Gears of War: E-Day, but it currently works only with AMD Radeon GPUs. Microsoft says support for more Windows devices is coming later in October.

Advanced Shader Delivery, or ASD, distributes compiled shaders from the cloud instead of having each player's PC compile them locally before play. Microsoft says that can reduce the process from "several minutes" to "just a few seconds," with a 95% reduction in burn time overall.

Shader compilation is now a familiar issue for PC players, especially in large games with demanding graphics systems. Shaders are small programs used by the GPU to render lighting, surfaces, effects and other visual elements. A game may need to compile them for a particular PC setup before it can run smoothly.

This process often happens when you launch a game for the first time. In some cases, it also takes place during gameplay as new areas, effects or assets load. When that happens, you can notice stuttering, even on high-end hardware.

Microsoft's approach is meant to move more of that work away from the player's machine. Instead of requiring the PC to prepare all of the shader data locally, ASD delivers precompiled shaders through the cloud. The goal is to reduce both the initial wait and the risk of shader-related hitches once a game is running.

Wendy Ho, a DirectX program manager at Microsoft, said in a company blog post that the service will soon support "additional Windows devices powered by Intel, Nvidia and Qualcomm."

Broader GPU coverage gives ASD a better chance of becoming a practical option for major PC releases rather than a feature tied to a narrower group of systems. Nvidia remains a major presence in PC graphics, while Intel has expanded its Arc GPU lineup and Qualcomm is pushing further into Windows devices.

The first implementation also highlights the scale of the problem Microsoft is trying to address. Gears of War: E-Day has had a substantial shader-compilation step at startup. Microsoft reports Call of Duty: Modern Warfare 4 is the next game scheduled to support the technology.

The service will not automatically improve every PC game. Developers must build ASD support into their titles, and there is no indication that it will become standard across the industry in the near term. Some games will continue to compile shaders locally, while others may use different caching or precompilation methods.

Still, shader compilation has become one of the clearest weak points in the PC gaming experience. Players can spend heavily on fast processors, modern graphics cards and solid-state storage, then face several minutes of waiting before a new game reaches its menu. If ASD works as Microsoft describes, it could speed up first launches and reduce one of the most common sources of PC game stutter.

Permalink to story:

 
Honestly don't mind waiting a few minutes the 1st time the games launches.

This unique to Unreal Engine 5 games or a problem in general?

Maybe Unreal Engine 6 can fix the problem.
 
You know, growing up through multiple console gens, my PC games never need to compile. Even in the 360 era this wasn't a problem.

So what happened? Why is this such a major issue?
 
So what happened? Why is this such a major issue?
It's because of how modern Vulkan and DirectX12 are designed.

Before that, a game would need to made many calls to the gpu to set it up for the work ahead. With the new API came Pipeline State Objects (or PSO) where those are pre-compiled, making them much faster at render but needing to do a pre-compile beforehand.

Basically games are front-loading some work, to make it faster to run at render times. On paper it's a good, a very good option, games are starved of any resources for real time rendering.

The issue is that many devs don't have the skills, knowledge, or the budget to work those properly. And that includes major engines like Unreal (but also almost all other engines). On top of that, artists are not trained in those consideration much, and with better and easier engines that can do a lot of things without writing lines of codes (like Unreal blueprint node system) a game can easily achieve tens and tens of thousands of shaders permutation, meaning mountains and mountains of different PSO.

Consoles have a single hardware and software (to simplify), so those PSO are pre-compiled and shipped with the game. But PC have many different gpu and drivers version, so compile has to be done for each individual config.

It's not that hard to deal with. One need to do several things:

- Have a good technical artist dev or team, that can oversee and trained the art team to keep things in budgets. It's not just texture size and number of polygons anymore, there are many consideration. That's one thing id Software did for example, hence why they had much much less issues with this.
- Have a proper list of the minimum PSO needed to run the beginning of the game, and pre-compiled those using the full threaded cpu at launch. Hopefully do it well, while running introductory cutscene, or in main menu while the player is setting things up and getting oriented. At worst if devs didn't planned for this during prod, they can have bots or QA teams run the game while logging all PSO needed (quite a few did that, and Unreal added tools to help with that, but it's not perfect at all).
- Then background compile future PSO while the game is running, looking ahead to what will be needed in a few seconds/minutes and pre-compile those without slowing the main game. Very similar to I/O work (so-called "streaming" data during gameplay).
- If all else fails, have proxy or just don't use the perfect shaders/PSO for a couple of frames, then blend in the right one once it has been compiled. Minor visual issues are better than stutter; a few studios do that I believe some Ubisoft ones, maybe id too.

The engine makers also need to do some work, with better defaults settings, better tools, better documentation, and better warning about exploding the PSO budget. Unreal acknowledged that for example (while placing most of the hitching blame on game devs, which was fun and is fair, but they are not fully clean in this).

edit: you can read Unreal documentation on the subject fort example, https://dev.epicgames.com/documenta...g-with-pso-caches-in-unreal-engine?lang=en-US
You can also view the "Stop the hitch" Unreal video, which cover most sources of hitches and stutters (PSO are just one part of them), isn't too technical, and quite fun to watch:
 
Last edited:
If OS always requires new data to function well, then the OS creator might get
tempted to sell it as a subscription. Want to play your games comfortably?
Pay monthly.
 
Back