Cieniowania standardowe MRTK2
Standardowy system cieniowania MRTK2 korzysta z jednego, elastycznego cieniowania, który może osiągnąć wizualizacje podobne do standardowego cieniowania aparatu Unity, implementowania zasad Fluent Design System i zachowania wydajności na urządzeniach rzeczywistości mieszanej.
Przykładowe sceny
Przykłady materiału cieniującego można znaleźć w scenie MaterialGallery w obszarze MRTK/Examples/Demos/StandardShader/Scenes/
. Wszystkie materiały w tej scenie używają cieniowania MRTK/Standard.
Możesz znaleźć scenę porównania, aby porównać i przetestować cieniowania MRTK/Standard względem przykładu cieniowania aparatu Unity/standardu w scenie StandardMaterialComparison w obszarze MRTK/Examples/Demos/StandardShader/Scenes/
.
Architektura
System cieniowania MRTK/Standard jest "cieniowaniem ubera", który używa funkcji wariantu programu cieniowania aparatu Unity do automatycznego generowania optymalnego kodu cieniowania na podstawie właściwości materiału. Gdy użytkownik wybierze właściwości materiałowe w inspektorze materiałowym, poniesie koszt wydajności tylko dla funkcji, które zostały włączone.
Inspektor materiałowy
Istnieje niestandardowy inspektor materiałowy dla cieniowania MRTK/Standard o nazwie MixedRealityStandardShaderGUI.cs
. Inspektor automatycznie włącza/wyłącza funkcje cieniowania na podstawie wyboru użytkownika i adiutantów podczas konfigurowania stanu renderowania. Aby uzyskać więcej informacji na temat każdej funkcji , umieść kursor na każdej właściwości w Edytorze aparatu Unity dla etykietki narzędzia.
Pierwsza część inspektora kontroluje stan renderowania materiału. Tryb renderowania określa, kiedy i jak będzie renderowany materiał. Celem cieniowania zestawu narzędzi MRTK/Standard jest dublowanie trybów renderowania znalezionych w cieniatorze Unity/Standard. Cieniowanie zestawu narzędzi MRTK/Standard obejmuje również tryb renderowania addytywnego i tryb renderowania niestandardowego na potrzeby pełnej kontroli użytkownika.
Tryb renderowania | Opis |
---|---|
Nieprzezroczyste | (Ustawienie domyślne) Nadaje się do normalnych obiektów stałych bez przezroczystych obszarów. |
Wycięcie | Umożliwia tworzenie przezroczystych efektów, które mają twarde krawędzie między nieprzezroczystymi i przezroczystymi obszarami. W tym trybie nie ma półprzezroczystych obszarów, tekstura jest albo 100% nieprzezroczysty lub niewidoczna. Jest to przydatne w przypadku używania przezroczystości do tworzenia kształtu materiałów, takich jak roślinność. |
Fade | Umożliwia całkowite zanikanie wartości przezroczystości obiektu, w tym wszelkie podkreślenie lub odbicie, które może mieć. Ten tryb jest przydatny, jeśli chcesz animować zanikający lub wychodzący obiekt. Nie nadaje się do renderowania realistycznych przezroczystych materiałów, takich jak przezroczysty plastik lub szkło, ponieważ odbicia i wyróżnienia również zostaną wyblakłe. |
Przezroczyste | Nadaje się do renderowania realistycznych przezroczystych materiałów, takich jak przezroczyste tworzywa sztuczne lub szkło. W tym trybie sam materiał będzie przyjmować wartości przezroczystości (na podstawie kanału alfa tekstury i alfa koloru odcienia). Jednak odbicia i podświetlenia oświetlenia pozostaną widoczne w pełnej jasności, podobnie jak w przypadku rzeczywistych przezroczystych materiałów. |
Dodawanie | Włącza tryb mieszania dodawania, który sumuje poprzedni kolor pikseli z bieżącym kolorem pikseli. Jest to preferowany tryb przezroczystości, aby uniknąć problemów z sortowaniem przezroczystości. |
Niestandardowy | Umożliwia ręczne sterowanie każdym aspektem trybu renderowania. Tylko w przypadku użycia zaawansowanego. |
Tryb przytulić | Opis |
---|---|
Wyłączone | Wyłącza wyłusanie twarzy. Culling należy ustawić na Wartość Wyłączone tylko wtedy, gdy wymagana jest dwie siatki boczne. |
Front | Umożliwia wyłusanie przedniej twarzy. |
Wstecz | (Ustawienie domyślne) Umożliwia wyłusanie twarzy z tyłu. W celu zwiększenia wydajności renderowania należy włączyć jak najwięcej kopii twarzy. |
Wydajność
Jedną z głównych zalet korzystania z cieniowania standardowego zestawu narzędzi MRTK w przypadku cieniowania standardowego aparatu Unity jest wydajność. Moduł cieniowania standardowego zestawu narzędzi MRTK można rozszerzać, aby korzystać tylko z funkcji, które są włączone. Jednak cieniator MRTK Standard został również napisany w celu zapewnienia porównywalnych wyników estetycznych jako cieniowania Unity Standard, ale przy znacznie niższych kosztach. Jednym z prostych sposobów porównywania wydajności cieniowania jest liczba operacji, które należy wykonać na procesorze GPU. Oczywiście wielkość obliczeń może ulegać wahaniom przez włączone funkcje i inne konfiguracje renderowania. Jednak ogólnie rzecz biorąc, cieniator MRTK Standard wykonuje znacznie mniej obliczeń niż cień aparatu Unity w warstwie Standardowa.
Przykład statystyk cieniowania standardowego aparatu Unity
Przykład statystyk cieniowania standardowego zestawu narzędzi MRTK
Uwaga
Te wyniki można wygenerować, wybierając i wyświetlając zasób cieniowania w inspektorze aparatu Unity, a następnie klikając przycisk Kompiluj i pokaż kod .
Oświetlenie
Zestaw MRTK/Standard wykorzystuje proste przybliżenie oświetlenia. Ponieważ ten moduł cieniowania nie oblicza pod kątem fizycznej poprawności i ochrony energii, renderuje szybko i wydajnie. Blinn-Phong jest podstawową techniką oświetlenia, która jest połączona z fresnelem i oświetleniem opartym na obrazach w celu przybliżenia oświetlenia fizycznego. Cieniowania obsługują następujące techniki oświetlenia:
Światło kierunkowe
Cieniowanie będzie uwzględniać kierunek, kolor i intensywność pierwszego światła Unity Directional Light w scenie (jeśli jest włączona). Dynamiczne światła punktowe, światła punktowe ani inne światło aparatu Unity nie będą brane pod uwagę w oświetleniu w czasie rzeczywistym.
Harmonia sferyczna
Cieniowania będą używać sond świetlnych do przybliżonych świateł w scenie przy użyciu spherical Harmonics, jeśli jest włączona. Obliczenia harmoniczne sferyczne są wykonywane na wierzchołek, aby zmniejszyć koszt obliczeń.
Mapowanie światła
W przypadku oświetlenia statycznego cieniowanie będzie uwzględniać mapę świetlną utworzoną przez system Lightmapping aparatu Unity. Wystarczy oznaczyć moduł renderowania jako statyczny (lub statyczny mapa światła), aby używać map świetlnych.
Wskaźnik aktywowania światła
- Zobacz Wskaźnik aktywowania światła
Światło zbliżeniowe
- Zobacz światło zbliżeniowe
Obsługa uproszczonego potoku renderowania skryptowego
Zestaw NARZĘDZI MRTK zawiera ścieżkę uaktualnienia umożliwiającą deweloperom korzystanie z uproszczonego potoku renderowania skryptowego (LWRP) aparatu Unity z cieniowaniami zestawu NARZĘDZI MRTK. Przetestowano w pakiecie Unity 2019.1.1f1 i Lightweight RP 5.7.2. Aby uzyskać instrukcje dotyczące rozpoczynania pracy z biblioteką LWRP, zobacz tę stronę.
Aby przeprowadzić uaktualnienie zestawu narzędzi MRTK, wybierz pozycję: Mixed Reality Toolkit — Utilities — Upgrade MRTK Standard Shader for Lightweight Render Pipeline (Zestaw narzędzi —> narzędzia —> uaktualnianie cieniowania standardowego zestawu narzędzi MRTK dla uproszczonego potoku renderowania)
Po uaktualnieniu cieniowanie mrTK/standard zostanie zmienione, a wszelkie materiały magenta (błąd cieniowania) powinny zostać naprawione. Aby sprawdzić, czy uaktualnienie zakończyło się pomyślnie, sprawdź konsolę: Uaktualnione Assets/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader do użycia z uproszczonym potokiem renderowania.
Obsługa interfejsu UGUI
Standardowy system cieniowania zestawu narzędzi MRTK współdziała z wbudowanym systemem interfejsu użytkownika aparatu Unity. W przypadku składników interfejsu użytkownika aparatu Unity macierz unity_ObjectToWorld nie jest macierzą przekształcania lokalnego, na której znajduje się składnik Graficzny, ale macierz nadrzędna Kanwa. Wiele efektów cieniowania ZESTAWU NARZĘDZI MRTK/standardu wymaga, aby można było poznać skalowanie obiektów. Aby rozwiązać ten problem, ScaleMeshEffect.cs
program będzie przechowywać informacje o skalowaniu do atrybutów kanału UV podczas konstruowania siatki interfejsu użytkownika.
Pamiętaj, że w przypadku korzystania ze składnika Obrazu aparatu Unity zaleca się określenie wartości "Brak (Sprite)" dla obrazu źródłowego, aby uniemożliwić interfejsowi użytkownika aparatu Unity generowanie dodatkowych wierzchołków.
Kanwa w ramach zestawu narzędzi MRTK wyświetli monit o dodanie elementu ScaleMeshEffect.cs
, gdy jest wymagany:
Łączenie tekstur
Aby poprawić równoważność za pomocą cieniowania standardowego aparatu Unity na metaliczny piksel, gładkość, emisisjność i wartości okluzji, można kontrolować za pośrednictwem pakowania kanału. Na przykład:
W przypadku korzystania z pakowania kanału trzeba tylko próbkować i ładować jedną teksturę do pamięci zamiast czterech oddzielnych. Podczas pisania map tekstur w programie, takich jak Substancja lub Photoshop, można je ręcznie spakować w następujący sposób:
Kanał | Właściwość |
---|---|
Red (Czerwony) | Metalowe |
Green (Zielony) | Okluzji |
Blue (Niebieski) | Emisja (skala szarości) |
Wersja alfa | Gładkość |
Możesz też użyć narzędzia łączenia tekstur MRTK. Aby otworzyć narzędzie, wybierz pozycję: Mixed Reality Toolkit —> Utilities —> Texture Combiner, który otworzy poniższe okno:
To okno można wypełniać automatycznie, wybierając cieniowanie standardowe aparatu Unity i klikając pozycję "Autopopulate from Standard Material" (Autopopulate from Standard Material). Możesz też ręcznie określić teksturę (lub stałą wartość) na czerwony, zielony, niebieski lub kanał alfa. Kombinacja tekstury jest przyspieszona przez procesor GPU i nie wymaga, aby tekstura wejściowa była dostępna dla procesora CPU.
Dodatkowa dokumentacja funkcji
Poniżej znajdują się dodatkowe szczegóły dotyczące kilku szczegółów funkcji dostępnych w cieniatorze MRTK/Standard.
Wycinek pierwotny
- Zobacz Fragmentowanie pierwotne
Kontury siatki
Wiele technik konspektu siatki odbywa się przy użyciu techniki przetwarzania końcowego . Przetwarzanie końcowe zapewnia doskonałą jakość konspektu, ale może być zbyt kosztowne na wielu urządzeniach Mixed Reality. Scenę, która pokazuje użycie konspektów siatki w scenie OutlineExamples w obszarze MRTK/Examples/Demos/StandardShader/Scenes/
.
MeshOutline.cs
i MeshOutlineHierarchy.cs
może służyć do renderowania konturu wokół modułu renderowania siatki. Włączenie tego składnika powoduje wprowadzenie dodatkowego przejścia renderowania obiektu, który jest opisany, ale jest przeznaczony do uruchamiania wydajnie na urządzeniach przenośnych Mixed Reality i nie wykorzystuje żadnych procesów poświadczeń. Ograniczenia tego efektu obejmują, że nie działa dobrze na obiektach, które nie są szczelne (lub wymagane do dwóch stron), a problemy z sortowaniem głębokości mogą wystąpić w nakładających się obiektach.
Zachowania konspektu są przeznaczone do użycia w połączeniu z cieniatorem MRTK/Standard. Materiały konspektu są zwykle solidnym nieokreślonym kolorem, ale można je skonfigurować tak, aby osiągnąć szeroką gamę efektów. Domyślna konfiguracja materiału konspektu jest następująca:
- Zapis głębokości — należy wyłączyć materiały konspektu, aby upewnić się, że konspekt nie uniemożliwia renderowania innych obiektów.
- Ekstruzja wierzchołka — należy włączyć renderowanie konspektu.
- Użyj gładkich normalnych — to ustawienie jest opcjonalne dla niektórych siatk. Wytłaczanie występuje poprzez przeniesienie wierzchołka wzdłuż wierzchołka normalnego, na niektórych siatkach ekstrudujących wzdłuż domyślnych normalnych spowoduje przerwanie w konspekcie. Aby rozwiązać te problemy, możesz zaznaczyć to pole wyboru, aby użyć innego zestawu wygładzonych normalnych, które są generowane przez
MeshSmoother.cs
MeshSmoother.cs
to składnik, który może służyć do automatycznego generowania gładkich normalnych na siatkę. Ta metoda grupuje wierzchołki w siatkę, która współdzieli tę samą lokalizację w przestrzeni, a następnie średnio normalne wierzchołki tych wierzchołków. Ten proces tworzy kopię bazowej siatki i powinien być używany tylko wtedy, gdy jest to wymagane.
- Gładka normalność generowana za pomocą metody
MeshSmoother.cs
. - Domyślne wartości normalne, zwróć uwagę na artefakty wokół narożników modułu.
Testowanie wzornika
Wbudowana obsługa konfigurowalnego testu wzornika w celu osiągnięcia szerokiej gamy efektów. Takie jak portale:
Obsługa kolorów wystąpień
Obsługa kolorów wystąpień w celu nadania tysiącom wystąpień procesora GPU unikatowych właściwości materiału:
Mapowanie trylanaru
Mapowanie triplanar jest techniką programową teksturowania siatki. Często używane w terenie, siatki bez telewizorów użytkownika lub trudne do odpakowania kształtów. Ta implementacja obsługuje projekcję przestrzeni światowej lub lokalnej, specyfikację bezproblemowości łączenia i obsługę normalnej mapy. Należy pamiętać, że każda używana tekstura wymaga 3 próbek tekstur, dlatego należy używać oszczędnie w sytuacjach krytycznych dla wydajności.
Ekstruzja wierzchołków
Ekstruzja wierzchołków w przestrzeni światowej. Przydatne do wizualizacji ekstrudowanych woluminów ograniczenia lub przejść w/wy siatki.
Różne
Pole wyboru do sterowania optymalizacjami albedo. Jako operacje optymalizacji albedo są wyłączone, gdy nie określono tekstury albedo. Jest to przydatne do kontrolowania zdalnego ładowania tekstury.
Wystarczy zaznaczyć to pole wyboru:
Obsługiwane są tekstury przycinania pikseli, lokalne krawędzie oparte na aliasie i normalne skalowanie map.