Comment by MountainTheme12
3 days ago
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.
Agreed. I didn't mean to say consoles' popularity is why they don't have shader stutter, but rather it's why implementing a fix on PC (e.g. precompilation at startup) isn't something most titles bother with.
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).
You still don't get it. It's just not possible to ship a precompilation of every shader permutation for every supported hardware permutation.
That's why I said "precompilation at startup". That has users compile for their precise hardware/driver combination prior to the game trying to use them for display.
1 reply →