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耗时较高的问题相关推荐

  1. 统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录

    1. 背景 多个业务线的应用出现LongGC告警 最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc). 2. 知识回顾 2.1 JVM堆内存划分 新生代(Youn ...

  2. java耗时操作阻塞_spring boot高并发下耗时操作的实现方法

    高并发下的耗时操作 高并发下,就是请求在一个时间点比较多时,很多写的请求打过来时,你的服务器承受很大的压力,当你的一个请求处理时间长时,这些请求将会把你的服务器线程耗尽,即你的主线程池里的线程将不会再 ...

  3. 这样学Shader可以少走几年弯路,看完我信了……

    推荐理由: 你有没有感觉到,看过很多的Shader教程,还是无法上手. 看到一个特效,连思路都没有,只能拿别人做好的Shader干点调参数的活. 我看了麒麟子的这篇教程才知道,原来连很多概念都没弄清楚 ...

  4. 10000字详解,炫酷的3D特效Shader是如何炼成的

    一.花花世界,从本文开始 本文真正的标题为:<Cocos Shader入门基础五:是纹理给了你这个花花世界> 不瞒大家说,终于要续写这个系列了,麒麟子想想都激动. 时光飞逝,离上一篇文章 ...

  5. PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 背景 进程模型数据库,需要为每个会话指派独立的进程与之服务,在连接数非常多,且大都是活跃连接时,进程调度浪费或引入的开 ...

  6. java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题. 一.现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是 ...

  7. 统计各个函数的耗时_Prometheus 常用函数 histogram_quantile 的若干“反直觉”问题...

    作者:disksing histogram_quantile 是 Prometheus 特别常用的一个函数,比如经常把某个服务的 P99 响应时间来衡量服务质量.不过它到底是什么意思很难解释得清,特别 ...

  8. linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...

  9. java ygc 频繁_jvm之判断ygc耗时和频率

    Step1.找出所查java应用的进程编号 jps -mlv | grep 应用名称 # 或者 ps -ef | grep 应用名称 20848 com.lqz.test.Main -Dprogram ...

最新文章

  1. PHP扩展 Mongo 与 MongoDB
  2. 医疗行业的AI应用,要避免“垃圾进、垃圾出”
  3. oracle12c安装卡住_windows上安装oracle 12c到69%时卡住不动解决方案
  4. mysql 设置 table name 表名不区分大小写
  5. CodeForces - 1328D Carousel(构造+贪心)
  6. 进制转换问题---例如把26进制转为10进制
  7. SQLSERVER查看阻塞和CPU占用的会话,存储过程执行性能排行
  8. vscode配置Git管理工具GitLens
  9. 程序猿生存指南-15 领导视察
  10. unity迷你太空射击游戏截图
  11. Leetcode刷题之二叉搜索树、平衡二叉搜索树3
  12. 一个老程序员在情人节对中国软件业的致言!(转)
  13. 查看win10电脑电池损耗
  14. 古有穷书生街中弄笔,今有弄潮儿网上卖字
  15. 11步,教你创建深度学习聊天机器人
  16. kali中rarcrack爆破rar压缩包密码
  17. Socket 和 ServerSocket
  18. 深度学习之卷积神经网络经典网络LeNet-5简介
  19. XX健康:预约管理-预约设置日历插件文件简单下载Excel文件解析Excel表数据批量导入
  20. 科研中提高效率的软件网站

热门文章

  1. Leaflet中使用leaflet-echarts插件实现Echarts的Migration迁徙图
  2. Android中使用Canvas和Paint绘制一个安卓机器人
  3. Maven导入或新建项目时更改项目jdk版本
  4. Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换
  5. mysql bundle.tar_linux 下安装mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar
  6. mysql 服务器优化_如何对MySQL服务器进行调优
  7. 关于 To B,我欠粉丝们一个热搜
  8. 70 周岁快乐 | 盛世华诞,每一刻都值得铭记
  9. 精益数据分析 | 你孜孜追求的“增长”可能只是自嗨
  10. js 小数点 精准算法