[Unity2018.2]ShaderGraph更新详解

在2018.1中,Shader Graph作为Unity的新功能,以预览版的形式呈现。通过ShaderGraph可以直观地构建着色器。可以在图形界面中创建和连接节点,而不需要编写代码。图中的每个节点都可以对更改即时反馈,大大降低了编写着色器的门槛。

Unity2018.2也对ShaderGraph(3.0.0)进行了很多优化和改进,包括:

高清渲染管道(HDRP)支持

Shader Graph现在支持PBR和Unlit主节点的HDRP。使用ShaderGraph构建的着色器可与LWRP和HDRP一起使用。

78733-67e49237a3b7ab47

顶点位置

现在可以通过PBR和Unlit主节点上的Position栏位修改顶点位置。默认情况下,此节点的输入是对象空间位置。此栏位应该输入给定顶点的绝对本地位置。某些节点(例如程序形状Procedural Shapes)在顶点着色器中不可行。此类节点与此栏位不兼容。

78733-ec325bc6a339f7fc

主节点设置

主节点的设置现在可在一个小窗口中使用,可以打开和关闭该窗口来更改着色器的各种渲染设置。

78733-8d4987e9c130319b

属性引用名称和公开状态

现在可以编辑属性的引用名称,从而更容易从脚本引用着色器属性。选择属性并在Reference旁边设置新名称。如果要重置为默认名称,请右键单击Reference,然后选择 Reset Reference。

在属性窗口中,现在还可以切换Exposed复选框,来设置属性是否公开。

78733-60ab6c0df0cb46ef

可编辑路径

现在可以更改着色器图和子图的路径。更改着色器图形的路径时,将修改其在着色器选择列表中的位置。更改子图的路径时,它将在节点创建菜单中具有不同的位置。

78733-0d34c561102cc8a8

78733-6f7d4592ce0f2d9f

Is FrontFace节点

78733-e138173e6940349e

使用此节点,你可以根据给定片段的朝向标识更改图形输出。如果当前片段是正面的一部分,则节点返回True。对于背面,节点返回False。注意:此功能需要在主节点上启用双面。

渐变节点

78733-35ef423a3d9927e2

通过两个新节点添加了渐变功能。Sample Gradient节点使用给定的Time参数对渐变进行采样。您可以在渐变栏位控件视图上定义此渐变。Gradient Asset节点定义了一个渐变,可以使用不同的时间参数对多个Sample Gradient节点进行采样。

Texture3D和Texture2D数组

78733-aa69f3dabdff605b

通过两个新属性类型和四个新节点扩展了Unity对Texture类型的支持。可以在着色器图中定义和采样Texture 3D和Texture 2D Array类型资源。

Texture2D LOD节点

这个新节点为Texture 2D Sample添加了LOD功能。Sample Texture 2D LOD使用与Sample Texture 2D相同的输入和输出栏,但包括通过Vector1输入参数调整细节级别的输入。

显示生成的代码

78733-641f0ee1839d4155

现在可以看到任何特定节点的生成代码。右键单击该节点,然后选择Show Generated Code。代码段将在Unity的代码编辑器中打开。