Shader Graph6-点积函数(上)

一、法线与视角点积(点乘)

打开Unity,新建一个Shader,双击打开。首先我们看一下,不用Dot Product的情况下,我们使用最基础的节点怎么实现Dot Product。我们观察下面两个图,第一个图是Add连接到Base Color上,第二个图是没有连接上。很明显第一个图比较亮,第二个图比较暗。

我们修改一下预览形状显示,改为立方体

Add连接上之后,再观察,就会发现有面正向朝向我们的时候,表面就是亮的,其他的面就是暗的。

下面具体看看我们的shader都干了什么?

先来解释一下View Direction节点和Normal Vector节点。橙色箭头表示View Direction,摄像机的标识标识我们的观察位置,绿色箭头表示Normal Vector,也就是下面这个面的法线方向。当我们从最上面向下看时,View Direction的方向与Normal Vector的方向是一致的,而下下面的图View Direction的方向与Normal Vector的方向形成了一定的角度。

这两个向量View Direction、Normal Vector的点积就是

那么图1这两个向量的夹角是0,cos0度=1,图2这两个向量的夹角比方说是60度 ,那么cos60=1/2,所以说图1的结果就比图2的结果要大,所以这就解释了为什么文章一开始的shader的连接的结果比较亮,不连接的结果比较暗。当我们选择预览的立方体的时候,为什么总是朝向我们的面会比较亮的原因。

二、使用Dot Product节点简化Shader,结果是一样的。

下面我们看看UE中的情形,效果与Unity中是一样的。

 

这里与Unity有点区别的是,需要先计算一下View Direction。下图绿色线框就是计算View Direction, 如何计算View Direction呢?

 

看看下边的图,黑色表示Camera Posion,绿色表示Absolute World Position,根据向量减法黑色-绿色=橙色,也就是得到了View Direction这个向量。后来发现绿色线框可以替换为Camera Vector节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值