美文网首页
Shader Graph和Amplify Shader Edit

Shader Graph和Amplify Shader Edit

作者: 侑虎科技UWA | 来源:发表于2022-03-27 11:15 被阅读0次

    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优

    结论:两个都用并不冲突,但是我倾向于优先使用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操作显存回来的时间消耗。

    这种一般会插入其他计算,抵消这个消耗。

    比如:

    目前两种都是按节点逻辑生成,一个uv节点就会生成tex2d(uv)和后续计算的逻辑。

    没有整体做语义分析的优化。

    感谢uwa菜鸡奶泡泡.@UWA问答社区提供了回答,欢迎大家转至社区交流:

    https://answer.uwa4d.com/question/620c9123e7172c2775ea8f00

    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问答社区提供了回答,欢迎大家转至社区交流:

    https://answer.uwa4d.com/question/6228644a80139e0c1f1f661a

    Build

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

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

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

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

    官方说法:

    https://forum.unity.com/threads/il2cpp-player-build-time-improvement-coming-to-2020-2-0b2.963614/

    感谢张迪@UWA问答社区提供了回答,欢迎大家转至社区交流:

    https://answer.uwa4d.com/question/6228b4b280139e0c1f1fdc90

    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问答社区提供了回答,欢迎大家转至社区交流:

    https://answer.uwa4d.com/question/622ac7a780139e0c1f22cf03

    封面图来源于: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(原群已满员)

    相关文章

      网友评论

          本文标题:Shader Graph和Amplify Shader Edit

          本文链接:https://www.haomeiwen.com/subject/odcpjrtx.html