Shader Compilation on PC: About to become a bigger bottleneck?

I just hope the developers of The Callisto Protocol look at DF's video about Sackboy... and maybe think... ok let's fix this issue before launch so we don't get a video like that made about our game.

*sigh*
 
I legit saw some in AMDs Preview footage which was om Screen for about 30 Seconds :(
Yep, me too.. I saw that.

I'm sad because I'm HEAVILY excited for that game as a huge Dead Space fan. And yet, I can already tell it's going to be full of these issues... and sadly that goes for the Dead Space Remake as well. We've already seen the PC gameplay demos of that game and it's shader compilation stutter city.

I'm honestly left hoping, that through your coverage of those games (assuming you do) that they'll be fixed as well. And it's pretty damn sad that's what I have to resort to at this point. There's still time for them to fix these issues and polish them up before launch... but I doubt it happens. Only after they're made to look incompetent do they seem to give a damn.
 
So regarding @Dictator 's video on A Plague Tale Requiem - the game certainly does have a lot of stutters here on a VRR TV running at about 80 fps on my 3080 (I've settled on 4K/DLSS-P/Ultra after couple of hours of testing various options).

These don't seem to be shader compilation related though and look more like resource management issues - for example the game stutter at each checkpoint, when going in and out of cutscenes or just rotating the camera in some scenes - possibly due to fairly agressive texture caching as the game rarely consume more than 6GBs of VRAM even when running in 4K? I wonder if DirectStorage would help in this case.

Game's also seem to still load about 4 CPU threads a lot heavier than the rest of them (this depends on a scene though) so CPU limitations may also play their part.
 
Last edited:
So regarding @Dictator 's video on A Plague Tale Requiem - the game certainly does have a lot of stutters here on a VRR TV running at about 80 fps on my 3080 (I've settled on 4K/DLSS-P/Ultra after couple of hours of testing various options).

Yeah it had massive stutters on my 3060 that weren't tied to GPU usage as well, albeit I haven't tried the latest patch. I don't think this is exclusively an Ada series issue.
 
Some improvements on the way (at least for Vulkan/Linux)

These guys are literally doing gods work. Why does it seem like the Valve/RADV people are the only ones tackling this issue head on and doing everything they can to mitigate the issue.

This is all well and good for Vulkan... but what about DirectX?? You know we all pile on the developers about the shader compilation stuttering issue, but Microsoft somehow gets left out of the conversation most of the time. What's going on with DirectX? While Vulkan developers seem to me making a lot of improvements... when is MS going to start making some changes to DX to help improve the situation there?

I get the feeling MS, Nvidia, Intel and AMD could all be doing more than they are. Time to start brining the heat to them as well, IMO.
 
Why is it that when using the games built in vsync or the driver level vsync option the games stutter like a bitch but when using Rivatuner statistics server to set an FPS cap it removes 95% of all stutter is gone?

Stray, Days Gone, Kena and many many UE powered games all benefit from it.

Even games that don't use UE see high improvements in frame times and consistency.

Here's Chernobylite using UE4, check out the difference between the games built in vsync and using Rivatuner.
 

Attachments

  • Built in vsync.jpg
    Built in vsync.jpg
    1.4 MB · Views: 14
  • Rivatuner.jpg
    Rivatuner.jpg
    1.5 MB · Views: 14
Why is it that when using the games built in vsync or the driver level vsync option the games stutter like a bitch but when using Rivatuner statistics server to set an FPS cap it removes 95% of all stutter is gone?

...it doesn't? I mean it can help at times sure as most games built-in caps are shit, but it can also report false positives - there are limitations with using tools like this to measure frametime consistency vs an external tool like DF uses. I've seen a perfectly flat RT graph and obvious stutters in games.

Rivatuner does absolutely nothing for shader compile stuttering. It is not possible for a framerate cap to have any effect on rendering pauses that can be 200+ ms.
 
I've seen a perfectly flat RT graph and obvious stutters in games.

I'm pretty sure if there is an actual frame time stutter, RT picks it up. But there are other factors which can affect the fluidity of movement that aren't related to frame time. E.g. camera stutter, animation stutter etc...

In my experience when you get a completely flat frame time graph in RT then you get a completely smooth frame rate. But that doesn't always mean a smooth feeling game.
 
...it doesn't? I mean it can help at times sure as most games built-in caps are shit, but it can also report false positives - there are limitations with using tools like this to measure frametime consistency vs an external tool like DF uses. I've seen a perfectly flat RT graph and obvious stutters in games.

Rivatuner does absolutely nothing for shader compile stuttering. It is not possible for a framerate cap to have any effect on rendering pauses that can be 200+ ms.

I'm not stupid, I'm more than capable of telling and feeling if a game is stuttering.

And with RT set with a 60fps the game is perfectly smooth aside from a hitch once in a blue moon.
 
And with RT set with a 60fps the game is perfectly smooth aside from a hitch once in a blue moon.

Perhaps this is true for Chernobylite, but it certainly isn't true for the majority of UE4 games that have reported shader stutter. Do you seriously think Alex of DF for example, hasn't tried to cap the frame rate when encountering shader stuttering in UE4 titles? If it's removing "95% of stutter" in one game, then it has a poor frame cap - but it certainly isn't a solution for all, or the majority of them that have the problem which this thread has catalogued.

While UE4 games have compilation issues more than most other engines, it's not universal - Days Gone is one such game that has never really had a problem with shader compilation to begin with (you can see your CPU peg when you load up a save after a new driver install as it's compiling them in the background), and even I've said before that Stray's shader stuttering was relatively minimal too - regardless RT caps will not prevent those times when it appears, it's just less than the more egregious examples with or without a fr cap.

Setting a framecap with RT did absolutely nothing for games that had stuttering before they introduced proper compilation steps, such as Sackboy, Callisto Protocol, High on Life - and does nothing for compilation stutters for games that have still not included one, like Ghostrunner. Like I said, the very length of them preclude a frame rate cap from doing anything, they're far in excess of 16ms (assuming you're even satisfied with 60fps to begin with). There are also stutters with asset loading/traversal that a frame cap will do nothing for - Dead Space remake is a recent example.

If you want to argue PC games in general have relatively poor attention paid to frametime consistency (hello Death Stranding) that often require external utilities to give solid frame pacing regardless of shader compilation problems, then yes I would agree, as someone who games on fixed refresh rate displays I know this far too well - my Rivatuner profiles list is about 40+ games now. But that's a discussion for a different thread, as RT or any frame cap does virtually nothing for the problem of synchronous shader compilation stutter. We're not having developers and tech reviewers talk about this problem for years and the considerable engineering efforts being devoted to solve it based purely on their own personal perception of frametime consistency, there's an ample amount of hard data here.
 
Perhaps this is true for Chernobylite, but it certainly isn't true for the majority of UE4 games that have reported shader stutter. Do you seriously think Alex of DF for example, hasn't tried to cap the frame rate when encountering shader stuttering in UE4 titles? If it's removing "95% of stutter" in one game, then it has a poor frame cap - but it certainly isn't a solution for all, or the majority of them that have the problem which this thread has catalogued.

While UE4 games have compilation issues more than most other engines, it's not universal - Days Gone is one such game that has never really had a problem with shader compilation to begin with (you can see your CPU peg when you load up a save after a new driver install as it's compiling them in the background), and even I've said before that Stray's shader stuttering was relatively minimal too - regardless RT caps will not prevent those times when it appears, it's just less than the more egregious examples with or without a fr cap.

Setting a framecap with RT did absolutely nothing for games that had stuttering before they introduced proper compilation steps, such as Sackboy, Callisto Protocol, High on Life - and does nothing for compilation stutters for games that have still not included one, like Ghostrunner. Like I said, the very length of them preclude a frame rate cap from doing anything, they're far in excess of 16ms (assuming you're even satisfied with 60fps to begin with). There are also stutters with asset loading/traversal that a frame cap will do nothing for - Dead Space remake is a recent example.

If you want to argue PC games in general have relatively poor attention paid to frametime consistency (hello Death Stranding) that often require external utilities to give solid frame pacing regardless of shader compilation problems, then yes I would agree, as someone who games on fixed refresh rate displays I know this far too well - my Rivatuner profiles list is about 40+ games now. But that's a discussion for a different thread, as RT or any frame cap does virtually nothing for the problem of synchronous shader compilation stutter. We're not having developers and tech reviewers talk about this problem for years and the considerable engineering efforts being devoted to solve it based purely on their own personal perception of frametime consistency, there's an ample amount of hard data here.

Yeah a frame cap certainly won't get rid of large stutters/hitches. I took @davis.anthony post to be more talking about how RT can provide perfectly consistent frame times (except for serious stutters) vs the inconsistency of most in game limiters.
 
PC Gamer: Hi-Fi Rush is proof that Unreal Engine games can be gloriously stutter-free

Just further reiterates that UE4's PSO caching system just can't be relied upon to capture all the relevant shaders, so even if it is used, you'll likely still get stuttering. Hence the manual loading of those assets as part of the compilation process is required as well.

PC Gamer said:
Why is Unreal Engine 4 so notorious, then? The engine has a feature in place to cache shaders and prevent those stutter-causing in-the-moment shader calls, but it doesn't cover everything.

"Hi-Fi Rush uses Unreal Engine 4’s PSO Caching functionality to avoid large hitches," Tanaka wrote. "UE4 misses some cases such as certain lighting shader combinations, computer shaders, Niagara VFX, and these may still cause hitches. In Hi-Fi Rush, some hitches remain, but they are mostly during certain cutscene transitions that don’t affect gameplay. In another one of our UE4 titles, Ghostwire: Tokyo, we currently preload problematic assets in the title screen background to minimize hitching and try to provide a better gamer experience."

In his comments linked further down in the piece from a team artist, was surprised to learn The Ascent apparently did have PSO gathering implemented early on - the problem was that it just can't capture some critical ones, including raytracing shaders (!).

 
So what is it about RT shaders specifically where they can't pre-compile them? I believe that was an UE4 issue which has been resolved now in UE5.1 right?

I could have sworn Epic said that Niagra particle shaders and other shaders missed before could now be captured with UE5.1. I might be wrong though.. but I definitely have noticed that RT in games still has some shader compilation stuttering in UE.. Sackboy, Callisto both do with RT enabled.. for example.
 
Surely they could precompile for each GPU and then a user downloads them?

I'm sure Nvidia/AMD/Intel would happily compile it for them or send them a GPU to compile with if it meant their GPU's run super smooth vs the competition.
 
Surely they could precompile for each GPU and then a user downloads them?

I'm sure Nvidia/AMD/Intel would happily compile it for them or send them a GPU to compile with if it meant their GPU's run super smooth vs the competition.
The amount of permutations there is staggering (GPU x OS x driver x game version) and an error in providing a proper shader for a proper system may prevent the game from even launching.
It's this remedy which may end up being worse than the disease.
 
I'm actually wondering what the reaction and optics would be if precompiled shaders were supplied but only for certain permutations and possibly game settings. My guess is the possible negative feedback may not make this a viable option even if it is actually pragmatic to some extent.
 
Back
Top