像素着色器在计算每个像素的光照时,会计算这个像素所在的面的法向量,而这个面的法向量也是由这个面周围的顶点法线插值得来的,把纹理采样的思想用在这里,直接用一张贴图来存储法线,在采样diffuse贴图时,再采样一张法线贴图,就可以修改法线了,通过改变法线来改变面上某个点的光照条件,就有凹凸的感觉了,这里用的是切线空间的法线纹理。
要得到法线的方向其实就是像素映射的逆函数:normal = pixel x 2 - 1
贴代码:
Shader "PLM/Table" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {
}
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular("Specular",Color) = (1,1,1,1)
_Gloss("Gloss",Range(8.0,256)) = 20
_BumpMap ("Normal Map", 2D) = "bump" {
}
_BumpScal