MRTK – standardní shader

Příklady standardního shaderu

Systém stínování MRTK standard využívá jeden flexibilní shader, který dokáže dosáhnout vizuálů podobných standardu shaderu Unity, implementovat Fluent Design System principy a zůstat výkonnější na zařízeních hybridní reality.

Příklady scén

Příklady materiálu shaderu najdete ve scéně MaterialGallery v části MRTK/Examples/Demos/StandardShader/Scenes/ . Všechny materiály v této scéně používají shader MRTK/Standard.

Material Gallery

Srovnávací scénu pro porovnání a testování shaderu MRTK/Standard najdete v příkladu unity/standardního shaderu ve scéně Standard ZákladníComparison v části MRTK/Examples/Demos/StandardShader/Scenes/ .

Porovnání materiálů

Architektura

Systém stínování MRTK/Standard je "uberový shader", který využívá funkci varianty programu shaderu Unity k automatickému generování optimálního kódu shaderu na základě vlastností materiálu. Když uživatel vybere vlastnosti materiálu v material inspectoru, náklady na výkon budou účtovány pouze pro funkce, které povolil.

Material Inspector

Pro MRTK/Standard shader s názvem existuje vlastní inspektor MixedRealityStandardShaderGUI.cs materiálu. Inspektor automaticky povolí nebo zakáže funkce shaderu na základě výběru uživatele a amidů při nastavování stavu vykreslování. Další informace o jednotlivých funkcích získáte tak, že najedete myší na jednotlivé vlastnosti v Editoru Unity a zobrazí se popis.

Material Inspector

První část inspektoru řídí stav vykreslení materiálu. Režim vykreslování určuje, kdy a jak se má materiál vykreslit. Cílem shaderu MRTK/Standard je zrcadlit režimy vykreslování nalezené v unity/standardní shaderu. Shader MRTK/Standard obsahuje také režim sčítání vykreslování a vlastní režim vykreslování pro kompletní uživatelský ovládací prvek.

Režim vykreslování Description
Neprůhledné (Výchozí) Vhodné pro normální plné objekty bez transparentních oblastí.
Výřez Umožňuje vytváření transparentních efektů, které mají pevné hrany mezi neprůhlednou a transparentní oblastí. V tomto režimu nejsou žádné částečně průhledné oblasti, textura je buď 100% neprůhledná, nebo neviditelná. To je užitečné při použití průhlednosti k vytvoření tvaru materiálů, jako je například náhon.
Fade Umožňuje, aby hodnoty průhlednosti zcela zešly objekt, včetně odlesků nebo reflexí, které může mít. Tento režim je užitečný, pokud chcete animovat objekt, který uchytá nebo odchýlá. Není vhodný pro vykreslování realistických transparentních materiálů, jako jsou průhledné váčky nebo sklem, protože budou také zešikmené odrazy a zvýraznění.
Průhlednost Vhodné pro vykreslování realistických transparentních materiálů, jako jsou průhledné misy nebo sklem. V tomto režimu vezme samotný materiál hodnoty průhlednosti (na základě alfa kanálu textury a alfa barvy tintu). Odrazy a osvětlení ale zůstanou viditelné v plné přehlednosti, stejně jako u skutečných transparentních materiálů.
Aditivní Povolí režim aditivního prolnutí, který sečte předchozí barvu pixelů s aktuální barvou pixelů. Toto je upřednostňovaný režim transparentnosti, abyste se vyhnuli problémům s řazením průhlednosti.
Vlastní Umožňuje ruční řízení všech aspektů režimu vykreslování. Pouze pro rozšířené použití.

Režimy vykreslování

Mode (Režim) Description
Vypnout Zakáže odsouvání tváří. Odsouvání by mělo být nastavené jenom na Vypnuto, pokud se vyžaduje oboustranná síť.
Front Povolí odsouvání předních tváří.
Zpět (Výchozí) Povolí odmíchání tváře. Aby se zlepšil výkon vykreslování, měli byste back-face face co nejčastěji povolit.

Výkon

Jednou z hlavních výhod použití shaderu MRTK Standard oproti standardnímu shaderu Unity je výkon. MrTK Standard Shader je rozšiřitelný a využívá jenom povolené funkce. Byl ale také napsán shader MRTK Standard, který poskytuje srovnatelné a neetické výsledky jako unity standard shader, ale s mnohem nižšími náklady. Jedním ze jednoduchých možností, jak porovnat výkon shaderu, je počet operací, které je potřeba provést na GPU. Rozsah výpočtů samozřejmě může kolísá podle povolených funkcí a dalších konfigurací vykreslování. Obecně ale shader MRTK Standard provádí výrazně méně výpočtů než shader Unity Standard.

Příklad statistiky unity standard shaderu

Unity Standard Shader Statistics

Příklad statistiky shaderu MRTK standard

Statistika standardního shaderu MRTK

Poznámka

Tyto výsledky můžete vygenerovat tak, že v inspektoru Unity vyberete a zobrazíte asset shaderu a pak kliknete na tlačítko Compile and show code (Zkompilovat a zobrazit kód).

Osvětlení

MRTK/Standard používá jednoduchou aproximaci osvětlení. Vzhledem k tomu, že tento shader nepočítá fyzickou správnost a energetickou ochranu, vykresluje se rychle a efektivně. Blinn-Phong je primární technika osvětlení, která je v kombinaci se Nel a osvětlením založeným na obrázku a přibližná osvětlení na fyzickém základě. 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 povoleno). Dynamická bodová světla, spotová světla nebo jakékoli jiné světlo Unity se při osvětlení v reálném čase nezovažuje.

Sférické filtry

Shader použije Light Probes k přibližování světel ve scéně pomocí sférického smyšlí, pokud je povolený. Za účelem snížení nákladů na výpočet se pro každý vrchol provádějí sférické výpočty.

Lightmapping

U statického osvětlení bude shader respektovat lightmapy vytvořené systémem Lightmappingunity. Pokud chcete použít lightmapy, stačí renderer označit jako statický (nebo lightmap static).

Světlo při najetí myší

Bezkontaktní světlo

Podpora zjednodušených skriptovatelných kanálů vykreslování

MrTK obsahuje cestu upgradu, která vývojářům umožňuje využívat zjednodušený skriptovatelný kanál vykreslování Unity s shadery MRTK. Testováno v balíčku Unity 2019.1.1f1 a Lightweight RP 5.7.2 nebo pokyny k začátku s NERP, najdete na této stránce.

Pokud chcete provést upgrade MRTK, vyberte: Mixed Reality Toolkit -> Utilities -> Upgrade MRTK Standard Shader for Lightweight Render Pipeline

Upgrade

Po upgradu se změní MRTK/Standard shader a všechny materiály magenta (chyba shaderu) by se měly opravit. Pokud chcete ověřit úspěšné provedení upgradu, zkontrolujte v konzole: Upgradovaný assets/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader pro použití s kanálem Lightweight Render.

Podpora UGUI

Systém stínování MRTK Standard funguje s integrovaným systémem uživatelského rozhraní Unity. V komponentách uživatelského rozhraní Unity unity_ObjectToWorld matice není transformační matice místní transformace, ve které se nachází komponenta Graphic, ale nadřazená matice plátna. Mnoho efektů shaderu MRTK/Standard vyžaduje, aby byla známa škála objektů. Pokud chcete tento problém vyřešit, bude během vytváření sítě uživatelského rozhraní ukládat informace o škálování do ScaleMeshEffect.cs atributů kanálu UV.

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

Plátno v rámci MRTK zobrazí výzvu k přidání, ScaleMeshEffect.cs když se vyžaduje:

efekt škály mřížky

Kombinovaná kombinace textur

Aby se vylepšila parita se standardními shadery Unity na pixely, plynulost, vyzařující a překrytí, je možné všechno ovládat prostřednictvím balení kanálu. Příklad:

Příklad mapy kanálu

Při použití balení kanálu stačí pouze vzorkovat a načítat jednu texturu do paměti místo čtyř samostatných. Při psaní map textur v programu, jako je například látka nebo Photoshop, je můžete zabalit jako následující:

Kanál Vlastnost
Red Uhličitan
Green Překrytí
Blue Emise (odstínů šedi)
Alfa Plynulost

Nebo můžete použít nástroj pro kombinování textur MRTK. pokud chcete tento nástroj otevřít, vyberte: Mixed reality Toolkit-> utility – kombinovaná > textura , ve které se otevře následující okno:

Příklad sloučení textury

Toto okno se dá automaticky vyplnit tak, že vyberete standardní shader Unity a kliknete na automatické vyplňování ze standardního materiálu. Nebo můžete ručně zadat texturu (nebo konstantní hodnotu) na červený, zelený, modrý nebo alfa kanál. Kombinace textury je GPU Urychlená a nevyžaduje, aby vstupní textura byla dostupná pro procesor.

Další dokumentace k funkcím

Níže jsou uvedeny další podrobnosti o několik podrobností o funkcích, které jsou k dispozici pomocí shaderu MRTK/Standard.

Primitivní oříznutí

primitivní oříznutí

Obrysy sítí

Mnohé techniky ohraničení sítě se provádí pomocí metody následného zpracování . Následné zpracování poskytuje skvělé kvalitní přehledy, ale může být pro spoustu hybridních zařízení realita zakazující nákladné. Můžete najít scénu, která ukazuje použití mřížek v OutlineExamples scény v části MRTK/Examples/Demos/StandardShader/Scenes/ .

Mesh Outline

MeshOutline.cs a MeshOutlineHierarchy.cs dá se použít k vykreslení obrysu kolem zobrazovacího prvku mřížky. Povolení této součásti zavádí další průchozí průchod objektu, který je popsán, ale je navržen ke spouštění performantly na zařízeních s mobilními hybridními realitami a nevyužívá žádné procesy post. Mezi omezení tohoto efektu patří i to, že nefungují dobře u objektů, které nejsou vodotěsné (nebo vyžadují dvě strany), a problémy s řazením může probíhat u překrývajících se objektů.

Chování obrysu je navrženo pro použití ve spojení s shaderem MRTK/Standard. Obrysové materiály jsou obvykle plnou barvou unlit, ale je možné je nakonfigurovat tak, aby dosáhly celé řady efektů. Výchozí konfigurace materiálu s osnovou je následující:

Mesh Outline Material
  1. Pro obrysový materiál by měl být zakázán detailní zápis – k zajištění, že obrys nebrání v vykreslování jiných objektů.
  2. Vysunutí vrcholu – musí být povoleno vykreslování obrysu.
  3. Použít hladké normální vlastnosti – toto nastavení je pro některé sítě volitelné. Vytlačení probíhá přesunutím vrcholu na vrcholovém normálním případě, u některých sítí, které se vysvětlují u výchozích normálních nastavení, dojde v obrysu k úniku. Chcete-li tyto možnosti oddálení opravit, můžete zaškrtnout toto políčko pro použití jiné sady vyhlazených normálních, které jsou generovány MeshSmoother.cs

MeshSmoother.cs je komponenta, která se dá použít k automatickému generování hladkých normálních normálních velikostí na síti. Tato metoda seskupuje vrcholy v síti, které sdílejí stejné umístění v prostoru, a vyprůměruje normální hodnoty těchto vrcholů. Tento proces vytvoří kopii podkladové sítě a měla by být použita pouze v případě potřeby.

Smooth Normals Outline
  1. Hladké normální vygenerované pomocí MeshSmoother.cs .
  2. Použijí se výchozí normální hodnoty, Všimněte si artefaktů v rozích krychle.

Testování vzorníku

Integrovaná v konfigurovatelném testu vzorníku pro dosažení nejrůznějších efektů. Například Portály:

test vzorníku

Podpora s více instancemi barev

Podpora s více instancemi k poskytnutí jedinečných vlastností informací o velikosti tisíců s instancemi GPU:

instance – vlastnosti

Mapování triplanar

Mapování triplanar je způsobem, jak programově Texturovat síť. Často se používá v terénu, v síti bez UVs nebo obtížné rozbalení tvarů. Tato implementace podporuje projekci světa nebo místní prostor, specifikaci plynulosti a normální podpory map. Všimněte si, že každá z těchto textur vyžaduje 3 ukázky textury, takže se v situacích kritického pro výkon používejte jenom zřídka.

triplanar

Vysunutí vrcholu

Vytlačení vrcholu v prostoru světa. Užitečné pro vizualizaci vytlačených ohraničujících svazků nebo přechodů do sítě.

Normální měřítko mapy 1

Různé

Zaškrtávací políčko pro kontrolu optimalizace albedo Pokud není zadaná žádná albedo textura, je albedo operace optimalizace zakázané. To je užitečné pro řízení vzdáleného načítání textur.

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

albedo přiřazení

Pro ořezové textury na pixely se podporují antialiasy na základě ochrany před místními okraji a normální škálování mapy.

Normální měřítko mapy 2

Viz také