• MrMcGasion@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    5 months ago

    Compiled shaders are unique to every GPU model and often driver revision. The console versions don’t studder because they all have identical hardware, so compiled shaders can be shipped with the game.

    Steam will eventually download a shader cache specific to your hardware, otherwise if you jump straight into a new game on PC, the game is going to have to compile them during gameplay, or make you wait 30 minutes to play while they compile (similar to how a lot of emulators for modern consoles like the Switch make you wait). And since nobody wants to launch a newly downloaded game just to sit at a boring 30 minute loading screen, they do their best on the fly.

    This isn’t about defending Fromsoft, they’re just another company trying to get your money. I’m just saying that’s how PCs work, and new games with complex shaders are probably pick being accused of having performance issues at launch than hitting players who are expecting to launch a game and play right away with a long loading screen (that a patent prevents them from putting a mini game on while you wait).

    • MentalEdge
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      5 months ago

      I know.

      But only games running dx12/Vulkan must compile shaders.

      The “normalcy” of sutters on linux is because dx7-11 games are running through vulkan, and those games were never coded to account for the way Vulkan works. Hence the shaders are compiled (by VKD3D/DXVK, not the game) during gameplay when first needed.

      Like I said, if games must compile shaders during gameplay, they should do so asynchronously in order to not impact frametimes. This only applies to titles actually coded with the intention of being run under dx12/vulkan. Elden Ring in particular straight up violates the dx12 spec.

      Compiling the shaders in advance also doesn’t take 30 minutes, and doesn’t require doing so for the entire game. Many games will only compile the shaders for the immediate area that a player is in. (Apex Legends in dx12 mode for example processes only the current map in rotation and lets you play when it’s done)

      Games that precompile shaders when running using Vulkan/dx12 have never made me wait longer than a few minutes at most, and only at first launch.

      There is no excuse.