Importing images

Why import them?

W Godot 3+ pliki graficzne nie są już zasobami natywnymi i muszą być zaimportowane. Powodem tego jest duża ilość parametrów konfiguracyjnych, za pomocą których można zaimportować pliki obrazu.

Ten mały samouczek wyjaśni, czym są te parametry i jak je najlepiej wykorzystać.

Importing textures

Domyślną czynnością w programie Godot jest importowanie obrazów jako tekstur. Tekstury są przechowywane w pamięci karty graficznej i nie można do nich uzyskać bezpośredniego dostępu. To właśnie sprawia, że rysowanie ich jest efektywne.

Możliwości importu są ogromne:

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

Wykryj 3D

Ta opcja sprawia, że Godot wie, kiedy tekstura (domyślnie importowana dla 2D) jest używana w 3D. W takim przypadku ustawienia są zmieniane tak, aby flagi tekstury były bardziej przyjazne dla 3D (mipmapy, filtry i jej powtarzanie, stają się włączone, a kompresja jest zamieniana na VRAM). Tekstura jest również ponownie importowana.

Compression

Obrazy są jednym z największych zasobów gry. Aby je efektywnie obsługiwać, należy je skompresować. Godot oferuje kilka metod kompresji, w zależności od zastosowań.

Rodzaj kompresji

  • Kompresja VRAM: Jest to najpopularniejszy tryb kompresji dla zasobów 3D. Zmniejsza się ilość plików na dysku, a także znacznie zmniejsza się zużycie pamięci wideo. W 3D mogą pojawić się niechciane artefakty.
  • Bezstratna kompresja: Jest to najpowszechniejsza kompresja dla zasobów 2D. Pokazuje zasoby bez artefaktów i zajmuje niewiele miejsca na dysku. Będzie jednak zużywać znacznie więcej pamięci VRAM.
  • Kompresja stratna : W grach z dużą ilością zasobów 2D, kompresja stratna może być doskonałym wyborem. Posiada ona pewne niedoskonałości, ale zajmuje prawie dziesięciokrotnie mniej pamięci VRAM niż kompresja bezstratna.
  • Nieskompresowany: Przydatny dla formatów które nie mogą być skompresowanych (raw).

W tej tabeli, każda z czterech opcji będzie opisana zarówno poprzez zalety jak i wady ( |dobry| = Najlepszy, |zły| = Najgorszy ):

  Nieskompresowany Kompresja bezstratna (PNG) Kompresja stratna (WebP) Kompresja VRAM
Opis Przechowywane jako surowe piksele Przechowywane jako PNG Przechowywane jako WebP Przechowywane jako S3TC/BC, PVRTC/ETC, w zależności od platformy
Rozmiar na dysku |zły| Duży |zwykły| Mały |dobry| Bardzo mały |zwykły| Mały
Użycie pamięci |zły| Duży |zły| Duży |zły| Duży |dobry| Mały
Wydajność |zwykły| Normalny |zwykły| Normalny |zwykły| Normalny |dobry| Szybki
Utrata jakości |dobry| Żaden |dobry| Żaden |zwykły| Niewielkie |zły| Umiarkowany
Czas ładowania |zwykły| Normalny |zły| Powolne |zły| Powolne |dobry| Szybki

Tryb 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.

Normal Map

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.

Flagi

Istnieje wiele ustawień, które można przełączać podczas importowania obrazu jako tekstury, zależnie od potrzeb.

Powtórz

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”.

Repeating can optionally be set to mirrored mode.

Filtr

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.

Minimapy

Gdy piksele staną się mniejsze niż ekran, zostaną uruchomione mipmapy. Pomaga to zredukować efekt ziarnistości podczas kurczenia się tekstury. Należy pamiętać, że w starszym sprzęcie (GLES2, głównie mobilnym) istnieją pewne wymagania co do stosowania mipmap:

  • Szerokość i wysokość tekstury muszą być potęgami 2
  • Powtórzenie musi być włączone

Pamiętaj, że gdy podczas tworzenia gier i aplikacji na telefony, zechcesz dążyć do pełnej zgodności to będziesz potrzebował mipmap.

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

Anizotropowe

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

SRGB

Godot uses Linear colorspace when rendering 3D. Textures mapped to albedo or detail channels need to have this option turned on in order for colors to look correct. When set to „Detect” mode, the texture will be marked as SRGB when used in albedo channels.

Przetwarzaj

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

Napraw granicę Alpha(Przeźroczystości)

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

Dobrym pomysłem jest pozostawienie go włączonym domyślnie, chyba że potrzebne są określone wartości.

Premultiplied Alpha

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 as 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.

Invert Color

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 Materiał przestrzenny.