这通常是Windows上的DirectX的问题。我怀疑你是否在Linux或Mac上尝试相同的页面或启动Chrome --use-angle=gl 在Windows上你会看到时间下降。
--use-angle=gl
作为一个例子,你可以 尝试这个荒谬的着色器 。在OpenGL上编译大约需要3秒,但在DirectX中,浏览器可能会认为它耗时太长并重置了GPU进程。
浏览器无法解决这个问题,因为它主要是在微软的法庭上。微软为原生游戏设计了DirectX。原生游戏可以脱机编译着色器。 Web无法做到这一点,因为它们是传递给驱动程序的不透明二进制文件,并且可能充满漏洞。
已经讨论过向WebGL添加异步着色器编译功能。着色器仍然需要40秒才能编译它,只是不会阻止页面。此时虽然不太可能发生。
我唯一可以建议的是简化着色器。如果你有循环可能打开它们,看看是否有帮助。