Digital Foundry Article Technical Discussion [2025]

GOWR, at least according to Jetpack, compiles every possible shader - no QA playtesters gathering up PSO's. I'm wondering if this is so thorough, why isn't everyone doing it? GOWR just has a more manageable amount of shaders whereas with other games this would be a 30 minute wait? Dunno.
Yes, exactly this.

It's actually unbelievable how "console like" in consistency Ragnarok is on PC. It's just pristinely smooth comparatively to most games. It feels like there's no edge cases here.. it just works.

Give a player the damn option to pre-compile EVERYTHING possible. Or skip it if they want. Win/Win.
 
TBH I've never understood why there are so many shaders. Surely a handful cover most of the materials you actually want and parameters adjust their look?

Isn’t it because every parameter value creates a new permutation that has to be pre-compiled? Imagine if CPUs worked this way. Sheesh.
 
GOWR, at least according to Jetpack, compiles every possible shader - no QA playtesters gathering up PSO's. I'm wondering if this is so thorough, why isn't everyone doing it? GOWR just has a more manageable amount of shaders whereas with other games this would be a 30 minute wait? Dunno.
I think they did both.

Very early on we decided not to just have QA play the game and accumulate PSOs that way, then ship some pre-known set and hope in the wild that players don't look off into a corner. We did the full build offline and created the PSOs offline, so all of the data is known beforehand in the pipeline for us, and it took us a substantial amount of time to get that right.

Shader compilation stutters seem like a problem that can be fixed rather easily if proper care is given to that step. Maybe not fully fixed, but it can be minimized enough not to be intrusive. It just baffles me that you start the game, see huge frame time spikes at the start, and the developer either didn't catch that or maybe didn't bother. Sure, it sounds like a lengthy process, but the experience is so dramatically improved that it should be a priority.
 
Last edited:
Isn’t it because every parameter value creates a new permutation that has to be pre-compiled? Imagine if CPUs worked this way. Sheesh.
Not exactly -- there are much worse performance tradeoffs for branching, so (particularly older) shaders are heavily annotated to create new permutations that can be organized and dispatched together rather than one big shader with all of the code. We're moving away from this to an extent, but there are still performance tradeoffs and authoring challenges. (Sometimes when you guys post a "bad" gpu occupancy graph of a game with less stutters you're probably looking at the other side of this tradeoff)
 
Back
Top