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

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

posted on 2012-05-03 21:38
bennycen 閱讀(1373)
評論(1) 編輯 收藏 引用 所屬分類:
Windows Programming