Importando imágenes

¿Por qué importarlas?

En Godot 3+, los archivos de imagen ya no son recursos nativos y deben importarse. La razón de esto es la gran cantidad de parámetros de configuración con los que se pueden importar los archivos de imagen.

Este tutorial explicará cuáles son estos parámetros y cómo hacer mejor uso de ellos.

Importando texturas

El comportamiento predeterminado en Godot es importar imágenes como texturas. Las texturas se almacenan en la memoria de video y no se puede acceder directamente. Esto es lo que hace que sean eficientes.

Hay múltiples opciones de importación :

../../../_images/image_import1.png

Detectar 3D

Esta opción hace que Godot tenga en cuenta cuándo una textura (que se importa para 2D como valor predeterminado) se usa en 3D. Si esto sucede, la configuración se cambia para que los indicadores de textura sean más amigables con 3D (los mipmaps, filtro y repetición se habilitan y la compresión se cambia a VRAM). La textura también se reimporta automáticamente.

Supported image formats

Godot can import the following image formats:

  • BMP (.bmp)
  • DirectDraw Surface (.dds) - If mipmaps are present in the texture, they will be loaded directly. This can be used to achieve effects using custom mipmaps.
  • OpenEXR (.exr) - Supports HDR (highly recommended for panorama skies).
  • Radiance HDR (.hdr) - Supports HDR (highly recommended for panorama skies).
  • JPEG (.jpg, .jpeg) - Doesn’t support transparency per the format’s limitations.
  • PNG (.png) - Precision is limited to 8 bits per channel upon importing (no HDR images).
  • Truevision Targa (.tga)
  • SVG (.svg, .svgz) - SVGs are rasterized using NanoSVG when importing them. Support is limited; complex vectors may not render correctly. For complex vectors, rendering them to PNGs using Inkscape is often a better solution. This can be automated thanks to its command-line interface.
  • WebP (.webp)

Nota

If you’ve compiled the Godot editor from source with specific modules disabled, some formats may not be available.

Compresión

Las imágenes son uno de los recursos que más ocupan en un juego. Para manejarlos de manera eficiente, se necesita comprimirlos. Godot ofrece varios métodos de compresión, dependiendo de como se usen.

Modos de compresión

  • VRAM Compression: This is the most common compression mode for 3D assets. Size on disk is reduced and video memory usage is also decreased considerably (usually by a factor between 4 and 6). This mode should be avoided for 2D as it exhibits noticeable artifacts.
  • Lossless Compression: This is the most common compression mode for 2D assets. It shows assets without any kind of artifacting, and disk compression is decent. It will use considerably more amount of video memory than VRAM Compression, though. This is also the recommended setting for pixel art.
  • Lossy Compression: This is a good choice for large 2D assets. It has some artifacts, but less than VRAM and the file size is several times lower compared to Lossless or Uncompressed. Video memory usage isn’t decreased by this mode; it’s the same as with Lossless Compression or Uncompressed.
  • Uncompressed: Only useful for formats that can’t be compressed (such as raw float images).

In this table, each of the four options are described together with their advantages and disadvantages (good = best, bad = worst):

  Sin comprimir Compresión sin pérdida (PNG) Compresión con pérdidas (WebP) Compresion VRAM
Descripción Guardado como pixeles sin procesar Guardado como PNG Guardado como WebP Stored as S3TC/BC or PVRTC/ETC depending on platform
Tamaño en disco bad Grande regular Pequeño good Muy pequeño regular Pequeño
Uso de la memoria bad Grande bad Grande bad Grande good Pequeña
Rendimiento regular Normal regular Normal regular Normal good Rápido
Pérdida de calidad good Nada good Nada regular Leve bad Regular
Tiempo de carga regular Normal bad Lenta bad Lenta good Rápido

Modo HDR

Godot admite texturas de alto rango dinámico (high dynamic range, como .HDR o .EXR). Estos son principalmente útiles como cielos panoramicos equirectanculares de alto rango dinámico (Internet tiene mucho de si los buscas), estos reemplazan a Cubemaps de Godot 2.x. PC modernas admiten el formato BC6H VRAM, pero aún hay muchas que no lo hacen.

Si quieres que Godot garantice la compatibilidad completa para todo tipo de texturas, activa la opción «Forzar RGBE».

Mapa de Normales

Cuando se utiliza una textura como mapa de normales, solo se requieren los canales rojo y verde. Dado que los algoritmos de compresión de texturas regulares producen artefactos (errores) que no se ven tan bien en los mapas de normales, el formato de compresión RGTC es el más adecuado para estos datos. Al forzar esta opción a «Activado», Godot importará la imagen como RGTC comprimida. De forma predeterminada, se establece en «Detect», lo que significa que si la textura se utiliza alguna vez como un mapa normal, se cambiará a «Activado» y se volverá a importar automáticamente.

Note that RGTC compression affects the resulting normal map image. You will have to adjust custom shaders that use the normal map to take this into account.

Indicadores

Hay una gran cantidad de configuraciones que se pueden alternar cuando se importa una imagen como una textura, dependiendo de cada caso.

Repetición

Esta configuración se usa comúnmente en 3D y generalmente está desactivada en 2D. Hace que las coordenadas UV vayan más allá del rango de 0,0 - 1,1 para «repetirse».

La repetición se puede configurar opcionalmente en modo reflejado.

Filtro

Cuando los píxeles se vuelven más grandes que los píxeles de la pantalla, estas opciones permiten la interpolación lineal entre ellos. El resultado es una textura más suave (menos pixelada). Esta configuración se puede usar comúnmente en 2D y 3D, pero generalmente está desactivada al hacer juegos pixelados.

Mipmaps

Cuando los píxeles se vuelven más pequeños que la pantalla, aparecen los mipmaps. Esto ayuda a reducir el efecto granulado al reducir las texturas. Tenga en cuenta que, en hardware antiguo (GLES2, principalmente móvil), existen algunos requisitos para usar mipmaps:

  • La altura y anchura de la textura deben ser potencias de 2
  • Repetir debe estar activada

Ten en cuenta lo anterior al hacer juegos y aplicaciones para móviles, quiere la compatibilidad total y necesita utilizar mipmaps.

Al trabajar en 3D, debe activarse mipmaps ya que también mejora el rendimiento (las versiones más pequeñas de la textura se utilizan para objetos más alejados).

Anisótropo

Cuando las texturas son casi paralelas a la vista (como los pisos), esta opción les permite tener más detalles al reducir la borrosidad.

SRGB

Godot usa espacio de color lineal cuando renderiza 3D. Las texturas mapeadas a canales de albedo o de detalles necesitan tener esta opción activada para que los colores se vean correctamente. Cuando se ajusta en el modo «Detectar», la textura se marcará como SRGB cuando se utilice en canales de albedo.

Procesos

Algunos procesos especiales se pueden aplicar a las imágenes cuando se importan como texturas.

Fix Alpha Border

Esto coloca píxeles del mismo color circundante pasando de transparente a no transparente. Ayuda a mitigar el efecto de contorno al exportar imágenes desde Photoshop y similares.

../../../_images/fixedborder.png

Es una buena idea dejarlo activado por defecto, a menos que se necesiten valores específicos.

Premult Alpha

Una alternativa para arreglar bordes oscurecidos es usar un canal alfa premultiplicado. Al habilitar esta opción, la textura se convertirá a este formato. Tenga en cuenta que será necesario crear un material que utilice el modo de mezcla PREMULT ALPHA en los elementos del lienzo que lo necesiten.

HDR como sRGB

Algunos archivos HDR están rotos y contienen datos de color sRGB. Se aconseja no utilizarlos, pero, en el peor de los casos, alternar esta opción los hará parecer correctos.

Color invertido

Invierte el color de la imagen. Esto es útil, por ejemplo, para convertir un mapa de altura generado por programas externos a un mapa de profundidad para usar con Material Spatial.