Matériaux PBR
Les matériaux PBR constituent l’un des types de matériaux pris en charge dans Azure Remote Rendering. Ils sont utilisés pour les maillages triangulaires qui doivent recevoir un éclairage réaliste. En revanche, les nuages de points ne sont pas affectés par l’éclairage dynamique.
PBR est l'abréviation de Physically Based Rendering qui signifie que le matériau décrit les propriétés visuelles d’une surface de manière physiquement plausible pour permettre des résultats réalistes dans toutes les conditions d’éclairage. La plupart des moteurs de jeux modernes et des outils de création de contenu prennent en charge les matériaux PBR considérés comme la meilleure approximation des scénarios réels en termes de rendu en temps réel.
L’idée de base du rendu physique réaliste consiste à utiliser les propriétés BaseColor, Metalness, et Roughness pour émuler un large gamme de matériaux réels. La description détaillée du rendu physique réaliste (PBR) dépasse le cadre de cet article. Pour plus d'informations sur le rendu physique réaliste, consultez d'autres sources.
Cela étant, les matériaux PBR ne constituent pas une solution universelle. Certains matériaux reflètent la couleur différemment selon l’angle de vue. Par exemple, certaines structures ou peintures de voitures. Ces types de matériaux ne sont pas gérés par le modèle PBR standard et ne sont pas pris en charge par Azure Remote Rendering pour le moment. Cette limitation comprend les extensions PBR, telles que Thin-Film (surfaces multicouches) et Clear-Coat (peintures de voitures).
Propriétés des matériaux PBR
Les propriétés matérielles suivantes sont exposées dans l’API de runtime, par exemple sur la classe C# PbrMaterial ou la classe C++ PbrMaterial, respectivement.
PbrFlags
: divers indicateurs de fonctionnalité peuvent être combinés dans ce masque de bits pour activer les fonctionnalités suivantes :TransparentMaterial
: Pour les matériaux PBR, il n’existe qu’un seul paramètre de transparence, activé ou non. L’opacité est définie par le canal alpha de la couleur albedo. Lorsqu’il est activé, une méthode de rendu plus complexe est appelée pour dessiner des surfaces semi-transparentes. Azure Remote Rendering implémente OIT (Order Independent Transparency). La géométrie transparente est onéreuse. S’il vous faut uniquement des trous dans une surface, par exemple pour les feuilles d’un arbre, il est préférable de recourir au détourage alpha.
Dans l'image ci-dessus, notez la manière dont la sphère la plus à droite est entièrement transparente et la réflexion toujours visible.
Important
Si un matériau est supposé passer de l’état opaque à transparent au moment de l’exécution, le convertisseur doit utiliser le mode de rendu TileBasedComposition. Cette limitation ne s’applique pas aux matériaux convertis d'emblée en matériaux transparents.
UseVertexColor
: si le maillage comprend des couleurs vertex et que cette option est activée, la couleur vertex des maillages est multipliée dansAlbedoColor
etAlbedoMap
. Par défaut,UseVertexColor
est désactivé.DoubleSided
: si la bilatéralité est définie sur true, les triangles bénéficiant de ce matériau sont rendus même si la caméra regarde vers les faces arrière. L’éclairage des matériaux PBR est également correctement calculé pour les faces arrière. Par défaut, cette option est désactivée. Voir aussi Single-sided rendering.SpecularHighlights
: active les surbrillances spéculaires pour ce matériau. Par défaut, l’indicateurSpecularHighlights
est activé.AlphaClipped
: active les découpages durs par pixel, si la valeur alpha est inférieure à la valeur deAlphaClipThreshold
(voir ci-dessous). Cela fonctionne également pour les matériaux opaques.FresnelEffect
: Cet indicateur de matériau active l’ajout de l’effet Fresnel sur le matériau respectif. L’apparence de l’effet est régie par les autres paramètres de FresnelFresnelEffectColor
etFresnelEffectExponent
expliqués ci-dessous.TransparencyWritesDepth
: si l’indicateurTransparencyWritesDepth
est défini sur le matériau et que celui-ci est transparent, les objets utilisant ce matériau contribueront également au tampon de profondeur final. Consultez l’indicateur de matériau PBR transparent dans la section suivante. L’activation de cette fonctionnalité est recommandée si votre cas d’usage a besoin d’une Reprojection en phase tardive plus plausible des scènes entièrement transparentes. Pour les scènes opaques/transparentes mixtes, ce réglage peut introduire un comportement ou des artefacts de reprojection invraisemblables. Pour cette raison, le réglage par défaut et recommandé pour le cas d’usage général est de désactiver cet indicateur. Les valeurs de profondeur écrites sont extraites de la couche de profondeur par pixel de l’objet qui est le plus proche de l’appareil photo.
AlbedoColor
: cette couleur est multipliée par d’autres couleurs, telles que les couleursAlbedoMap
ou vertex. Si la propriété transparency est activée sur un matériau, le canal alpha est utilisé pour ajuster l’opacité, avec1
pour entièrement opaque et0
pour entièrement transparent. La couleur albedo par défaut est blanc opaque.Remarque
Lorsqu’un matériau PBR est entièrement transparent, comme du verre parfaitement propre, il reflète toujours l’environnement. Les zones lumineuses telles que le soleil sont toujours visibles dans la réflexion. Cela est différent pour les matériaux de couleur.
AlbedoMap
: une texture 2D pour les valeurs albedo par pixel.AlphaClipThreshold
: si l’indicateurAlphaClipped
est défini sur la propriétéPbrFlags
, tous les pixels où la valeur albedo alpha est inférieure àAlphaClipThreshold
ne sont pas dessinés. Le détourage alpha peut être utilisé, même sans activation de la transparence, et s’avère nettement plus rapide à rendre. Les matériaux avec détourage alpha sont cependant plus lents à rendre que les matériaux entièrement opaques. Par défaut, le détourage alpha est désactivé.TexCoordScale
etTexCoordOffset
: l’échelle est multipliée par les coordonnées de la texture UV, le décalage y est ajouté. Peut être utilisée pour étirer et décaler les textures. La valeur par défaut de l’échelle est de (1, 1) et le décalage est de (0, 0).FresnelEffectColor
: Couleur de Fresnel utilisée pour ce matériau. Important uniquement quand l’indicateur de Fresnel a été défini sur ce matériau (voir ci-dessus). Cette propriété contrôle la couleur de base de la brillance de Fresnel (consultez Effet Fresnel pour obtenir une explication complète). Seules les valeurs du canal RVB sont importantes, la valeur alpha est ignorée.FresnelEffectExponent
: Exposant de Fresnel utilisé pour ce matériau. Important uniquement quand l’indicateur de Fresnel a été défini sur ce matériau (voir ci-dessus). Cette propriété contrôle la diffusion de la brillance de Fresnel. La valeur minimale 0.01 entraîne une diffusion sur l’ensemble de l’objet. La valeur maximale 10.0 restreint la brillance uniquement aux bords les plus gracieux visibles.PbrVertexAlphaMode
: détermine la façon dont le canal alpha des couleurs de sommet est utilisé. Les modes suivants sont fournis :Occlusion
: la valeur alpha représente une valeur d’occlusion ambiante et affecte donc uniquement l’éclairage indirect de la skybox.LightMask
: la valeur alpha sert de facteur d’échelle pour la quantité globale d’éclairage appliquée, ce qui signifie que l’alpha peut être utilisé pour assombrir les zones. Cela affecte à la fois l’éclairage indirect et direct.Opacity
: l’alpha représente l’opacité (1,0) ou la transparence (0,0) du matériau.
NormalMap
: pour simuler des détails affinés, une carte normale peut être fournie.NormalMapScale
: une valeur scalaire qui met à l’échelle la force de la carte normale. La valeur 1,0 prend la normale de la carte normale telle quelle, une valeur de 0 rend la surface plate. Les valeurs supérieures à 1,0 exagèrent la perturbation de la carte normale.Roughness
etRoughnessMap
: la rugosité définit dans quelle mesure la surface est rugueuse ou lisse. Les surfaces rugueuses diffusent la lumière dans plus de directions que les surfaces lisses, ce qui rend les réflexions plus floues que nettes. La plage de valeurs est comprise entre0.0
et1.0
. LorsqueRoughness
équivaut à0.0
, les réflexions sont nettes. LorsqueRoughness
équivaut à0.5
, les réflexions deviennent floues. Si une valeur de rugosité et une cartographie de rugosité sont fournies, la valeur finale sera le produit des deux.Metalness
etMetalnessMap
: en physique, cette propriété correspond à la nature conductrice ou diélectrique d'une surface. Les matériaux conducteurs présentent différentes propriétés réfléchissantes et tendent à réfléchir sans couleur albedo. En termes de matériaux PBR, cette propriété détermine dans quelle mesure une surface reflète l’environnement. Les valeurs sont comprises entre0.0
et1.0
. Lorsque la propriété metalness est0.0
, la couleur albedo est entièrement visible et le matériau ressemble à du plastique ou de la céramique. Lorsque la propriété metalness est0.5
, il ressemble à du métal peint. Lorsque la propriété metalness est1.0
, la surface perd quasi-complètement sa couleur albedo et reflète uniquement l’environnement. Par exemple, simetalness
est1.0
etroughness
0.0
, une surface ressemble à un miroir. Si les propriétés metalness et metalness map sont fournies, la valeur finale sera le produit des deux.Dans l’image ci-dessus, la sphère du coin inférieur droit ressemble à un matériau en métal réel et la partie inférieure gauche à de la céramique ou du plastique. La couleur albedo change également en fonction des propriétés physiques. Si la rugosité augmente, le matériau perd la netteté de la réflexion.
AOMap
etAOScale
: l’occlusion ambiante rend les objets présentant des crevasses plus réalistes en ajoutant des ombres aux zones occluses. La plage de valeurs de l'occlusion est comprise entre0.0
et1.0
, où0.0
représente l'obscurité (occlusion) et1.0
l'absence d'occlusion. Si une texture 2D est fournie en tant que carte d’occlusion, l’effet est activé etAOScale
fait office de multiplicateur.
Remplacements de matériaux de couleur pendant la conversion
Un sous-ensemble de propriétés de matériau de couleur peut être remplacé lors de la conversion du modèle via le fichier de remplacement de matériau. Le tableau suivant montre le mappage entre les propriétés de runtime documentées ci-dessus et le nom de propriété correspondant dans le fichier de remplacement :
Nom de propriété du matériau | Nom de la propriété dans le fichier de remplacement |
---|---|
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 |
Détails techniques
Azure Remote Rendering utilise la microfacette BRDF Cook Torrance avec GGX NDF, Schlick Fresnel et un terme de visibilité corrélée GGX Smith avec un terme diffus Lambert. Actuellement, ce modèle est la norme de facto du secteur. Pour plus d’informations détaillées, reportez-vous à cet article : Rendu physiquement basé – Cook Torrance
Le modèle PBR Specular-Glossiness est une alternative au modèle PBR Metalness-Roughness utilisé dans Azure Remote Rendering. Ce modèle peut représenter une plus grande gamme de matériaux. Toutefois, il est plus onéreux et ne fonctionne pas très bien en temps réel. Il n’est pas toujours possible de passer de Specular-Glossiness à Metalness-Roughness car il s’agit de paires de valeurs (Diffuse, Specular) impossibles à convertir vers (BaseColor, Metalness). La conversion dans l’autre sens est plus simple et plus précise puisque toutes les paires (BaseColor, Metalness) correspondent à des paires (Diffuse, Specular) bien définies.
Documentation de l'API
- PbrMaterial, classe C#
- C# RenderingConnection.CreateMaterial()
- PbrMaterial, classe C++
- C++ RenderingConnection::CreateMaterial()