Version: 2019.4
3D 纹理
立方体贴图

纹理数组

纹理数组是具有相同大小/格式/标记的 2D 纹理的集合,这些纹理对于 GPU 而言像是单个对象,并可在着色器中使用纹理元素索引进行采样。它们可以用于实现自定义地形渲染系统或其他特殊效果,让您高效访问大量相同大小和格式的纹理。2D 纹理数组的元素也称为切片或图层。

平台支持

纹理数组需要受到底层图形 API 和 GPU 的支持。纹理数组在以下平台上可用:

  • Direct3D 11/12(Windows、Xbox One)
  • OpenGL Core(Mac OS X、Linux)
  • Metal(iOS、Mac OS X)
  • OpenGL ES 3.0(Android、iOS、WebGL 2.0)
  • PlayStation 4

其他平台(OpenGL ES 2.0 或 WebGL 1.0)不支持纹理数组。可使用 SystemInfo.supports2DArrayTextures 在运行时确定纹理数组支持情况。

创建和填充纹理数组

由于纹理数组没有纹理导入管线,必须在脚本中创建纹理数组。可使用 Texture2DArray 类来创建和填充纹理数组。请注意,纹理数组可序列化为资源,因此可以借助 Editor 脚本中的数据创建和填充纹理数组。

通常,纹理数组完全是在 GPU 内存中使用,但您可以使用 Graphics.CopyTextureTexture2DArray.GetPixelsTexture2DArray.SetPixels 与系统内存之间双向传输像素。

将纹理数组用作渲染目标

纹理数组元素也可用作渲染目标。使用 RenderTexture.dimension 提前指定渲染目标是否是 2D 纹理数组。Graphics.SetRenderTargetdepthSlice 参数可指定要渲染到的 Mipmap 级别或立方体贴图面。在支持“分层渲染”(例如,几何着色器)的平台上,可将 depthSlice 参数设置为 –1 以便将整个纹理数组设置为渲染目标。此外还可使用几何着色器来渲染到个别元素中。

在着色器中使用纹理数组

请参阅在着色器中使用纹理数组

3D 纹理
立方体贴图