Opcje mechanizmu renderowania Godot

Godot obsługuje dwa silniki renderowania: GLES2 i GLES3. Na początku projektu wybierz GLES2 lub GLES3 i w miarę możliwości unikaj przełączania się między nimi. Projekty mogą się przełączać między tymi dwoma mechanizmami renderowania, ale wymaga to dodatkowej migracji.

Na urządzeniach z Androidem te mechanizmy renderowania korzystają odpowiednio z interfejsów API OpenGL ES 2.0 i OpenGL ES 3.0. Mechanizm renderowania GLES3 ma bardziej zaawansowane możliwości i funkcje, natomiast mechanizm renderowania GLES2 jest zgodny z większą liczbą urządzeń z Androidem. Na potrzeby identycznych danych o scenie wejściowej generują też nieco inne wizualne dane wyjściowe. Ta rozbieżność jest spowodowana przez mechanizm renderowania GLES2 korzystający z przestrzeni kolorów sRGB, a mechanizm renderowania GLES3 wykorzystuje liniową przestrzeń kolorów.

Wybieranie mechanizmu renderowania

GLES2

Mechanizm renderowania GLES2 najlepiej sprawdza się w projektach 2D i 3D o skromnych wymaganiach graficznych. Jest zgodny praktycznie ze wszystkimi aktywnymi urządzeniami z Androidem. Jeśli Twój projekt jest zaprojektowany tak, aby dobrze działać na starszych urządzeniach, i chcesz je obsługiwać, najlepszym wyborem może być GLES2.

Ważnym ograniczeniem mechanizmu renderowania GLES2 na Androidzie jest to, że obsługiwany jest tylko jeden format skompresowanych tekstur: ETC1. ETC1 nie obsługuje kanału alfa. W innych wyszukiwarkach jako obejście problemu można zastosować podwójne tekstury ETC1 – jedna tekstura zawiera dane o kolorze, a druga – dane kanału alfa. Godot tego nie robi. Projekty korzystające z mechanizmu renderowania GLES2 na Androidzie muszą używać kanału alfa, jeśli zawierają nieskompresowane tekstury. Nieskompresowane tekstury zużywają znacznie więcej pamięci i są mniej wydajne niż skompresowane. Problemy z dużymi nieskompresowanymi teksturami, na przykład przekroczenie limitów pamięci, mogą występować na starszych urządzeniach z ograniczonymi zasobami.

Zaawansowane funkcje renderowania mogą być niedostępne w mechanizmie renderowania GLES2. Ograniczenia mechanizmu renderowania GLES2 to między innymi:

  • Słabe skalowanie wydajności w przypadku aktywnego oświetlenia w czasie rzeczywistym.
  • Brak obsługi funkcji renderowania, takich jak zakres wysokiej rozdzielczości, właściwości załamania, odbicia przestrzeni ekranu i przesłonięcie przestrzeni ekranu.
  • Ograniczenia dotyczące złożoności cieniowania.
  • Brak obsługi globalnego oświetlenia w czasie rzeczywistym.
  • Brak obsługi akceleracji GPU w przypadku cząstek.

GLES3

Mechanizm renderowania GLES3 jest zgodny z około 90% aktywnych urządzeń z Androidem, które obsługują platformę OpenGL ES 3.0. Tylko najstarsze z aktywnych urządzeń z Androidem nie obsługują OpenGL ES 3.0.

Chociaż mechanizm renderowania GLES3 jest zgodny z wszystkimi urządzeniami OpenGL ES 3.0, należy pamiętać, że starsze urządzenia będą rzadziej działać z akceptowalną liczbą klatek. Niektóre starsze urządzenia zawierają również błędy graficzne w implementacjach OpenGL ES 3.0. Renderowanie GLES3 na Androidzie ma ograniczone środki zaradcze w przypadku błędów sterowników. Na nowszych urządzeniach te problemy są mniej ważne.

Mechanizm renderowania GLES3 obsługuje format kompresji tekstur ETC2 na Androidzie. W przeciwieństwie do ETC1 ETC2 obejmuje obsługę kanału alfa.

Więcej informacji znajdziesz w dokumentacji Godot – różnice między GLES2 a GLES3.