u/MGArslanX

Unity Shader Warmup Solutions: Solving Stutters and Long Load Times in Unity 6

Hi everyone,

I’m looking for advice on Unity shader warmup solutions for an open-world survival craft co-op game currently in development on Unity 6 (6.3.11).

We are facing a double-edged sword regarding performance: massive FPS drops (stutters) occur whenever new shaders or areas are encountered, but our attempts to pre-warm them have introduced new issues.

The problems we are facing:

  • Shader Variant Collections (SVC): This has been our biggest headache. Not only do they fail to prevent the "compilation hitching" during gameplay, but they have also bloated our loading screens to over 10 minutes. This is unacceptable for a co-op experience.
  • Pipeline State Objects (PSOs): We are aware this is the modern standard, but there is a known issue in Unity 6.3.11 that makes PSOs non-functional for our current setup.
  • The "Camera Method": We attempted to use a secondary camera to force-render variants off-screen during a loading phase, but the stutters still persist when those shaders finally enter the main view.

The Goal: I need a way to effectively warm up shaders to prevent stutters without forcing players into a 10-minute loading screen.

Questions for the community:

  1. How are you managing shader pre-compilation in Unity 6 given the current PSO bugs?
  2. Are there ways to optimize SVCs to prevent massive load times while still actually stopping the stutters?
  3. Are there any custom-built or third-party solutions that handle asynchronous shader compilation more effectively for open-world environments?

Any insights or technical workarounds would be a huge help. Thanks!

reddit.com
u/MGArslanX — 1 day ago
▲ 22 r/Unity3d_help+4 crossposts

Unity Shader Warmup Solutions: Solving Stutters and Long Load Times in Unity 6

Hi everyone,

I’m looking for advice on Unity shader warmup solutions for our open-world survival craft co-op game, currently being developed in Unity 6 (6.3.11).

https://preview.redd.it/dr50mdccwp0h1.png?width=1920&format=png&auto=webp&s=f3a6c0fab5c0242e9604da99f3fd25dca530b403

We are currently stuck between a rock and a hard place regarding performance: we have massive FPS drops (stutters) when new shaders or areas are encountered, but our attempts to pre-warm them have caused even worse side effects.

The problems we are facing:

  • Shader Variant Collections (SVC): This is our biggest bottleneck. They fail to prevent the "compilation hitching" during gameplay, and worse, they have bloated our loading screens to over 10 minutes. Also SVC's are not fully compatible with modern graphic API's like DX12.
  • Pipeline State Objects (PSOs): While this is the intended modern solution, there is a known issue in Unity 6.3.11 that makes PSOs non-functional for our setup.
  • The "Camera Method": We tried force-rendering variants using a secondary camera during loading, but it doesn't seem to stop the stutters once those shaders appear in the main view.

The Goal:

I need a way to effectively warm up shaders to prevent stutters without forcing players into a 10-minute loading screen. In an open-world co-op setting, these hitches are making the game unplayable.

Questions for the community:

  1. How are you handling shader pre-compilation in Unity 6 given the current PSO bugs?
  2. Are there ways to optimize SVCs to reduce those 10-minute load times while still actually preventing stutters?
  3. Are there any custom-built or third-party solutions that handle asynchronous shader compilation more effectively for open-world environments?

You can check out the project here to see the scope we're working with:

Steam Link: https://store.steampowered.com/app/2354810/Elysium/

Any insights or technical workarounds would be a huge help. Thanks!

reddit.com
u/MGArslanX — 1 day ago