US3S8L1——立方体纹理
US3S8L1——立方体纹理
立方体纹理
立方体纹理(CubeMap)是一种特殊的纹理类型,和之前我们讲过的单张纹理、法线纹理、渐变纹理、高光遮罩纹理不同,
立方体纹理包含6个独立的二维纹理,分别对应一个立方体的六个面,分别为:
- 正X面(右):+X
- 负X面(左):-X
- 正Y面(上):+Y
- 负Y面(下):-Y
- 正Z面(前):+Z
- 负Z面(后):-Z
注意:这个轴向就是 Unity 中的世界坐标轴向
立方体纹理的用途
立方体纹理(CubeMap)在图形编程中常见的用途有:
-
环境映射
用于模拟反射环境的效果,用立方体纹理存储周围环境的图像,当应用到反射表面时,可以让物体看起来像是在反射其周围的环境。
-
天空盒
用于渲染天空盒,将立方体纹理的六个面映射到一个立方体内表面,从而模拟天空、云朵、远处的山脉等环境
-
全景图
用于展示全景图像、视频,通过立方体纹理来存储全景照片、视频的六个部分
等等
立方体纹理如何采样
作为有 6 张 2D 纹理的立方体纹理,它的采访方式和我们之前学习的内容不同。
对立方体纹理进行采样,我们需要提供一个三维的纹理坐标,该坐标表示了我们在世界空间下的一个三维方向。
这个方向向量从立方体的中心出发,当它向外延伸时就会和6个纹理之一相交,采样结果就是由该交点计算而来!
立方体纹理的优缺点
-
优点:
- 多用途:可以有效的模拟环境映射和全景效果,如反射、折射、天空盒、环境光照等
- 无缝连接:立方体纹理设计为无缝连接着六个面,减少了可见的接缝和瑕疵
- 兼容性较好:大多数现代图形硬件对立方体纹理都有专门的支持
等等
-
缺点:
- 内存开销:立方体纹理由6个2D纹理组成,内存占用较高,特别是在高分辨率情况下
- 采样复杂性:采样方式比起传统的2D纹理更加耗性能,计算更多
- 透视变形:6个平面来近似球形环境,有时会出现透视变形的问题
等等
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!