头图

Shader Graph和Amplify Shader Editor有哪些区别

1)Shader Graph和Amplify Shader Editor有哪些区别
​2)Canvas AdditionalShaderChannels设置无效
3)IL2CPP打包速率问题
4)SRP是否还需要图集


这是第290篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Shader

Q:请教各位,Unity自带的Shader Graph或Amplify Shader Editor,在使用和生成的Shader性能问题上,除了Amplify Shader Editor目前自带Node功能的丰富度以及社区资源丰富度应该更胜一筹外,两者还有多少区别?

项目背景:新项目(手游),基于Unity URP的二次元NPR+PBR,3D场景+3D角色。

A1:参考如下:
体验:Amplify Shader Editor优
使用:Amplify Shader Editor优
通用程度:Amplify Shader Editor优
兼容性:Shader Graph优
未来发展:Shader Graph优<br/>
结论:两个都用并不冲突,但是我倾向于优先使用Shader Graph慢慢替代Amplify Shader Editor。

感谢大崔-287520@UWA问答社区提供了回答

A2:实际体验上Amplify Shader Editor会比Shader Graph好用很多。

  1. Amplify Shader Editor生成的是明文Shader文件,可以自行修改调整部分不合理的生成;Shader Graph也能看到他生成的Shader,但是设计上Unity尽量希望黑盒,不想让你看到。
  2. Amplify Shader Editor可以几条管线互相切,Shader Graph只能在URP下使用。
  3. Amplify Shader Editor兼容所有Shader Graph的节点和参数。
  4. Shader Graph界面比Amplify Shader Editor好看,品控比较好,小bug没Amplify Shader Editor多。
  5. 每一步计算的节点结果,Shader Graph能预览基本所有的,Amplify Shader Editor如果是自己定义的管线全局参数以及有些内置的,不太好预览。
  6. 连连看这种生成的Shader质量都很差,基本需要效率的都得翻新一遍。

常见的优化,比如c=tex2d(uv) 紧接着使用c,是需要等待GPU操作显存回来的时间消耗。
这种一般会插入其他计算,抵消这个消耗。

比如:

c = tex2d(uv)
//do other thing
c = c*c;

目前两种都是按节点逻辑生成,一个uv节点就会生成tex2d(uv)和后续计算的逻辑。
没有整体做语义分析的优化。

感谢uwa菜鸡奶泡泡.@UWA问答社区提供了回答

UGUI

Q:在UI中使用到的Shader中用到了uv1和uv2通道,在Canvas AdditionalShaderChannels中选择添加了对应通道后没有效果,相同代码资源在2019.4.26f1c1正确显示,请教大家是否是版本问题还是需要特殊设置处理?

Unity版本:2018.4.17f1

A:在2018.4.23f1版本上参考这个链接的Outline效果进行了测试,在小米9真机上没有发现问题。

可以参考一下《基于Shader实现的UGUI描边解决方案》

PS:看了一下2018.4.18到2018.4.23之间的所有的Release Note,没有发现相关问题的修复。这个文章是使用Shader来实现Outline的,感觉效果挺不错的。

感谢Xuan@UWA问答社区提供了回答

Build

Q:最近在使用12700f的丐版电脑,发现打包(IL2CPP)速度比5950x快了20%(472s对比621s,同工程)。

不知道大家有没有对比过十二代Intel,如果真的这么好,新电脑可以全面十二代Intel加b660了。

补充:内存都足够,没有用到页面缓存。

A:按照官方的说法,IL2CPP在2020.2.0b2之前都是单线程的,AMD的CPU一般是多线程强,Intel的单线程强,所以可以根据Unity版本选择最佳的CPU类型。<br/>
官方说法:
https://forum.unity.com/threa...

感谢张迪@UWA问答社区提供了回答

Rendering

Q:查看了官网的描述:SRP Batch会批处理GPU命令,将Draw Call降低下来。

经过我们反复的FrameDebug测试,即使在不同的材质、不同的贴图和不同的颜色,但只要Shader以及Shader变体是同一个则可以合并批次。

那么我们是否还有必要打包图集?

A:使用SPR Batcher的注意事项:

  1. 需要是同一个Shader、同一个变体,可以是不同的材质球,项目需要使用自定义渲染管线,Shader代码必须兼容SRP Batcher。
  2. SRP Batcher不支持MaterialPropertyBlock。
    参考《使用MaterialPropertyBlock来替换Material属性操作》
  3. 参与SRP Batcher的渲染物体必须是一个Mesh或者Skinned Mesh。所以,粒子和UI上用到的纹理还是需要打包图集。

感谢Faust@UWA问答社区提供了回答

封面图来源于:Command Buffer Refraction
使用Amplify Shader Editor创建的,使用了Command Buffers的模糊折射着色器。
适用于表现玻璃材质,无需使用Amplify Shader Editor就可以运行工程。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

UWA官网:[链接]

27 声望
12 粉丝
0 条评论
推荐阅读
MeshRenderer如何使用GPU Instancing的材质球正常合批
1)MeshRenderer如何使用GPU Instancing的材质球正常合批​2)关于AssetBundle加密,如何重新实现LoadFromFile接口3)移动端开放世界类型游戏中选择动态阴影技术以及优化方案组合4)Unity导出Gradle工程,如何防止...

侑虎科技阅读 54

封面图
使用Selector-UI搭建Selector-UI-APP
在 Ponmenty OS 中,我们通过 nty install selector-ui-3 指令安装Selector-UI。在安装过程中,可能会提示

Kysou阅读 634

封面图
如何从0开始搭建 Vue 组件库
组件设计是通过对功能及视觉表达中元素的拆解、归纳、重组,并基于可被复用的目的,形成规范化的组件,通过多维度组合来构建整个设计方案,將这些组件整理在一起,便形成组件库。本文我们主要讲述基于Vant CLI的...

京东云开发者1阅读 229

封面图
安卓包在真机上安装时的“风险提示”问题
1)安卓包在真机上安装时的“风险提示”问题​2)iOS下AssetBundle的加载疑问3)特效用粒子系统,模拟器里出现花屏问题4)IL2CPP编译的Protobuf,反射类运行时报空

侑虎科技阅读 463

封面图
NutUI 4.0 正式发布!
作者: 京东零售 NutUINutUI 4.0 Github 地址:github.com/jdf2e/nutuiNutUI 4.0 官网:nutui.jd.com前言技术日异月新、发展创新、持续的迭代已成为常态。NutUI 虽经过 v1.0、v2.0、v3.0 三次技术蜕变,仍面临很多...

京东云开发者阅读 435

封面图
2022 倒带 - NutUI
2022 是 NutUI 在技术长廊中探索和成长的第四个年头,悄然度过了自己的“孩提“时光。NutUI 也从单一 Vue 技术栈的组件库逐渐成长为适配多端的多技术栈的组件库,升级设计规范「京东APP视觉」「京东科技视觉」,适...

京东云开发者阅读 433

封面图
2022年度大赏 | UWA问答精选
UWA每周推送的知识型栏目《厚积薄发 | 技术分享》已经伴随大家走过了304个工作周。精选了2022年十大精彩问答分享给大家,期待2022年UWA问答继续有您的陪伴。

侑虎科技阅读 391

封面图

UWA官网:[链接]

27 声望
12 粉丝
宣传栏