立方体纹理(Cubemap)
是环境映射(EnvironmentMapping)一种实现方式。
纹理采样:对立方体采样需要提供一个三维的纹理坐标,这个三维纹理坐标表示了我们在世界空间下的一个3D、方向。
天空盒子
Skybox是游戏中模拟背景的一种方法,每个面使用的技术就是立方体纹理映射技术。
创建用于环境映射的立方体纹理
1.提供一张具有特殊布局的纹理,类似于立方体展开图的交叉布局、全景布局等。我们需要将TextureType设置为Cubemap
2.使用Camera.RenderToCubemap方法实现,此方法可以把任意位置观察到的场景存储到6张图像中,从而创建出该位置上的立方体纹理。将创建的立方体纹理存入一个Cubemap中。
反射
在我们的shader中加入一个模拟反射的环境映射纹理。对立方体的纹理使用CG中的texCUBE函数进行采样。
我们最终得到图中结果
![11173460-f273923e844d0d9e.PNG](https://i-blog.csdnimg.cn/blog_migrate/29b25c04a7fd0fe136f8d6755df66a50.webp?x-image-process=image/format,png)
Reflection.PNG
折射
折射光的定律如下:
![11173460-215f196b3ed91bfd.PNG](https://i-blog.csdnimg.cn/blog_migrate/e69a2285154faa5c6e05e448d09b60b6.webp?x-image-process=image/format,png)
斯涅尔定律(Snells Law).PNG
在模拟反射的时候,我们根据公式将反射光乘以一个折射率的比值来得到折射的光。