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.
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.
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 deAlbedoColor
enAlbedoMap
.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 standaardSpecularHighlights
ingeschakeld.AlphaClipped
: Maakt harde uitsnedes per pixel mogelijk, op basis van de alfawaarde die onder de waarde vanAlphaClipThreshold
(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 fresnelparametersFresnelEffectColor
enFresnelEffectExponent
hieronder uitgelegd.TransparencyWritesDepth
: Als deTransparencyWritesDepth
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 deAlbedoMap
of vertex kleuren. Als transparantie is ingeschakeld voor een materiaal, wordt het alfakanaal gebruikt om de dekking aan te passen, met1
betekenis volledig ondoorzichtig en0
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 deAlphaClipped
vlag is ingesteld op dePbrFlags
eigenschap, worden alle pixels waar de albedo alpha-waarde lager is danAlphaClipThreshold
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
enTexCoordOffset
: 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
enRoughnessMap
: 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 van0.0
tot1.0
. AlsRoughness
het0.0
gelijk is aan, zullen reflecties scherp zijn. AlsRoughness
het gelijk is aan,0.5
worden weerspiegelingen wazig. Als zowel een ruwheidswaarde als een ruwheidskaart worden opgegeven, is de uiteindelijke waarde het product van de twee.Metalness
enMetalnessMap
: 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 van0.0
tot1.0
. Wanneer metaalheid is0.0
, is de albedo-kleur volledig zichtbaar en ziet het materiaal eruit als plastic of keramiek. Wanneer metaalheid is0.5
, ziet het eruit als geschilderd metaal. Wanneer metaalheid is1.0
, verliest het oppervlak bijna zijn albedo-kleur en weerspiegelt het alleen de omgeving. Als dat het geval is1.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.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
enAOScale
: Omgevings occlusie maakt objecten met spleten realistischer door schaduwen toe te voegen aan gesloten gebieden. Occlusiewaarde varieert van0.0
tot1.0
, waarbij0.0
duisternis (occluded) betekent en1.0
geen occlusies betekent. Als een 2D-patroon wordt opgegeven als een occlusiekaart, wordt het effect ingeschakeld enAOScale
fungeert het als een vermenigvuldiger.
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
- C# PbrMaterial-klasse
- C# RenderingConnection.CreateMaterial()
- C++ PbrMaterial-klasse
- C++ RenderingConnection::CreateMaterial()