UE4 材质学习笔记04(着色器性能优化)

news2024/10/10 12:02:23

一.着色器性能优化

1.衡量着色器的性能

衡量着色器性能的主要方法有三个

第一个:可以使用场景的视图模式的优化视图模式的着色器复杂度

下面的滑条代表了着色器指令的复杂度

如果场景大部分是绿色的,说明着色器耗能低,反之白色则是很糟糕

这种使用性能视图的方法并不完美,因为它只会给出一个概况,让你知道哪个的着色器比其它的更耗能

第二个:检查着色器中执行的指令数量

在编辑器的底部写着Base pass shader: 135 instructions,,代表现在的shader的汇编指令数量是135

我们编写的节点首先会被编译成HLSL代码 ,然后被编译成汇编语言指令,然后会传递给驱动程序,然后传递给显卡

所以只要我们减少指令的数量就会使得着色器更高效的运作,但是这也不是一个完美的办法,

因为并不是所有指令在GPU上运行所需时间都相同 ,可能有的指令运行要1000ms,有的只需要200ms,这样着色器主要由第一个指令或者第二个指令组成的话性能就会差距很大。

第三个:将着色器应用到模型上,把模型放进场景里,然后在目标平台上运行。当然这是在项目完成的时候,因为不同的硬件的性能不同,每个着色器的行为也会由不同。但是当我们在构建着色器的时候,根据指令计数来判断是一个很好的办法。

总结:

2.优化着色器

1.Method #1

Get rid of anything you're not using,移除掉任何你没有使用的节点,或者是纹理采样的结果是一片黑色,或者说数学计算的结果一直是0,这些都是无用的消耗。所以移除掉任何用不到的节点。

2.Method #2

Refactor math formulas,重构你的数学计算,并使用不同的方法来获得相同的结果。

比如之前创建的环境混合着色器。

这个power节点是用来增加着色器的对比度的,并且如果缩小power的值为1,苔藓与岩石的分界线的位置也会改变。

现在我们碰巧知道power节点是比其它节点更耗能的。因此我想尝试用别的东西代替这个节点,同时也可以调整对比度,但是也不会改变分界线的位置。

我们使用了一个新的方法来做到和power类似的效果,用来改变对比度。新的方法通过将z值小于0.5的推向底端,大于0.5的推向顶端。但是新的方法只需要131条指令,相对于原来指令数少了4个,并且新的方法并不会 改变苔藓与岩石的分界线

虽然减少了四条指令可能看起来不多,但是如果让它覆盖整个屏幕或者如果由大量的着色器,只要删去一些指令,就可以在性能上节省一到两毫秒,就可以给玩家带来每秒几帧的更好性能

3.Method #3

"Pipelining"-combining components  into float4s to do less math

将分散的向量合并到一起,并且减少数学计算量。例如在之前的扭曲着色器中,

原来在使用噪声贴图扭曲uv的时候进行了两次乘法和两次加法运算,但是在下面优化后的方法就只有一次乘法和一次加法运算,这同样可以节省一些性能

4.Method #4

Texture channel packing

如果由多个纹理采样,并且它们使用同一个UV,如果可以将它们打包成一张纹理,那样可以节省很多性能。纹理采样在着色器的耗能是十分大的。

比如下面的这个例子,将AO,Specular,Roughness贴图合并到一张贴图了,这是一个非常大的优化,并且指令数也从102减少到了100条

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

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

相关文章

VS Code安装以及配置

安装 1. 下载安装 VScode官网 注意,这一步最好全部打勾 2. 设置默认terminal为cmd 3. 修改Run Code的配置 参考: https://blog.csdn.net/weixin_46474921/article/details/132841711

2024年诺贝尔物理学奖 机器学习与神经网络领域前景面面观 如何抉择

近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能…

【element-tiptap】如何增加一个扩展项,为文字渲染颜色?

源码地址: https://github.com/Leecason/element-tiptap 可以看到,当前这个页面的文字,都是黑色的(除了链接) 酱紫有些单调,我喜欢五颜六色的。那么这篇文章就来看下菜单项里面如何增加一个颜色的扩展&…

Anaconda保姆安装教程

步骤1:下载Anaconda安装包 访问官网: 进入Anaconda官网下载页面,官网会根据电脑的操作系统自动选择适合的操作系统安装程序。 尝试进入清华大学开源软件镜像站,选择想要的版本进行下载,通常下载速度较快。 本文以从…

OpenAI重磅发布交互界面canvas,让ChatGPT成为写作和编程利器

OpenAI 宣布推出类似 Anthropic 的 Artifacts 的应用 canvas,并称「这是一种使用 ChatGPT 写作和编程的新方式」。 在 Claude 中试过 Artifacts 的朋友都知道,这能极大提升 LLM 输出结果的表现力,其支持输出文本文件、代码、网页、SVG 等等。…

Windows11 24H2 64位专业精简版:告别卡顿,流畅运行!

今日,系统之家小编给您分享2024年最新发布的Windows11 24H2精简版系统下载,该版本系统采用微软官方Windows11 24H2 26100.2033 专业版离线制作,安全无毒,不符合硬件要求的电脑也能升级。本次更新修复了系统蓝屏、绿屏的安全问题&a…

【赵渝强老师】K8s中的有状态控制器StatefulSet

在K8s中,StatefulSets将Pod部署成有状态的应用程序。通过使用StatefulSets控制器,可以为Pod提供持久存储和持久的唯一性标识符。StatefulSets控制器与Deployment控制器不同的是,StatefulSets控制器为管理的Pod维护了一个有粘性的标识符。无论…

数据科学初学者都应该知道的 15 个基本统计概念

一、介绍 数据科学的核心是统计学,它已经存在了几个世纪,但在当今的数字时代仍然至关重要。为什么?因为基本的统计概念是数据分析的支柱,使我们能够理解每天生成的大量数据。这就像与数据对话,统计学可以帮助我们提出正…

【读书笔记·VLSI电路设计方法解密】问题7:什么是基于标准单元的专用集成电路 (ASIC) 设计方法论

标准单元方法论是一种基于预组装库单元的芯片设计方法。该库中包含的标准单元和宏单元(例如存储器、I/O、特殊功能单元、锁相环(PLLs)等)已经在预定的工艺节点中设计、布局并经过验证。这些单元经过完全表征,并在逻辑、时序、物理和电气模型方面进行了定义,并正确地打包在…

npm install报错一堆sass gyp ERR!

执行npm install ,出现一堆gyp含有sass错误的情况下。 解决办法: 首页可能是node版本问题,太高或者太低,也会导致npm install安装错误(不会自动生成node_modules文件),本次试验,刚开…

刷题 - 分治

面试经典 150 题 - 分治 148. 排序链表⭐️⭐️⭐️ - 快慢指针找中间节点 - 归并排序 伪代码: 将链表拆分成两半,返回右半边头节点(左半边头节点就是原始链表头节点)对左边进行排序并返回左边头节点对右边进行排序返回右边头节…

图片压缩怎么弄?压缩图片大小的多种方法介绍

图片压缩怎么弄?图片压缩技术正是为了解决这些问题而生。通过有效减少文件大小,我们可以在保持视觉质量的前提下,更加高效地管理和分享图片。这项技术不仅能帮助个人用户优化手机或电脑的存储,还对企业在处理大量图像资产时显得尤…

小米路由器R3Gv2安装openwrt记录

前言 小米路由器R3Gv2的硬件配置与小米路由器4A千兆版一致,但bootloader有所不同,因此openwrt的固件不要互刷。另外,R3Gv2和R3G、4A百兆版是不同的设备,切勿混淆。 硬件信息 OpenWrt参数页-Xiaomi MiWiFi 3G v2 CPU&#xff1a…

Springboot网上书城小程序—计算机毕业设计源码38707

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3系统开发的内容 1.4论文结构与章节安排 1.5小程序框架以及目录结构介绍 2 网上书城小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析…

Unity实现自定义图集(三)

以下内容是根据Unity 2020.1.0f1版本进行编写的   1、实现编辑器模式下进游戏前Pack全部自定义图集 同Unity的图集一样,Unity的编辑器模式会在进游戏前把全部的SpriteAtlas都打一次图集,如图: 我们也实现这样的效果。 首先需要获取全部的图集路径。因为目前使用的是以.…

chaos官方给的V-Ray材质优化器怎么样?

V-Ray材质优化器是一个为3ds Max设计的MAX脚本,它通过以下方式优化场景,提高渲染速度! V-Ray材质优化器安装包可找【成都渲染101云渲染,云渲码6666】提供! ​ 通过创建一个新的UV通道并使用平面映射算法展开场景对象。…

【学术会议征稿】第五届应用力学与机械工程国际学术会议(ICAMME 2024)

第五届应用力学与机械工程国际学术会议(ICAMME 2024) 2024 5th International Conference on Applied Mechanics and Mechanical Engineering 在全球技术快速发展的背景下,应用力学和机械工程作为推动现代工业创新的根基,持续展…

【新品发布】数字能源EMS管理再掀新篇章

致远电子EM系列工商业储能网关累计装机容量突破2GWh!聚焦数字综合能源应用,全新一代EM-800/EM-1000G发布,见证光储充时代的来临! 早在2008年,致远电子的工程师在为国内某新能源企业设计光伏通讯管理机方案时&#xff0…

使用宝塔快速搭建配置Openai api接口代理+502 Bad Gateway网关错误问题解决

本教程提供了一种简便快捷的方法,无需复杂步骤,极易操作,实现零代码、零部署的快速接入。 实现准备 1.服务器,这里使用阿里香港轻量服务器) 2. OpenAI官方的模型api key 3. 使用第三方系统或插件进行测试 关于第三方…