关于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耗时较高的问题相关推荐
- 统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录
1. 背景 多个业务线的应用出现LongGC告警 最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc). 2. 知识回顾 2.1 JVM堆内存划分 新生代(Youn ...
- java耗时操作阻塞_spring boot高并发下耗时操作的实现方法
高并发下的耗时操作 高并发下,就是请求在一个时间点比较多时,很多写的请求打过来时,你的服务器承受很大的压力,当你的一个请求处理时间长时,这些请求将会把你的服务器线程耗尽,即你的主线程池里的线程将不会再 ...
- 这样学Shader可以少走几年弯路,看完我信了……
推荐理由: 你有没有感觉到,看过很多的Shader教程,还是无法上手. 看到一个特效,连思路都没有,只能拿别人做好的Shader干点调参数的活. 我看了麒麟子的这篇教程才知道,原来连很多概念都没弄清楚 ...
- 10000字详解,炫酷的3D特效Shader是如何炼成的
一.花花世界,从本文开始 本文真正的标题为:<Cocos Shader入门基础五:是纹理给了你这个花花世界> 不瞒大家说,终于要续写这个系列了,麒麟子想想都激动. 时光飞逝,离上一篇文章 ...
- PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 背景 进程模型数据库,需要为每个会话指派独立的进程与之服务,在连接数非常多,且大都是活跃连接时,进程调度浪费或引入的开 ...
- java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决
tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题. 一.现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是 ...
- 统计各个函数的耗时_Prometheus 常用函数 histogram_quantile 的若干“反直觉”问题...
作者:disksing histogram_quantile 是 Prometheus 特别常用的一个函数,比如经常把某个服务的 P99 响应时间来衡量服务质量.不过它到底是什么意思很难解释得清,特别 ...
- linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高
tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...
- java ygc 频繁_jvm之判断ygc耗时和频率
Step1.找出所查java应用的进程编号 jps -mlv | grep 应用名称 # 或者 ps -ef | grep 应用名称 20848 com.lqz.test.Main -Dprogram ...
最新文章
- PHP扩展 Mongo 与 MongoDB
- 医疗行业的AI应用,要避免“垃圾进、垃圾出”
- oracle12c安装卡住_windows上安装oracle 12c到69%时卡住不动解决方案
- mysql 设置 table name 表名不区分大小写
- CodeForces - 1328D Carousel(构造+贪心)
- 进制转换问题---例如把26进制转为10进制
- SQLSERVER查看阻塞和CPU占用的会话,存储过程执行性能排行
- vscode配置Git管理工具GitLens
- 程序猿生存指南-15 领导视察
- unity迷你太空射击游戏截图
- Leetcode刷题之二叉搜索树、平衡二叉搜索树3
- 一个老程序员在情人节对中国软件业的致言!(转)
- 查看win10电脑电池损耗
- 古有穷书生街中弄笔,今有弄潮儿网上卖字
- 11步,教你创建深度学习聊天机器人
- kali中rarcrack爆破rar压缩包密码
- Socket 和 ServerSocket
- 深度学习之卷积神经网络经典网络LeNet-5简介
- XX健康:预约管理-预约设置日历插件文件简单下载Excel文件解析Excel表数据批量导入
- 科研中提高效率的软件网站
热门文章
- Leaflet中使用leaflet-echarts插件实现Echarts的Migration迁徙图
- Android中使用Canvas和Paint绘制一个安卓机器人
- Maven导入或新建项目时更改项目jdk版本
- Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换
- mysql bundle.tar_linux 下安装mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar
- mysql 服务器优化_如何对MySQL服务器进行调优
- 关于 To B,我欠粉丝们一个热搜
- 70 周岁快乐 | 盛世华诞,每一刻都值得铭记
- 精益数据分析 | 你孜孜追求的“增长”可能只是自嗨
- js 小数点 精准算法