文章目录
- 前言
- 一、ShaderGraph获取主灯
- 1、创建ShaderGraph
- 2、创建一个自定义方法(Custom Function)节点
- 3、新建两个 Vector3 类型的输出变量
- 4、选择自定义节点程序体为 string 类型
- 5、编写程序体
- 6、我们输出主光方向看看效果
- 7、我们输出主光颜色看看效果
- 8、计算Lambert光照
- 二、测试节点图 及 测试代码
前言
在上一篇文章中,我们知道了URP下获取主灯的方法。
- Unity中URP下获取主灯信息
在这篇文章中,我们来了解一下ShaderGraph下怎么获取主灯。方便我们之后,快速调试光照效果。
一、ShaderGraph获取主灯
1、创建ShaderGraph
2、创建一个自定义方法(Custom Function)节点
3、新建两个 Vector3 类型的输出变量
4、选择自定义节点程序体为 string 类型
- 这里也可以选择文件类型,我们选择文本框形式,只是方便修改
5、编写程序体
- 给定方法名
- 判断 SHADERGRAPH_PREVIEW,让其在预览模式下不要报错
- 通过 _MainLightPosition 获取主光方向
- 通过 _MainLightColor 获取主光颜色
6、我们输出主光方向看看效果
7、我们输出主光颜色看看效果
8、计算Lambert光照
-
使用 主光方向向量 点积 法线向量
-
获取法线
-
创建点积节点
-
得到 dot(N,L)
-
输出
二、测试节点图 及 测试代码
#if SHADERGRAPH_PREVIEW
Direction = 1;
Color = 1;
#else
Direction = _MainLightPosition.xyz;
Color = _MainLightColor.rgb;
#endif