Digital Foundry Article Technical Discussion [2022]

Status
Not open for further replies.
but they still hold up well in isolation outside of texture rendering problem due to lack of ram.
Not sure if its a ram problem as it's the same on the 1X.
Thinks it's the HDD. With some textures even taking around 10s to load in.

Apart from textures taking long to load with PS4 upwards in terms of performance, its decent versions of the game.
I wouldn't feel like I was getting a decidedly different game/experience.
 
One potential approach I've thought about for devs that can't devote a QA team to play through the entire game is to have 'Benchmark' modes, similar to Batman: Arkham City or perhaps shipped as a wholly separate executable like Metro 2033/Last Light does. Naturally you wouldn't want this to be used as an actual benchmark for review sites to use while it chugs its way through it so I wouldn't keep the name as a 'benchmark' mode, something just like 'shader burn-in' or whatnot.

Basically, the idea is you either script a stress test involving a sandbox level with every character/material/effect possible that you can cram into memory, or you cycle through as many levels and unique actions/effects as you can, unloading/loading them as need be. Naturally there could be spoilers so you give the user the option to blank out/mute the test or just do it automatically. While it stutters and jerks its way through this test, it's building the cache which will affect your actual gameplay.

Thought this was interesting in light of this. Basically someone had already taken this approach, of sorts:

 
Not sure if its a ram problem as it's the same on the 1X.
Thinks it's the HDD. With some textures even taking around 10s to load in.

Apart from textures taking long to load with PS4 upwards in terms of performance, its decent versions of the game.
I wouldn't feel like I was getting a decidedly different game/experience.
Would be interesting seeing some of these more recent cross gen games running of SSDs on PS4/Pro and One/S/X.
 
Thought this was interesting in light of this. Basically someone had already taken this approach, of sorts:

It's been a thing for a long time. The problem is that just not enough developers take the time to do it for whatever reason.

Again, I'll preface this by saying "easier said than done" sure... but this is what I'd do:

-Get people on the team to play the final build as much as possible, gather all PSOs possible
-For the PSOs which aren't possible to collect, build a level and spawn all of those assets for the pre-compile process
-Pre-compile as the game starts, have a nice visual key art with a progress bar letting you know it's doing something important. "Optimizing for your PC! Please wait!"

Then:

-Pre test the final build uploaded to Steam or wherever. Ensure there's no egregious issues. If issues persist, go back and see what's going on. Fix issues. Repeat until done.


Players would likely enjoy a game nearly free from shader compilation stutter. Maybe an edge case here or there..., but again, it doesn't have to be perfect.. it just has to function how it should.
 
It's been a thing for a long time. The problem is that just not enough developers take the time to do it for whatever reason.

Again, I'll preface this by saying "easier said than done" sure... but this is what I'd do:

-Get people on the team to play the final build as much as possible, gather all PSOs possible
-For the PSOs which aren't possible to collect, build a level and spawn all of those assets for the pre-compile process
-Pre-compile as the game starts, have a nice visual key art with a progress bar letting you know it's doing something important. "Optimizing for your PC! Please wait!"

All of that is true of course - all of these approaches should be used, as Alex said recently there should be zero shader stuttering in modern games. It's more work - more than it should be, and certainly not at optimized as it could if all the industry players get involved to streamline it as I hope they'll eventually do. But there are approaches to largely resolve this - if inelegant - today.

My suggestion was largely focused on UE4 titles released a while back where the 'team' isn't really available anymore though. This is something that could be done by one dev (?) just tossing all the assets they can think of into a sandbox level.

Me at this point:

1670873697687.png
 
The XT isn’t as good a value as the XTX, as Rich points out (repeatedly :D), an odd reversal of the usual model of paying more for smaller gains the higher up the stack you go. Could AMD (and Nvidia) be pricing their rung-down cards with more wiggle room for AIBs? In other words, are we more likely to see discounts on the XT than the XTX?
 

So watching that video, it's good that Epic appears to be taking this issue seriously, because it's a serious issue. They DID say that the new automated method will continue to be improved over time, and that's all good and great. I just wanted to chime in though.. They sort of mention how bad it looks that Epic's own engine in their big crown jewel product Fortnite.. has these shader comp stutters. But the reality is the despite the game's status for the company, and it being their engine, that actually couldn't be further from the case, because Fortnite is actually a worst-case type scenario for this particular issue. DF more than likely knows this too of course.

It really doesn't have anything to do with realism vs cartoony visuals.. you can have super complex shaders with cartoonish visuals.. rather it's the sheer amount of different assets and materials and effects the game has, and the customization it offers the player to mix and match them all. When you think about a typical single player game, the developers create all their assets and everything is very curated and mostly known ahead of time. You play a level, and they know exactly what's coming. This generally makes it easier for developers to collect PSO data.

However, with a game like Fortnite, you have tons of different characters with different visual styles, hundreds upon hundreds of different customizable options for those characters.. and you can also mix and match equipment, and there's all sorts of different effects and materials in play for the various equipment and guns and so on. You also have all the game's environment assets, tons of effects like when breaking objects because everything is destructible, all the different guns and so on. So the fact that any of the 100 players you encounter could have any combination of those things.. means that capturing all that PSO data during development, would likely be very challenging compared to the traditional game. Not to mention, that even running the game at different graphics settings could necessitate shader recompiles.. which means you have a combinatorial nightmare to trying to capture it all, and I could see how that is impacted by the realities of game development.

Which had me thinking again about what I read in the Unreal Engine documentation a while back about it being possible to crowdsource PSO data from users. I think for this type of game (live-service MP game with tons of customization and assets) crowdsourcing the PSO data from players is exactly the way they should go about building as complete of a PSO data cache as possible. In the documentation it says that there's no infrastructure built into Unreal Engine to do it.. but that it's possible. So what Epic should do is build that directly into the game. Have it log and generate the PSO data by default (player can opt out if they want), then after the game client is closed, that file gets uploaded to Epic's servers. Very quickly you'd get massive coverage of all different combinations, and all at various graphics settings. Then they could update the game with the better PSO coverage.

Due to the sheer amount of shaders, having that automatically begin compiling as the game starts wouldn't be a good idea, since it would likely take quite a few minutes. So in that case, they could add it as an option in the menu, for people who want to do it and wait until the shaders are pre-compiled. They could even have it go in the background while you're in the menu, and that way you could look around the store, or do other things while it's compiling.

I think crowdsourcing PSO caches for these types of games just makes a lot of sense, and then giving the pre-compilation process as an option in the menu would be perfect. I also think that Valve should implement this type of feature directly into Steam's framework, for developers who could utilize this type of thing. Just like uploading cloud saves.. If a developer sets it up, it automatically uploads PSO caches created by their games, and allows them to take all that data from all the players and get the most coverage possible to be able to integrate it into future updates.
 
Last edited:

From my point of view the loss of RED Engine 4 after Cyberpunk 2077: Phantom Liberty is a tragedy. I will miss it. Hopefully the Northlight Engine will be around for a while.
 
  • Like
Reactions: Jay

The naming convention AMD used for these cards makes no sense, these aren't 90 series cards. They aren't competing at all with the 4090, the previous gen AMD 90 series cards went toe to toe with the Nvidia 90 series cards in rasterization. These really are the 7800XT and 7700XT but they didn't want to sell at those price brackets, Nvidia really fucked us with the ridiculous pricing of the 4080.
 
The naming convention AMD used for these cards makes no sense, these aren't 90 series cards. They aren't competing at all with the 4090, the previous gen AMD 90 series cards went toe to toe with the Nvidia 90 series cards in rasterization. These really are the 7800XT and 7700XT but they didn't want to sell at those price brackets, Nvidia really fucked us with the ridiculous pricing of the 4080.

Only if people really start buying them at those prices. They're not.
 
I think crowdsourcing PSO caches for these types of games just makes a lot of sense, and then giving the pre-compilation process as an option in the menu would be perfect. I also think that Valve should implement this type of feature directly into Steam's framework, for developers who could utilize this type of thing. Just like uploading cloud saves.. If a developer sets it up, it automatically uploads PSO caches created by their games, and allows them to take all that data from all the players and get the most coverage possible to be able to integrate it into future updates.

In the past I've voiced concern about storefront-specific approaches to this in the age of 7+ launchers, but as time goes on, I say - fuck it. Companies like Valve are the ones that sell the games, they have the most to gain from advertising a smooth experience based on adoption of their infrastructure.

I mean they already do, people specifically wait for games on Steam because of the advantages Valve's 'platform' brings - might as well add downloadable shader caches for DX games to the mix, after all having compiled/downloadable caches is a large part of making the Steamdeck viable at all, without them it would be DOA. If purchasing a game on another platform gets people to ask why their version stutters, and the answer is 'because they don't crowdsource their PSO's like Valve does' - that, while shitty for the person who now owns the game on another storefront no doubt, at least gives more attention to the problem and will shame other storefronts in doing the same or adopting a similar approach.

And hey, as we see from Steam/Youtube comments, there's plenty of people who have magical systems where this "doesn't happen on my PC!". Ok fine, you can believe what you want, just get to work on compiling them my little shader butler.
 
BitTorrent network integrated with steam for distributing compiled shaders among players. Let’s go!

Not sure they would need to use another network though, if it's an automatic process, you just do the check-in during game launch/install or check every few days, much like they do now for Vulkan caches. For storage concerns they could only keep the caches for the last few driver revisions for each GPU*, considering the size of compiled PSO's, even with thousands of games it's a tiny fraction of the space they use now for the actual game code.

*Also provides a selling point for AMD/Nvidia to get their userbase on recent drivers. "Game ready" drivers now would actually mean something substantial if it even just ensures you're getting compiled caches.
** An anti-piracy feature as well. You won't get distributed shader caches with pirated versions.
 
Last edited:
BitTorrent network integrated with steam for distributing compiled shaders among players. Let’s go!
So.. the Blizzard WoW client from twelve years ago? Yeah, kind of nuts how some companies jumped on P2P tech to distribute data really quickly and others - like 97% of the industry - have seemingly stuck with CDN.
 
In the past I've voiced concern about storefront-specific approaches to this in the age of 7+ launchers, but as time goes on, I say - fuck it. Companies like Valve are the ones that sell the games, they have the most to gain from advertising a smooth experience based on adoption of their infrastructure.

I mean they already do, people specifically wait for games on Steam because of the advantages Valve's 'platform' brings - might as well add downloadable shader caches for DX games to the mix, after all having compiled/downloadable caches is a large part of making the Steamdeck viable at all, without them it would be DOA. If purchasing a game on another platform gets people to ask why their version stutters, and the answer is 'because they don't crowdsource their PSO's like Valve does' - that, while shitty for the person who now owns the game on another storefront no doubt, at least gives more attention to the problem and will shame other storefronts in doing the same or adopting a similar approach.

And hey, as we see from Steam/Youtube comments, there's plenty of people who have magical systems where this "doesn't happen on my PC!". Ok fine, you can believe what you want, just get to work on compiling them my little shader butler.
All good points, but realistically, the PSOs cached from Steam users would work just fine for EGS users. They would be used to update the game across all PC storefronts lol.
 
All good points, but realistically, the PSOs cached from Steam users would work just fine for EGS users. They would be used to update the game across all PC storefronts lol.

I'm talking outside of Fortnite though. Valve has no compulsion to distribute compiled shader caches for games on other storefronts, for something of the scope of Fortnite and games that use Epic's online services regardless of what storefront it's bought on, of course it's in the best interest for Epic and Valve to come to an agreement here.

But there are plenty of games - especially for the timed exclusives that Epic likes to get - that will require Epic/EA to also take on this responsibility. Why would Valve use their network bandwidth to distribute caches for games where they don't see a cut? This is precisely why I've argued that Nvidia/AMD should probably handle this, but I'm just tired of waiting for the 'ideal' solution at this point.

Bear in mind as well that the .exe's can vary across different storefronts as well, Nvidia's drivers will have separate caches as a result. A game on Xbox gamepass will have a different cache than the same game bought on Steam.
 
Last edited:
I'm talking outside of Fortnite though. Valve has no compulsion to distribute compiled shader caches for games on other storefronts, for something of the scope of Fortnite and games that use Epic's online services regardless of what storefront it's bought on, of course it's in the best interest for Epic and Valve to come to an agreement here.

But there are plenty of games - especially for the timed exclusives that Epic likes to get - that will require Epic/EA to also take on this responsibility. Why would Valve use their network to keep caches updated on games where they don't see a cut?

Bear in mind that the .exe's can vary across different storefronts as well, Nvidia's drivers will have separate caches as a result. A game on Xbox gamepass will have a different cache than the same game bought on Steam.
I don't want compiled shader caches though.. I just want developers to be able to crowdsource PSO caches and improve their games through updates so that we can compile them ourselves on our specific hardware. Most importantly for these Live Service type games which could have an ungodly amount of assets and combinations and which would naturally be very difficult for developers to do in-house.

Really, at the forefront of everything.. the main goal from everyone complaining about Shader Compilation stuttering, IMO, should be pushing developers to make pre-compiling shaders standard practice to begin with. Once that becomes more or less standard in the industry... then we can look at ways of making it easier for developers to essentially get the data they need to get the best coverage as quickly and efficiently as possible. And then after that we can look at ways of accelerating the compilation process on the users PC, through cloud computing.

My reasoning for having a system for that built into Steam is that I believe it would be very useful feature for developers in the future. They could upload the game to Steam, send out some copies to various individuals to play and build caches which get uploaded, then they can update the game, and have it ready for proper launch.

I basically think the more that we can facilitate and automate that process.. the better for everyone... and that doesn't just apply to Unreal Engine. Basically any developer with any engine could take advantage of it.
 
I don't want compiled shader caches though.. I just want developers to be able to crowdsource PSO caches

Ahhhhh ok, now I get what you're proposing. So you're arguing that Valve just distributes the generated PSO list from users - the list of shaders that actually still need to generated - and the actual final compilation is still done locally on each system as it is done now (well, ideally). The difference with this method is due to the crowdsourcing they don't have to hope for the developer's QA team to be as thorough, if they're ever even tasked with generating these in the first place.

Indeed, even if we had a way to distribute fully compiled caches, I would always want local generation - and all the optimizations that entails (notifying the user during precompile, asynchronous generation during gameplay) to be prioritized.

Just disturbing the PSO's that need to be compiled though relies on a network infrastructure, so it would be still storefront-specific. Valve has no impetus to hook into a game on another platform and let them use their network bandwidth, however small. What Epic (and as you say, basically every engine developer) needs to do then, is at least make it as simple as possible to securely up/download these PSO's and integrate with the cloud storage regardless of the target platform.

We need to Popularize Portable Pipeline State Objects (PPPSO's). :)
 
Last edited:
Just disturbing the PSO's that need to be compiled though relies on a network infrastructure, so it would be still storefront-specific. Valve has no impetus to hook into a game on another platform and let them use their network bandwidth, however small. What Epic (and as you say, basically every engine developer) needs to do then, is at least make it as simple as possible to securely up/download these PSO's and integrate with the cloud storage regardless of the target platform.
Why would they have to hook into another platform and be storefront specific though? It's literally just uploading a file(s) generated by the game to a server.. and the developer takes those files, generates a list of all the PSOs by all the users, and then recooks the package again, and pushes the update out to multiple storefronts.

Basically my joke was they could get away with just using Valve's infrastructure for uploading the PSO data files. They wouldn't need to do it separately or for each store. And lets face it... all the users would be on Steam anyway =P
 
Status
Not open for further replies.
Back
Top