PBR-material
PBR-material är en av de materialtyper som stöds i Azure Remote Rendering. De används för triangulära nät som ska få realistisk belysning. Punktmoln påverkas å andra sidan inte av dynamisk belysning.
PBR står för Physically Based Rendering och innebär att materialet beskriver de visuella egenskaperna hos en yta på ett fysiskt troligt sätt, så att realistiska resultat är möjliga under alla ljusförhållanden. De flesta moderna spelmotorer och verktyg för att skapa innehåll stöder PBR-material eftersom de anses vara den bästa uppskattningen av verkliga scenarier för realtidsrendering.
Grundtanken med fysisk återgivning är att använda egenskaper för BaseColor, Metalness och Roughness för att emulera ett brett utbud av verkliga material. En detaljerad beskrivning av PBR ligger utanför den här artikelns omfång. Mer information om PBR finns i andra källor.
PBR-material är dock inte en universell lösning. Det finns material som återspeglar färg på olika sätt beroende på visningsvinkeln. Till exempel vissa tyger eller bilfärger. Den här typen av material hanteras inte av standard-PBR-modellen och stöds för närvarande inte av Azure Remote Rendering. Den här begränsningen omfattar PBR-tillägg, till exempel Thin-Film (flerskiktade ytor) och Clear-Coat (för bilfärger).
Egenskaper för PBR-material
Följande materialegenskaper exponeras i körnings-API:et, till exempel på klassen C# PbrMaterial eller klassen C++ PbrMaterial.
PbrFlags
: Felfunktionsflaggor kan kombineras i den här bitmasken för att aktivera följande funktioner:TransparentMaterial
: För PBR-material finns det bara en transparensinställning: den är aktiverad eller inte. Opaciteten definieras av albedofärgens alfakanal. När den är aktiverad anropas en mer komplex återgivningsmetod för att rita halvtransparenta ytor. Azure Remote Rendering implementerar sann orderoberoende transparens (OIT). Transparent geometri är dyrt att återge. Om du bara behöver hål i en yta, till exempel för löven i ett träd, är det bättre att använda alfaurklipp i stället.
Observera i bilden ovan hur den högra sfären är helt transparent, men reflektionen är fortfarande synlig.
Viktigt!
Om något material ska växlas från ogenomskinligt till transparent vid körning måste återgivningsverktyget använda renderingsläget TileBasedComposition. Den här begränsningen gäller inte material som konverteras som transparenta material till att börja med.
UseVertexColor
: Om nätet innehåller vertex färger och det här alternativet är aktiverat multipliceras maskornas vertex färg iAlbedoColor
ochAlbedoMap
. Som standardUseVertexColor
är inaktiverat.DoubleSided
: Om dubbelsidighet är inställt på sant återges trianglar med detta material även om kameran tittar på deras baksidor. För PBR-material är belysningen också korrekt beräknad för baksidor. Som standard är det här alternativet inaktiverat. Se även Single-sided rendering.SpecularHighlights
: Aktiverar spektulära markeringar för det här materialet. Som standardSpecularHighlights
är flaggan aktiverad.AlphaClipped
: Aktiverar hårda utskärningar per bildpunkt, baserat på att alfavärdet ligger under värdetAlphaClipThreshold
för (se nedan). Detta fungerar även för ogenomskinliga material.FresnelEffect
: Denna materialflagga möjliggör den additiva fresneleffekten på respektive material. Effektens utseende styrs av de andra fresnelparametrarnaFresnelEffectColor
ochFresnelEffectExponent
förklaras nedan.TransparencyWritesDepth
: OmTransparencyWritesDepth
flaggan är inställd på materialet och materialet är transparent, kommer objekt som använder detta material också att bidra till den slutliga djupbufferten. Se PBR-materialflaggan transparent i nästa avsnitt. Att aktivera den här funktionen rekommenderas om ditt användningsfall behöver en mer rimlig omprojektion i sent skede av helt transparenta scener. För blandade ogenomskinliga/transparenta scener kan den här inställningen introducera osannolikt reprojectionbeteende eller reprojectionartefakter. Därför är standardinställningen och den rekommenderade inställningen för det allmänna användningsfallet att inaktivera den här flaggan. De skriftliga djupvärdena hämtas från djupskiktet per bildpunkt för det objekt som är närmast kameran.
AlbedoColor
: Den här färgen multipliceras med andra färger, till exempelAlbedoMap
färgerna eller vertex . Om transparens aktiveras på ett material används alfakanalen för att justera opaciteten, vilket1
innebär att den är helt ogenomskinlig och0
betyder helt transparent. Standardfärgen för albedo är ogenomskinlig vit.Kommentar
När ett PBR-material är helt transparent, som en helt ren glasyta, återspeglar det fortfarande miljön. Ljusa fläckar som solen är fortfarande synliga i reflektionen. Detta är annorlunda för färgmaterial.
AlbedoMap
: En 2D-struktur för albedo-värden per pixel.AlphaClipThreshold
: OmAlphaClipped
flaggan är inställd påPbrFlags
egenskapen ritas inte alla bildpunkter där albedo-alfavärdet är lägre änAlphaClipThreshold
vad som inte ritas. Alfaurklipp kan användas även utan att aktivera transparens och är mycket snabbare att rendera. Alfaklippta material är dock fortfarande långsammare att återge än helt ogenomskinliga material. Som standard är alfaurklipp inaktiverat.TexCoordScale
ochTexCoordOffset
: Skalan multipliceras med UV-strukturkoordinaterna, förskjutningen läggs till i den. Kan användas för att sträcka och flytta texturerna. Standardskalan är (1, 1) och förskjutningen är (0, 0).FresnelEffectColor
: Fresnelfärgen som används för detta material. Endast viktigt när fresneleffektflaggan har ställts in på detta material (se ovan). Den här egenskapen styr basfärgen för fresnelglansen (se fresneleffekten för en fullständig förklaring). För närvarande är endast RGB-kanalvärdena viktiga och alfavärdet ignoreras.FresnelEffectExponent
: Fresnel exponenten som används för detta material. Endast viktigt när fresneleffektflaggan har ställts in på detta material (se ovan). Den här egenskapen styr spridningen av fresnelglansen. Minimivärdet 0,01 orsakar en spridning över hela objektet. Det maximala värdet 10,0 begränsar glansen till endast de mest beteskanterna som syns.PbrVertexAlphaMode
: Avgör hur alfakanalen med hörnfärger används. Följande lägen tillhandahålls:Occlusion
: Alfavärdet representerar ett omgivande ocklusionsvärde och påverkar därför endast den indirekta belysningen från skyboxen.LightMask
: Alfavärdet fungerar som en skalningsfaktor för den totala mängden belysning som används, vilket innebär att alfa kan användas för att mörkare områden. Detta påverkar både indirekt och direkt belysning.Opacity
: Alfa representerar hur ogenomskinlig (1.0) eller transparent (0.0) materialet är.
NormalMap
: Om du vill simulera detaljerad information kan du ange en normal karta .NormalMapScale
: Ett skalärt värde som skalar den normala kartstyrkan. Ett värde på 1,0 tar den normala kartans normala som den är, ett värde på 0 gör att ytan ser platt ut. Värden som är större än 1,0 överdriver den normala kartperturbationen.Roughness
ochRoughnessMap
: Grovhet definierar hur grov eller jämn ytan är. Grova ytor sprider ljuset i fler riktningar än släta ytor, vilket gör reflektioner suddiga snarare än skarpa. Värdeintervallet är från0.0
till1.0
. NärRoughness
är lika0.0
med blir reflektionerna skarpa. NärRoughness
är lika0.5
med blir reflektioner suddiga. Om både ett grovhetsvärde och en grovhetskarta tillhandahålls blir det slutliga värdet produkten av de två.Metalness
ochMetalnessMap
: I fysik motsvarar denna egenskap om en yta är ledande eller dielektrisk. Ledande material har olika reflekterande egenskaper, och de tenderar att vara reflekterande utan albedofärg. I PBR-material påverkar den här egenskapen hur mycket en yta återspeglar den omgivande miljön. Värden sträcker sig från0.0
till1.0
. När metallness är0.0
, albedo färgen är helt synlig, och materialet ser ut som plast eller keramik. När metall är0.5
, ser det ut som målad metall. När metalliteten är1.0
förlorar ytan nästan helt sin albedofärg och återspeglar bara omgivningen. Om är1.0
ochroughness
är0.0
ser till exempelmetalness
en yta ut som en verklig spegel. Om både ett metallvärde och en metallighetskarta tillhandahålls blir det slutliga värdet produkten av de två.På bilden ovan ser sfären i det nedre högra hörnet ut som ett riktigt metallmaterial, nedre vänstra ser ut som keramik eller plast. Albedo-färgen ändras också enligt fysiska egenskaper. Med ökande grovhet förlorar materialet reflektionskärpa.
AOMap
ochAOScale
: Omgivande ocklusion gör att objekt med sprickor ser mer realistiska ut genom att lägga till skuggor i ockluuderade områden. Ocklusionsvärdet sträcker sig från0.0
till1.0
, där0.0
betyder mörker (occluded) och1.0
betyder inga ocklusioner. Om en 2D-struktur tillhandahålls som en ocklusionskarta aktiveras effekten ochAOScale
fungerar som en multiplikator.
Åsidosättningar av färgmaterial under konvertering
En delmängd av egenskaper för färgmaterial kan åsidosättas under modellkonverteringen via den materiella åsidosättningsfilen. I följande tabell visas mappningen mellan körningsegenskaperna ovan och motsvarande egenskapsnamn i åsidosättningsfilen:
Namn på materialegenskap | Egenskapsnamn i åsidosättningsfil |
---|---|
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 |
Teknisk information
Azure Remote Rendering använder mikrofasetterings-BRDF med Cook-Torrance med GGX NDF, Schlick Fresnel och en GGX Smith-korrelerad synlighetsterm med en Lambert-diffus term. Den här modellen är den faktiska branschstandarden för närvarande. Mer detaljerad information finns i den här artikeln: Fysiskt baserad rendering – Cook Torrance
Ett alternativ till PBR-modellen Metalness-Roughness som används i Azure Remote Rendering är PBR-modellen Specular-Glossiness . Den här modellen kan representera ett bredare utbud av material. Det är dock dyrare och fungerar vanligtvis inte bra för realtidsfall. Det är inte alltid möjligt att konvertera från Specular-Glossiness till Metalness-Roughness eftersom det finns (Diffuse, Specular) värdepar som inte kan konverteras till (BaseColor, Metalness). Konverteringen i den andra riktningen är enklare och mer exakt, eftersom alla (BaseColor, Metalness) par motsvarar väldefinierade (diffusa, speculära) par.
API-dokumentation
- C# PbrMaterial-klass
- C# RenderingConnection.CreateMaterial()
- C++ PbrMaterial-klass
- C++ RenderingConnection::CreateMaterial()