Udostępnij za pośrednictwem


Wytyczne dotyczące wydajności usługi Mesh

Wydajność

Ten artykuł stanowi wprowadzenie do zrozumienia znaczenia wydajności podczas tworzenia zawartości w usłudze Mesh. Szybkość klatek to najłatwiejsza jednostka do racjonalizacji wydajności. Zwykle szybkość klatek jest mierzona w "klatkach na sekundę" (fps) lub ile razy aplikacja może renderować obraz na sekundę. Środowisko użytkownika może być znacznie obniżone, jeśli zawartość nie jest uruchamiana z optymalną szybkością klatek. Aby ułatwić śledzenie i osiąganie szybkości klatek na klatce ramowej, usługa Mesh udostępnia różne narzędzia i zalecenia.

W poniższej tabeli wymieniono docelową szybkość ramek na obsługiwaną platformę Mesh.

PC Android (Quest)
Monitorowanie częstotliwości odświeżania (minimum 30fps) 72fps

Proste i złożone sceny

Podobnie jak we wszystkich projektach 3D, w usłudze Mesh występuje kompromis między wiernością wizualną a wydajnością. W zależności od maszyny z uruchomioną usługą Mesh użytkownik może mieć obniżoną wydajność, zwłaszcza jeśli scena jest złożona.

Pomyśl o wynikach, takich jak budżet finansowy. Jeśli masz 100 dolarów do wydania, nie możesz wydać 60 dolarów renderowania złożonego środowiska, 40 dolarów symulujących zaawansowaną fizykę i 20 dolarów dla skryptów wizualnych - skończysz wydatki na budżet. Jako deweloper musisz dokonać kompromisów między wiernością wizualizacji, złożonością interakcji, liczbą użytkowników i innymi systemami. Zespół usługi Mesh wygenerował listę progów wydajności, które nie są regułą, ale przewodnikiem dotyczącym programowania.

Metodologia profilowania

Tworzenie środowisk w usłudze Mesh zwykle obejmuje trzy kroki.

  1. Tworzenie zawartości w środowisku Unity
  2. Przekazywanie do usługi Microsoft Mesh
  3. Uruchamianie zawartości w aplikacji mesh

W ramach kroku 1 zalecamy użycie kombinacji zawartości Analizator wydajności (CPA) i profilera wydajności znalezionego w pakiecie zestawu narzędzi Mesh, który jest wymagany dla dowolnego projektu aparatu Unity używanego do generowania środowiska usługi Mesh. Podczas drugiego kroku narzędzie CPA jest uruchamiane automatycznie. Na koniec podczas kroku trzeciego ostatniego profilowanie powinno odbywać się za pośrednictwem wbudowanego profilera wydajności usługi Mesh.

Narzędzia do analizowania wydajności

Analizator wydajności zawartości (CPA)

Zalecamy użycie Analizator wydajności zawartości (CPA), aby zmaksymalizować wydajność środowiska usługi Mesh. Narzędzie CPA może statycznie analizować zawartość w czasie tworzenia. Za pomocą cpA można przeprowadzać inspekcję liczby trójkątów, partii, wykorzystania pamięci tekstury i nie tylko. Dzięki temu można przechwytywać problemy i możliwości optymalizacji zawartości przed przekazaniem zawartości do usługi Mesh.

Aby uruchomić narzędzie CPA, wybierz pozycję Mesh Toolkit>Content Analizator wydajności z elementów menu.

Uzyskiwanie dostępu do Analizator wydajności zawartości za pomocą menu aparatu Unity

Problemy i sugestie są zgłaszane za pośrednictwem okna edytora w środowisku Unity.

Zrzut ekranu przedstawiający okno Analizator wydajności zawartości

Ważne

Część analizatorów CPA zostanie uruchomiona automatycznie podczas przekazywania zawartości do usługi Mesh. Ponieważ nie wszystkie testy mogą być uruchamiane automatycznie, dobrym rozwiązaniem jest ręczne uruchomienie cpa w ramach procesu programowania.

Profiler wydajności

Profiler wydajności udostępnia proste okno do wyświetlania szybkości klatek, złożoności sceny i użycia pamięci w projekcie Mesh na wszystkich platformach. Profiler wydajności jest dostępny w aplikacji Mesh i w zestawie narzędzi usługi Mesh.

Zrzut ekranu profilera wydajności w izolacji

Aby wyświetlić profilera wydajności w aplikacji Mesh, otwórz panel ustawień i wybierz pozycję Dla deweloperów>Profiler wydajności. Profiler wydajności zostanie wyświetlony w górnej części okna.

Zrzut ekranu profilera wydajności w usłudze Mesh

W przypadku korzystania z profilera wydajności poszukaj nieodebranych ramek, które są wyświetlane jako czerwone pola oznaczone znakiem "x". Pominięte ramki wskazują, że zawartość nie osiąga docelowej szybkości ramek usługi Mesh i może wymagać optymalizacji. Złożoność sceny i użycie pamięci są wyświetlane w nieodebranych wskaźnikach ramek. Te liczby mogą wskazywać, dlaczego zawartość nie spełnia docelowej szybkości klatek w usłudze Mesh.

Diagram metryk profilera wydajności

Tekst w profilerze wydajności zmieni kolor na czerwony, gdy metryka nie spełnia zalecanego progu wydajności usługi Mesh. Więcej szczegółów dotyczących progów wydajności znajduje się w sekcji postępowania.

Ważne

W aplikacji Mesh nie można wyświetlić partii. Są one dostępne tylko w edytorze aparatu Unity.

Należy również zwrócić uwagę na dolny pasek pamięci, aby zapewnić, że użycie pamięci nie zmienia się szybko ani nie zbliża się do limitu pamięci aplikacji.

Aby wyświetlić profiler wydajności w edytorze aparatu Unity, upewnij się, że w scenie jest składnik Konfiguracja emulatora usługi Mesh. Upewnij się, że ustawienie Początkowa liczba ekranów ma wartość zero. Jeśli jest to jeden lub wyższy, podczas odtwarzania nie będzie można przełączać się w profilerze wydajności.

Zrzut ekranu okna dialogowego Konfiguracja emulatora usługi Mesh

Kliknij przycisk Odtwarzania aparatu Unity, aby wprowadzić tryb odtwarzania, przełącz profiler wydajności za pomocą "v". Profiler wydajności pojawi się w górnej części okna gry.

Zrzut ekranu przedstawiający profilera wydajności w edytorze aparatu Unity

Ważne

Podczas przeglądania profilera wydajności w edytorze aparatu Unity bardziej szczegółowe informacje, takie jak liczba partii i milisekundowy czas potrzebny na wykonanie niektórych podsystemów. Należy pamiętać, że te metryki są względnym przybliżeniem wydajności, a ostateczne profilowanie powinno nastąpić w aplikacji mesh.

Jeśli zastanawiasz się, jaki jest czas milisekund u dołu profilera wydajności, możesz znaleźć te informacje w sekcji Progi wydajności.

Inne narzędzia

Profiler CPA i Performance Profiler są niestandardowe dla usługi Mesh, ale istnieje również kilka doskonałych narzędzi do profilowania zawartości w środowisku Unity:

Progi wydajności

Optymalizacja pod kątem wydajności może być działaniem równoważenia w zależności od scenariusza, dla którego programujesz, oraz środowiska, które chcesz osiągnąć. Renderowanie sceny w usłudze Mesh jest bezpośrednią konsekwencją sposobu tworzenia zawartości środowiska. Poniżej przedstawiono sugestie renderowania dla naszych bieżących platform.

Progi renderowania komputerów

Polycount Partie Post-processing
<Ok. 500 tys. trójkątów ~200 partii Disabled
Tekstury Mapy światła Rozdzielczość skybox
< ~160 MB < ~80 MB 2048x4096

Progi renderowania systemu Android (Quest)

Polycount Partie Post-processing
<~80 tys. Trójkąty ~50 partii Disabled
Tekstury Mapy światła Rozdzielczość skybox
< ~16 MB < ~20 MB 1024x2048

Możesz zauważyć, że ograniczenia cieniowania nie są określone w powyższych tabelach. Ponieważ usługa Mesh używa uniwersalnego potoku renderowania (URP) aparatu Unity, sugerujemy użycie tańszych modułów cieniowania urP (takich jak potok renderowania uniwersalnego/oświetlony lub uniwersalny potok renderowania/proste lit). Rozumiemy również wartość cieniowania niestandardowego. Ogólnie rzecz biorąc, staramy się zachować niestandardowe cieniowania dla większości środowiska w ramach poniższych progów:

Matematyka wierzchołka Matematyka fragmentów Tekstura
< 30 operacji < 120 operacji < 2 odnośniki

Ważne

Zliczanie operacji cieniowania jest w niedoskonałej metryce do obliczania wydajności cieniowania, deweloper cieniowania powinien również profilować ich cieniowanie uruchomione w usłudze Mesh, aby sprawdzić, czy działa wydajnie.

Jeśli zastanawiasz się, jak potok renderowania urP jest skonfigurowany dla aplikacji usługi Mesh, możesz sprawdzić określone programy renderowania platformy w katalogu \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP .

Progi skryptów

Usługa Mesh umożliwia tworzenie interaktywnej zawartości za pośrednictwem skryptów wizualnych, skryptów w chmurze, fizyki siatki i/lub webSlate. Podczas wyświetlania profilera wydajności w edytorze aparatu Unity w milisekundach (ms) czas wykonywania niektórych podsystemów jest wyświetlany w dolnej części profilera. Gdy tekst zmieni się z zielonego na czerwony, który wskazuje, że podsystem może być ponad budżet. Poniższa tabela zawiera więcej informacji na temat tych budżetów.

Nazwa podsystemu Maksymalny budżet ramek opis
Zachowanie Nie dotyczy Czas potrzebny na aktualizację wszystkich lokalnych skryptów MonoBehaviour (C# i Visual)
Renderowanie 25% Czas milisekund renderowania sceny przez procesor
WebSlate Nie dotyczy Godzina aktualizacji i renderowania wszystkich obiektów WebSlate w scenie w milisekundach
Phys Sim 15% Czas na krok symulacji PhysX w milisekundach
Synchronizacja obiektów fizycznych 15% Czas milisekundowy w celu zsynchronizowania wszystkich ciał fizyki
Phys Effx 10% Godzina milisekund aktualizowania zachowań fizyki na zamówienie
Użytkownik programu VS 15% Milisekundowy czas spędzony na grafach skryptów wizualnych umieszczonych w scenie
VS Env 10% Milisekundowy czas spędzony na aktualizowaniu infrastruktury skryptu wizualnego
VS Net 10% Milisekundowy czas spędzony na synchronizowaniu stanu sieci skryptu wizualnego

Wartości "Maksymalna wartość procentowa ramki" wymienione powyżej są zaleceniami opartymi na zawartości ogólnej. Jako deweloper należy zrównoważyć te systemy w celu zapewnienia, że rama może być aktualizowana w czasie przydzielanym.

Zasoby dotyczące wydajności i optymalizacji

Podstawy wydajności grafiki https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

Uniwersalny potok renderowania (URP) https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html

SRP Batcher https://docs.unity3d.com/Manual/SRPBatcher.html

Renderowanie z pojedynczym wystąpieniem i niestandardowe cieniowania https://docs.unity3d.com/Manual/SinglePassInstancing.html