Dela via


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.

Hjälm glTF-exempelmodell renderad av ARR

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.

    Sfärer renderade med noll till fullständig transparens 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 i AlbedoColor och AlbedoMap. Som standard UseVertexColor ä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 standard SpecularHighlights är flaggan aktiverad.
    • AlphaClipped: Aktiverar hårda utskärningar per bildpunkt, baserat på att alfavärdet ligger under värdet AlphaClipThreshold 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 fresnelparametrarna FresnelEffectColor och FresnelEffectExponent förklaras nedan.
    • TransparencyWritesDepth: Om TransparencyWritesDepth 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 exempel AlbedoMap färgerna eller vertex . Om transparens aktiveras på ett material används alfakanalen för att justera opaciteten, vilket 1 innebär att den är helt ogenomskinlig och 0 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: Om AlphaClipped flaggan är inställd på PbrFlags egenskapen ritas inte alla bildpunkter där albedo-alfavärdet är lägre än AlphaClipThreshold 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 och TexCoordOffset: 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 och RoughnessMap: 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ån 0.0 till 1.0. När Roughness är lika 0.0med blir reflektionerna skarpa. När Roughness är lika 0.5med blir reflektioner suddiga. Om både ett grovhetsvärde och en grovhetskarta tillhandahålls blir det slutliga värdet produkten av de två.

  • Metalness och MetalnessMap: 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ån 0.0 till 1.0. När metallness är 0.0, albedo färgen är helt synlig, och materialet ser ut som plast eller keramik. När metall är 0.5, ser det ut som målad metall. När metalliteten är 1.0förlorar ytan nästan helt sin albedofärg och återspeglar bara omgivningen. Om är 1.0 och roughness är 0.0 ser till exempel metalness 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å.

    Sfärer renderade med olika metallighets- och grovhetsvärden

    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 och AOScale: 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ån 0.0 till 1.0, där 0.0 betyder mörker (occluded) och 1.0 betyder inga ocklusioner. Om en 2D-struktur tillhandahålls som en ocklusionskarta aktiveras effekten och AOScale fungerar som en multiplikator.

    Ett objekt renderat med och utan omgivande ocklusion

Å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

Nästa steg