Version: 2020.2
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, WebGL 2.0)
  • PlayStation 4

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

Importing texture arrays

You can import texture arrays from source texture files that are divided into cells. These are called flipbook textures. To do this:

  1. Import the source texture into your Unity Project.
  2. In your Project view, select the resulting Texture Asset. Unity displays the Texture import settings in the Inspector.
  3. In the Inspector, set Texture Shape to 2D Array. Unity displays the Columns and Rows properties.
  4. Set Columns and Rows to the appropriate values for your flipbook texture.
  5. Click Apply.

For more information, see Texture import settings.

Creating and manipulating texture arrays using scripts

To create a texture array from a C# script, use the Texture2DArray class to initialize the texture and set pixel data, and save the object as an asset file using AssetDatabase.CreateAsset.

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

将纹理数组用作渲染目标

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

在着色器中使用纹理数组

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

3D 纹理
立方体贴图