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 thingc = 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(原群已满员)