Version: 2021.1
3D textures
Cubemaps

Texture arrays

Una arreglo de textura es una colección de texturas con el mismo tamaño/formato/banderas que se ven como un solo objeto en la GPU, y se pueden muestrear en el shader con un índice de elementos de textura. Son útiles para implementar sistemas personalizados de renderización del terreno u otros efectos especiales donde se necesita una forma eficiente de acceder a muchas texturas del mismo tamaño y formato. Los elementos de un arreglo de textura 2D también se conocen como slices (rebanadas) o layers (capas).

Soporte de Plataforma

Los arreglos de textura necesitan ser compatibles con la API gráfica subyacente y la GPU. Están disponibles en:

  • 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

Other platforms do not support texture arrays (OpenGL ES 2.0 or WebGL 1.0). Use SystemInfo.supports2DArrayTextures to determine texture array support at runtime.

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.

Normalmente, los arreglos de textura se utilizan puramente dentro de la memoria GPU, pero puede utilizar Graphics.CopyTexture, Texture2DArray.GetPixels y Texture2DArray.SetPixels para transferir píxeles hacia y desde la memoria del sistema.

Utilizando arreglos de textura como render targets

Los elementos del arreglo de textura también se pueden utilizar como render targets. Utilice RenderTexture.dimension para especificar de antemano si el render target debe ser una arreglo de textura 2D. El argumento depthSlice a Graphics.SetRenderTarget especifica el nivel de mipmap o la cara del mapa de cubos para renderizar. En plataformas que admiten “renderizado en capas” (es decir, geometry shaders), puede configurar el argumento depthSlice en –1 para establecer toda la arreglo de textura como un render target. También puede utilizar un geometry shader para renderizar en elementos individuales.

Utilizando arreglos de textura en shaders

See Using texture arrays in shaders.

3D textures
Cubemaps