Powrót do strony głównej

meshoptimizer 1.1: kompresja meshletów

meshoptimizer 1.1 wprowadza kodek do kompresji meshletów z dekompresją do 150 GB/s na GPU i generowanie mikromap nieprzezroczystości dla Vulkan/DirectX. Niezależne kodowanie ułatwia integrację. Nadaje się do optymalizacji złożonych scen 3D w czasie rzeczywistym.

meshoptimizer 1.1: ekstremalnie szybka kompresja meshletów i OMM
Advertisement 728x90

# meshoptimizer 1.1: kompresja meshletów i mikromapy nieprzezroczystości

Nowa wersja biblioteki meshoptimizer 1.1 dodaje kodek do kompresji meshletów oraz wsparcie dla generowania mikromap nieprzezroczystości. Aktualizacja skupia się na optymalizacji topologii dla renderingu GPU i przyspieszeniu ray tracingu. Rozwój prowadzony jest w C++ i JavaScript na licencji MIT, z głównym wkładem od Valve.

Optymalizacja siatek trójkątnych

Biblioteka meshoptimizer poprawia przetwarzanie wierzchołków i indeksów na etapach potoku GPU. Algorytmy zmniejszają złożoność siatek, minimalizują koszty przechowywania i zwiększają efektywność renderingu. Od 2017 roku projekt ewoluuje, wersja 1.0 vyshla w grudniu 2025 roku.

Narzędzia towarzyszące:

Google AdInline article slot
  • gltfpack: narzędzie CLI do automatycznej optymalizacji plików glTF.
  • clusterlod.h: biblioteka C/C++ do klastrowego LOD z ciągłym poziomem szczegółowości.

Kodek do kompresji meshletów

Nowy kodek kompresuje topologię meshletów, wykorzystując lokalność mikroindeksów i danych wierzchołkowych. Każdy meshlet jest kodowany niezależnie, co ułatwia paralelizm i strukturę przechowywania w runtime.

Dekodowanie zorientowane jest na wysoką prędkość:

  • CPU: 7–10 GB/s na procesorach desktopowych, działa z pamięcią write-combined.
  • GPU: >150 GB/s na RTX 5070 poprzez compute shader.

Dane wyjściowe są dodatkowo kompresowane Zstandard. Dekoder generuje formaty 3/4 bajta na trójkąt i 2/4 bajta na wierzchołek do bezpośredniego użycia na GPU.

Google AdInline article slot

Mikromapy nieprzezroczystości

Funkcje generują mikromapy gotowe sprzętowo z współrzędnych UV siatki i tekstury alfa. Wsparcie dla Vulkan (VK_EXT_opacity_micromap) i DirectX (DXR 1.2).

Każdy trójkąt dzielony jest na 4^N mikrotrójkątów według UV. Warianty reprezentacji:

  • 2-stanowe (1 bit): pełne wyeliminowanie wywołań shaderów dla maksymalnej wydajności ray tracingu.
  • 4-stanowe (2 bity): przyspieszenie shaderów any-hit poprzez lookup tekstury.

Ponowne wykorzystanie map między trójkątami poprzez bufor indeksowy OMM minimalizuje zużycie pamięci. Dla 4-stanów dostępny jest fallback na 2-stany.

Google AdInline article slot

Co ważne

  • Kodek meshletów zapewnia dekompresję 7–10 GB/s na CPU i >150 GB/s na GPU.
  • Mikromapy generowane z UV i alfy, kompatybilne z Vulkan/DirectX.
  • Niezależne kodowanie meshletów ułatwia paralelizm i przechowywanie w runtime.
  • Wsparcie dla stanów 1/2-bitowych do optymalizacji ray tracingu i shaderów.
  • Dodatkowa kompresja Zstandard dla ostatecznego rozmiaru.

Aktualizacja skierowana jest do programistów middle/senior pracujących z renderingiem GPU i ray tracingiem w silnikach gier. Integracja nie wymaga zmian w istniejących potokach.

— Editorial Team

Advertisement 728x90

Czytaj dalej