法线贴图
法线贴图允许您在不添加任何几何图形的情况下添加曲面细节。通常,在像搅拌机这样的建模程序中,你创建一个高多边形和一个低多边形的网格。从高多边形网格中提取顶点法线,并将其烘焙成纹理。这个纹理是法线贴图。然后在片段着色器中,将低多边形网格的顶点法线替换为烘焙到法线贴图中的高多边形网格的法线。现在,当你照亮你的网格时,它看起来会有比实际更多的多边形。这将保持您的FPS高,同时保留高聚合版本的大部分细节。
在这里,您可以看到应用法线贴图从高多边形模型到低多边形模型再到低多边形模型的过程
但是请记住,正常的映射只是一种幻觉。一定角度后,表面将再次看起来平坦。
顶点
// …
uniform mat3 p3d_NormalMatrix;
// …
in vec3 p3d_Normal;
// …
in vec3 p3d_Binormal;
in vec3 p3d_Tangent;
// …
vertexNormal = normalize(p3d_NormalMatrix * p3d_Normal);
binormal = normalize(p3d_NormalMatrix * p3d_Binormal);
tangent = normalize(p3d_NormalMatrix * p3d_Tangent);
// …
从顶点着色器开始,您需要向片段着色器输出法线向量、副法线向量和切线向量。在片段着色器中,这些向量用于将法线贴图从切线空间转换为视图空间。
p3d_NormalMatrix转换顶点法线、副法线和切线向量以查看空间。请记住,在视图空间中,所有坐标都是相对于摄像机的位置。
// …
in ve