Unity中ShaderGraph下获取主灯

文章目录

  • 前言
  • 一、ShaderGraph获取主灯
    • 1、创建ShaderGraph
    • 2、创建一个自定义方法(Custom Function)节点
    • 3、新建两个 Vector3 类型的输出变量
    • 4、选择自定义节点程序体为 string 类型
    • 5、编写程序体
    • 6、我们输出主光方向看看效果
    • 7、我们输出主光颜色看看效果
    • 8、计算Lambert光照
  • 二、测试节点图 及 测试代码


前言

在上一篇文章中,我们知道了URP下获取主灯的方法。

  • Unity中URP下获取主灯信息

在这篇文章中,我们来了解一下ShaderGraph下怎么获取主灯。方便我们之后,快速调试光照效果。


一、ShaderGraph获取主灯

1、创建ShaderGraph

Unity中ShaderGraph下获取主灯_第1张图片

2、创建一个自定义方法(Custom Function)节点

Unity中ShaderGraph下获取主灯_第2张图片

3、新建两个 Vector3 类型的输出变量

Unity中ShaderGraph下获取主灯_第3张图片

4、选择自定义节点程序体为 string 类型

  • 这里也可以选择文件类型,我们选择文本框形式,只是方便修改

5、编写程序体

  • 给定方法名
  • 判断 SHADERGRAPH_PREVIEW,让其在预览模式下不要报错
  • 通过 _MainLightPosition 获取主光方向
  • 通过 _MainLightColor 获取主光颜色
    Unity中ShaderGraph下获取主灯_第4张图片

6、我们输出主光方向看看效果

Unity中ShaderGraph下获取主灯_第5张图片

7、我们输出主光颜色看看效果

Unity中ShaderGraph下获取主灯_第6张图片

8、计算Lambert光照

  • 使用 主光方向向量 点积 法线向量

  • 获取法线
    Unity中ShaderGraph下获取主灯_第7张图片

  • 创建点积节点
    Unity中ShaderGraph下获取主灯_第8张图片

  • 得到 dot(N,L)
    Unity中ShaderGraph下获取主灯_第9张图片

  • 输出
    Unity中ShaderGraph下获取主灯_第10张图片
    Unity中ShaderGraph下获取主灯_第11张图片


二、测试节点图 及 测试代码

Unity中ShaderGraph下获取主灯_第12张图片

#if SHADERGRAPH_PREVIEW
Direction = 1;
Color = 1;
#else
Direction = _MainLightPosition.xyz;
Color = _MainLightColor.rgb;
#endif

你可能感兴趣的:(Unity,unity,游戏引擎)