对于照明,我需要片段着色器中的法线向量。我读过的教程要求我提供正常数据和模型的顶点。但是不是由顶点指定的面已经给出的法线?
为了计算法线,我需要三角形的所有三个顶点。但据我所知,我们只能在顶点着色器的每次传递中访问一个顶点。
如何根据顶点数据计算每个像素的法向量?我希望在此之后应用法线贴图,但后来会与此问题无关。
答案 0 :(得分:2)
但是不是由顶点指定的面已经给出的法线?
是的,不。从技术上讲,你可以确定每张脸的法线,但通常在模型师中设计3D模型的艺术家想要微调法线以调整光照计算。
基于顶点数据的每个像素的法向量?
只需将法线作为变量变量(varying
或out
关键字,具体取决于GLSL版本)传递给片段着色器。法线向量将被重心插值。然后,您可以在片段着色器中将其标准化为单位长度。