2014-10-16 50 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