unity shader可视化工具——Shader Graph

2023-11-18


前言

使用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可视化是开车,手写代码是走路,要说速度快肯定是开车;但说哪个起到运动作用还得是走路的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity shader可视化工具——Shader Graph 的相关文章

  • 七牛云的使用(图片超详讲解)

    一 为什么要使用七牛云的OSS 对象存储服务 二 七牛云使用 登录七牛云官网 注册并认证 初次认证有30天免费使用权限 新建存储空间 点击创建的空间名字 进入 空间概括如下 阅读帮助文档 在自己的web应用中 使用七牛云对象存储服务OSS

随机推荐

  • 多态反射机制

    package duotai class Customer SuppressWarnings unused private String account SuppressWarnings unused private String pass
  • word怎么删除最后一页空白页

    1 将光标移动到最后一页的起始处 不停的按删除键 gt 我试了 无效 2 将光标定位在倒数第二页的末尾 直接按delete键进行删除 或者可以试试按住ctrl键再按delete键 gt 我试了 还是无效 3 将光标移动到最后一页 在菜单栏找
  • 答辩经验

    例举几个问题作为参考 给大家分析一些常见问题的回答注意点以及技巧 通过这几个问题的讲解告诉大家如何为答辩做准备 主要是讲一个方式方法 起一个抛砖引玉的作用 您了解之后可以针对自己的设计做相应的准备 1 你选这个课题的意义是什么呢 这个问题非
  • pandas 解决 A value is trying to be set on a copy of a slice from a DataFrame的问题

    stackoverflow 解决方案链接 https stackoverflow com questions 31468176 setting values on a copy of a slice from a dataframe rq
  • 微信小程序【发送给朋友】和【复制链接】功能,灰色不可用

    每日鸡汤 悲观者可能正确 但是乐观者往往成功 假设你是一个用户 你随便找一个小程序可以看到这几个功能 转发给朋友 分享到朋友圈 复制链接 很常见的功能 但是如果你作为开发者 这几个功能就需要自己做喽 并不是你项目建起来了就有的 1 转发给朋
  • 软实力-领导力

    领导力 领导力不是一蹴而就 需要不断训练和提炼 团队也是需要不断发展和规划 一个普通员工如何才能具备领导力呢 俗话说 天上不会掉馅饼 即使偶尔掉个馅饼下来 你的嘴也需要比别人的嘴张得大才能吃到 这 儿的嘴大可能包括你的能力和为这件事做的准备
  • echarts 图设置高度_Echarts 自适应宽高 vue

    思路 1 将图表包括在一个div中 该div设置了固定的宽高 可为百分比 2 由于不能直接设置rem进行适配 需要动态计算出 id chart 的高度 setChartHeight 根据自己需要调节图形大小 我的图形是放在 中 let ma
  • Golang获取当日00:00:00时间戳

    遇到好几次这个问题了 go的time里也没有这东西 百度也搜不到 很烦 干脆自己写一份 放到这里 year month day time Now Date location time LoadLocation Asia Shanghai 这
  • ESD 接触放电、空气放电

    1 接触放电主要针对的是半成品电子电气产品 或者是带金属外壳的成品 一般做接触放电主要是金属外壳 接触放电的放电头是尖头 2 空气放电主要是针对塑料外壳或者是金属外壳表面有绝缘漆的成品 空气放电的放电头是圆形头 3 一般接触放电或者空气放电
  • Python 之父 Guido van Rossum 称退休太无聊,正式加入微软搞开源!

    参考 https blog csdn net sinat 14921509 article details 109667079
  • 产品养成记

    参与感 pdf 从零开始做运营入门篇 张亮 pdf 结网 pdf 精益创业 pdf 区块链 定义未来金融与经济新格局 pdf 区块链 从数字货币到信用社会 pdf 人人都是产品经理 pdf 如何阅读一本书 pdf 上瘾 pdf 数据分析实战
  • 阿里云ACP级认证考试心得+过关经验

    正在准备阿里云ACP级认证考试的童鞋福利来啦 经过小编的软磨硬泡 终于从高分通过ACP云计算专业认证及大数据专业认证的大牛同事那里要来了考试心得 经验分享 直接看吧 认证考试简介 知己知彼知大纲 首先介绍一下ACP考试 阿里云认证类似于大家
  • flutter Text数字超出全部隐藏 解决方法

    如图 刚开始是这样的 问题原因 前面的 ID 与后面的文字存在间隙 解决方法 修改前 child Text ID 1114954321 textAlign TextAlign right maxLines 1 overflow TextOv
  • 切面打印日志时,参数序列化异常。It is illegal to call this method if the current request is not in asynchron

    1 AOP的日志拦截类中 抛出异常 2 代码如下 package com jimulian iwuxi common aop import com alibaba fastjson JSON import com jimulian iwux
  • 华为OD机试真题-增强的strstr-2023年OD统一考试(B卷)

    题目描述 C 语言有一个库函数 char strstr const char haystack const char needle 实现在字符串 haystack 中查找第一次出现字符串 needle 的位置 如果未找到则返回 null 现
  • Android最简洁的自动换行布局组件

    自动换行是一种布局特性 理所当然应该在布局组件中实现 我们基于ViewGroup实现了最简洁和稳定的自动换行布局组件AutoLinefeedLayout 该组件无需特别设置 只要将孩子塞给它 就会自动换行显示 无任何限制 源码如下 pack
  • [苹果开发者账号]01 使用Apple Developer app注册提示:未能验证证件

    1 登录https developer apple com 2 点击Learn More 3 使用自己的iPhone 到AppStore下载Apple Developer app Apple Developer app使用帮助 https
  • 【高效数据结构——位图bitmap】

    初识位图bitmap 位图 Bitmap 是一种用于表示和操作位 bit 的数据结构 它是由一系列二进制位 0 或 1 组成的序列 每个位都可以单独访问和操作 位图常用于以下情况 压缩存储 位图可以有效地存储大量的布尔值信息 每个位只占用一
  • CSS生成的迷宫

  • unity shader可视化工具——Shader Graph

    unity shader可视化工具 Shader Graph 前言 一 Shader Graph介绍 什么是Shader Graph 二 Shader Graph安装配置 1 新工程中使用Shader Graph 2 旧工程中使用Shade