Version: 2020.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.

Creando y manipulando arreglos de Textura

Dado que no hay una pipeline de importación de texturas para arreglos de textura, estas deben crearse desde sus scripts. Utilice la clase Texture2DArray para crearlos y manipularlos. Tenga en cuenta que los arrays de textura se pueden serializar como assets, por lo que es posible crearlos y rellenarlos con los datos de los scripts del editor.

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