[Unity学习教程] Unity Shader Graph Ase三者分别有什么不一样的地方?

[复制链接]
查看1199 | 回复0 | 2023-8-23 11:41:05 | 显示全部楼层 |阅读模式 来自 中国北京

什么是Shader?

着色器 (Shader) 应用于计算机图形学范畴,指一组供计算机图形资源在执行渲染使命的时利用的指令,用于计算机图形的颜色或明暗。但迩来,它也能用于处理惩罚一些特殊的效果,大概视频后处理惩罚。普通的说,着色器告诉电脑怎样用特有的一种方法去描绘物体。作为渲染器的一部门,负责计算目的的颜色,重要图形软件库有OpenGL和Direct3D。
Unity的shader,和我们认识的C、C++、C#、java等语言差别,C++等语言是属于CPU编程。Shader利用的是HLSL,GLSL或CG语言,这些shader语言属于GPU编程,很多语法结构并不符合我们传统的计算机语言的认知,初学者大概感觉很蹩脚。事实上,哪怕是很多中高级开发者,编写shader也不是很顺手,必要边写,边查阅资料。因此应运而生了shader的可视化编辑器,其实可视化编辑器最早在虚幻引擎unreal中就得到了应用,包罗蓝图,材质编辑器,举动树编辑器等。而Unity引擎也出现了对应的shader编辑器: Shader Forge , Amplify Shader Editor 和 Shader Graph 。固然功能各有优劣,但是节省了我们大量的手写shader的时间,很值得我们去学习。
一、简单先容

Shader Graph :就是着色器图。在有这项技能之前,开发者只能通过一行行手动敲代码来实现着色器,而且 Shader 的语言与 C# 美满是不一样的,这在无形中进步了在 Unity 中构建着色器的门槛。在有了 Shader Graph 之后,开发者可以跳过代码进行可视化构建,还能通过节点及时调适图片效果,这为美术师和其他团队成员打开了利用着色器的大门。
获取途径:Amplify Shader Editor | 可视化脚本 | Unity Asset Store
Shader Forge :Shader Forge是适用于Unity基于节点的着色器编辑器,可以轻松创建自己的着色器,而不必要写代码!
官方:Shader Forge
官方文档:https://www.neatcorporation.com/Projects/ShaderForge/Media/ShaderForge_QuickStart-sc.pdf

其他先容:ShaderForge先容_哔哩哔哩_bilibili
Amplify Shader Editor :Unity 官方所保举的可视化着色器编辑器,提供了一个对 Unity 开发者相当友善的开发环境,可以与 Unity 编辑器和著色器美满的融合。透过这个工具,开发者可以或许轻鬆实现 AAA 级质量的作品,而且可以或许相当机动地应用在任何 Unity 开发专案中,进而收缩製作团队在美术呈现画面上的开发时间。
二、开发汗青

Shader Graph在 Github 上的最早开发日期可以追溯到 2013 年 4 月 30 日,官方论坛的发布日期是 2014 年 1 月 11 日,仅支持 Built-in 管线。第一个正式版为 2018 年 5 月 8 日(版本 1.1.5)。现已开源且基本停止开发。
Amplify Shader Editor在 Asset store 中表现第一个提交版本为 2016 年 9 月 12 日,2022 年 9 月 15 日作者 Diogo Teixeira 在官方 Discord 频道公布,ASE 已从团队开发转为独立开发,并开始计划 2.0 版本。
三、工作原理及优劣

Amplify Shader Editor

基于单个静态模板天生 .shader 文件,将节点信息以表明的情势存储于文件末端
上风:


  • 官方模板可定制性强,可视化界面几乎可以覆盖 URP 的重要功能
  • 模板修改简单直观,可轻松实现诸如多 pass 功能
  • 天生明文代码易于调试
  • 终极文件不必要依靠插件本体
  • 支持管线差别化计算
  • 不依靠管线版本
  • 官方更新频率高
劣势:


  • 修改模板后必要重载节点编辑界面
  • 切换模板有大概必要重连节点
  • 原版模板天生的 shader 无法跨管线运行
  • HDRP 支持度严肃不敷
  • 官方模板对管线特性支持不敷标准
模板位置:
   AmplifyShaderEditor\Plugins\Editor\Templates  Shader Graph

基于 C#,但天生 .shadergraph 格式的中央文件用于存储节点信息,动态编译成 shader 利用
上风:


  • 原生支持跨管线
  • 基于 C# 的模板天生可以进行更高级的定制
  • 定制管线时必要针对模板的修改可以主动应用到所有 SG shader 中,可维护性非常高
劣势:


  • 跨管线时面板参数不统一,不支持管线差别化计算
  • 终极文件是黑盒,无法立刻切换成代码,调试贫苦
  • 官方更新频率非常低,受引擎及管线版本限制且内容不痛不痒
  • 2021 以前不支持极点计算
  • 自界说函数不支持 inout,变量名必须带精度后缀
  • 仅支持 4 套 UV
  • URP 不支持 Tessellation
模板位置:
HDRP
   com.unity.  render-pipelines.high-definition\Editor\Material\ShaderGraph  URP
   com.unity.render-pipelines.universal\Editor\ShaderGraph  Shader Forge

优点:


  • 可视化做好了很多shader工具,只要图形化拖入过来就可以了
  • 可以快速看到shader效果
缺点:


  • 对于初学者而言,shade graph 此类图像化工具并不能低落shader的开发难度
  • Shader graph是主动天生shader代码,天生的shader代码大概性能并不好
  • 节点过多时可读性变差,项目利用中,多种效果共同部门无法复用
  • 由于是美术利用居多,通常易出现冗余指令和低效执行代码
四、总结与选择



  • ASE 天生的是明文shader文件,可以自行修改调解部门不公道的天生。 Shader Graph也能看到他天生的shader,但是计划上unity只管希望黑盒,不想让你看到。
  • ASE 可以几条管线相互切,Shader Graph只能urp下利用。
  • ASE兼容所有Shader Graph的节点和参数。
Shader Graph属于unity内置的着色器可视化的工具,因此会更加的简便。而且有个说法叫既然官方有自己的shader可视化编辑器,那固然是用官方自己的了可视化编辑器了。
Shader Forge 和 Amplify Shader Editor都是从资源商店就能获取的unity 资源包,且不是免费的。这两者的功能都比Shader Graph多,体现在节点更多,因此可自界说的东西也会更加丰富。但现在Shader Forge已经停止更新包内容了。
假如现在要在两种中选一个的话,更加保举利用Amplify Shader Editor。Shader Forge 和 ASE这两个都能通过节点毗连的方式自界说光照模子,但Shader Graph就没有能自界说光照模子,因为Shader Graph中没有光照干系的节点,而且Shader Graph只有两种一种PBR和无光照两种shader模板。
unity shader可视化工具在实现效果的时间是更加的快捷方便,很轻易出效果。但是节点过多也会导致项目的性能变差,因此利用unity shader可视化工具来快速实现效果还是可以的,在实际项目中更加保举手写shader代码。假如不了解shader底层基础知识,即使有节点式的shader可视化工具也是不会进行shader开发的。这就好比有shader可视化是开车,手写代码是走路,要说速度快肯定是开车;但说哪个起到运动作用还得是走路的方式。
无论选择哪一方,都务必掌握基本的代码本领,连连看只能进步效率,黑盒永久不可信。

来源:https://blog.csdn.net/soukenan/article/details/131184423
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则