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 好用很多。
- Amplify Shader Editor 生成的是明文 Shader 文件,能够自行批改调整局部不合理的生成;Shader Graph 也能看到他生成的 Shader,然而设计上 Unity 尽量心愿黑盒,不想让你看到。
- Amplify Shader Editor 能够几条管线相互切,Shader Graph 只能在 URP 下应用。
- Amplify Shader Editor 兼容所有 Shader Graph 的节点和参数。
- Shader Graph 界面比 Amplify Shader Editor 难看,品控比拟好,小 bug 没 Amplify Shader Editor 多。
- 每一步计算的节点后果,Shader Graph 能预览根本所有的,Amplify Shader Editor 如果是本人定义的管线全局参数以及有些内置的,不太好预览。
- 连连看这种生成的 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 的注意事项:
- 须要是同一个 Shader、同一个变体,能够是不同的材质球,我的项目须要应用自定义渲染管线,Shader 代码必须兼容 SRP Batcher。
- SRP Batcher 不反对 MaterialPropertyBlock。
参考《应用 MaterialPropertyBlock 来替换 Material 属性操作》。- 参加 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(原群已满员)