Unreal Engine 5, [UE5 Developer Availability 2022-04-05]

I'm just ignorant on the matter: why they build shaders and then cache them at runtime in consoles? Knowing the target specs can't they just bake them in?
 
This is a UE5 game. Not worthy of a thread perhaps but it is striking to look at.


Looks incredible but looks like it could benefit from higher resolution. Aliasing seemed quite apparent on the car edges at times which took away from the otherwise amazingly realistic presentation. I wonder what they were showing it on.
 
I'm just ignorant on the matter: why they build shaders and then cache them at runtime in consoles? Knowing the target specs can't they just bake them in?
On consoles that IS what they do. They precompile the shaders and ship that code in the game package. On PC they don't have that luxury unfortunately.

Which is basically why I said that we really should have the option to do this ourselves. Obviously it's more complex than what I'm making it out to be, but as games move towards no loading screens, and rendering things just in time before they are needed.. it really starts to become a glaring issue.

I basically just want developers to give the PC a fighting chance when it comes to this stuff. I mean, they precompile shaders for consoles for a reason. Reduces/removes stuttering, better performance, quicker loading... it's essentially a step in optimizing the software specifically to the hardware. I look at having the option to pre-compile our shaders, as an optimization process that we can do to improve the experience in every way. Some games are literally unplayable at first until you run around and generate a shader cache. If this massive hitching and stuttering happened on the console versions of their games, they'd get panned really hard. On PC, a lot of people assume these issues are something wrong with their setup, or a bad driver... and they make excuses. "Oh, well it had stutters but it went away after a while so I guess it's fixed"... No.. there's nothing wrong with your machine... no that "fix" you posted isn't doing anything... it's all placebo in your head.. and if it's smooth now, it's because the shaders are cached.

Developers know this all of course. They know what they need to do.. but for them it's a balancing act. Many possibly don't do it because a lot of gamers turn into babies when there's an extra "step" that they have to wait on.. or they leave a negative review because they were stuck on a screen for 4min while their CPU usage was 100%... Devs are worried that this "step" is unacceptable for many gamers.

But the reality is that developers are going to have to address this. Devs should be doing all they can to ensure the first experience is exactly like the rest.. and having hitches which impact the game, is simply not acceptable to me anymore. I expect to be able to do new actions, new effects, load into levels, without hitches. Those aren't part of the game design. They don't happen on consoles, and they shouldn't happen on my $2500 PC. I demand better. Devs need to do what they have to do to fix this issue... I suggest giving the option to players to generate a shader cache before initial play. That way, you can satisfy both sides. The people who don't want to wait.. can simply load in and deal with the game stalling while it caches shaders... and I can wait..pre-generate my shaders and have a nice first experience.

I should note that I'm not saying every single stutter on PC is due to shader compilation. I know it's not. However, IMO it's very easy to differentiate shader compilation stutter from other types of stutters. Most of the hitching is undoubtedly due to shader compilation.. and we need to get developers on board to know that it's OK for them to include this extra "step" to be able to deliver the first experience PC gamers deserve.

(sorry for going on and on about this.. I know it's not the thread for it)
 
On consoles that IS what they do. They precompile the shaders and ship that code in the game package. On PC they don't have that luxury unfortunately.

Which is basically why I said that we really should have the option to do this ourselves. Obviously it's more complex than what I'm making it out to be, but as games move towards no loading screens, and rendering things just in time before they are needed.. it really starts to become a glaring issue.

I basically just want developers to give the PC a fighting chance when it comes to this stuff. I mean, they precompile shaders for consoles for a reason. Reduces/removes stuttering, better performance, quicker loading... it's essentially a step in optimizing the software specifically to the hardware. I look at having the option to pre-compile our shaders, as an optimization process that we can do to improve the experience in every way. Some games are literally unplayable at first until you run around and generate a shader cache. If this massive hitching and stuttering happened on the console versions of their games, they'd get panned really hard. On PC, a lot of people assume these issues are something wrong with their setup, or a bad driver... and they make excuses. "Oh, well it had stutters but it went away after a while so I guess it's fixed"... No.. there's nothing wrong with your machine... no that "fix" you posted isn't doing anything... it's all placebo in your head.. and if it's smooth now, it's because the shaders are cached.

Developers know this all of course. They know what they need to do.. but for them it's a balancing act. Many possibly don't do it because a lot of gamers turn into babies when there's an extra "step" that they have to wait on.. or they leave a negative review because they were stuck on a screen for 4min while their CPU usage was 100%... Devs are worried that this "step" is unacceptable for many gamers.

But the reality is that developers are going to have to address this. Devs should be doing all they can to ensure the first experience is exactly like the rest.. and having hitches which impact the game, is simply not acceptable to me anymore. I expect to be able to do new actions, new effects, load into levels, without hitches. Those aren't part of the game design. They don't happen on consoles, and they shouldn't happen on my $2500 PC. I demand better. Devs need to do what they have to do to fix this issue... I suggest giving the option to players to generate a shader cache before initial play. That way, you can satisfy both sides. The people who don't want to wait.. can simply load in and deal with the game stalling while it caches shaders... and I can wait..pre-generate my shaders and have a nice first experience.

I should note that I'm not saying every single stutter on PC is due to shader compilation. I know it's not. However, IMO it's very easy to differentiate shader compilation stutter from other types of stutters. Most of the hitching is undoubtedly due to shader compilation.. and we need to get developers on board to know that it's OK for them to include this extra "step" to be able to deliver the first experience PC gamers deserve.

(sorry for going on and on about this.. I know it's not the thread for it)

I think it should be part of the install process. If you've just waited an hour to download and install the game (on a fast connection!) then what's another 10-15 mins to compile the shaders before the game starts. You're already in a waiting experience (that console gamers go through too) so simply extend it a bit. I'd prefer this more than the first time I run the game as at that point you are already geared up to get in and play, so having to wait another 15 mins, even just as a one off can leave quite a negative impression.
 
I think it should be part of the install process. If you've just waited an hour to download and install the game (on a fast connection!) then what's another 10-15 mins to compile the shaders before the game starts. You're already in a waiting experience (that console gamers go through too) so simply extend it a bit. I'd prefer this more than the first time I run the game as at that point you are already geared up to get in and play, so having to wait another 15 mins, even just as a one off can leave quite a negative impression.
Absolutely agreed 100%. I've brought up that point before about us waiting to download and install games... so what's another 10-15 min? Make it a part of the games install that it has to run and "install" the shaders.

And not only that... but it scales with cores too so they can throw the entire CPU at the process... and you'd notice as time goes on and hardware gets more powerful... these shader install times would get faster and faster.
 
I think it should be part of the install process. If you've just waited an hour to download and install the game (on a fast connection!) then what's another 10-15 mins to compile the shaders before the game starts. You're already in a waiting experience (that console gamers go through too) so simply extend it a bit. I'd prefer this more than the first time I run the game as at that point you are already geared up to get in and play, so having to wait another 15 mins, even just as a one off can leave quite a negative impression.

I bet if you did it cleverly you could download the shaders first and run a compile of them while you download the rest, except that downloading is often a background process, so that might be the only problem why you can’t do it there perhaps, always, if it takes too many resources. But certainly it could be part of the installation process.
 
Is there separate steps of Download and Install for Steam game or Epic Games or PC GP Games? If so, I haven't noticed the "install" portion at all.
 
Developers know this all of course. They know what they need to do.. but for them it's a balancing act. Many possibly don't do it because a lot of gamers turn into babies when there's an extra "step" that they have to wait on.. or they leave a negative review because they were stuck on a screen for 4min while their CPU usage was 100%... Devs are worried that this "step" is unacceptable for many gamers.
I agree with the sentiment of your posts, and a lot of people really want a better solution. I do think it's worth acknowledging that on PC the problem is an order of magnitude more complex and even the tools in place (endless layers of caching through the whole driver stack, vulkan/DX12 having some limited PSO caching, prepopulating driver shader caches in updates before big games hit, etc) are not entirely sufficient. It's not just "there's a tool to fix this but it's too complex to use", it's that there's a bunch of stuff you can do to try and mitigate the effects but nothing is guaranteed since there are at least 3 different moving pieces of software on the end users machines that the game does not control that affect the outcome.

At least for Unreal when you cook for PC you are doing the front-end compiles (FXC/DXC/etc) of the shaders. Most of the hitches after that point are driver compiles. Pre-running through some scripted sequences in the background to warm driver shader caches certainly helps, but even then it is not a guarantee since many PC drivers do various forms of PGO and background compilation of their own. DX12 attempted to eliminate some of this, but it crept back in over the following years after release as the economic incentives for IHVs to win benchmarks ultimately trump everything.

Anyways I think most graphics devs would agree with the frustration and it's part of the reason why many prefer consoles where the game is in much more control of the end user experience. Certainly I'm not saying more couldn't be done on PC, but it's not like the area has received no attention... as you imagine making the first Fortnite experience smooth for folks across a wide variety of machines is very important. But it's important to acknowledge that it is both intrinsically more complex on PC, and worse a dance between at least 3 different companies.

Honestly overall I think step 1 is just to cut down on the total number of shaders in Unreal games, but it's hard to put the permutation and shader editor genies back in the box to some extent.
 
Last edited:
Developers know this all of course. They know what they need to do.. but for them it's a balancing act. Many possibly don't do it because a lot of gamers turn into babies when there's an extra "step" that they have to wait on.. or they leave a negative review because they were stuck on a screen for 4min while their CPU usage was 100%... Devs are worried that this "step" is unacceptable for many gamers.
I think a potential reason for the objection to that method engaging automatically though is that this has to be done for every driver update. If this was a case of once during an install/new OS, it would be nothing - as others have suggested you must make it part of the install process. It's that every driver update, no matter how inconsequential, requires a shader recompile - I wonder if that can be mitigated somehow in a new driver model, dunno? Whenever you complain about issues with a game the first response is invariably "Well did you install the game ready driver?" - they're just released too often for you continually skip over new releases to avoid shader recompiles.

That aside, yes - I pretty much share your frustration with stuttering and was just surprised to see this issue not discussed as a bottleneck more and felt the advent of SSD's in the new consoles there's just going to be far fewer places to hide this process, hence that thread on the subject I created ages ago in the industry forum. At the very least the ability to pre-compile all shaders for a game should always be an option.
 
I agree with the sentiment of your posts, and a lot of people really want a better solution. I do think it's worth acknowledging that on PC the problem is an order of magnitude more complex and even the tools in place (endless layers of caching through the whole driver stack, vulkan/DX12 having some limited PSO caching, prepopulating driver shader caches in updates before big games hit, etc) are not entirely sufficient. It's not just "there's a tool to fix this but it's too complex to use", it's that there's a bunch of stuff you can do to try and mitigate the effects but nothing is guaranteed since there are at least 3 different moving pieces of software on the end users machines that the game does not control that affect the outcome.

At least for Unreal when you cook for PC you are doing the front-end compiles (FXC/DXC/etc) of the shaders. Most of the hitches after that point are driver compiles. Pre-running through some scripted sequences in the background to warm driver shader caches certainly helps, but even then it is not a guarantee since many PC drivers do various forms of PGO and background compilation of their own. DX12 attempted to eliminate some of this, but it crept back in over the following years after release as the economic incentives for IHVs to win benchmarks ultimately trump everything.

Anyways I think most graphics devs would agree with the frustration and it's part of the reason why many prefer consoles where the game is in much more control of the end user experience. Certainly I'm not saying more couldn't be done on PC, but it's not like the area has received no attention... as you imagine making the first Fortnite experience smooth for folks across a wide variety of machines is very important. But it's important to acknowledge that it is both intrinsically more complex on PC, and worse a dance between at least 3 different companies.

Honestly overall I think step 1 is just to cut down on the total number of shaders in Unreal games, but it's hard to put the permutation and shader editor genies back in the box to some extent.
Thanks Andrew!

Yeah, I fully appreciate that it's a massively more complex problem to solve than I make it out to be. If it wasn't, there'd already be a widely adopted solution out there, I'm sure.. but as you said, there's so many moving parts and finding the best solution isn't easy, or potentially even possible, since lot of the ability to control the situation is completely out of the developers hands.

I'm a gamer with a high interest in technology, especially PC/Console/Gaming related hardware and technology. My understanding is extremely high level, but I enjoy having a basic understanding about how the technology works and how developers create their games. It gives me a greater appreciation as a consumer when I see something that's clearly a cut above. I like to help improve games by leaving feedback and reporting issues. Basically what I try to get across in my posts regarding this topic specifically is that I as a consumer am willing to deal with precompiling, or waiting a bit longer on an initial load, or games requiring larger storage capacity... whatever the case must be.. if it is something that will help improve the initial experience. Often I just try to raise awareness about this issue, and that if a Studio releases a game, and it includes this "process" it's because the developer very carefully considered the gamer's experience, and it shouldn't be looked at as a bad thing, but a good thing. I remember people talking trash about Horizon Zero Dawn having a shader compilation screen which took minutes (sometimes really long on CPUs with less threads) and they were saying the game was unoptimized and garbage "because other games don't need to do it!!" So I did my best to explain why that process was there and why to maybe expect more of it in the future (especially regarding games developed purely with consoles in mind from the beginning) and to my surprise a decent amount of people complaining understood and realized ok yea, it's better than the alternative.. and it wasn't just for no reason. A lot of people simply don't understand what's going on.

You brought up a really good point about IHV's and the drivers often doing background compilations/recompiles which devs have no control over. Yea, DX12 was supposed to cut a lot of that out, and a lot of this driver BS was supposed to go away... but of course as you say.. the incentive for IHVs to eek out a few more frames to win benchmarks is just too much. That's because the fastest code to generate isn't always the most optimal code in practice. I mention that in one of my posts above where I spoke about the optimization of framerate being important, but the stability of the frametimes is vastly more essential to having a good experience. I'd always take a bit lower overall framerate, with a smoother more consistent frame delivery, than the highest peak frames possible.. every single time. And as you said.. it's a dance between multiple companies. I spoke mostly about the developers, but yes, the IHVs need to understand that having higher peak performance should NEVER come at the expense of the game's stability. Nothing is going to look worse for them, than a $500 console running the game smoothly first run... and the $2500 PC stuttering and hitching like crazy during the same time. It's why I'm glad sites like Digital Foundry exist where they put more of a focus on frametimes and stalls and stutters, when it's a point of contention between devices.. and not so much on the overall framerate. It helps raise awareness to more consumers that frametimes and stability are always more important to the experience than 8 extra frames per second when you're already at 100+. IHVs need to start working together to figure this out.

But anyway, I know you guys work damn hard on this stuff, it's not that you don't care.. it's tough to solve when there's so many moving parts. It's absolutely mindboggling the stuff you guys are doing in the first place. It is frustrating though. I know the reality of the situation is tough, but I can only say what I can as a consumer. It needs to get better. This needs to be a part of the quality assurance and should be rejected until the game is as it should be. If that means a publisher has to delay the PC version until these issues can be sorted out, then so be it. If I have to wait 10m for shaders to compile, so be it. If Nvidia needs to not win a benchmark, so be it. If MS has to do some OS level stuff, so be it. It NEEDS to improve. I'm not saying all games have this issue of course.. and I'm not saying there's not a billion other factors that can contribute to stutters and hitches on PC... and I completely realize I'm just one person and not everyone has the same opinion as me, but I can only express my own opinion.

Thanks for the response, and regardless of all this stuff.. UE5 looks amazing and I can't wait to see what devs do with it in the future. :D
 
You have the freedom to move away from the 2500 dollar stuttering and freezing, benchmark-winning platform at will. And get your 500 dollar console and be content with the problems on that side of the equation.
 
You have the freedom to move away from the 2500 dollar stuttering and freezing, benchmark-winning platform at will. And get your 500 dollar console and be content with the problems on that side of the equation.
Yes first world problems and all.... right?

Don't come at me with that BS. My concerns come from someone who loves and prefers that platform, despite its issues. How dare I want the situation (a very real one) to improve... right? How dare I expect more from my PC than a console... right?

If I can't talk about that kind of stuff here, on this kind of forum, without having to deal with people saying stuff like you just did.. then where can I?

This is a technical forum, which discusses technical issues... if your answer is to just run away from it.. then the issue will never improve.
 
You have the freedom to move away from the 2500 dollar stuttering and freezing, benchmark-winning platform at will. And get your 500 dollar console and be content with the problems on that side of the equation.
Your PC master race duality perspective of gaming technology is very tiresome and out of place here.
 
Your PC master race duality perspective of gaming technology is very tiresome and out of place here.

Then have the comparisons to consoles somewhere else, since those two will never be the same to begin with. Yes there should be improvements (on both sides).
 
I'm sorry. I really shouldn't have said anything and derailed this thread. I know this isn't the right thread for it to begin with and the comparisons being a point of contention around here. Not everything is an attack.. people fight and argue about things because one way or another they care.

That's my bad, and we don't need to start pointing fingers at each other. I got a thoughtful response from Andrew which was nice. I always value insight from people who work in the industry, which is usually why I speak up in the first place.

Back to UE5 :) That Vroom! game looks very cool. We're going to start seeing a lot of these popping up in the very near future.

I wonder when the next big UE5 demonstration will be? I'd love to see a new demo from Epic which shows some of the improvements and features added to the engine since the Early Access release in practice. There's already quite a few games confirmed in development with UE5 too. I wonder how quick the industry will move over to UE5 once it's fully released? Fun times ahead!
 
I wonder when the next big UE5 demonstration will be? I'd love to see a new demo from Epic which shows some of the improvements and features added to the engine since the Early Access release in practice. There's already quite a few games confirmed in development with UE5 too. I wonder how quick the industry will move over to UE5 once it's fully released? Fun times ahead!

Yeah I can’t wait to see what UE5 early adopters do with the triangle budget. I really hope it’s more than super detailed rocks. I’m struggling to think of what other environments would benefit though. Modern architecture is so flat and blocky.

Hopefully it’s at least the end of normal mapped knobs on control panels.
 
Yeah I can’t wait to see what UE5 early adopters do with the triangle budget. I really hope it’s more than super detailed rocks. I’m struggling to think of what other environments would benefit though. Modern architecture is so flat and blocky.

Hopefully it’s at least the end of normal mapped knobs on control panels.
Anything that helps to reduce full object normalmaps is good.
Way too many games have visible compression artifacts on near flat surfaces.

Even with relatively small poly objects there should be some very interesting uses, like for clutter objects.
Ability to litter world with huge amounts of varied objects, should be useful.
 
Anything that helps to reduce full object normalmaps is good.
Way too many games have visible compression artifacts on near flat surfaces.

Even with relatively small poly objects there should be some very interesting uses, like for clutter objects.
Ability to litter world with huge amounts of varied objects, should be useful.

I hope so but it’s unclear whether Nanite is good at lots of small high poly objects. Theoretically the rasterizer shouldn’t care which objects the clusters are coming from.
 
Back
Top