US3S8L1——立方体纹理

立方体纹理

立方体纹理(CubeMap)是一种特殊的纹理类型,和之前我们讲过的单张纹理、法线纹理、渐变纹理、高光遮罩纹理不同,
立方体纹理包含6个独立的二维纹理,分别对应一个立方体的六个面,分别为:

  • 正X面(右):+X
  • 负X面(左):-X
  • 正Y面(上):+Y
  • 负Y面(下):-Y
  • 正Z面(前):+Z
  • 负Z面(后):-Z

image

注意:这个轴向就是 Unity 中的世界坐标轴向

立方体纹理的用途

立方体纹理(CubeMap)在图形编程中常见的用途有:

  1. 环境映射

    用于模拟反射环境的效果,用立方体纹理存储周围环境的图像,当应用到反射表面时,可以让物体看起来像是在反射其周围的环境。

  2. 天空盒

    用于渲染天空盒,将立方体纹理的六个面映射到一个立方体内表面,从而模拟天空、云朵、远处的山脉等环境

  3. 全景图

    用于展示全景图像、视频,通过立方体纹理来存储全景照片、视频的六个部分

等等

立方体纹理如何采样

作为有 6 张 2D 纹理的立方体纹理,它的采访方式和我们之前学习的内容不同。
对立方体纹理进行采样,我们需要提供一个三维的纹理坐标,该坐标表示了我们在世界空间下的一个三维方向。
这个方向向量从立方体的中心出发,当它向外延伸时就会和6个纹理之一相交,采样结果就是由该交点计算而来!

image

立方体纹理的优缺点

  • 优点:

    1. 多用途:可以有效的模拟环境映射和全景效果,如反射、折射、天空盒、环境光照等
    2. 无缝连接:立方体纹理设计为无缝连接着六个面,减少了可见的接缝和瑕疵
    3. 兼容性较好:大多数现代图形硬件对立方体纹理都有专门的支持

    等等

  • 缺点:

    1. 内存开销:立方体纹理由6个2D纹理组成,内存占用较高,特别是在高分辨率情况下
    2. 采样复杂性:采样方式比起传统的2D纹理更加耗性能,计算更多
    3. 透视变形:6个平面来近似球形环境,有时会出现透视变形的问题

    等等