在Unity 3D中,shader是何时编译的,在何时加载入显存中的

大哥们在线求帮请分析下,在Unity 3D中,shader是何时编译的,在何时加载入显存中的
最新回答
伤口撒把盐

2024-09-24 01:45:42

Editor中:修改shader并保存时立即编译。

Runtime下,无论哪个平台,都是在进入场景时加载shader object内容到内存,但是首次实际调用渲染时才编译,编译完成之后会cache下来。

有两种优化方法:

1. 调用Shader.WarmupAllShaders(),自动编译该场景中用到的所有shader。该方法在Unity5中已经废弃。

2. 在项目设置的GraphicsSettings中,可以导出ShaderVariantCollection,并在Preloaded Shader中导入,这样的话就可以在载入场景时一并编译需要预加载的shader,这样的优化在移动平台上用得比较多。