Digital Foundry: Last year was a disaster for PC gaming: Here's How Things Need to Change (PC trails PS5 in performance and optimization)

ethomaz

Rebolation!
21 Jun 2022
8,579
7,271
Brasil 🇧🇷
PSN ID
ethomaz
I think the biggest issue lies in optimization.

People fall by the market of some companies that is just use DirectX or Unreal Engine and everything will run well in any PC spec since it fits the minimum recommended.

That is hardly true… there is no magic… if you want your game to really be optimized on PC it needs tons of money and hard work… you need to test and you need to make adjusts (some times simple parameters others a chunk of code) for different GPU brands where there is different GPU architectures with different models… and that taking only about GPU… there is still CPU, memory, I/O… everything can be different for each single PC machine build.

It is too much different options and combinations on PC that make that process way more expensive that just made a game optimized for consoles.

Don’t get me wrong… there are developers that do that but the biggest question you need to do are:

- Developer have that budget and time to make it works?
- Your estimated sales will cover the money and time to do the work?

I mean if you already expect to sell small units and have low profit then you basically can’t afford to have much money and time put into quality tests and optimizations.

You will basically do the basic port and ship it.

I don’t know if you understand how the industry changed in the last decades… we moved from a development pipeline where QA and tests were made in house to ship a product without most critical bugs and performance hits… to a development pipeline that ship the game to the consumers be the QA/testers needed to find critical bugs and performance issues.

We basically lives in an industry today that we, consumers, pays to be the Beta testers of the games.

There are exceptions of course but more games are tested, fixed and optimized after release via consumer feedback… that of course for developers that cares because there are developers that don’t give a fuck (example From Software where the consumer do the developer work via mods).
 
Last edited:

Vertigo

Did you show the Darkness what Light can do?
26 Jun 2022
4,260
4,120
To this day I still mostly associate games that license UE or middleware as… amateur budget game development?

I know that’s less true than how it was 2 to 3 generations ago but it lends itself to the belief that Unreal Engine 5 will be no panacea or necessarily a reason to be excited about anything.
 

ethomaz

Rebolation!
21 Jun 2022
8,579
7,271
Brasil 🇧🇷
PSN ID
ethomaz
I found a ERA summary of the points he wants devs do in the video:

  1. Eliminate shader compilation stutter
  2. Deliver visually responsive graphical options
  3. Include sensible, convention-driven menu navigation
  4. Do not overly nest menus
  5. Refresh rate and resolution should be separate options
  6. Include a field of view (FOV) option
  7. Include variable aspect ratios and frame-rates
  8. Include half, third and quarter-rate v-sync options with consistent frame-pacing
  9. Include multiple quality levels for heavy effects
  10. Include console features such as dynamic resolution scaling
  11. Include HDR and surround sound if the console versions support them
  12. Include console-equivalent settings as an option
  13. Support all major image reconstruction technologies
Most devs will go bankrupt before finish all these requests :D :D :D

People think these features are just change a line in a configuration file 🤷‍♂️
 
Last edited:

Gediminas

Boy...
Founder
21 Jun 2022
5,793
7,389
I found a ERA summary of the points he wants devs do in the video:

  1. Eliminate shader compilation stutter
  2. Deliver visually responsive graphical options
  3. Include sensible, convention-driven menu navigation
  4. Do not overly nest menus
  5. Refresh rate and resolution should be separate options
  6. Include a field of view (FOV) option
  7. Include variable aspect ratios and frame-rates
  8. Include half, third and quarter-rate v-sync options with consistent frame-pacing
  9. Include multiple quality levels for heavy effects
  10. Include console features such as dynamic resolution scaling
  11. Include HDR and surround sound if the console versions support them
  12. Include console-equivalent settings as an option
  13. Support all major image reconstruction technologies
Most devs will go bankrupt before finish all these requests :D :D :D

People think these features are just change a line in a configuration file 🤷‍♂️
And I want 80€.
So neither of us getting what we want.
 
  • Like
Reactions: ethomaz

ethomaz

Rebolation!
21 Jun 2022
8,579
7,271
Brasil 🇧🇷
PSN ID
ethomaz
BTW the #1 there is no fix... how sharder compilation was envisioned has this issue... or you pre-compile everything at start/installation (took 30 or minutes) or you compile on the fly (the default in UE) that will stutter the first play thought of the game no matter what.
Consoles have a third option that is ship the compiled sharder in disc/digital... that is possible only because it is a fixed hardware.

I know the reason they created this shader compilation but I think it is time to serious think in redesign or research alternatives... the bigger the games become more shader compilation is needed.

I don't believe it is impossible to create an alternative that doesn't need the shaders to be compiled on consumer machine.
For example it could have a shader compilation database where it is stored all the GPU + driver combinations and when you download the game it already download the right shader together (similar to how it happens on consoles).
Or create a new evolutionary way to work with shaders.
 

Banana

Well-known member
10 Jan 2023
268
192
I think the biggest issue lies in optimization.

People fall by the market of some companies that is just use DirectX or Unreal Engine and everything will run well in any PC spec since it fits the minimum recommended.

That is hardly true… there is no magic… if you want your game to really be optimized on PC it needs tons of money and hard work… you need to test and you need to make adjusts (some times simple parameters others a chunk of code) for different GPU brands where there is different GPU architectures with different models… and that taking only about GPU… there is still CPU, memory, I/O… everything can be different for each single PC machine build.

It is too much different options and combinations on PC that make that process way more expensive that just made a game optimized for consoles.

Don’t get me wrong… there are developers that do that but the biggest question you need to do are:

- Developer have that budget and time to make it works?
- Your estimated sales will cover the money and time to do the work?

I mean if you already expect to sell small units and have low profit then you basically can’t afford to have much money and time put into quality tests and optimizations.

You will basically do the basic port and ship it.

I don’t know if you understand how the industry changed in the last decades… we moved from a development pipeline where QA and tests were made in house to ship a product without most critical bugs and performance hits… to a development pipeline that ship the game to the consumers be the QA/testers needed to find critical bugs and performance issues.

We basically lives in an industry today that we, consumers, pays to be the Beta testers of the games.

There are exceptions of course but more games are tested, fixed and optimized after release via consumer feedback… that of course for developers that cares because there are developers that don’t give a fuck (example From Software where the consumer do the developer work via mods).
I thought games just send instructions via an API to the hardware? IIRC nothing is bare metal anymore.
 
  • haha
Reactions: KiryuRealty

ethomaz

Rebolation!
21 Jun 2022
8,579
7,271
Brasil 🇧🇷
PSN ID
ethomaz
I thought games just send instructions via an API to the hardware? IIRC nothing is bare metal anymore.
In a simplified way it is API -> GPU Driver -> OS Kernel -> Hardware.
You can bypass any of these even send direct instructions to hardware if you have a OS Kernel that allows it.
Of course that is very simplified because the OS Kernel, Drivers, and APIs had it own set of abstractions layers (eg. the Driver for example has different code for all the GPU models it support... or the API have different ).

But there are more abstraction layers depending of what the developer did.
The Engine itself have several levels of abstractions of abstractions... for eg. Unreal Engine.

Abstraction Level in programming language is every time you need to use for a example a IF to run a different function for a specific hardware... for example if you want to run the function X in the hardware A but the function Y in the hardware B you will need a IF to lead you to the right function.. that decision to choose which function use takes come cycle of CPU that is what we call abstraction level or CPU overhead.

This code runs faster:

Call FunctionCodeA

Than:

if HardwareX
call FunctionCodeA
else
call FuncitonCodeB

The more you abstraction level you add... more you have CPU overhead... more you have of these choices.

When developers says about CodeToMetal on consoles they don't mean you not having abstraction level but that you have way less and just the needed to reach the hardware.
The API is very simple and have direct calls (less IFs) because it is build to only support one hardware.
The driver is very simple because it only needs to support one hardware (PC driver is giant with tons of code and IFs to deal with each type of hardware it supports).
The OS Kernal is very simple because it doesn't need all the complexity decisions a Linux Kernel or Windows Kernel does.

The CodeToMetal means that you have 4-5 levels of abstraction on consoles vs 15-20 levels of abstraction on PC.

DirectX 12 some levels of abstraction compared with DirectX 11... same for Vulkan but they are still APIs more complex than for example the PS5's API that can just direct call the instruction because the end hardware will be always the same... while DX12 and Vulkan needs to decide how it will send the instruction based in several hardware options it supports.

More you made it simpler, more you have less abstractions levels, faster you will reach the hardware.
Consoles do that... PC can but no developer will choose to do that instead will use the Engines, APIs, Drivers, OS, etc that supports all types of hardware possible.

About your question... nothing was ever bare metal... even when you have cards to send your program to computers in 1970-80 you where not bare metal but you were very close to it :D
 
  • brain
Reactions: Banana

Banana

Well-known member
10 Jan 2023
268
192
In a simplified way it is API -> GPU Driver -> OS Kernel -> Hardware.
You can bypass any of these even send direct instructions to hardware if you have a OS Kernel that allows it.
Of course that is very simplified because the OS Kernel, Drivers, and APIs had it own set of abstractions layers (eg. the Driver for example has different code for all the GPU models it support... or the API have different ).

But there are more abstraction layers depending of what the developer did.
The Engine itself have several levels of abstractions of abstractions... for eg. Unreal Engine.

Abstraction Level in programming language is every time you need to use for a example a IF to run a different function for a specific hardware... for example if you want to run the function X in the hardware A but the function Y in the hardware B you will need a IF to lead you to the right function.. that decision to choose which function use takes come cycle of CPU that is what we call abstraction level or CPU overhead.

This code runs faster:

Call FunctionCodeA

Than:

if HardwareX
call FunctionCodeA
else
call FuncitonCodeB

The more you abstraction level you add... more you have CPU overhead... more you have of these choices.

When developers says about CodeToMetal on consoles they don't mean you not having abstraction level but that you have way less and just the needed to reach the hardware.
The API is very simple and have direct calls (less IFs) because it is build to only support one hardware.
The driver is very simple because it only needs to support one hardware (PC driver is giant with tons of code and IFs to deal with each type of hardware it supports).
The OS Kernal is very simple because it doesn't need all the complexity decisions a Linux Kernel or Windows Kernel does.

The CodeToMetal means that you have 4-5 levels of abstraction on consoles vs 15-20 levels of abstraction on PC.

DirectX 12 some levels of abstraction compared with DirectX 11... same for Vulkan but they are still APIs more complex than for example the PS5's API that can just direct call the instruction because the end hardware will be always the same... while DX12 and Vulkan needs to decide how it will send the instruction based in several hardware options it supports.

More you made it simpler, more you have less abstractions levels, faster you will reach the hardware.
Consoles do that... PC can but no developer will choose to do that instead will use the Engines, APIs, Drivers, OS, etc that supports all types of hardware possible.

About your question... nothing was ever bare metal... even when you have cards to send your program to computers in 1970-80 you where not bare metal but you were very close to it :D
Very interesting.

Is that why some games run better on amd than nvidia and vice-versa?
 

rofif

...owns a 3080...why?
24 Jun 2022
1,309
1,738
I still don't get it why shader packs can't be downloaded.
Couldn't devs precompile shaders for their games for popular graphics cards? Maybe nvidia could make it not drivers dependent too.
You can download shaders for emulators, so they don't stutter.
And consoles don't generate new shader when you update the firmware, so it CAN be done.
There are cache downloads on steam deck ffs. So it is possible for this 1 config, it could be possible for 100

pc gaming is great and all but it really makes you think, you spent your money wrongly.
 

ethomaz

Rebolation!
21 Jun 2022
8,579
7,271
Brasil 🇧🇷
PSN ID
ethomaz
Very interesting.

Is that why some games run better on amd than nvidia and vice-versa?
Yes… depending of how the developer choose to code (we call it path) it will be better on AMD or nVidia.

There is an article I studied in the past for UE4.1 where the guy explained to have the best performance you had to code a nVidia path following the nVidia examples and AMD path following AMD recommendation.

Inside the DX12, Vulkan, etc all do that… UE, Unity, etc the same.

If you develop using a code path recommended for specific GPU vendor you will end having lower performance in another GPU vendor.

That is even more evident when you will use the nVidia tools called GeForce Experience… the tools all help to code and optimize for a code path that will runs best on nVidia.
 
  • brain
Reactions: Banana

Alabtrosmyster

Veteran
26 Jun 2022
3,217
2,837
I ... think that's exactly the point of the video .. if you're paying 2x, 3x times over the price of a console, the least you should have to expect is a consistent experience.
Maybe he should be upset at the platform holders for lack of quality tools and proper support to ensure quality ports?
 
  • noneofmybizz
Reactions: KiryuRealty

adamsapple

Banned
22 Jul 2022
2,013
1,507
Maybe he should be upset at the platform holders for lack of quality tools and proper support to ensure quality ports?

Yeah that's the crux of the video lol, it's for things developers can do to ensure the PC ports aren't crap.

He isn't complaining to the PC gods or something ..
 

Alabtrosmyster

Veteran
26 Jun 2022
3,217
2,837
I still don't get it why shader packs can't be downloaded.
Couldn't devs precompile shaders for their games for popular graphics cards? Maybe nvidia could make it not drivers dependent too.
People will complain about size.

With hindsight I wonder why they even released dx12/Vulkan on PC instead of trying to figure a proper solution before?

That performance bump came at the cost of stuttering :-/
 
  • Like
Reactions: rofif

Alabtrosmyster

Veteran
26 Jun 2022
3,217
2,837
Yeah that's the crux of the video lol, it's for things developers can do to ensure the PC ports aren't crap.

He isn't complaining to the PC gods or something ..
That would be MS, Steam, Epic and a few more I think, but mostly MS.

But since MS aren't the only ones making money off of games don't on PC it's a bit more complicated than it should be.
 
  • they're_right_you_know
Reactions: KiryuRealty

Alabtrosmyster

Veteran
26 Jun 2022
3,217
2,837
Yeah that's the crux of the video lol, it's for things developers can do to ensure the PC ports aren't crap.

He isn't complaining to the PC gods or something ..
In the end if the platform makes it harder than it should be it forces teams to devote more time and money to make their port as good as they "should" be it becomes a problem, simply because not all teams have the resources or the capacity to do everything correctly all the time (some studios can't do anything correctly at all).

That being said, his points aren't bad, I own a gaming PC so I want the games to run well on it.
 
  • Like
Reactions: adamsapple

Remij

Banned
10 Jul 2022
877
730
BTW the #1 there is no fix... how sharder compilation was envisioned has this issue... or you pre-compile everything at start/installation (took 30 or minutes) or you compile on the fly (the default in UE) that will stutter the first play thought of the game no matter what.
Consoles have a third option that is ship the compiled sharder in disc/digital... that is possible only because it is a fixed hardware.

I know the reason they created this shader compilation but I think it is time to serious think in redesign or research alternatives... the bigger the games become more shader compilation is needed.

I don't believe it is impossible to create an alternative that doesn't need the shaders to be compiled on consumer machine.
For example it could have a shader compilation database where it is stored all the GPU + driver combinations and when you download the game it already download the right shader together (similar to how it happens on consoles).
Or create a new evolutionary way to work with shaders.
That's not true... there are fixes, and many games already utilize them.

Time and time again developers have proven that these issues can be all but completely sidestepped with proper pre-compilation and/or async compilation, which is what is being called on developers to implement.

It's not reasonable to expect developers themselves to precompile shaders for individual GPU and driver combinations and store them on a server for people to download... as hardware continues to progress, they'd have to continually update and add "shader pack" support for the new GPUs + drivers.. That wont happen.. and it's not even an elegant solution. We already have better solutions in place which are practical... which is why we should expect developers to instead allow us to precompile the shaders for our specific configurations... and then to speed up THAT process. For example, you could augment it by connecting to servers to accelerate the compiling the shaders for our specific GPU+driver combo.. taking that time from say 4 minutes.. to just 45 seconds for example.

I'm not going to go into detail about it all here, but Ethomaz, you know from another forum that we post on that I've spoke about this a ton. It's not that this is some insurmountable problem.. the issue currently is standardizing pre-compilation by developers. A lot of developers are apprehensive of putting their users through 1-10 minutes (for example) of waiting for shaders to compile.. and that's understandable... however, that's simply a reality of the openness of the platform. PC gamers need to think of it as essentially "installing" the game..

Waiting a couple of minutes one time at initial launch (or after driver updates) is a very small price to play for a smooth gaming experience. And like I said above.. after we get that process standardized... then you can look at ways of accelerating that process so that it's as quick as possible for consumers. CPUs with more cores will crunch through compilation processes very quickly.. and like I said, connecting to a server to help crunch through compilation can be added to accelerate it to where it's essentially a complete non-issue.
 
  • Like
Reactions: Alabtrosmyster