欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

关于shader.createGPUProgram耗时较高的问题

发布时间:2025/3/18 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 关于shader.createGPUProgram耗时较高的问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

UNITY对于shader的加载策略是:只有第一次在相机中出现时才会去创建相应的shader,测试用例如下:

1,创建测试场景 testscene

2,在testscene中创建一个 cube,为它创建一个材质 matx,使用一个shaderx

3,确保cube不在相机视野内

4,添加一个按钮 btnUseShader,添加脚本如下,

public class btnUseShader : MonoBehaviour {public GameObject cube;void Start(){
//=============================warm start===============================/*
var sv = Resources.Load<ShaderVariantCollection>("warmups");if (sv != null){sv.WarmUp();Debug.LogError("load success ========================================");}*/
//=============================warm end================================

      GetComponent<Button>().onClick.AddListener(() => { //当点击按钮时将cube移到相机视野内,用profiler观察有线程的cpu波峰cube.transform.position = Vector3.zero;});} }

5,【不使用shader预热】:打安卓包测试,运行游戏,ADB方式连接unity profiler,点击按钮的一瞬间发现主线程cpu有一个明显的巨大波峰,点击查看正是shader.createGPUProgram

6,【使用shader预热】:将 warm start和 warm end之间的代码打开,并在Resources目录下创建一个名为warmups的shaderVarriantCollection,添加第2步中创建的 shaderx到其中,

再次打包测试,运行游戏,连接profiler,点击按钮时CPU不再有明显的波动,说明已没有了shader.creategpuprogram消耗

总结

以上是生活随笔为你收集整理的关于shader.createGPUProgram耗时较高的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。