问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

UE Shader 优化(Optimizing Shaders in Unreal Engine)

发布网友 发布时间:2024-09-26 23:15

我来回答

1个回答

热心网友 时间:2024-09-29 18:31

记录来自 @BlueshiftIntLtd 的CEO & 技术总监 & 首席技术美术 @calvinatorr Luna的blog:“Optimizing Shaders in Unreal Engine”

原文链接: Optimizing Shaders in Unreal Engine – Luna's Technical Art Blog

Instruction CountsStatic Parameters

静态参数,这些参数能在材质实例中修改,但是会 dirty the permutation,导致生成新的shader,增加shader数量,占用更多磁盘空间。

Usage Flags

每勾选一个Usage,都会生成新的shader,上面我们得知,勾选Used with Skeletal Mesh后,新的shader VS Instrution counts 比 Static Mesh 会高出100多(但是有一些shader是共享的)

解决办法:取消勾选 Automatically Set Usage in Editor ,手动指定材质需要被渲染在什么类型的 Primitive上 对于拥有许多材质实例的父类材质而言,建议关闭自动设置Usgae(如果意外设置到了 Used with Skeletal Mesh,会增加非常多 Shader Permutaitons)

GPU Cycles

GPU 时钟周期指的是完成一次高低电平变化需要的时间,对于不同时钟频率的GPU,数值不同 例如: 3060 Base Clock - 1.41GHz 4090 Base Clock - 2.23GHz 2.23GHz 代表每秒进行22.3亿次操作,因此4090的时钟周期就等于 1/2.23GHz,约等于0.44纳秒,时钟周期不是一个固定的数字,因此我们使用 Cycles 来衡量指令的开销,而不是具体的时间。

Distance Squared

length() 需要先平方再开方,一个length() 要消耗28个时钟周期

在条件允许的情况下(如比较距离大小),更多地使用 距离平方,而不是距离。我们可以通过 dot(x, x) 轻松得到距离的平方

Constant Optimization(Folding)

编译器会在编译阶段帮我们对一些固定常量(变量不行)进行预计算,从而减少编译后 shader 的指令数

Luna:“I’ve seen a note about how this doesn’t work inside custom nodes, but this is actually untrue because the optimzation occurs when the assembly is proced and thus won’t necessarily be reflected by the stats tab in Unreal.”

Sampling Textures – Optimising for Pre-Fetches

根据我查到的资料来看,该情况只会发生在老式硬件上(OpenGL ES 2 & Earlyer), OpenGL ES3 不会受影响,但是将计算移到 VS 中还是有好处的 "Dependent texture reads are supported at no performance cost on OpenGL ES 3.0–capable hardware" Apple OpenGL ES Doc

以上两种情况都会导致 GPU 无法进行 Pre fetch(据说 Modern hardware)解决方案 为了避免产生 Dependent texture fetch,也就是修改UV,我们可以将对 UV 的计算从PS 移到 VS中进行

都能将计算移到 VS中进行,并且 VS 中的计算次数在通常情况下都是远小于 PS,如果可以,尽量将计算放在 VS 中进行(注意,非线性计算可能会产生 artifacts,具体程度根据mesh的顶点数来决定)

UE Docs 说这是 Mobile specific
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
索尼爱立信Lt22i的狂野飙车的数据包该怎么删掉 小熊的音 飙风二重唱我怎么找不到 河南飙风信息科技有限公司怎么样 散粉和粉饼哪个定妆效果好 新手适合用散粉还是粉饼 手机端PokemonHome ...宝剑出匣耀光明 在匣全然不惹尘 今得贵人携出现 有威有势众人钦 奚惆怅而独悲的上一句是什么 贵州茂兰国家级自然保护区-荷花池地址在哪里? 请问一下拍出来的视频偏绿色,怎么用prcs6调回来呢? Premiere怎么去色处理-Premiere去色处理教程 <<爱死了>>英文歌曲 Unreal 骨骼相关数据结构及动画更新流程详解 是一首英文歌曲,不知道有没有别的名字,中文名叫“爱死了 Unreal 虚幻 Actor Sequence 爱死了你用英文怎么说 基于Unity的软光栅实现(1):框架搭建和矩阵构造 UnrealEngine4 VR 开发 女生不想找对象,不喜欢男的呀,怎么办呀??没谈过恋爱很恐男,一点都不喜... 他老公没生育,他妻子叫我代他老公,现在怀了该怎么办,怀孕后要负责吗 160平米的房子用多大壁挂炉合适 我国应当通过什么方式确保宪法对受教育权的保护 国家如何保障未成年人受教育的权利? 中国的春节的由来 春节源自什么时候 有一个网络平台,现在想让外网能访问,平台地址是192.168.1.10,局域... 日记账借贷填什么意思 日记账借方和贷方是什么意思 银行日记账的借贷表示什么 癖好是什么意思说? 癖好 是什么意思? ...谷丙转氨酶96,其他都在正常范围值内,乙肝dna定量9.0 e2,但报告单... 女声开头得英文歌,后面是男生说唱得,特别好听,偶然听到的,爱死了! IPAD 2 突然所有按键失灵 包括 开机 home 音量 锁屏 反正可以按的 都没... 电脑如何查看网卡型号? 平板可以用word吗 60年代的经典老歌都有哪些? excel2007中为什么复制过来的表格没有格式? 常用电商平台有哪些 古代宫廷女官是怎么选拔的?她们能嫁给别的男人吗? 废水中的硫酸钠和氯化钠需要处理吗?有没什么相关的官方文件可以... 小分子肽有哪些品牌 假如有个男在几个人面前突然问个女的,你喜欢我吗?那女的该怎么回答? 男生兄弟当着男生面和女生说你知道他喜欢谁吗?女生说不知道弟就说他喜 ... 哪家小分子活性肽生产厂家口碑好? 在古代文学中,诗词的艺术特色与艺术成就到底有哪些区别? mpg格式转换为mp4格式?mpg转MP4的转换方法 银行承兑汇票贴现如何做会计分录 银行承兑汇票的贴现条件与贴现利息 承兑汇票贴现账务处理怎么做 承兑汇票贴现主要特点 ...后三次赴考未中。"这句话中的"廪"念什么啊?什么意思? 仔猪得了水肿病怎么治疗? 正大平安药业治疗水肿病有啥特效药