从顶点数据中获取像素法线

时间:2013-01-04 00:25:46

标签: opengl glsl shader normals vertices

对于照明,我需要片段着色器中的法线向量。我读过的教程要求我提供正常数据和模型的顶点。但是不是由顶点指定的面已经给出的法线?

为了计算法线,我需要三角形的所有三个顶点。但据我所知,我们只能在顶点着色器的每次传递中访问一个顶点。

如何根据顶点数据计算每个像素的法向量?我希望在此之后应用法线贴图,但后来会与此问题无关。

1 个答案:

答案 0 :(得分:2)

  

但是不是由顶点指定的面已经给出的法线?

是的,不。从技术上讲,你可以确定每张脸的法线,但通常在模型师中设计3D模型的艺术家想要微调法线以调整光照计算。

  

基于顶点数据的每个像素的法向量?

只需将法线作为变量变量(varyingout关键字,具体取决于GLSL版本)传递给片段着色器。法线向量将被重心插值。然后,您可以在片段着色器中将其标准化为单位长度。