Shader Graph学习(一)
前言
在Unity2018.1之后新增了Shader Graph功能。(emmm,现在都2020了,只怪自己平时关注新知识太少了)Shader Graph可以在一个可视化的面板中完成shader功能的实现,一句代码都不需要写,大大降低了shader的开发难度。
官方文档:https://docs.unity3d.com/Packages/com.unity.shadergraph@7.2/manual/index.html
环境
Unity版本2018.1或者更新,同时需要在Package Manager中安装好URP,HDRP或者LWRP。装好URP或者其他会自动帮你安装好Shader Graph Package。
本文用的是Unity2019.3,以及URP
创建第一个Shader Graph
Package都安装好后,我们在Project中右键Create->Shader中就可以看见有几个Graph选项。我们创建一个PBR Graph,就会生成一个.shadergraph的文件,简单的命名为PBRGraph,双击该文件就可以打开我们的编辑界面。
左边的面板会显示我们Shader的可配置参数,右边的面板会显示预览效果,我们可以通过右上角的两个按钮来开关它们。
首先先简单的介绍下下面几种Graph:
PBR Graph:(physically based rendering)
用于制作基于物理的Shader,可以用于金属或镜面效果等。其输入的值有如图这些:
Vertex Position | 每个顶点在模型空间中坐标 |
Vertex Normal | 顶点的法线 |
Vertex Tangent | 顶点的法线切线 |
Albedo | 定义Material的反射率 |
Normal | 定义Material的法线,法线最好在切线空间中 |
Emission | 定义Material的发散效果 |
Metallic | 定义Material的金属效果 |
Smoothness | 定义Material的光滑程度 |
Occlusion | 定义Material的环境光遮挡值 |
Alpha | 定义Material的alpha值,被用于透明材质或者alpha裁剪 |
AlphaClipThreshold | alpha低于该值的片段会被丢弃 |
Unlit Graph:
用于制作无光照效果的Shader,参数相对比PBR的要来的少
Sub Graph:
子模块,类似于我们代码中的函数,会有一个Output(也就是return)来输出值。我们可以通过设置自定义输出的类型以及个数等。适用于一些模块会被频繁使用的时候,可以做成一个Sub Graph,然后在其他地方要使用的时候,添加Node并选择它即可。
Material选项
在我们的Master Node上点击小齿轮按钮,会出现Material的相关配置选项,如下图。例如,若我们要使Shader实现透明效果,需要在Surface选项中选择Transparent
选项 | 可选值 | 作用 |
Precision | Inherit / Float / Half | 定义精度 |
Workflow | Speculat / Metallic | 设置Material的默认工作模式 |
Surface | Opaque / Transparent | 定义Material是否透明 |
Blend | Alpha / Premultiply / Additive / Multiply | 当Material设置为透明,定义其混合模式 |
Fragment Normal Space | Tangent / Object / World | 定义默认的坐标空间值 |
Two Sided | True / False | 设置为true,则Mesh的两面都会被渲染 |
言归正传,在打开我们创建的PBRGraph编辑界面后,我们可以右键来创建Node,这些Node同样的可以看做是一个个函数,都拥有对应的输出值,有些Node也会有对应的输入值。这里我们先创建一个Color的Node(可以利用搜索功能直接定位),然后将其输出的值拖到Albedo上,此时预览界面的效果也随之变化,点击左上角的Save Asset保存一下。
接着我们创建一个新的Material,在Shader中选择我们的PBR Graph,然后替换物体原有的material,就可以看见效果了。
添加Property
此时我们无法通过修改Material的参数来修改颜色,解决方法就是利用我们的Properies。进入到我们的编辑界面,我们可以直接在Color节点上右键,选择Convert To Property,这样就可以将我们的color的值转换为一个可以修改的参数,显示如图:
当然,我们也可以在Properties面板中点击加号,直接添加参数,然后拖到编辑面板中,进行关联。保存一下后,就可以发现现在我们可以通过Material来自己调整需要的颜色了。
生成Shader文件
我们可以通过在Master面板上右键,选择Copy Shader就可以得到对应的hlsl语法的Shader脚本了。
在下一篇我们会通过一个简单的案例,来更加熟悉Shader Graph和Node
Shader Graph学习(一)相关推荐
- Shader Graph学习各种特效案例(持续更新)
文章目录 前言 案例 unity 2019.4.10 外发光 进阶 带方向的外发光 裁剪 进阶 带边缘色的裁剪 溶解 进阶 带边缘色溶解 卡通阴影 水波纹 积雪效果 不锈钢效果 UV抖动 水波纹 红旗 ...
- Unity Shader Graph实现模型任意方向剖切(学习笔记/五毛钱特效)
使用Shader Graph:Unlit Master 使用Position获取物体Object的空间坐标信息. 使用Split拆分物体的空间坐标信息,比如拆分为x.y.z. 使用Split拆分后的x ...
- Unity初学者Shader Graph教程
Unity初学者Shader Graph教程 了解面向非程序员的 Unity 引擎可视化着色器编程工具的来龙去脉 课程英文名:Your Ultimate Guide to Shader Graph f ...
- 泡泡 shader graph unity
#shader graph 案例学习 泡泡 shader graph 制作 之前在Youtube看到的一个教程,比较老,如果全部照做效果出不来.对此改进了一下 效果图:不同角度颜色不一样 源码: 贴图 ...
- 使用Shader Graph实现《塞尔达传说:旷野之息》风格的着色器
本文转自Unity Connect Unity的技术经理Ciro Continisio在Connect上分享创作模仿任天堂游戏<塞尔达传说:旷野之息>角色风格的着色器,受到不少用户的关注, ...
- 技术研究:Unity中Shader Graph之飘动的旗帜(一)
公众号[知享奇] 发送"ShaderGraph00"获取本文章的shader. 目的 学习使用Shader Graph制作一个可以飘动的旗帜. 效果展现 制作准备 Unity版本 ...
- php代码着色器,使用Shader Graph实现《塞尔达传说:旷野之息》风格的着色器(转)...
马上注册,加入CGJOY,让你轻松玩转CGJOY. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x Unity的技术经理Ciro Continisio在Connect上分享创作模仿任天堂游戏& ...
- 边缘发光材质unity_Unity Shader Graph 小功能实现(一)边缘发光
在Unity 2018.2 版本正式启用了高清渲染管线,shader可视化编程. 现在我们就尝尝鲜,来实现了个物体边缘发光的shader效果. 准备 点击Windos->Package Mang ...
- Unity Shader Graph 使用安装步骤缺失材质球,以及场景原本物体材质球丢失问题解决
Unity Shader Graph 使用安装步骤,以及原本物体材质球丢失问题 我是用的版本是2019.3.9版本的,仅供参考. 第1步:Window-PackageManager-点击All Pac ...
最新文章
- 第十六届全国大学生智能车竞赛线上赛点赛道审核 - 华东赛区
- JavaScript之各种继承方式和优缺点
- 自定义 View 循环滚动刻度控件
- Swift语言指南(二)--语言基础之注释和分号
- printf 小代码 大问题
- nginx websocket 代理
- 基于Jenkins+Gitlab+Harbor+Rancher架构的CI/CD实现
- 一文读懂MapReduce
- 小程序wx.showActionSheet 调起转发、分享
- getwmi php 报错,调用win32_service类就报错“get-wmiobject :常规故障”,这是wmi类损坏?...
- Aria2+yaaw+Chrome插件BaiduExporter实现百度网盘下载
- 【Python】Pandas实现二表查重高亮、去重
- Mac 连接显示器,外接显示器不出影像
- React中的SVG陷阱
- Spark 基础知识
- 电脑开机蓝屏怎么解决?3个方法,快速解决电脑蓝屏
- java集合——Set
- EJB:First component in name xxx not found - Java / Java EE
- python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例
- 解读Linux零拷贝之mmap
热门文章
- 十二、偏向锁、轻量级锁、重量级锁,锁的膨胀过程
- 基于区域生长的图像分割算法!
- ubuntu14.10+QT4编写ARM9(mini2440)应用的配置与安装
- 常用benchmark小结
- dpdk发送RST报文(一)—— 构建RST包
- 关于自行修改人人商城模板文件目录指引
- SpringBoot邮件发送(抄送、密送、图片、多文件等一应俱全哦)
- 记一次被“呼死你”电话骚扰的反骚扰经历
- 字节跳动以 50 亿元收购 Pico 入局 VR;哪吒汽车与华为达成合作;韩国计划禁止苹果和谷歌向开发者抽取佣金 | EA周报...
- Arduino 实验 —— 红外遥控RGB灯