Cieniowania standardowe MRTK2

Przykłady cieniowania standardowego

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.

Galeria materiałów

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/.

Porównanie materiałów

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.

Inspektor materiałowy

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.

Tryby renderowania

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

Standardowe statystyki cieniowania aparatu Unity

Przykład statystyk cieniowania standardowego zestawu narzędzi MRTK

Standardowe statystyki cieniowania 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

Ś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)

uaktualnienie lwrp

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:

efekt siatki skalowania

Łą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:

przykład mapy kanału

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:

przykład łączenia tekstur

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

wycinek pierwotny

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/.

Kontur siatki

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:

Materiał konturu siatki
  1. Zapis głębokości — należy wyłączyć materiały konspektu, aby upewnić się, że konspekt nie uniemożliwia renderowania innych obiektów.
  2. Ekstruzja wierzchołka — należy włączyć renderowanie konspektu.
  3. 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 kontur normalna
  1. Gładka normalność generowana za pomocą metody MeshSmoother.cs.
  2. 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:

test wzornika

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:

właściwości wystąpienia

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.

triplanar

Ekstruzja wierzchołków

Ekstruzja wierzchołków w przestrzeni światowej. Przydatne do wizualizacji ekstrudowanych woluminów ograniczenia lub przejść w/wy siatki.

normalna skala mapy 1

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:

przypisanie albedo

Obsługiwane są tekstury przycinania pikseli, lokalne krawędzie oparte na aliasie i normalne skalowanie map.

normalna skala mapy 2

Zobacz też