Comment by Uvix
Comment by Uvix 3 days ago
The shader stutter issues are non-existent on console, which is where most of their sales are. PC, as it has been for almost two decades, is an afterthought rather than a primary focus.
Comment by Uvix 3 days ago
The shader stutter issues are non-existent on console, which is where most of their sales are. PC, as it has been for almost two decades, is an afterthought rather than a primary focus.
It's not just popularity, Epic has been trying really hard to solve it in Unreal Engine.
The issue is that, because of monolithic pipelines, you have to provide the exact state the shaders will be used in. There's a lot of that, and a large part of it depends on user authored content, which makes it really hard to figure out in advance.
It's a fundamental design mistake in D3D12/Vulkan that is slowly being corrected, but it will take some time (and even more for game engines to catch up).
Even this is just guesswork for the way these engines work, because they literally don't know what set of shaders to compile ahead of time. Arbitrary scripting can change that on a frame-by-frame basis, shader precompilation in these engines mostly relies on recording shader invocations during gameplay and shipping that list. [1]
Like, on the one hand, you have engines/games which always stutter, have more-or-less long "shader precompilation" splashscreens on every patch and still stutter anyway. The frametime graph of any UE title looks like a topographic cross-section of Verdun. On the other hand there are titles not using those engines where you wouldn't even notice there were any shaders to precompile which... just run.
[1] https://dev.epicgames.com/documentation/en-us/unreal-engine/...
> In a highly programmable real-time rendering environment such as Unreal Engine (UE), any application with a large amount of content has too many GPU state parameters that can change to make it practical to manually configure PSOs in advance. To work around this complication, UE can collect data about the GPU state from an application build at runtime, then use this cached data to generate new PSOs far in advance of when they are used. This narrows down the possible GPU states to only the ones used in the application. The PSO descriptions gathered from running the application are called PSO caches.
> The steps to collect PSOs in Unreal are:
> 1. Play the game.
> 2. Log what is actually drawn.
> 3. Include this information in the build.
> After that, on subsequent playthroughs the game can create the necessary GPU states earlier than they are needed by the rendering code.
Of course, if the playthrough used for generating the list of shadersdoesn't hit X codepath ("oh this particular spell was not cast while holding down shift"), a player hitting it will then get a 0.1s game pause when they invariably do.
Any search on game console reviews on YouTube will show otherwise, even though it isn't as bad as PC.
Just a quick search,
https://www.gamesradar.com/games/the-ps5-stutter-issue-is-re...
https://forums.flightsimulator.com/t/stutters-on-xbox-series...
If anything I think PC has been a prototyping or proving grounds for technologies on the roadmap for consoles to adopt. It allows software and hardware iterations before it's relied upon in a platform that is required to be stable and mostly unchanging for around a decade from designing the platform through developers using it and recently major refreshes. For example from around 2009 there were a few cross platform games with the baseline being 32bit/DX9 capabilities, but optional 64bit/DX11 capabilities, and given the costs and teams involved in making the kind of games which stretch those capabilities I find it hard to believe it'd be one or a small group of engineers putting significant time into an optional modes that aren't critical to the game functioning and supporting them publicly. Then a few years later that's the basis of the next generation of consoles.
Depending on the game and the circumstances, I'm getting some cases of 20-40 minutes to compile shaders. That's just obscene to me. I don't think stutter is better but neither situation is really acceptable. Even if it was on first install only it would be bad, but it happens on most updates to the game or the graphics drivers, both of which are getting updated more frequently than ever.
No, that's not the reason.
The shader stutter issues are non-existent on console because consoles have one architecture and you can ship shaders as compiled machine code. For PC you don't know what architecture you will be targeting, so you ship some form of bytecode that needs to be compiled on the target machine.