NormalMapping

NormalMapping

  法线贴图内的数据是法线,高度贴图内的数据是高度,不是一个东西。在ShaderLab中,UnpackNormal()分析的是法线贴图(注意不是高度贴图)。

  

  可以看到,在GLES环境下及Mobile环境下,normal中存储的只是0-1的值。而UnpackNormal将值从0-1转换到-1-1。

  法线贴图类似如下这张:

  

  照例,使用Texture需要先定义:

  

  要定义NormalTex的UV:

  

  最后通过UnpackNormal解出Normal:

  

  下面是使用与未使用法线贴图的效果:

    

How it works

  可以通过增大x、y分量来增强高度差体验:

  

  

  增加x、y是因为,如果增加x、y、z则等同于法线没有改变,因为法线必须是单位向量。我们需要改的朝向,当在凹横槽时,增大x、y可以让法线更平,从而高度差加大。

原文地址:https://www.cnblogs.com/tekkaman/p/3979820.html