Shaderforge Normal通道
一、官方介绍
normal通道输入切线空间中的法线方向,你可以连接法线贴图或者法向量到该通道。
用于使用光照的明暗模拟凹凸效果。
二、通道的输入
Normal通道输入的数据为存储着法线信息的法线贴图
三、 介绍法线贴图技术
想要模拟物体表面的凹凸效果,我们可以在建模时增加面,但这样一来渲染效率会下降。法线贴图技术就是一种不增加模型面数,而是靠光照的明暗来表现凹凸感的方法。
法线贴图技术原理
怎样利用法线贴图记录一个平面或者说是一个贴图的凹凸情况呢?
我们知道,物体表面产生明暗变化的直接原因,就是光线照射角度的不同,光线垂直于平面的地方就亮,光线斜射到平面的地方就暗,光线照不到的地方就更暗(应该是黑色,但是由于环境光照所以不会有阴影是真正的黑色)。
表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。
记录这些法线的载体就被我们称为法线贴图。
光线方向越靠近法线,越亮,反之则越暗。(用N点乘L来展现法线与灯光的朝向关系)
四、介绍法线贴图
一条法线是一个三维向量,一个三维向量由X、Y、Z等3个分量组成,于是人们想出了一个聪明的方法,就是以这3个分量当作红绿蓝3个颜色的值存储,这样的话就生成一张新的贴图了,这就是法线贴图的来历。
线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。所以这个贴图如果看起来也会比较诡异,经常呈现一种偏蓝紫色的样子。
法线贴图偏蓝紫色:因为法线经常是朝着Z轴的,Z映射到贴图的B(Blue)通道,因此发现贴图偏蓝。
1. 法线信息存入正常贴图
正常贴图: 存储颜色信息,有四个通道(R,G,B,A) ,每一个通道值得范围是[0,1]。
向量的取值范围是[-1,1],颜色的取值范围是[0,1],因此我们需要做一个从[1,1]到[0,1]的映射,将向量信息存入正常的贴图把它变成法线贴图。
pixel= \frac{normal+1}{2}
这样我们就获取到了法线贴图: 存储法线向量信息,有四个通道(x,y,z,w)
2. 从法线贴图获取法线向量
从法线贴图获取法线向量的方法正好是将法线信息存入贴图的逆过程:
使用Normalmap的时候
normal = pixel\times 2-1