赞
踩
本文转自Unity Connect
本文将分享如何在Unity 2019.2中扩展Shader Graph,从而实现自定义光照。
随着Unity 2019.1的发布,Shader Graph着色器视图资源包正式脱离预览阶段。在Unity 2019.2中,我们为Shader Graph着色器视图加入了更多新功能。
Unity 2019.2中Shader Graph新功能
自定义函数和子视图更新
为了在Shader Graph着色器视图中使用自定义代码,你可以使用全新的Custom Function节点自定义输入和输出,对其重新排序,并将自定义函数直接插入节点中,或者引用外部文件。
Sub Graphs子视图功能也进行了更新,你可以基于不同类型,可自定义名称和可重新排序的端口,为子视图自定义想要的输出数据。此外,子视图的Blackboard面板现在支持主视图支持的所有数据类型。
颜色模式和精度模式
你可以使用Shader Graph着色器视图轻松创建出强大而优化的着色器。
在Unity 2019.2中,你可以在视图中手动设置计算的精度,既可以设置整个视图的计算精度,也可以设置单个节点的计算精度。新的Color Modes颜色模式可以轻松快捷地可视化精度流,节点分类以及为特定用途显示自定义颜色。
了解更多关于新功能的信息,请访问Shader Graph着色器视图文档。
示例项目
为了帮助你熟悉使用新的自定义函数工作流程,我们提供了一个示例项目。该示例项目将向你展示如何使用Custom Function节点,以及如何为轻量级渲染管线LWRP编写自定义光照着色器。
请访问GitHub下载示例项目:https://github.com/Unity-Technologies/ShaderGraph-Custom-Lighting
温馨提醒:打开示例项目,请确保使用Unity 2019.2和LWRP资源包6.9.1或更高版本。
从主光源获取数据
首先,我们需要从场景中的主光源获取信息。点击Create > Shader > Unlit Graph,创建新的Unlit Shader Graph着色器视图。在Create Node菜单中,找到新的Custom Function节点,单击右上角齿轮按钮,打开节点菜单。
在节点菜单中,我们可以添加输入和输出数据。我们添加二个输出接口,它们分别是Direction和Color,接口类型为Vector 3 。如果遇到“undeclared identifier”(未声明标识符)警告提示,不必担心,在我们添加代码后,警告会自动消失。
在Type下拉菜单中,选择String,把函数名称改为MainLight。现在,我们可以开始在文本框添加自定义代码。
首先,我们要使用#ifdef SHADERGRAPH_PREVIEW标识。
由于节点上的预览方框无法访问光线数据,所以我们需要告诉节点在视图内的预览框显示什么内容。#ifdef会让编译器在不同情况下使用不同代码。首先定义输出接口的回退值。
#if SHADERGRAPH_PREVIEW
Direction = half3(0.5, 0.5, 0);
Color = 1;
接下来,我们使用#else告诉编译器不在预览框内的时候要做什么。
我们会在此获取光线数据,使用LWRP资源包的内置函数GetMainLight()。我们可以使用获取到的信息来指定Direction和Color输出。
自定义函数代码如下。
#if SHADERGRAPH_PREVIEW
Direction = half3(0.5, 0.5, 0);
Color = 1;
#else
Light light = GetMainLight();
Direction = light.direction;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。