MRTK standardní shader

Příklady standardních shaderů

systém MRTK Standard používá jediný flexibilní shader, který může dosáhnout vizuálů, které se podobají standardnímu shaderu Unity, implementaci Fluent Design Systemch principů a zůstat v zařízeních se smíšenými realitami.

Ukázkové scény

Příklady materiálu shaderu můžete najít v MaterialGallery scény v části . Všechny materiály v této scéně používají shader MRTK/Standard.

Galerie materiálů

Můžete najít srovnávací scénu a porovnat a otestovat MRTK/standardní shader proti příkladu Unity/Standard shader v StandardMaterialComparison scény v .

Porovnání materiálu

Architektura

Systém stínování MRTK/Standard je "Uber shader", který používá funkci variant programu shaderu Unity k automatickému vygenerování optimálního kódu shaderu na základě vlastností materiálu. Když uživatel vybere vlastnosti materiálu v inspektoru materiálu, účtuje jenom náklady na výkon pro funkce, které jsou povolené.

Inspektor materiálu

Vlastní inspektor materiálu existuje pro MRTK/standardní shader nazvaný MixedRealityStandardShaderGUI.cs . Kontrolor automaticky povolí nebo zakáže funkce shaderu na základě výběru uživatele a Aides při nastavování stavu vykreslování. Pokud chcete získat další informace o jednotlivých funkcích, najeďte na jednotlivé vlastnosti v editoru Unity pro popis.

Inspektor materiálu

První část inspektoru řídí stav vykreslování materiálu. Režim vykreslování určuje, kdy a jak se má materiál vykreslovat. Účelem MRTK/standardního shaderu je zrcadlit režimy vykreslování nalezené ve shaderu Unity/Standard. MRTK/standardní shader obsahuje také režim vykreslování doplňkové látky a vlastní režim vykreslování pro kompletní uživatelský ovládací prvek.

Režim vykreslování Description
Krytím Výchozí Vhodné pro normální tuhé objekty bez transparentních oblastí.
Oblast Umožňuje vytváření průhledných efektů, které mají ostré okraje mezi neprůhlednými a průhlednými oblastmi. V tomto režimu nejsou žádné částečně transparentní oblasti, textura je buď 100% neprůhledná, nebo neviditelná. To je užitečné při použití transparentnosti k vytvoření tvaru materiálu, jako je například vegetace.
Zesílit Umožňuje hodnotám transparentnosti úplně vymizet objekt, včetně všech odlesků nebo odrazů, které může mít. Tento režim je užitečný, pokud chcete objekt animovat na více instancí. Není vhodný pro vykreslování realistického transparentního materiálu, jako je například plastová nebo skleněná skla, protože odrazy a světla budou také vybledlé.
Průhlednost Vhodný pro vykreslování realistického transparentního materiálu, jako je například plastová nebo skleněná. V tomto režimu bude samotný materiál přebírat hodnoty transparentnosti (na základě alfa kanálu textury a alfa barvy barevného nádechu). Odrazy a světla světelného osvětlení ale zůstanou zřetelně viditelné, stejně jako v případě reálných transparentních materiálů.
Aditivní Povoluje režim prolnutí doplňku, který sečte barvu předchozí pixelu s aktuální barvou pixelu. Toto je preferovaný režim transparentnosti, aby nedocházelo k problémům s řazením průhlednosti.
Vlastní Umožňuje, aby byl každý aspekt režimu vykreslování ovládán ručně. Jenom pro pokročilé použití.

Režimy vykreslování

Režim odvrácených stran Description
Vypnout Zakáže odstranení plochy. Odkládání by mělo být nastavené na vypnuto, pokud je potřeba dvě vedlejší sítě.
Front Povoluje odstranení na přední straně.
Zpět Výchozí Umožňuje Odstranit zadní plochu. Pro zvýšení výkonu vykreslování by měla být povolená jak často obstěnování zadních stran.

Výkon

Jedna z hlavních výhod používání MRTK standardního shaderu přes standardní shader Unity je výkon. Standardní shader MRTK je rozšiřitelný tak, aby využíval pouze funkce, které jsou povoleny. Ale standardní shader MRTK se zapsal také, aby poskytoval srovnatelné estetické výsledky jako standardní shader Unity, ale s mnohem nižšími náklady. Jedním z jednoduchých způsobů, jak porovnat výkon shaderu, je prostřednictvím počtu operací, které je potřeba provést na GPU. Velikost výpočtů samozřejmě může kolísat podle povolených funkcí a dalších konfigurací vykreslování. Obecně platí, že standardní shader MRTK provádí výrazně méně výpočet než standardní shader Unity.

Příklad statistiky standardní shader Unity

Statistika standardních shaderů Unity

Příklad statistiky MRTK Standard shader

Statistika MRTK Standard shaderu

Poznámka

Tyto výsledky je možné vygenerovat výběrem a zobrazením prostředku shaderu v inspektoru Unity a následným kliknutím na tlačítko zkompilovat a zobrazit kód .

Osvětlení

MRTK/Standard používá jednoduchou aproximaci pro osvětlení. Vzhledem k tomu, že tento shader nepočítá pro fyzickou správnost a energetickou ochranu, vykresluje se rychle a efektivně. Blinn-Phong je primární osvětlovací technik, který je Blendem na základě Fresnelova poklesu a osvětlení založeného na obrazech a blíží se fyzickému osvětlení. Shader podporuje následující techniky osvětlení:

Směrové světlo

Shader bude respektovat směr, barvu a intenzitu prvního směrového světla Unity ve scéně (Pokud je zapnutý). V reálném čase se nepovažují za dynamické bodová světla, bodová světla nebo jakékoli jiné světlo.

Kulové harmonické

Shader použije světlé sondy k aproximaci světel na scéně pomocí kulovéch harmonů, pokud je tato možnost povolená. Pro snížení nákladů na výpočty se na vrchol provádí výpočty sféry Harmony.

Lightmapping

Pro statické osvětlení bude shader respektovat Lightmaps systémem LightmappingUnity. Jednoduše označte zobrazovací jednotku jako statickou (nebo lightmap statickou) pro použití Lightmaps.

Světlo najetí myší

Světlo blízkosti

Podpora kanálu pro vykreslování s odlehčenými Skriptováními

MRTK obsahuje cestu upgradu, která vývojářům umožňuje využívat pro MRTK shadery odlehčené kanály vykreslování pomocí skriptů Unity (LWRP). Testováno v Unity 2019.1.1 F1 a Lightweight RP 5.7.2 Package. pokyny k tomu, jak začít s LWRP, najdete na této stránce.

pokud chcete provést upgrade MRTK, vyberte: Mixed reality Toolkit- Utilities- > upgrade MRTK Standard Shader pro odlehčený kanál vykreslování

upgrade lwrp

Po dokončení upgradu se MRTK/standardní shader změní a všechny materiály purpurového (chyba shaderu) by měly být opraveny. Chcete-li ověřit, zda upgrade proběhl úspěšně, zkontrolujte konzolu pro: upgradováno assety/MixedRealityToolkit/StandardAssets/shadery/MixedRealityStandard. shader pro použití s odlehčeným kanálem vykreslování.

Podpora UGUI

Systém standardních stínů MRTK funguje s integrovaným systémem uživatelského rozhraníUnity. V součástech uživatelského rozhraní Unity není unity_ObjectToWorld matice matice transformace lokální transformace objektu Graphics, která je v nadřazeném plátně. Mnoho efektů MRTK/standardních shaderů vyžaduje, aby bylo možné znát měřítko objektu. Chcete-li tento problém vyřešit, ScaleMeshEffect.cs bude během vytváření sítě uživatelského rozhraní ukládat informace o škálování na atributy UV kanálu.

Při použití komponenty Unity Image doporučujeme pro zdrojovou image zadat "None (Sprite)", aby uživatelské rozhraní Unity negeneruje další vrcholy.

Plátno v rámci MRTK zobrazí výzvu k přidání v ScaleMeshEffect.cs případě potřeby:

efekt škálování sítě

Kombinátor textury

Aby se zlepšila parita s unity standard shader na pixely, vyhlazení, vytěsnění a okluze hodnoty lze řídit prostřednictvím balení kanálů. Například:

Příklad mapy kanálu

Pokud používáte balení do kanálu, musíte do paměti načíst pouze jednu texturu a ne čtyři samostatné textury. Když píšete mapy textur v programu, jako je Například Šátek nebo On, můžete je ručně zabalit následujícím způsobem:

Kanál Vlastnost
Red Kovové
Green Okluze
Blue Emise (šedé šedě)
Alfa Hladkost

Nebo můžete použít kombinátor textur MRTK. Nástroj otevřete tak, že vyberete: Mixed Reality Toolkit - Utilities - Texture > Combiner (Nástroje – kombinátor textur), který otevře následující okno:

Příklad kombinátoru textury

Toto okno můžete automaticky vyplnit výběrem shaderu Unity Standard a kliknutím na Automaticky vyplnit ze standardního materiálu. Nebo můžete ručně zadat texturu (nebo konstantní hodnotu) pro červený, zelený, modrý nebo alfa kanál. Kombinace textur je zrychlená pomocí GPU a nevyžaduje, aby vstupní textura byla přístupná pro procesor.

Dokumentace k dalším funkcím

Níže najdete další podrobnosti o pár podrobnostech o funkcích, které jsou k dispozici v mrtk/standardní shaderu.

Primitivní oříznutí

primitivní oříznutí

Obrysy sítě

Mnoho technik obrysu sítě se provádí pomocí techniky po zpracování. Zpracování po zpracování poskytuje skvělé přehledy kvality, ale na mnoha různých zařízeních může být Mixed Reality nákladné. Scénu, která ukazuje použití obrysů sítě, najdete ve scéně OutlineExamples v části .

Obrys sítě

MeshOutline.cs a MeshOutlineHierarchy.cs lze použít k vykreslení obrysu kolem rendereru sítě. Povolení této komponenty zavádí další průchod vykreslení objektu, který je nastíněn, ale je navržený tak, aby výkonně spouštěl na mobilních Mixed Reality zařízeních a nevyužívá žádné po procesy. Mezi omezení tohoto efektu patří to, že nefunguje dobře na objekty, které nejsou nepřesné (nebo které musí být oboustranné), a u překrývajících se objektů může docházet k problémům s řazením hloubky.

Chování obrysu je navržené tak, aby se používalo ve spojení s mrtk/standardní shader. Materiály obrysu jsou obvykle plnou nelitou barvou, ale lze je nakonfigurovat tak, aby dosahovali široké škály efektů. Výchozí konfigurace materiálu obrysu je následující:

Materiál obrysu sítě
  1. Hloubkový zápis – pro materiály obrysů by měl být zakázaný, aby se předešlo vykreslování jiných objektů.
  2. Vysunutí vrcholu – aby bylo možné vykreslit obrys, musí být povolené.
  3. Použít normální průběh – toto nastavení je pro některé sítě volitelné. K vysunutí dochází přesunutím vrcholu podél vrcholu normálu, u některých sítí, které jsou vysunuty podél výchozích normálů, dojde k přerušení v obrysu. Pokud chcete tyto přerušení vyřešit, můžete zaškrtnutím tohoto políčka použít jinou sadu vyhlazených normálních hodnot, které generuje MeshSmoother.cs

MeshSmoother.cs je komponenta, která se může použít k automatickému generování vyhlazených normálů u sítě. Tato metoda seskupí vrcholy do sítě, které sdílejí stejné umístění v prostoru, a pak zprůměruje normály těchto vrcholů. Tento proces vytvoří kopii podkladové sítě a měl by se používat pouze v případě potřeby.

Obrys hladkého normálního chodu
  1. Vyhlazení normálních hodnot generovaných prostřednictvím MeshSmoother.cs .
  2. Všimněte si artefaktů kolem rohů datové krychle, která se používají jako výchozí normály.

Testování vzorníků

Integrovaná podpora konfigurovatelných testů vzorníků pro dosažení široké škály efektů. Například portály:

Test vzorníku

Podpora barev instancí

Podpora barev v instancích, aby tisíce sítí s instancemi GPU byly jedinečné vlastnosti materiálu:

instanced – vlastnosti

Triplanární mapování

Triplanární mapování je technika programové textury sítě. Často se používá v terénu, ve smyšlách bez UV nebo se obtížně rozbalují tvary. Tato implementace podporuje projekci ve světě nebo místním prostoru, specifikaci plynulosti prolnutí a normální podporu map. Všimněte si, že každá použitá textura vyžaduje 3 vzorky textury, proto je používejte v situacích kritických pro výkon.

triplanar (triplanar)

Vysunutí vrcholu

Vysunutí vrcholů ve světě Užitečné pro vizualizaci vysunutých ohraničujících svazků nebo přechodů do/z více sítí.

normální měřítko mapy 1

Různé

Zaškrtávací políčko pro řízení optimalizací. Vzhledem k tomu, že operace optimalizace jsou zakázány, pokud není zadána žádná textura. To je užitečné pro řízení vzdáleného načítání textur.

Jednoduše zaškrtněte toto políčko:

přestože přiřazení

Podporují se textury oříznutí na pixely, aliasy založené na místních hranách a normální škálování mapy.

normální měřítko mapy 2

Viz také