赞
踩
在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
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,就可以看见效果了。
此时我们无法通过修改Material的参数来修改颜色,解决方法就是利用我们的Properies。进入到我们的编辑界面,我们可以直接在Color节点上右键,选择Convert To Property,这样就可以将我们的color的值转换为一个可以修改的参数,显示如图:
当然,我们也可以在Properties面板中点击加号,直接添加参数,然后拖到编辑面板中,进行关联。保存一下后,就可以发现现在我们可以通过Material来自己调整需要的颜色了。
我们可以通过在Master面板上右键,选择Copy Shader就可以得到对应的hlsl语法的Shader脚本了。
在下一篇我们会通过一个简单的案例,来更加熟悉Shader Graph和Node
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。