Sdílet prostřednictvím


Materiály PBR

Materiály PBR jsou jedním z podporovaných typů materiálů ve službě Azure Remote Rendering. Používají se pro trojúhelníkové mřížky , které by měly přijímat realistické osvětlení. Bodové mraky na druhé straně nejsou ovlivněny dynamickým osvětlením.

PBR je zkratka P hysicky Based Rendering a znamená, že materiál popisuje vizuální vlastnosti povrchu fyzicky přijatelným způsobem, takže realistické výsledky jsou možné za všech světelných podmínek. Většina moderních herních modulů a nástrojů pro vytváření obsahu podporuje materiály PBR, protože jsou považovány za nejlepší aproximaci scénářů reálného světa pro vykreslování v reálném čase.

Ukázkový model helmy glTF vykreslený ARR

Základní myšlenkou fyzicky založeného vykreslování je použití vlastností BaseColor, Metalness a Roughness k emulaci široké škály reálných materiálů. Podrobný popis PBR je nad rámec tohoto článku. Další informace o PBR naleznete v jiných zdrojích.

Materiály PBR ale nejsou univerzálním řešením. Existují materiály, které odrážejí barvu odlišně v závislosti na úhlu zobrazení. Například některé tkaniny nebo autobarvity. Tyto druhy materiálů nejsou zpracovávány standardním modelem PBR a azure Remote Rendering je v současné době nepodporuje. Toto omezení zahrnuje rozšíření PBR, jako jsou Thin-Film (vícevrstvé povrchy) a Clear-Coat (pro auto laky).

Vlastnosti materiálu PBR

Následující vlastnosti materiálu jsou zpřístupněny v rozhraní API modulu runtime, například ve třídě C# PbrMaterial nebo C++ PbrMaterial třída, v uvedeném pořadí.

  • PbrFlags: V této bitové masce lze zkombinovat různé příznaky funkcí, aby bylo možné povolit následující funkce:

    • TransparentMaterial: Pro materiály PBR existuje pouze jedno nastavení průhlednosti: je povolené nebo ne. Neprůhlednost je definována alfa kanálem barvy albedo. Pokud je tato možnost povolená, je vyvolána složitější metoda vykreslování pro kreslení poloprůhledných ploch. Azure Remote Rendering implementuje skutečnou nezávislou transparentnost pořadí (OIT). Transparentní geometrie je nákladná k vykreslení. Pokud potřebujete jen díry na povrchu, například pro listy stromu, je lepší místo toho použít alfa výřez.

    Spheres rendered with zero to full transparency Všimněte si na obrázku výše, jak je oblast nejvíce vpravo zcela průhledná, ale odraz je stále viditelný.

    Důležité

    Pokud se má některý materiál přepnout z neprůhledného na průhledný za běhu, musí vykreslovací modul použít režim vykreslování TileBasedComposition. Toto omezení se nevztahuje na materiály, které jsou převedeny jako průhledné materiály, aby začínaly.

    • UseVertexColor: Pokud síť obsahuje vertex barvy a tato možnost je povolená, barva ok vertex se vynásobí do AlbedoColor a AlbedoMap. Ve výchozím nastavení UseVertexColor je zakázáno.
    • DoubleSided: Pokud je oboustrannost nastavena na true, trojúhelníky s tímto materiálem jsou vykresleny i v případě, že fotoaparát dívá na jejich zadní tváře. Pro osvětlení materiálů PBR se také správně počítá pro zadní plochy. Ve výchozím nastavení je tato možnost zakázaná. Viz také Single-sided rendering.
    • SpecularHighlights: Umožňuje specifikátory pro tento materiál. Ve výchozím nastavení SpecularHighlights je příznak povolený.
    • AlphaClipped: Umožňuje pevné výřezy na pixelech na základě alfa hodnoty pod hodnotou AlphaClipThreshold (viz níže). To funguje i pro neprůhlené materiály.
    • FresnelEffect: Tento příznak materiálu umožňuje doplňkové fresnelové účinky na příslušný materiál. Vzhled efektu se řídí jinými fresnelovými parametry FresnelEffectColor a FresnelEffectExponent vysvětlujeme níže.
    • TransparencyWritesDepth: Pokud TransparencyWritesDepth je příznak nastaven na materiál a materiál je průhledný, objekty používající tento materiál také přispívají do konečné hloubkové vyrovnávací paměti. V další části se podívejte na průhledný příznak materiálu PBR. Povolení této funkce se doporučuje, pokud váš případ použití vyžaduje srozumitelnější pozdní reprojektování plně transparentních scén. U smíšených neprůhledných nebo průhledných scén může toto nastavení zavádět neschválné chování při přeprojektování nebo artefakty opětovného projektu. Z tohoto důvodu je výchozím a doporučeným nastavením pro obecný případ použití tento příznak zakázat. Zapsané hodnoty hloubky jsou převzaty z hloubkové vrstvy jednotlivých pixelů objektu, který je nejblíže fotoaparátu.
  • AlbedoColor: Tato barva se vynásobí jinými barvami, například AlbedoMap barvami nebo vertex barvami. Pokud je u materiálu povolena průhlednost , alfa kanál slouží k úpravě neprůhlednosti, s 1 významem zcela neprůhledné a 0 zcela průhledné. Výchozí barva albedo je neprůhledná bílá.

    Poznámka:

    Pokud je materiál PBR plně průhledný, jako je dokonale čistý skleněný povrch, stále odráží prostředí. Jasné skvrny jako slunce jsou stále viditelné v odrazu. To se u barevných materiálů liší.

  • AlbedoMap: 2D textura pro hodnoty albedo na pixel.

  • AlphaClipThreshold: Pokud AlphaClipped je příznak nastaven na PbrFlags vlastnost, všechny pixely, kde je albedo alfa hodnota nižší, než AlphaClipThreshold nebude nakresleno. Alfa výřez lze použít i bez povolení průhlednosti a je mnohem rychlejší vykreslování. Alfa oříznuté materiály jsou ale stále pomalejší než plně neprůzné materiály. Ve výchozím nastavení je výřez alfa zakázaný.

  • TexCoordScale a TexCoordOffset: Měřítko se vynásobí do souřadnic uv textury, posun se k němu přidá. Lze použít k roztažení a posunu textur. Výchozí měřítko je (1, 1) a posun je (0, 0).

  • FresnelEffectColor: Barva fresnelu použitá pro tento materiál. Pouze důležité, pokud je příznak fresnel efektu nastaven na tento materiál (viz výše). Tato vlastnost řídí základní barvu fresnel lesku (viz fresnel efekt pro úplné vysvětlení). V současné době jsou důležité jenom hodnoty kanálu RGB a alfa hodnota bude ignorována.

  • FresnelEffectExponent: Fresnel exponent použitý pro tento materiál. Pouze důležité, pokud je příznak fresnel efektu nastaven na tento materiál (viz výše). Tato vlastnost řídí šíření fresnel lesku. Minimální hodnota 0,01 způsobí rozložení mezi celý objekt. Maximální hodnota 10,0 zúží lesk pouze na nejvíce viditelných hrany.

  • PbrVertexAlphaMode: Určuje způsob použití alfa kanálu barev vrcholů. K dispozici jsou následující režimy:

    • Occlusion: Alfa hodnota představuje okolní okluzní hodnotu, a proto má vliv pouze na nepřímé osvětlení z sky boxu.
    • LightMask: Alfa hodnota slouží jako měřítko pro celkové množství použitého osvětlení, což znamená, že alfa lze použít ke ztmavnutí oblastí. To má vliv na nepřímé i přímé osvětlení.
    • Opacity: Alfa představuje, jak je materiál neprůhledný (1,0) nebo průhledný (0,0).
  • NormalMap: K simulaci jemně odstupňovaných podrobností lze poskytnout normální mapu .

  • NormalMapScale: Skalární hodnota, která škáluje normální sílu mapy. Hodnota 1,0 vezme normální normální mapový normální stav tak, jak je, hodnota 0 způsobí, že povrch je plochý. Hodnoty větší než 1,0 přehánějí normální perturbaci mapy.

  • Roughness a RoughnessMap: Hrubost definuje, jak hrubý nebo hladký povrch je. Hrubé povrchy bodují světlo ve více směrech než hladké povrchy, které umožňují rozmazané odrazy místo ostrých. Rozsah hodnot je od 0.0 do 1.0. Když Roughness se rovná 0.0, odrazy budou ostré. Když Roughness se rovná 0.5, odrazy se rozmazaně. Pokud je zadána hrubost i mapa hrubosti, bude konečná hodnota součinem těchto dvou hodnot.

  • Metalness a MetalnessMap: Ve fyzice tato vlastnost odpovídá, zda je povrch vodivý nebo dielektrické. Vodivé materiály mají různé reflexní vlastnosti a mají tendenci být reflexní bez albedo barvy. V materiálech PBR tato vlastnost ovlivňuje, kolik povrchu odráží okolní prostředí. Hodnoty jsou v rozsahu od 0.0 do 1.0. Když je 0.0kov , albedo barva je plně viditelná a materiál vypadá jako plast nebo keramické výrobky. Když je 0.5kov, vypadá to jako lakovaný kov. Když je 1.0kovotnost , povrch téměř zcela ztratí svou albedo barvu, a odráží pouze okolí. Například pokud metalness je 1.0 a roughness je 0.0 pak povrch vypadá jako skutečné zrcadlo. Pokud je zadána hodnota kovu i mapa kovu, bude konečná hodnota součinem těchto dvou hodnot.

    Koule vykreslené s různými hodnotami kovu a drsnosti

    Na obrázku výše vypadá koule v pravém dolním rohu jako skutečný kovový materiál, vlevo dole vypadá jako keramická nebo plastová. Barva albedo se také mění podle fyzických vlastností. S rostoucí hrubostí materiál ztrácí ostrost odrazu.

  • AOMap a AOScale: Okolí okluze způsobí, že objekty s štěrbinami vypadají realističtější přidáním stínů do odlehlé oblasti. Hodnota okluze je v rozsahu od 0.0 do , kde 0.0 znamená temnotu (odsud) a 1.0 znamená bez 1.0okluzí. Pokud je 2D textura poskytována jako okluzní mapa, efekt je povolen a AOScale funguje jako násobitel.

    Objekt vykreslený s okolním okluzí a bez okolí

Přepsání barevných materiálů během převodu

Během převodu modelu prostřednictvím souboru přepsání materiálu lze přepsat podmnožinu vlastností barevného materiálu. Následující tabulka ukazuje mapování mezi vlastnostmi modulu runtime zdokumentovanými výše a odpovídajícím názvem vlastnosti v souboru přepsání:

Název vlastnosti materiálu Název vlastnosti v souboru přepsání
PbrFlags.TransparentMaterial transparent
PbrFlags.AlphaClipped alphaClipEnabled
PbrFlags.UseVertexColor useVertexColor
PbrFlags.DoubleSided isDoubleSided
PbrFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
NormalmapScale normalMapScale
Metalness metalness
Roughness roughness
AlphaClipThreshold alphaClipThreshold

Technické podrobnosti

Azure Remote Rendering používá mikro-fazetu Cook-Torrance BRDF s GGX NDF, Schlick Fresnel a GGX Smith koreluje termín viditelnosti s lambertovým difuzním termínem. Tento model je v současné době de facto oborový standard. Podrobnější podrobnosti najdete v tomto článku: Fyzicky založené vykreslování – Cook Torrance

Alternativou k modelu PBR metalness-Roughness , který se používá ve službě Azure Remote Rendering, je model PBR specular-Glossiness . Tento model může představovat širší škálu materiálů. Je ale dražší a obvykle nefunguje dobře pro případy v reálném čase. Není vždy možné převést z Specular-Glossness na Metalness-Roughness, protože existují páry hodnot (Difuzorní, Specular), které nelze převést na (BaseColor, Metalness). Převod v opačném směru je jednodušší a přesnější, protože všechny páry (BaseColor, Metalness) odpovídají dobře definovaným (difuzním, specifikárním) párům.

Dokumentace k rozhraní API

Další kroky