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后混合一下。
posted on 2012-05-03 21:38
bennycen 阅读(1336)
评论(1) 编辑 收藏 引用 所属分类:
Windows Programming