先来几个图:
首先需要有一个单位球,球心就放在摄像机处,随时保持。
接下来载入我们的立方体贴图,当然是已经做好的,然后贴到球上,注意关掉ZWRITE和背面裁剪,这样就完成一个静态的环境贴图了。
如果要做动态的,那么需要自己渲染出一个立方体贴图,这时需要将摄像机放到要做反射折射的物体中心,以90度的FOV,绘制所观察到的景物到立方体贴图的每个面上,这样可以保证立方体贴图的无缝连接,自然就需要上下左右地绘制6次,来生成一个实时的立方体贴图。
反射跟做镜面高光时是一个道理,镜面高光是光源发射的光线碰到光滑表面后以一定角度反射进观察者的眼睛,而做环境的反射则是把周围的环境都看做了光源,也就是周围的每个像素都是一个光源,他们发出的光经过反射到达观察者的眼睛。
在做环境的反射时,当然不能把周围所有像素都考虑进来,只需要考虑观察者能看见的像素,这就需要把做镜面反射的过程颠倒过来,从视线向量出发经过物体表面,求出反射向量,然后用反射向量找到环境贴图,也就是立方贴图上的像素,再渲染到物体表面。
光