2014-10-16 81 views
0

在片段着色器中,我从3D模型中读取了视图坐标轴系统中的法向量,以及从凹凸纹理中获取的凸块法线向量。 如果我想获得漫反射系数和镜面反射系数。难道我只是简单地加上这两个正常或做别的?如何用phong shading实现凹凸贴图

+0

这很大程度上取决于您如何从凹凸纹理计算法线。当您沿纹理的x轴和y轴读取深度值并计算导数以得到法线时,您必须将计算的法线从切线空间转换为模型空间,并在那里使用它而不是对象的法线。 当您已经沿着模型空间计算了导数时,您可以简单地替换该对象的法线而无需进一步转换。 – BDL 2014-10-16 10:56:59

回答

1

即时使用的最常见的正常映射技术,需要预先计算切线双切线每个顶点矢量,作为除了正常的向量。

之后,你有正常的,切线,副法线向量,为您创造一个矩阵(可以说TBN),以将来自视图空间模型的切线空间

所以(在顶点着色器)使用TBN矩阵将光向量和眼睛向量(Lambert漫射项和Phong反射所需的)转换为切线空间;例如(在片段着色器中),漫射项将是D = L dot N; (其中L是切线空间中的轻位置,N是从法线贴图纹理中提取的法向矢量)。

你可以找到详细的教程:here

+0

这是一个双倍的,而不是一个副法师。你也可以用二维的“法线贴图”,而不使用顶点法线,但你总是需要一个正切。 – Jessy 2014-10-16 14:47:10

+0

是的,你说的没错,把它称之为比喻更为恰当。 – 2014-10-16 15:43:01