Shader Graph学习(一)

前言

在Unity2018.1之后新增了Shader Graph功能。(emmm,现在都2020了,只怪自己平时关注新知识太少了)Shader Graph可以在一个可视化的面板中完成shader功能的实现,一句代码都不需要写,大大降低了shader的开发难度。

官方文档:https://docs.unity3d.com/Packages/[email protected]/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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章