Les fonctions de matériau vous permettent de regrouper des parties d'un graphique de matériau en une ressource réutilisable que vous pouvez partager avec une bibliothèque et insérer facilement dans d'autres matériaux. Leur objectif est de rationaliser la création de matériau en donnant un accès instantané aux réseaux de nœuds de matériau couramment utilisés.
Par exemple, la fonction Blend_Overlay présentée ci-dessous contient l'ensemble du réseau d'expression de matériau présenté à droite de l'image. Au lieu de construire ce réseau de nœuds encore et encore, vous pouvez l'insérer directement dans votre graphique à partir de la bibliothèque Fonction de matériau.

Les fonctions sont éditées dans l'Éditeur de matériaux comme un matériau normal, mais avec certaines restrictions sur les nœuds que vous pouvez utiliser. Utilisées correctement, elles peuvent réduire la redondance du matériau, ce qui réduit à son tour l'effort de maintenance des artistes. Les fonctions de matériau maintiennent la synchronisation des expressions dupliquées, évitant ainsi les inévitables bogues qui surviennent lorsqu'un duplicata est oublié lors d'une modification.
Les fonctions de matériau constituent une classe de ressources distincte dans le Navigateur de contenu. Leurs graphiques sont similaires à ceux des matériaux, mais diffèrent sur un point important. Au lieu d'un nœud de matériau principal, les fonctions de matériau ont des nœuds FunctionOutput, qui apparaissent comme des broches de sortie sur le nœud de fonction de matériau final lorsqu'il est utilisé dans un matériau.
Il peut être utile de penser à une fonction de matériau comme à un boîtier de projet électronique. Vous pouvez ajouter autant d'entrées et de sorties que vous le jugez nécessaire. Le cœur de la fonction est le réseau d'expression de matériau entre ces entrées et ces sorties. Cet exemple prend deux couches et les fusionne comme une [Fusion d'écran Photoshop] (https://helpx.adobe.com/photoshop/using/blending-modes.html). La fonction fait abstraction des détails pour l'artiste, qui n'a donc pas besoin de connaître les mathématiques d'une fusion d'écran pour utiliser une opération de mélange d'écran.

Nœuds d'entrée (1) et de sortie (2) de la fonction de matériau.
Comme vous pouvez le voir ci-dessus, ce qui se passe entre l'entrée et la sortie dépend entièrement de vous et sera défini par tout réseau de nœuds d'expression de matériau standard. Une fois que vous avez inséré une fonction de matériau dans un matériau, vous ne verrez que le nœud d'appel de la fonction de matériau avec ses entrées et ses sorties. Le reste du graphique est caché dans la fonction.

Bibliothèque de fonctions de matériaux
Lorsque votre fonction de matériau est terminée, vous pouvez la publier dans la bibliothèque de fonctions de matériaux pour y accéder facilement lors de la création d'un matériau. La bibliothèque des fonctions de matériau se trouve dans la palette située sur le côté droit de l'Éditeur de matériaux. La Palette contient une liste catégorisée et filtrable des fonctions de matériau disponibles. Cette liste est alimentée par toutes les fonctions chargées, mais aussi par toutes les fonctions de matériau défectueuses trouvées dans la Base de données du navigateur de contenu.

Vous pouvez passer la souris sur ces entrées pour afficher leur description sous forme d'infobulle, ou les faire glisser et les déposer dans votre matériau.
Pour qu'une fonction de matériau apparaisse dans la bibliothèque des fonctions de matériau, sa propriété Exposer dans la bibliothèque doit être cochée. Dans l'éditeur de fonction de matériau, désélectionnez tous les nœuds en cliquant sur un espace vide dans le graphique pour afficher les propriétés de base de la fonction de matériau. L'option Exposer dans la bibliothèque se trouve dans le panneau Détails.
Pour une liste complète des fonctions existantes dans la bibliothèque de fonctions de matériau par défaut, veuillez consulter la [Référence des fonctions de matériau] (designing-visuals-rendering-and-graphics/materials/material-functions/reference).
Nœuds liés à la fonction
Vous trouverez ci-dessous les nœuds d'expression de matériau qui se rapportent aux fonctions de matériau, ainsi que leur objectif :
- MaterialFunctionCall - Permet d'utiliser une fonction externe à partir d'un autre matériau ou d'une autre fonction. Les nœuds d'entrée et de sortie de la fonction externe deviennent des entrées et des sorties du nœud d'appel de la fonction.
- FunctionInput - Ne peut être placé que dans une fonction de matériau, où il définit l'une des broches d'entrée de la fonction.
- FunctionOutput - Ne peut être placé que dans une fonction de matériau, où il définit l'une des broches de sortie de la fonction.
- TextureObject - Utile pour fournir une texture par défaut pour une entrée de fonction de texture dans une fonction. Ce nœud n'échantillonne pas réellement la texture, il doit donc être utilisé en conjonction avec un nœud TextureSample.
- TextureObjectParameter - Définit un paramètre de texture et produit l'objet de texture, utilisé dans les matériaux qui appellent une fonction avec des entrées de texture. Ce nœud n'échantillonne pas réellement la texture, il doit donc être utilisé en conjonction avec un nœud TextureSample.
- StaticSwitch - Effectue un choix en temps de compilation entre deux entrées, en fonction de la valeur de l'entrée.
- StaticBool - Utile pour fournir une valeur bool par défaut pour une entrée de fonction bool statique dans une fonction. Ce nœud ne commute pas entre les éléments, il doit donc être utilisé en conjonction avec un nœud StaticSwitch.
- StaticBoolParameter - Définit un paramètre bool statique et produit la valeur bool statique, utilisé dans les matériaux qui appellent une fonction avec des entrées bool statiques. Ce nœud ne commute pas entre les éléments, il doit donc être utilisé en conjonction avec un nœud StaticSwitch.
Entrée et sortie
Les fonctions de matériau étant des réseaux de nœuds encapsulés, c'est à l'utilisateur de s'assurer que les données peuvent y entrer et en sortir. Ceci est géré par le biais des nœuds FunctionInput et FunctionOutput. Il est essentiel de comprendre ces nœuds pour pouvoir utiliser les fonctions de matériau.
Dans la fonction de matériau elle-même, les nœuds FunctionInput et FunctionOutput apparaissent comme suit :

Lorsque la fonction de matériau est utilisée dans un matériau, les nœuds FunctionInput et FunctionOutput apparaissent comme des broches d'entrée et de sortie sur le nœud de Fonction de materiau :

Noeuds FunctionInput
Comme indiqué, les nœuds FunctionInput servent de passerelle par laquelle les données entrent dans une Fonction de matériau. Une fonction donnée peut avoir un nombre quelconque de ces nœuds d'entrée, chacun correspondant à une broche d'entrée sur le nœud d'appel de Fonction de matériau.

Les nœuds FunctionInput ont les propriétés et les broches de données suivantes :
Article | Description | |
---|---|---|
Propriétés | ||
Nom d'entrée | Le nom de l'entrée, qui est visible comme une broche de sortie sur la fonction de matériau lorsqu'elle est utilisée dans un matériau. | |
Description | Une description de l'entrée, qui est visible sous forme d'infobulle lorsque vous passez la souris sur la broche d'entrée correspondante sur le nœud de la fonction de matériau. | |
Type d'entrée | Ceci définit le type de données que l'entrée accepte. Voir Types d'entrée ci-dessous. | |
Valeur d'aperçu | Ceci sert de moyen de test et de moyen d'aider à visualiser ce que la fonction fait pendant le processus de construction. Toute valeur saisie ici est utilisée comme si elle était passée par une entrée extérieure à la fonction. | |
Utiliser la valeur d'aperçu par défaut | Cette case à cocher permet aux données définies dans la valeur de l'aperçu d'agir comme valeur par défaut. Ceci est utile si vous ne voulez pas forcer l'utilisateur à fournir une entrée dans la fonction pour cette valeur. | |
Priorité de tri | Ce numéro est utilisé pour contrôler l'ordre dans lequel les broches d'entrée sont affichées sur le nœud de la fonction de matériau. Il s'agit d'un ordre croissant. | |
Broches d'entrée | ||
Aperçu | Les données passées dans cette entrée remplacent la propriété Valeur d'aperçu. Comme pour la propriété qui lui est associée, elle est utile pour tester la fonction pendant la construction et pour définir des valeurs par défaut. | |
Broches de sortie | ||
(Sans étiquette) | Ceci fournit la sortie pour les données entrantes qui seront traitées par la fonction. |
Nœuds FunctionOutput
Un nœud FunctionOutput fournit le moyen par lequel les données d'une fonction de matériau sortent de la fonction pour une utilisation ultérieure dans un matériau. En d'autres termes, il émet le résultat final de la fonction de matériau. Comme pour les nœuds FunctionInput, une fonction peut avoir un nombre quelconque de nœuds de sortie, conduisant à un nombre quelconque de broches de sortie potentielles.

Lorsqu'un nœud FunctionOutput est sélectionné, les propriétés suivantes sont accessibles dans le panneau Détails.
Article | Description | |
---|---|---|
Sortie de fonction d'expression de matériau | ||
Nom de sortie | Le nom de la sortie, qui est visible comme une broche de sortie sur la fonction de matériau lorsqu'elle est utilisée dans un matériau. | |
Description | Une description de la sortie, qui s'affiche sous forme d'infobulle lorsque vous passez la souris sur la broche de sortie correspondante sur le nœud de la fonction de matériau. | |
Expression de matériau | ||
Priorité de tri | Ce numéro est utilisé pour contrôler l'ordre dans lequel les broches de sortie sont affichées sur le nœud de la fonction de matériau. Il s'agit d'un ordre croissant. | |
Description | Ce champ de description définit le texte de la bulle de commentaire du nœud. Ceci n'est visible que dans l'éditeur de la fonction de matériau. | |
Broches de sortie | ||
(Sans étiquette) | Ceci fournit la sortie pour les données entrantes qui seront traitées par la fonction. |
Types d'entrée
Les entrées ont un type spécifique qui est requis pour toutes les expressions qui leur sont connectées. Pour définir le type d'entrée, sélectionnez un nœud FonctionInput dans l'éditeur de fonction de matériau, et utilisez le menu déroulant Type d'entrée pour sélectionner une option.

Lorsqu'il est appelé dans un matériau, le type d'entrée est affiché sous forme d'abréviation à côté des connecteurs d'entrée. Dans ce cas, les deux entrées étaient des Vector3, donc V3 est affiché. Tout ce qui est connecté à une entrée lorsqu'il est utilisé dans un matériau doit être convertible en un type d'entrée correct, sinon vous recevrez une erreur.

Vous trouverez ci-dessous les types d'entrée disponibles et leurs abréviations associées :
Type d'entrée | Abréviation |
---|---|
Scalar | S |
Vector2 | V2 |
Vector3 | V3 |
Vector4 | V4 |
Texture2D | T2D |
TextureCube | TCube |
Texture2DArray | T2dArr |
VolumeTexture | TVol |
StaticBool | B |
MaterialAttributes | MA |
TexteExterne | TExt |
Propriétés communes
Lors de l'édition d'une fonction de matériau, si vous désélectionnez tous les nœuds ou si vous cliquez dans l'arrière-plan du graphique de matériau, les propriétés de base de la fonction seront visibles dans le panneau Détails.
Article | Description |
---|---|
Propriétés | |
Description | Cette description s'affiche sous forme d'infobulle lorsque les utilisateurs passent la souris sur la Fonction de matériau dans la palette ou sur le corps du nœud d'appel de fonction dans l'Éditeur de matériaux. |
Exposer dans la bibliothèque | Si cette case est cochée, la fonction de matériau apparaîtra dans la liste des fonctions de matériau de la palette de l'Éditeur de matériaux afin que vous puissiez l'insérer dans les matériaux. Vous devrez peut-être redémarrer l'éditeur pour qu'une nouvelle fonction apparaisse. |
Catégories de la bibliothèque | Cette matrice contient toutes les catégories de l'onglet Fonctions de matériau sous lesquelles cette fonction apparaîtra. |
Aperçu
Lorsque vous modifiez une fonction de matériau, le hublot de prévisualisation affiche le nœud en cours de prévisualisation. Vous pouvez cliquer avec le bouton droit de la souris sur n'importe quel nœud et choisir Lancer l'aperçu du nœud pour prévisualiser les résultats du réseau de matériaux jusqu'à ce point.

La plupart du temps, vous voudrez avoir un aperçu de la sortie de la fonction, ou du résultat final de la fonction de matériau. Le nœud de sortie de la Fonction de matériau est prévisualisé par défaut.

Aperçu d'entrée de fonction
Les nœuds d'entrée de fonction disposent de certaines options pour spécifier les valeurs d'aperçu, car ils ne connaissent pas les valeurs réelles que les artistes utiliseront dans le matériau. Chaque entrée possède une Valeur d'aperçu intégrée que vous pouvez utiliser pour afficher une constante pour les types d'entrée float. Les entrées de fonction ont également un connecteur 'Aperçu' qui vous permet de remplacer la valeur intégrée par toute valeur correspondant au type d'entrée. Dans cet exemple, les échantillons de texture sont utilisés pour fournir une valeur d'aperçu pour les deux entrées Vector3.

Notez que l'entrée a une option dans le panneau de détails pour Utiliser la valeur de l'aperçu comme valeur par défaut. Lorsque cette option est activée, la valeur de l'aperçu est utilisée chaque fois que la fonction est appelée dans un matériau et que rien n'est connecté à cette entrée. La valeur de l'aperçu agit comme une solution de repli, et empêche les erreurs de compilation lorsque rien n'est connecté à l'entrée. Cela fait de l'entrée une entrée facultative, elle est donc dessinée en gris.
Paramètres
Vous pouvez utiliser les Paramètres dans une fonction de matériau comme vous le feriez pour un matériau ordinaire. Ces paramètres sont transmis directement à tout matériau à utiliser. Il existe quelques légères différences dans la procédure d'utilisation des paramètres de texture.
Paramètres de texture
Pour utiliser un paramètre de texture dans une fonction de matériau, créez un nœud FunctionInput* et modifiez le type de données en Texture2D. Connectez-le à la broche de remplacement de l'objet de texture dans un nœud Échantillon de texture**.

Lorsque vous utilisez cette fonction de matériau dans un matériau, placez un nœud TextureObjectParameter et connectez-le à la broche d'entrée Texture2D de la fonction de matériau.

Paramètre booléen statique
De même, pour les paramètres de commutateur statique, créez une FunctionInput et changez le type d'entrée en StaticBool. Connectez-le à un nœud StaticSwitch :

Dans le matériau qui utilise la fonction, placez un nœud StaticBoolParameter et connectez-le à l'entrée qui accepte un Bool statique (Activer le quadrillage dans cet exemple).

Organisation
Par conception, les fonctions de matériau sont souvent utilisées par de nombreux artistes et coéquipiers qui n'ont pas participé à la création de la fonction elle-même. Il est donc important de fournir une bonne documentation sur ce que font les fonctions, et sur les valeurs nécessaires pour leurs entrées et sorties. C'est pourquoi les fonctions comportent plusieurs champs de documentation en plus du nom de la fonction et des noms des entrées/sorties :
Desctiption de fonction
Les fonctions de matériau ont un champ Description où vous pouvez documenter ce que fait la fonction. Pour ajouter une description, cliquez sur une zone vide dans le graphique de matériau lors de l'édition d'une fonction de matériau. Les propriétés de la fonction s'affichent alors dans le panneau Détails, où vous pouvez saisir une description dans le champ.

Le texte de description s'affiche sous forme d'infobulle lorsque vous passez la souris sur le nœud Appel de fonction de matériau dans un graphique de matériau.

Descriptions des entrées et des sorties
Vous pouvez ajouter un nom et une description pour les broches d'entrée et de sortie de votre fonction de matériau. Pendant l'édition d'une fonction de matériau, sélectionnez un nœud d'entrée ou de sortie dans le graphique des matériaux. Dans le panneau de détails, remplissez les champs Nom de l'entrée et Description.

Lorsque cette fonction est utilisée dans un matériau, chaque broche d'entrée affiche le nom que vous avez saisi et la description s'affiche sous forme d'infobulle lorsque vous passez la souris sur l'entrée.

Lorsque vous modifiez une fonction de matériau, tous les outils permettant d'organiser et de documenter votre graphique de matériaux sont à votre disposition. Lisez ici ce qu'il faut savoir sur [l'organisation d'un graphique de matériau] (designing-visuals-rendering-and-graphics/materials/material-editor-user-guide/organizing-materials).
Propagation
Lorsque vous modifiez une fonction de matériau et que vous cliquez sur le bouton Enregistrer pour recompiler et appliquer les modifications, la nouvelle version se propage à tous les matériaux ou fonctions chargés qui font référence à cette fonction de matériau. Tous les matériaux déchargés qui font référence à la fonction seront mis à jour avec les changements lors de leur prochain chargement.
Lorsqu'une entrée ou une sortie est supprimée d'une fonction et que les modifications sont propagées, tous les liens vers ces connecteurs supprimés dans les matériaux qui utilisent la fonction seront rompus ! Il est important d'en tenir compte avant de recompiler une fonction de matériau, car la propagation ne peut être annulée. Plus une fonction est utilisée dans un grand nombre de matériaux, plus le risque de rupture est important, alors soyez prudent.
Tous les matériaux chargés qui utilisent la fonction seront marqués comme pollués lorsque le changement de fonction sera propagé, ce qui peut être utilisé pour voir quels paquets pourraient être sauvegardés à nouveau pour éviter des temps de chargement accrus. Vous pouvez trouver tous les matériaux chargés qui utilisent une fonction en cliquant avec le bouton droit de la souris dans le Navigateur de contenu et en choisissant Rechercher les matériaux utilisant cette fonction.

Imbrication de fonctions
Vous pouvez imbriquer des fonctions de matériau dans d'autres fonctions et les enchaîner de manière arbitraire. La seule réserve est que les fonctions de matériau ne peuvent pas être imbriquées de manière à créer une dépendance circulaire.
Erreurs de compilation
Si une fonction de matériau contient des erreurs, une boîte de dialogue d'erreur de compilation est générée lorsque vous tentez de compiler le matériau. Un message d'erreur rouge apparaît également au-dessus de la fonction de matériau qui n'a pas été compilée correctement. Vous pouvez passer la souris sur le message d'erreur pour afficher une infobulle qui décrit l'erreur de compilation. Dans cet exemple, la fonction de matériau ne reçoit pas de données dans l'une de ses entrées, ce qui entraîne l'échec de la compilation.

Vous pouvez éviter ces erreurs en fournissant des valeurs d'aperçu pour vos entrées, puis en activant la propriété Utiliser la valeur d'aperçu comme valeur par défaut de chaque entrée. Toutefois, cette pratique peut s'avérer être une arme à double tranchant, car il n'y aura pas d'alerte très évidente (comme un message d'erreur) pour vous rappeler que vous avez laissé une entrée débranchée.

Fonctions de matériau par défaut
L'Unreal Engine comprend plusieurs dizaines de fonctions de matériau par défaut. Elles sont accessibles à partir de la Palette de l'éditeur de matériaux, ou du menu de recherche en cliquant avec le bouton droit de la souris.
Si vous souhaitez modifier l'une des fonctions de matériau par défaut, vous pouvez trouver les ressources dans le Navigateur de contenu dans le dossier Moteur > Contenu > Fonctions.
Si des modifications sont apportées et sauvegardées dans une fonction de matériau par défaut, ces modifications existeront dans toutes les instances de la fonction. Pour cette raison, il est fortement recommandé de faire une copie des fonctions par défaut lorsque vous souhaitez apporter des modifications.
Pour plus d'informations sur les fonctions de matériau par défaut incluses dans l'Unreal Engine, veuillez consulter la [Référence des fonctions de matériau] (designing-visuals-rendering-and-graphics/materials/material-functions/reference).