1. 凹凸紋理映射
凹凸紋理存放在一個紋理圖片中,其(R,G,B)分別對應(u,v,w)的normalize向量,由于(R,G,B)的歸一化后的范圍是(0-1),故要通過(x - 0.5)*2轉換成(-1,1)的范圍。
另外,由于凹凸紋理記錄的是針對一個垂直于視線的平面的向量,如果將其貼到其他物體上,如環體,球體,就必須計算紋理坐標空間,就是將不垂直于視線的變換為垂直于視線的。可以構造渲染object的(法線,切線),并且得垂直于法線切線的向量,構成坐標系,然后計算光線方向lightDir和視線方向viewDir時,要將其變換到紋理空間坐標系去。
最后在pixel shader中根據lightDir、viewDir和texcoord,像一般光照計算那樣計算,只不過其“法向量”由凹凸紋理提供。
2. 立方體環境映射
先構造立方體紋理,CubeMap,像個紙盒打開6個面那樣。然后逐頂點計算反射向量,計算如下:R = I - 2*N*dot(I,N),然后在pixel shader中texCUBE。

3.折射反射
在2中再添加一個折射向量,然后pixel shader中兩次texCUBE后混合一下。
