Importing images

Why import them?

Em Godot 3+, os arquivos de imagem não são mais recursos nativos e devem ser importados. A razão por trás disso é a grande quantidade de parâmetros de configuração com os quais os arquivos de imagem podem ser importados.

Este pequeno tutorial explicará quais são esses parâmetros e como melhor utilizá-los.

Importing textures

A ação padrão na Godot é importar imagens como texturas. As texturas são armazenadas na memória de vídeo e não podem ser acessadas diretamente. Isto é o que torna o desenho eficiente.

As opções de importação são vastas:

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

Detect 3D

This option makes Godot be aware of when a texture (which is imported for 2D as default) is used in 3D. If this happens, setting are changed so the texture flags are friendlier to 3D (mipmaps, filter and repeat become enabled and compression is changed to VRAM). Texture is also reimported automatically.

Compression

Imagens são um dos recursos mais pesados em um jogo. Para usá-las de forma eficiente, elas precisam de ser comprimidas. O Godot proporciona vários métodos de compressão, dependendo do caso.

Modo de compactação

  • VRAM Compression: This is the most common compression mode for 3D assets. File on disk is reduced and video memory usage is also reduced considerably. For 3D, it may present unwanted artifacts, though.
  • Compactação sem perdas: essa é a compactação mais comum para ativos 2D. Ele mostra ativos sem qualquer tipo de artefato e a compactação de disco é decente. Ele vai usar uma quantidade consideravelmente maior de memória de vídeo do que a VRAM.
  • Compactação com perdas: para jogos com muitos recursos 2D grandes, a compactação com perdas pode ser uma ótima opção. Tem algum artefato, mas menos que VRAM e o tamanho do arquivo é quase um décimo de sem perdas.
  • Descompactado: Útil apenas para formatos que não podem ser compactados (como float bruto).

Nesta tabela, cada uma das quatro opções é descrita junto com suas vantagens e desvantagens (| boa | = Melhor, | ruim | = Pior):

  Descomprimido Comprimir sem perdas (PNG) Comprimir com perdas (WebP) Compress VRAM
Descrição Armazenado como pixels brutos Armazenado como PNG Armazenado como WebP Armazenado como S3TC / BC, PVRTC / ETC, dependendo da plataforma
Tamanho no disco bad Large regular Small bom | Muito pequeno regular Small
Uso de memória bad Large bad Large bad Large bom | Pequeno
Performance regular Normal regular Normal regular Normal bom | Rápido
Perda de qualidade bom | Nenhum bom | Nenhum regular Slight bad Moderate
Tempo de carregamento regular Normal bad Slow bad Slow bom | Rápido

Modo HDR

Godot supports high dynamic range textures (as .HDR or .EXR). These are mostly useful as high dynamic range equirectangular panorama skies (the internet has plenty if you search for them), which replace Cubemaps in Godot 2.x. Modern PCs support the BC6H VRAM format, but there are still plenty that do not.

If you want Godot to ensure full compatibility in terms of the kind of textures, enable the “Force RGBE” option.

Mapa Normal

When using a texture as normal map, only the red and green channels are required. Given regular texture compression algorithms produce artifacts that don’t look that nice in normal maps, the RGTC compression format is the best fit for this data. Forcing this option to “Enabled” will make Godot import the image as RGTC compressed. By default, it’s set to “Detect”, which means that if the texture is ever used as a normal map, it will be changed to “Enabled” and reimported automatically.

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.

Bandeiras

Existem muitas configurações que podem ser trocadas ao importar uma imagem como textura, dependendo do uso.

Repetir

This setting is most commonly used in 3D, and is therefore generally disabled in 2D. It sets UV coordinates going beyond the 0,0 - 1,1 range to “loop”.

A repetição pode ser definida opcionalmente para o modo espelhado.

Filtro

When pixels become larger than the screen pixels, this option enables linear interpolation for them. The result is a smoother (less blocky) texture. This setting can be commonly used in 2D and 3D, but it’s usually disabled when making pixel perfect games.

Mipmaps

Quando os pixels se tornam menores que a tela, os mipmaps entram em ação. Isso ajuda a reduzir o efeito granulado ao reduzir as texturas. Tenha em mente que, em hardwares mais antigos (GLES2, principalmente mobile), existem alguns requisitos para usar mipmaps:

  • A largura e a altura da textura devem ser potências de 2
  • Repetição deve ser habilitada

Tenha em mente o que foi mencionado acima ao criar jogos e aplicativos de telefone, desejar ter compatibilidade total e precisar de mipmaps.

When doing 3D, mipmap should be turned on, as this also improves performance (smaller versions of the texture are used for objects further away).

Anisotropic

When textures are near parallel to the view (like floors), this option makes them have more detail by reducing blurriness.

SRGB

Godot usa o espaço de cores Linear ao renderizar em 3D. Texturas mapeadas para albedo ou canais de detalhes precisam ter essa opção ativada para que as cores pareçam corretas. Quando definido para o modo “Detectar”, a textura será marcada como SRGB quando usada em canais de albedo.

Process

Some special processes can be applied to images when imported as textures.

Fix Alpha Border

This puts pixels of the same surrounding color in transition from transparency to non transparency. It helps mitigate the outline effect when exporting images from Photoshop and the like.

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

É uma boa ideia deixar no valor padrão, a menos que valores específicos sejam necessários.

Alpha pré-multiplicado

An alternative to fix darkened borders is to use premultiplied alpha. By enabling this option, the texture will be converted to this format. Keep in mind that a material will need to be created that uses the PREMULT ALPHA blend mode on canvas items that need it.

HDR como sRGB

A few HDR files are broken and contain sRGB color data. It is advised not to use them, but, in the worst-case scenario, toggling this option on will make them look right.

Inverter Cor

Reverses the image’s color. This is useful, for example, to convert a height map generated by external programs to depth map to use with Spatial Material.