乐趣区

关于shader: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(原群已满员)

退出移动版