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:
- How are you managing shader pre-compilation in Unity 6 given the current PSO bugs?
- Are there ways to optimize SVCs to prevent massive load times while still actually stopping the stutters?
- 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!