Unity Shader Graph Ase三者分别有什么不一样的地方?

这篇具有很好参考价值的文章主要介绍了Unity Shader Graph Ase三者分别有什么不一样的地方?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ase shader unity,unity,unity,游戏引擎

什么是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

ase shader unity,unity,unity,游戏引擎

其他介绍: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 unity,unity,unity,游戏引擎

  1. ASE 生成的是明文shader文件,可以自行修改调整部分不合理的生成。 Shader Graph也能看到他生成的shader,但是设计上unity尽量希望黑盒,不想让你看到。
  2. ASE 可以几条管线互相切,Shader Graph只能urp下使用。
  3. 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://www.toymoban.com/news/detail-524317.html

到了这里,关于Unity Shader Graph Ase三者分别有什么不一样的地方?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【unity实战】使用shader和shader Graph实现2d图片描边效果(附源码)

    最近在学习shader Graph相关内容,其实关于实现2d图片描边效果,网上可以看到很多教程,但是我发现大多数都是基于比较老旧的2018unity版本,可是我们实际开发使用可能是比较新的2021及以上版本,差别还是有的,实际在升级或者使用过程中,会遇到诸多问题,而且也很少有人

    2024年02月16日
    浏览(32)
  • Unity - Shader Graph 中的 Flipbook 节点算法BUG - Unity_Flipbook_float

    Unity : 2020.3.37f1 比如,我有 flipx : 10, flipy : 4, flipidx : 10 (其实是编号,不是索引) 应该是采样到是 10 的位置 到时结果采样到的是:20 的位置 Bug Flipbook

    2024年02月14日
    浏览(26)
  • 【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例

    前言 Unity2018版本之后推出了一款名为 Shader Graph 的可编程渲染管线工具。 这个工具可以通过可视化界面拖拽来实现着色器的创建和编辑,大大简化了着色器的制作过程,同时着色效果编译显示也快。 下面就来介绍一下Shader Graph的基本信息及使用方法,上手非常简单,一起来

    2024年02月08日
    浏览(32)
  • 【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)

    最近在学习shader Graph相关内容,其实关于实现2d图片描边效果,网上可以看到很多教程,但是我发现大多数都是基于比较老旧的2018unity版本,可是我们实际开发使用可能是比较新的2021及以上版本,差别还是有的,实际在升级或者使用过程中,会遇到诸多问题,而且也很少有人

    2024年01月21日
    浏览(46)
  • 【Unity Shader Graph URP渲染管线下的自定义半透明效果_半透明案例分享】

    URP的渲染管线下 在项目设置里找到“Graphic” 找到URP Asset文件 索引到Renderer List文件——“ForwardRenderer” 在这个“ForwardRenderer”文件里找到“Add Renderer Feature” 添加一个渲染对象,类似下图:Render Object (Experimental) 如图设置,将“Event”设置成 AfterRenderingSkybox ,然后“Layer M

    2024年02月09日
    浏览(46)
  • Unity | Shader基础知识(什么是shader)

    Shader的中文名叫着色器。 着色器的作用: 这个世界是3D的,包括在Unity的场景中,我们建的球球,方块块之类的,都是3D的,但是,屏幕是2D的,把3D的东西,通过颜色的汇总,显示在2D的屏幕上。 想知道颜色是怎么合到一起的,我们就找个图片,把它拆开看。 因为世界上所有

    2024年02月15日
    浏览(50)
  • 【Unity Shader】从入门到感慨(1)基本概念:什么是网格?什么是材质和Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月11日
    浏览(27)
  • 【Unity Shader】从入门到领悟(1)基本概念:什么是网格?什么是材质和Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月06日
    浏览(34)
  • 【Unity Shader】从入门到着魔(1)基本概念:什么是网格?材质?Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月09日
    浏览(30)
  • Shader Graph入门

    目录 Shader Graph 简介 1. 什么是 Shader Graph 4. Shader Graph 界面 4.1 Shader Graph 窗口 4.2 Shader Graph 窗口操作方式 5. 使用 Shader Graph 编辑 Shader 通用步骤 6. Node 节点 6.1 节点概述 6.2 节点分类 7. 主堆栈 Master Stack 7.1 主堆栈 7.2 Context 上下文 7.3 Block Node 块节点 8. 示例中用到的节点 8.1 Gradie

    2023年04月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包