unity shader可视化工具——Shader Graph

  • 前言
  • 一、Shader Graph介绍
    • 什么是Shader Graph?
  • 二、Shader Graph安装配置
    • 1、新工程中使用Shader Graph
    • 2、旧工程中使用Shader Graph
  • 三、Shader Graph详解
    • 1、Shader Graph基本操作
    • 2、Shader Graph窗口
    • 3、Shader Graph节点
  • 四、unity shader可视化工具比较
    • Shader Graph、Shader Forge 和 Amplify Shader Editor

前言

使用Shader Graph来制作着色器具有简化着色器制作过程和着色效果编译显示快的优点。当前,Shader Graph中支持通用渲染管线(URP,Universal Render Pipeline。unity2019.3以前的版本命名为LWRP)和高清渲染管线(HDRP,High Definition Render Pipeline。URP这种渲染管线性能消耗较低,能支持在手机端的的硬件性能消耗,几乎适用于所有平台,而Height Render Pipeline比较适合与PC端和计算性能较好的平台。

ShadeGraph官方示例GitHub地址.


一、Shader Graph介绍

什么是Shader Graph?

Shader Graph是在Unity2018版本之后推出的一款可以实时通过可视化界面的节点连接来实现着色器的创建及编辑的可编程式渲染管线工具。在项目中使用该工具包前需要先安装好,除此还应该安装好对应的渲染管线工具包和创建及配置对应的渲染管线文件。

二、Shader Graph安装配置

1、新工程中使用Shader Graph

方法一:

  • 打开unity编辑器时,在创建项目时,选择High Definition Render Pipeline或者Universal Render Pipeline任一模板来创建项目(使用哪种渲染管线根据自己的项目决定,通常大部分人使用Universal Render Pipeline居多)。这种方式创建出来的项目,打开后就能直接使用Shader Graph,不用再进行任何的配置。

  • 新建Shader Graph的 Shader 文件
    在项目资源中右键—Creat—Shader—X-Graph(分别是PBR Graph、Sub Graph、Unlit Graph),命名好创建的shader文件。
    PBR Graph: PBR,基于物理的渲染
    Sub Graph :子图,用于创建一些可复用的节点
    Unlit Graph :不受光照的,无光照的

  • 打开Shader Graph编辑面板
    双击使用shader Graph创建的shader文件就可以打开shader Graph的编辑面板,就能在面板中进行shader节点的操作了。

方法二:

  • 创建工程
    创建一个空的unity项目(默认的3D模板)。
  • 安装Shader Graph
    在unity中,打开window—Package Manage,如果在Package Manages中找不到shader Graph,就在Package Manages中点击Advanced—show Preview Packages等待加载后就能找到Shader Graph,点击Install安装即可。
  • 安装渲染管线
    同样在unity的Package Manage中找到High Definition RP或者Universal RP两者任一渲染管线点击Install安装。
  • 配置渲染管线
    在unity中,右键—crate—Rendering—Universal Render Pipeline—Pipeline Asset(Forward Renderer),命名好该文件。
    再Edit—Project Settings,在Project Settings中的Graphics中将刚才创建的SRP文件设置到这里来即可。

2、旧工程中使用Shader Graph

注意:为了避免项目出现不可逆错误,建议在更改项目前,先复制备份好原先的项目。

  • 安装Shader Graph和渲染管线包,以及配置。
    根据上面新工程中方法二中的方式在unity Package Manage中安装好Shader Graph和Universal RP(或者High Definition RP)。
    创建Pipeline Asset,以及在Project Settings中的Graphics中设置SRP的配置文件即可。(详细见上述新工程中方法二)
  • 升级材质
    随后,会发现场景中的材质都会变为洋红色。
    Edit—Render Pipeline—Universal Render Pipeline—upgrade project Materials to Universal RP Materials,等待转换材质,完成后材质就恢复好了。

三、Shader Graph详解

1、Shader Graph基本操作

创建节点:在空白区右键——creat Node(或者空格键),选择自己想到的节点进行创建
复制节点:选择要复制的节点ctrl+D 或者先ctrl+c,在ctrl+v
居中显示节点:按F键
保存shader:ctrl+S 或者编辑器中的Save Asset
上下左右移动编辑器窗口视图:按住鼠标中键移动
缩小编辑器窗口视图:鼠标滚轮
创建属性/节点后,在连接面板中拖出连接线到空白处松手,就能跳出该节点可以与哪些节点相连接

2、Shader Graph窗口

属性窗口
myshader01是该shader名;
属性名字:color为该属性名(图中第一个属性名为color)是显示在材质面板上的名字
expose:是否在材质面板中显示该属性
Reference:Reference中的命名是使用代码来找到这个属性的变量命,脚本中通过该变量名修改材质的属性。
default:相当于属性默认的值
mode:为贴图默认的形式
Precision:为节点的精度

Main Preview窗口(预览窗口)

在预览窗口中,可以实时预览shader效果。鼠标左键可以旋转模型查看效果;右键可以更改效果显示的模型,有默认的球状、正方体胶囊体等还可以使用自定义的网格模型预览。
PBR Master(基于物理渲染)

PBR (Physically Based Rendering,基于物理渲染),其中有两种工作流(workflow),一种是Metakkic(金属度),一个是Specular(高光)。Specular setup 和 Metallic setup 都会产生镜面高光,金属度只有明度的区别;高光颜色可以带有其他的颜色。

3、Shader Graph节点

属性节点

属性使用工作流:创建属性后,将属性拖出编辑器中作为一个节点,连接到输出接口使用

  • Vector1
    Mode:Default、slider(滑动条)、Integer(整数,只能读取整数)
  • 多元向量Vector2,Vector3,Vector4
    数值对应X、Y、Z、W
  • Color
    Mode:Default、HDR
    Texture 2D(U、V二维)
    默认值为一张贴图接口,可在编辑面板中直接赋予贴图。Texture2D拖到面板中后,要与创建Sample Texture 2D节点连接(需要采样贴图信息),才能输出。
    Mode:White、Black、Grey、Bump(如果贴图为法线贴图需要将模式改为Bump)
  • Texture 2DArray 贴图数组
    几张贴图串在一起作为贴图、序列帧贴图
  • Texture 3D(U、V、W三维)
    需要创建Sample Texture 3D相连接
  • Cubemap
    需要创建Sample Cubemap节点进行采样
  • Boolean
    用来控制开关Ture/False

其他节点
在Shader Graph编辑器中空白区右键——creat Node(或者空格键),选择自己想要的节点进行创建。

四、unity shader可视化工具比较

Shader Graph、Shader Forge 和 Amplify Shader Editor

  • Shader Graph属于unity内置的着色器可视化的工具,因此会更加的简便。并且有个说法叫既然官方有自己的shader可视化编辑器,那当然是用官方自己的了可视化编辑器了。
  • Shader Forge 和 Amplify Shader Editor都是从资源商店就能获取的unity 资源包,且不是free的。这两者的功能都比Shader Graph多,体现在节点更多,因此可自定义的东西也会更加丰富。但目前Shader Forge已经停止更新包内容了(并且我自己试用该资源包的时候打开有报错"实例化对象为null",导致无法打开Shader Forge的编辑器面板,具体如何解决这个错误还没解决,不知道是不是就我这样子,或许是版本不对应的问题 )。如果目前要在两种中选一个的话,更加推荐使用Amplify Shader Editor。
  • Shader Forge 和 Amplify Shader Editor这两个都能通过节点连接的方式自定义光照模型,但Shader Graph就没有能自定义光照模型,因为Shader Graph中没有光照相关的节点,并且Shader Graph只有两种一种PBR和无光照两种shader模板。
  • unity shader可视化工具在实现效果的时候是更加的快捷方便,很容易就出效果了。但是节点过多也会导致项目的性能变差,因此使用unity shader可视化工具来快速实现效果还是可以的,在实际项目中更加推荐手写shader代码。
  • 别想着有shader可视化工具就可以不学习手写shader代码,如果不了解shader底层基础知识,即使有节点式的shader可视化工具也是不会进行shader开发的。这就好比有shader可视化是开车,手写代码是走路,要说速度快肯定是开车;但说哪个起到运动作用还得是走路的方式。

unity shader可视化工具——Shader Graph相关推荐

  1. Unity Shader variants (shader 变体)

    官方地址 https://docs.unity3d.com/cn/2022.2/Manual/SL-MultipleProgramVariants.html 教程可以看这里 https://www.j ...

  2. unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子

    之前有业界大佬建议我去了解下Unity的PBR.说来惭愧,我查找了下资料才发现自己在这方面的知识居然是一片空白.经过几周的学习与尝试我对这一块算是有了初步的了解,于是写了这篇文章,一方面对自己学到的东 ...

  3. 在Unity 3D中,shader是何时编译的,在何时加载入显存中的?

    在Unity 3D中,shader是何时编译的,在何时加载入显存中的? 是某一对象在实例化时,加载其相关的material与shader还是游戏开始时? 添加评论 分享 按时间排序按投票排序 4 个回 ...

  4. unity 2020 怎么写shader使其接受光照?_用Unity实现半条命Alyx中的液体物理效果

    干了两个月客户端的活终于能闲下来几天,有点空写个玩具了. 前段时间被半条命Alyx里的酒瓶刷屏了,这酒瓶里液体的的物理效果仅仅看录屏都能感受到十分棒,同时据说瓶子中液体的逻辑全部在shader的一个单 ...

  5. unity描边发光shader_unity shader实例#1 轮廓渲染-描边

    本文主要来讲几种描边的实现方法 1.法线外扩 一般期望的描边效果,就是在模型外面有一圈选边,因此我们可以把模型扩大一点点,利用这个扩大的边缘来实现描边效果.可以看出,扩大的方向其实就是法线的方向,边缘 ...

  6. unity 全息和xRay shader

    unity 全息和xRay shader 这个是网上的效果,科幻的感觉是不是很强烈. 下面是我们去实现的效果. 先看下效果图,左边的是Xray的效果,右边是全息的效果.都有着异曲同工的妙处. 全息的效 ...

  7. unity URP内置shader lit解析

    unity内置的pbr渲染shader Properties为shader相关属性 两个SubShader里面为相应的渲染内容,第二个为降级处理渲染,如果第一个SubShader不兼容,才会渲染第二个 ...

  8. 关于Unity 5.x Lightmap Shader 编译过慢的分析

    关于Unity 5.x Lightmap Shader 编译过慢的分析 缘起 最近在研究Unity 5.x 的 Lightmapping 与 场景打包的相关的知识.发现坑深啊.关于怎么打包怎么用网上的 ...

  9. 【UnityShader】自定义unity粒子系统使用的shader

    前几天特效那边让改一下一个粒子系统使用的shader,说是shader的一个值希望关联上粒子的某个值. 我不假思索地就准备写个脚本挂上去传个值给shader.等脚本写好,测试的时候才突然发现,传值过去 ...

  10. 中级Shader教程10 shader建模工具--SDF

    layout: post title: "中级Shader教程10 shader建模工具–SDF " date: 2018-04-23 16:09:03 author: Jiepe ...

最新文章

  1. [HTTP协议]入门篇
  2. 如流智会2021:技术结合场景 让企业知识懂员工
  3. Spring Cloud Alibaba 高级特性 应用性能监控:通过 SkyWalking 实施链路追踪
  4. php实现多商家开发,Thinkphp5.0实战-仿百度糯米开发多商家电商平台学习注意事项...
  5. 封装一个Array 数据 绑定 html select 方法
  6. 【译】用SQL统一所有:一种有效的、语法惯用的流和表管理方法
  7. mysql longblob_Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
  8. python如何爬虫eps数据_Python爬虫常用的几种数据保存方式
  9. mysql使用substring_index达到splite功能
  10. NYOJ 90整数划分
  11. Sketch的下载与安装
  12. JavaScript——反转链表
  13. 基于无人机的目标检测平台——数据中转(安卓App)
  14. 《python深度学习》笔记(八):回归问题
  15. Excel技能学习小结
  16. 什么相片可以两张弄成一张_在PS内如何将两张照片合成一张
  17. 一个pom文件中出现了两个相同的依赖_在IDEA里解决maven的pom引用jar包冲突
  18. android线程作用,Android线程介绍
  19. DaoCloud丨云原生边缘计算产业发展现状与趋势展望
  20. U递是一款App软件 和滴滴打车一样性质

热门文章

  1. 软件测试-禅道下载及安装-测试人员必会工具
  2. 网易云音乐产品体验报告
  3. CAd常用的系统变量
  4. linux rzsz 安装包,安装rzsz软件包全攻略
  5. Xamarin学习笔记
  6. 各种loading加载中gif图标
  7. python飞机大战源码以及素材资源
  8. 总结之使用lowagie.text添加PDF水印
  9. 【异常】java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte
  10. vscode下载Visual Studio Code User System windows及 Mac安装文件下载