在Unity 2019.2中扩展Shader Graph,实现自定义光照

本文介绍了如何在Unity 2019.2中利用Shader Graph扩展自定义光照功能,包括自定义函数、子视图更新,以及颜色和精度模式。详细阐述了如何创建Custom Function节点获取主光源信息,实现标准朗伯光照,以及创建直接镜面着色器。此外,还探讨了处理多个光源和创建卡通着色器的方法,提供了示例项目以供学习和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自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。现在,我们可以开始在文本框添加自定义代码。

image

首先,我们要使用#ifdef SHADERGRAPH_PREVIEW标识。

由于节点上的预览方框无法访问光线数据,所以我们需要告诉节点在视图内的预览框显示什么内容。#ifdef会让编译器在不同情况下使用不同代码。首先定义输出接口的回退值。

#if SHADERGRAPH_PREVIEW
       Direction = half3(0.5, 0.5, 0);
       Color = 1;

接下来,我们使用#else告诉编译器不在预览框内的时候要做什么。

我们会在此获取光线数据,使用LWRP资源包的内置函数GetMainLight()。我们可以使用获取到的信息来指定Direction和Color输出。

自定义函数代码如下。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值