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#