Delen via


PBR-materialen

PBR-materialen zijn een van de ondersteunde materiaaltypen in Azure Remote Rendering. Ze worden gebruikt voor driehoekige meshes die realistische belichting moeten ontvangen. Puntwolken daarentegen worden niet beïnvloed door dynamische verlichting.

PBR staat voor Physisch Based Rendering en betekent dat het materiaal de visuele eigenschappen van een oppervlak op een fysiek plausibele manier beschrijft, zodat realistische resultaten mogelijk zijn onder alle lichtomstandigheden. De meeste moderne game-engines en hulpprogramma's voor het maken van inhoud ondersteunen PBR-materialen omdat ze worden beschouwd als de beste benadering van echte scenario's voor realtime rendering.

Helm glTF-voorbeeldmodel weergegeven door ARR

Het kernidee van fysiek gebaseerde rendering is het gebruik van De eigenschappen BaseColor, Metalness en Ruwheid om een breed scala aan echte materialen te emuleren. Een gedetailleerde beschrijving van PBR valt buiten het bereik van dit artikel. Zie andere bronnen voor meer informatie over PBR.

PBR-materialen zijn echter geen universele oplossing. Er zijn materialen die een andere kleur weergeven, afhankelijk van de kijkhoek. Bijvoorbeeld sommige stoffen of autoverven. Dit soort materialen worden niet verwerkt door het standaard PBR-model en worden momenteel niet ondersteund door Azure Remote Rendering. Deze beperking omvat PBR-extensies, zoals Thin-Film (meerdere lagen) en Clear-Coat (voor autoverf).

PBR-materiaaleigenschappen

De volgende materiaaleigenschappen worden weergegeven in de runtime-API, bijvoorbeeld in de klasse C# PbrMaterial of de C++ PbrMaterial-klasse.

  • PbrFlags: Misc-functievlagmen kunnen worden gecombineerd in dit bitmasker om de volgende functies in te schakelen:

    • TransparentMaterial: Voor PBR-materialen is er slechts één transparantie-instelling: deze is ingeschakeld of niet. De dekking wordt gedefinieerd door het alfakanaal van de albedo-kleur. Wanneer deze optie is ingeschakeld, wordt een complexere renderingmethode aangeroepen om semitransparante oppervlakken te tekenen. Azure Remote Rendering implementeert echte orderonafhankelijke transparantie (OIT).a0> Transparante geometrie is duur om weer te geven. Als u alleen gaten in een oppervlak nodig hebt, bijvoorbeeld voor de bladeren van een boom, is het beter om in plaats daarvan alfaknipsels te gebruiken.

    Bollen die worden weergegeven met nul tot volledige transparantie In de bovenstaande afbeelding ziet u hoe de meest rechtse bol volledig transparant is, maar de weerspiegeling nog steeds zichtbaar is.

    Belangrijk

    Als er materiaal moet worden overgeschakeld van ondoorzichtig naar transparant tijdens runtime, moet de renderer de renderingmodus TileBasedComposition gebruiken. Deze beperking geldt niet voor materialen die als transparante materialen worden geconverteerd om mee te beginnen.

    • UseVertexColor: Als het mesh kleuren bevat vertex en deze optie is ingeschakeld, wordt de kleur van de meshes vertex vermenigvuldigd in de AlbedoColor en AlbedoMap. UseVertexColor Standaard is uitgeschakeld.
    • DoubleSided: Als dubbelzijdigheid is ingesteld op waar, worden driehoeken met dit materiaal weergegeven, zelfs als de camera naar hun ruggezichten kijkt. Voor PBR-materiaalverlichting wordt ook goed berekend voor ruggezichten. Deze optie is standaard uitgeschakeld. Zie ook Single-sided rendering.
    • SpecularHighlights: Hiermee schakelt u speculaire markeringen voor dit materiaal in. De vlag is standaard SpecularHighlights ingeschakeld.
    • AlphaClipped: Maakt harde uitsnedes per pixel mogelijk, op basis van de alfawaarde die onder de waarde van AlphaClipThreshold (zie hieronder) wordt weergegeven. Dit werkt ook voor ondoorzichtige materialen.
    • FresnelEffect: Deze materiaalvlag maakt het additieve fresnel-effect op het respectieve materiaal mogelijk. Het uiterlijk van het effect wordt bepaald door de andere fresnelparameters FresnelEffectColor en FresnelEffectExponent hieronder uitgelegd.
    • TransparencyWritesDepth: Als de TransparencyWritesDepth vlag is ingesteld op het materiaal en het materiaal transparant is, dragen objecten die dit materiaal gebruiken ook bij aan de uiteindelijke dieptebuffer. Zie de pbr-materiaalvlag transparant in de volgende sectie. Het inschakelen van deze functie wordt aanbevolen als uw use-case een plausibele latere fase-herprojectie van volledig transparante scènes nodig heeft. Voor gemengde ondoorzichtige/transparante scènes kan deze instelling onoplettend gedrag voor herprojectie of reprojectieartefacten veroorzaken. Daarom is de standaardinstelling en de aanbevolen instelling voor de algemene use-case om deze vlag uit te schakelen. De geschreven dieptewaarden worden genomen uit de dieptelaag per pixel van het object dat zich het dichtst bij de camera bevindt.
  • AlbedoColor: Deze kleur wordt vermenigvuldigd met andere kleuren, zoals de AlbedoMap of vertex kleuren. Als transparantie is ingeschakeld voor een materiaal, wordt het alfakanaal gebruikt om de dekking aan te passen, met 1 betekenis volledig ondoorzichtig en 0 betekenis volledig transparant. De standaardkleur van albedo is ondoorzichtig wit.

    Notitie

    Wanneer een PBR-materiaal volledig transparant is, zoals een perfect schoon glasoppervlak, weerspiegelt het nog steeds de omgeving. Heldere vlekken zoals de zon zijn nog steeds zichtbaar in de weerspiegeling. Dit is anders voor kleurmaterialen.

  • AlbedoMap: Een 2D-patroon voor albedo-waarden per pixel.

  • AlphaClipThreshold: Als de AlphaClipped vlag is ingesteld op de PbrFlags eigenschap, worden alle pixels waar de albedo alpha-waarde lager is dan AlphaClipThreshold niet getekend. Alfa-knipsels kunnen zelfs worden gebruikt zonder transparantie in te schakelen en is veel sneller weer te geven. Alfaclipmaterialen zijn echter nog steeds trager dan volledig ondoorzichtige materialen. Alfa-knipsels zijn standaard uitgeschakeld.

  • TexCoordScale en TexCoordOffset: De schaal wordt vermenigvuldigd in de UV-patrooncoördinaten, de offset wordt eraan toegevoegd. Kan worden gebruikt om de patronen uit te rekken en te verplaatsen. De standaardschaal is (1, 1) en offset is (0, 0).

  • FresnelEffectColor: De fresnelkleur die voor dit materiaal wordt gebruikt. Alleen belangrijk wanneer de fresnel effectvlag is ingesteld op dit materiaal (zie hierboven). Deze eigenschap bepaalt de basiskleur van de fresnel glans (zie fresnel effect voor een volledige uitleg). Momenteel zijn alleen de RGB-kanaalwaarden belangrijk en wordt de alfawaarde genegeerd.

  • FresnelEffectExponent: De fresnel exponent gebruikt voor dit materiaal. Alleen belangrijk wanneer de fresnel effectvlag is ingesteld op dit materiaal (zie hierboven). Deze accommodatie bepaalt de verspreiding van de fresnel glans. De minimumwaarde 0,01 veroorzaakt een spread over het hele object. De maximumwaarde 10,0 zorgt ervoor dat alleen de meest begrazingsranden zichtbaar zijn.

  • PbrVertexAlphaMode: bepaalt hoe het alfakanaal van hoekpuntkleuren wordt gebruikt. De volgende modi zijn beschikbaar:

    • Occlusion: De alfawaarde vertegenwoordigt een omgevings occlusiewaarde en is dus alleen van invloed op de indirecte verlichting van de skybox.
    • LightMask: De alfawaarde fungeert als een schaalfactor voor de totale hoeveelheid toegepaste verlichting, wat betekent dat de alfa kan worden gebruikt om gebieden te donkerder maken. Dit is van invloed op zowel indirecte als directe verlichting.
    • Opacity: De alfa geeft aan hoe ondoorzichtig (1.0) of transparant (0,0) het materiaal is.
  • NormalMap: Om gedetailleerde details te simuleren, kan er een normale kaart worden opgegeven.

  • NormalMapScale: Een scalaire waarde waarmee de normale kaartsterkte wordt geschaald. Een waarde van 1,0 neemt de normale kaart als is, een waarde van 0 maakt het oppervlak plat. Waarden die groter zijn dan 1,0 overdreven de normale kaartpersturbatie.

  • Roughness en RoughnessMap: Ruwheid bepaalt hoe ruw of glad het oppervlak is. Ruwe oppervlakken verspreiden het licht in meer richtingen dan vloeiende oppervlakken, waardoor reflecties wazig worden in plaats van scherp. Het waardebereik is van 0.0 tot 1.0. Als Roughness het 0.0gelijk is aan, zullen reflecties scherp zijn. Als Roughness het gelijk is aan, 0.5worden weerspiegelingen wazig. Als zowel een ruwheidswaarde als een ruwheidskaart worden opgegeven, is de uiteindelijke waarde het product van de twee.

  • Metalness en MetalnessMap: In de natuurkunde komt deze eigenschap overeen met of een oppervlak geleidend of dilektricisch is. Geleidende materialen hebben verschillende reflecterende eigenschappen en ze zijn meestal reflecterend zonder albedo kleur. In PBR-materialen is deze eigenschap van invloed op hoeveel een oppervlak de omringende omgeving weerspiegelt. Waarden variëren van 0.0 tot 1.0. Wanneer metaalheid is 0.0, is de albedo-kleur volledig zichtbaar en ziet het materiaal eruit als plastic of keramiek. Wanneer metaalheid is 0.5, ziet het eruit als geschilderd metaal. Wanneer metaalheid is 1.0, verliest het oppervlak bijna zijn albedo-kleur en weerspiegelt het alleen de omgeving. Als dat het geval is 1.0 0.0, roughness metalness ziet een oppervlak er bijvoorbeeld uit als een echte spiegel. Als zowel een metaalwaarde als een metalnesskaart worden opgegeven, is de uiteindelijke waarde het product van de twee.

    Bollen die worden weergegeven met verschillende metaal- en ruwheidswaarden

    In de bovenstaande afbeelding ziet de bol in de rechterbenedenhoek eruit als een echt metaalmateriaal, de linkerbenedenhoek ziet eruit als keramiek of plastic. De albedo-kleur verandert ook op basis van fysieke eigenschappen. Met toenemende ruwheid verliest het materiaal weerspiegelingsscherpte.

  • AOMap en AOScale: Omgevings occlusie maakt objecten met spleten realistischer door schaduwen toe te voegen aan gesloten gebieden. Occlusiewaarde varieert van 0.0 tot 1.0, waarbij 0.0 duisternis (occluded) betekent en 1.0 geen occlusies betekent. Als een 2D-patroon wordt opgegeven als een occlusiekaart, wordt het effect ingeschakeld en AOScale fungeert het als een vermenigvuldiger.

    Een object dat wordt weergegeven met en zonder omgevings occlusie

Kleurmateriaal overschrijft tijdens conversie

Een subset van eigenschappen van het kleurmateriaal kan tijdens de modelconversie worden overschreven via het materiaaloverschrijvingsbestand. In de volgende tabel ziet u de toewijzing tussen de hierboven beschreven runtime-eigenschappen en de bijbehorende eigenschapsnaam in het onderdrukkingsbestand:

Naam van materiaaleigenschap Naam van eigenschap in onderdrukkingsbestand
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

Technische details

Azure Remote Rendering maakt gebruik van de micro-facet BRDF van Cook-Torrance met GGX NDF, Schlick Fresnel en een GGX Smith gecorreleerde zichtbaarheidsterm met een Diffuse diffuse term. Dit model is momenteel de feitelijke industriestandaard. Raadpleeg dit artikel voor meer gedetailleerde informatie: Fysiek gebaseerde rendering - Cook Torrance

Een alternatief voor het PBR-model Metalness-Roughness dat wordt gebruikt in Azure Remote Rendering, is het PBR-model specular-Glossiness . Dit model kan een breder scala aan materialen vertegenwoordigen. Het is echter duurder en werkt meestal niet goed voor realtime gevallen. Het is niet altijd mogelijk om te converteren van Specular-Glossiness naar Metalness-Roughness zoals er zijn (Diffuse, Specular) waardeparen die niet kunnen worden geconverteerd naar (BaseColor, Metalness). De conversie in de andere richting is eenvoudiger en nauwkeuriger, omdat alle paren (BaseColor, Metalness) overeenkomen met goed gedefinieerde (Diffuse, Specular) paren.

API-documentatie

Volgende stappen