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.

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

  • Compresión VRAM: este es el modo de compresión más común para los recursos 3D. El tamaño del archivo en el disco se reduce y el uso de la memoria de video también se reduce considerablemente. Para 3D, sin embargo, se pueden obtener objetos no deseados.
  • Compresión sin pérdida: esta es la compresión más común para los recursos en 2D. Muestra las imágenes sin ningún tipo de defecto, y la compresión en el disco es decente. Sin embargo, usará una cantidad considerablemente mayor de memoria de video que VRAM.
  • Compresión con pérdidas: para juegos con muchos recursos grandes en 2D, la compresión con pérdida puede ser una buena opción. Presenta algunos defectos, pero menos que la compresión VRAM y el tamaño del archivo es casi una décima parte de la compresión sin pérdidas.
  • Sin compresión: Sólo es útil para archivos de formatos que no se pueden comprimir (como raw float).

En esta tabla, se describen cada una de las cuatro opciones junto con sus ventajas y desventajas (good = Mejor, bad = Peor):

  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 Guardado como S3TC/BC,PVRTC/ETC, según plataforma
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.