Narzędzie do łączenia siatek i materiałów (Material & Mesh Merging) w Unity 3D

Jednym z najczęstszych wyzwań optymalizacyjnych w projektach Unity 3D jest duża liczba oddzielnych GameObjectów z różnymi materiałami. Powoduje to znaczące obciążenie CPU, ponieważ silnik musi poświęcać dodatkowy czas na przygotowanie danych dla GPU do renderowania.

Choć wbudowane w Unity mechanizmy static batching i GPU instancing zapewniają pewne ulepszenia, nie są one tak wydajne jak łączenie siatek – a w praktyce najlepiej działają w połączeniu z nim. Redukcja obciążenia CPU ma szczególne znaczenie w przypadku buildów WebGL, gdzie wykonanie ograniczone jest do pojedynczego wątku.

Aby rozwiązać ten problem, opracowaliśmy niestandardowe narzędzie do łączenia siatek i materiałów w Unity 3D.

Kluczowe funkcje

  • Nieinwazyjny workflow – Może być dodany lub usunięty w dowolnym momencie, bez konieczności specjalnej konfiguracji sceny czy projektu.
  • Dedykowany interfejs Edytora Unity – Okna i menu umożliwiające konfigurację i korzystanie z narzędzia bez kodowania.
  • Obsługa light bakingu – Pełna kompatybilność z oświetleniem wypiekanym.
  • Podgląd na żywo.
  • Inteligentne cache’owanie.
  • Optymalizacja LOD – Obsługa łączenia obiektów z różnymi poziomami szczegółowości.

Rezultaty

Wdrożenie tego narzędzia pozwoliło zredukować czas CPU na klatkę o ponad 10 ms na urządzeniach mobilnych i w przeglądarkach mobilnych, co przełożyło się na krótsze czasy ładowania, płynniejszą rozgrywkę i większą stabilność wydajności na różnych platformach.

Wykorzystane technologie:
Unity 3D, C#