Since the recent update to Chrome v115 PlayCanvas performance significantly deteriorated. Tested on Chrome (v115), Edge (v116), and Opera (updated yesterday to v115, before that v114 worked smoothly). Now I’m getting a big freeze on game start (can take up to 40+ seconds on bigger scenes) and noticeable stutters/freezes whenever new objects are rendered (like when moving the camera, enabling objects, or running update() on materials, so it’s probably related to shader compilation).
For sanity check, I’ve imported a simplified scene into a third-person template to rule out any custom scripts I use, and here is the result:
This affects both builds and editor performance, on bigger projects that makes PlayCanvas borderline unusable.
From the video I assume it’s shader compilation taking longer on Chrome v115. @mvaligursky any idea?
Hmm interesting. I was about to update to 115 on both Mac and Windows 10, so I tested before and after and it felt similar enough, hard to notice a difference (there could be some, not sure).
I captured loading on 115 on Windows (Mac is always way faster to compile shaders), and I see this:
So about 4s of shader compilation during loading including when I spin all the way around. Is this what you’re seeing or is your experience worse?
pc.Tracing.set(pc.TRACEID_SHADER_COMPILE, true); to some of your scripts at init time to get some actual numbers perhaps too.
This is what I get on different projects (the top one is the demo project shared above, other two are some of the bigger scenes I have). So ~4 second difference in the demo scene and about 40 in more complex ones. That is reflected in the editor loading as well.
And forgot to mention it in the previous post, but yes, on Mac everything is fast, no issues there.
@Leonidas - are you observing similar behaviour on your projects?
It seems we do, I haven’t tested extensively but it’s pretty obvious the following build seems to lag quite a lot now on Chrome 115 / Windows:
@LeXXik did you encounter any shader compilations issues lately?
Yeah, it is slow. I feel like it was faster before, but I can’t tell exactly, as I didn’t do any comparison. We don’t have complex models like OP, so we don’t get 40 seconds, but we do see several seconds of compilation. I think we are getting about 700-800 ms per shader compilation currently.
Here is on a power machine:
Yeah a definite regression on both Chrome and Edge 115. Testing by using our shader-compile example (in debug build, which has shader compilation tracing enabled).
From my notes, it used to be around 2.5s to compile all shaders, now it is 20s.
Note that even the compilation performance without clustered lighting seems to be affected. The mentioned example with clustered used to take 1.4s (based on my notes) and now takes 3.3s.
We are also seeing performance degradation and it takes quite long time to load the entire scene.
Chromium people are investigating - we confirmed a change on their side that is causing it … now they need to understand what is going on there.
The issue is marked as fixed, so we just need to wait for it to make it to a Chrome release. I’ll share the details as I find out.
Pass the required state as a driver uniform instead of triggering fragment shader recompilation at draw calls.
Do you know the date for the Chrome release? we’re also waiting since our games are taking an exceptional time to load (we pre-compile 100 shaders before launching the game)
They’re merging it to 116 which is due in a week.
After updating Chrome to latest 116 release, the shaders compile fast again