Narzędzie do optymalizacji wydajności renderowania z wykorzystaniem Texture Atlassing w Unity 3D

Jednym z najczęstszych wąskich gardeł wydajności w projektach Unity 3D jest liczba draw call-i wymaganych do wyrenderowania sceny. Za każdym razem, gdy GPU przełącza się między różnymi teksturami lub materiałami, CPU musi wysłać nowy draw call – co generuje dodatkowe obciążenie, które szybko narasta, szczególnie na urządzeniach mobilnych i w buildach WebGL, gdzie zasoby są mocno ograniczone.

Texture atlassing to sprawdzona technika redukcji tego problemu, polegająca na łączeniu wielu mniejszych tekstur w jedną, większą atlasową teksturę. Zamiast przełączać się między oddzielnymi materiałami, GPU może renderować wiele obiektów w jednej partii, co znacząco zmniejsza liczbę draw calli oraz obciążenie CPU.

Podejście to nie tylko poprawia czas renderowania klatek, ale także wspiera efektywne zarządzanie pamięcią i szybsze ładowanie, co czyni je kluczowym elementem optymalizacji gier na platformach, gdzie wydajność i responsywność mają krytyczne znaczenie. W Unity texture atlassing można zintegrować z pipeline’em przy użyciu narzędzi niestandardowych lub gotowych pluginów, a w połączeniu z łączeniem siatek (mesh merging) czy GPU instancing staje się istotnym elementem każdej strategii optymalizacji.

Nasze rozwiązanie

Stworzyliśmy niestandardowe narzędzie, które analizuje materiały użyte w scenach i prefabach, a następnie automatycznie generuje atlasy tekstur wraz z zoptymalizowanymi shaderami i materiałami, które z nich korzystają w bardzo wydajny, celowo zakodowany sposób.

Kluczowe funkcje

  • Nieinwazyjny workflow – Może być dodany lub usunięty w dowolnym momencie bez wpływu na istniejące sceny. Developerzy korzystają z Unity jak zwykle, a generowanie, łączenie i optymalizacja odbywają się automatycznie podczas procesu budowania lub przygotowywania podglądu na żywo.
  • Podgląd na żywo – Natychmiastowa wizualizacja wygenerowanych atlasów i shaderów.
  • Dedykowane GUI konfiguracyjne – Interfejs do ustawień, statystyk i przeglądu działania narzędzia.
  • Szerokie wsparcie shaderów – Automatyczna obsługa najczęściej używanych typów shaderów, z możliwością rozszerzenia dla shaderów niestandardowych poprzez szablony i konfigurację.

Rezultaty

System znacząco zmniejszył czas przetwarzania CPU/GPU na klatkę, co przełożyło się na wyższy FPS, płynniejszą rozgrywkę i bardziej stabilną wydajność na różnych platformach.

Wykorzystane technologie:
Unity 3D, C#