【unity】关于技能释放shader.CreateGPUProgram造成卡顿,优化和定位方法。

关于优化方法,UWA这边有介绍

Unity移动端游戏性能优化简谱之 CPU耗时调优|单帧|动画|调用|unity|实例化_网易订阅

对此,我们可以将Shader通过ShaderVariantCollection收集要用到的变体并进行AssetBundle打包。在将该ShaderVariantCollection资源加载进内存后,通过在游戏前期场景调用ShaderVariantCollection.WarmUp来触发Shader.CreateGPUProgram,并将此SVC进行缓存,从而避免在游戏运行时触发此API的调用、避免局部的CPU高耗时。

然而即便是已经做过以上操作的项目也常会检测到运行时偶尔的该API耗时峰值,说明存在一些“漏网之鱼”。开发者可以结合Profiler的Timeline模式,选中触发调用Shader.CreateGPUProgram的帧来查看具体是哪些Shader触发了该API,可以参考。

 

 

对于漏网之鱼的定位,后来还介绍了一种方法,我实际了一下记录一下:

就是启用 LogShaderCompilation 功能:

  1. 打开 Unity 编辑器,并打开您的项目。
  2. 在菜单栏中选择 "Edit"(编辑)选项。
  3. 在下拉菜单中选择 "Project Settings"(项目设置)。
  4. 在 "Project Settings"(项目设置)窗口中,选择 "Graphics"(图形)选项卡。
  5. 在 "Graphics"(图形)选项卡中,找到 "Shader Loading"部分。将 "LogShaderCompilation"(当着色器编译时记录日志)选项勾选上。


打包在手机上运行后, 用logcat抓到日志

关键字 Compiled shader,  Debug级别的,如果你过滤了可能看不到。 

看一下日志能看到当时哪个shader 的什么Keywords触发了编译:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KubeSphere 在互联网医疗行业的应用实践

作者:宇轩辞白,运维研发工程师,目前专注于云原生、Kubernetes、容器、Linux、运维自动化等领域。 前言 2020 年我国互联网医疗企业迎来了“爆发元年”,越来越多居民在家隔离期间不方便去医院看诊,只好采取在线诊疗的手…

RK3568驱动指南|第五期-中断-

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

瑞芯微:基于RK3568的ocr识别

光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。亦即将图像中的文字进行识别,并以文本的形式返回。OCR的应用场景 卡片证件识别类:大陆、港澳…

如何通过AI视频智能分析技术,构建着装规范检测/工装穿戴检测系统?

众所周知,规范着装在很多场景中起着重要的作用。违规着装极易增加安全隐患,并且引发安全事故和质量问题,例如,在化工工厂中,倘若员工没有穿戴符合要求的特殊防护服和安全鞋,将有极大可能受到有害物质的侵害…

Doxygen在vs code配置

找到这个 就在这里面配置,如果要在原有的下面添加别忘了后面加个逗号,我在他前面加的所以我在上面加了个 //基础设置 “doxdocgen.c.triggerSequence”: “/", “doxdocgen.c.firstLine”: "/", “doxdocgen.c.commentPrefix”: &quo…

〔023〕Stable Diffusion 之 界面主题 篇

✨ 目录 🎈 系统内置主题🎈 kitchen Theme 主题🎈 Catppuccin Theme 主题🎈 Cozy Nest 主题🎈 系统内置主题 可以通过命令行修改主题,在 webui-user.bat 文件中 set COMMANDLINE_ARGS 参数后面添加 --theme dark 来设置深色主题当然,系统设置里面也自带了很多的主题…

C++ 异常处理学习笔记

一、使用情况 1、数组越界:包括数组索引小于0,或者大于数组长度 2、空指针 可以抛出(throw)各种类型的异常,catch的地方接收就可以

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了。 在互联网数据大爆炸的这几年,各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的…

for forin forof forEach map区别

一、总结 相同点:都是串行遍历。不同点: 二、for of循环 设计目的:遍历所有数据结构的统一方法。原理:会调用数据结构的Symbol.iterator方法。 只要数据结构定义了Symbol.iterator属性,就能用for of遍历它的成员。…

短剧解说小程序搭建,短剧解说小程序源码

短剧解说小程序搭建,短剧解说小程序源码 可定制开发小程序,H5,APP等系统 有需要可定制可出源码,这个是啥你懂的(VVVVVVVVVVV):二五四九七八九零五九 需要源码或搭建可看上面的数字信息 短剧解说小程序搭建 小程序使用…

自定义协议、序列化与反序列化

在编写TCP和UDP程序的时候,我们很自然的就使用了读取的函数对数据进行获取,对于UDP来说提供的是无连接的以数据报的形式进行传输,对于TCP来说是面向数据流的,在之前的程序中我们只是进行了读取的操作,但是并没有对读取…

修复Ripro主题扫码后空白或null或array的问题

WordPress Ripro主题使用的人比较多,绝大部分用的盗版主题,RiPro主题使用虎皮椒V3支付接口在使用弹窗支付的时候,微信或者支付宝扫码后出现null或array,会发生在ripro所有版本中。下面是修复方法: 打开ripro主题inc目…

安科瑞为工业能效提升行动计划提供EMS解决方案-安科瑞黄安南

摘要: 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》(工信部联节〔2022〕76号,以下简称《行动计划》),主要目的是为了提高工业领域能源利用效率&…

Hbase分布式集群部署

目录 一、环境说明 二、部署Hbase 2.1 解压Hbase 2.2 移动解压包 2.3 修改 hbase-env.sh文件 2.4 修改环境变量 2.5 修改hbase-site.xml文件 2.6 修改regionservers 文件 2.7 分发hbase 2.7.1 分发hbase包 2.7.2 分发环境配置 2.8 启动hbase服务 2.8.1 环境生效 …

Tungsten Fabric数据量过大问题处理初探

开源SDN系统Tungsten Fabric面临数据产生过多问题。 经排查,产生数据多出自analytics组件的Cassandra数据库()。很多分析数据会存储至Cassandra库,并持久化处理。 没有特殊调整的话,目录在 /var/lib/docker/volumes/analytics_database_an…

抗锯齿的线

抗锯齿的线 右下角的时候h是0,到顶部 h是1,然后中间y相距4个像素,那dy就是0.25 如果让h abs(fract(h - 0.5) - 0.5) 中间一行0.5,第一行 第三行都是0.25,两端都是0 根据插值来看 这里是 如果用h/dy 那么第一行以上&#xff0…

【ROS入门】创建工作空间与功能包

文章结构 工作空间文件结构创建工作空间流程创建工作空间编译工作空间设置环境变量/创建功能包创建功能包编译功能包 检查环境变量 工作空间文件结构 工作空间(workspace)是一个存放工程开发相关文件的文件夹,类似于在windows中使用IDE创建的工程。主要分为以下四个…

【element-ui】form表单动态修改rules校验项

在项目开发过程中,该页面有暂存和提交两个按钮,其中暂存和提交必填项校验不一样,此时需要动态增减必填项校验 ,解决方法如下: 增加rules校验项 this.$set(this.formRules,name,[{required:true,message:请输入名称,t…

Layui快速入门之第十三节 日期与时间选择器

目录 一:基本用法 API 渲染 属性 弹出提示 2.8 获取实例 2.8 解除实例绑定 2.8 关闭日期面板 2.7 获取某月的最后一天 二:常规用法 三:多类型选择器 四:范围选择 五:直接静态显示 六:更多功能…

断点测试怎么做?一文教你用Charles 工具做好接口测试!

在测试工作过程中,我们经常会在程序的某一行或者某一环节设置断点,在程序请求的过程中,修改断点处的参数、请求或者响应,借此定位问题,这就是所谓的断点测试。这类断点测试主要用于接口测试。 断点测试可以通过查看接…