Les fonctions d'éclairage sont des matériaux qui peuvent être appliqués aux lumières pour en masquer certaines zones et estomper leur intensité. Cette approche axée sur les matériaux permet de créer des effets animés qui fonctionnent avec des lumières appliquées à des maillages opaques. Elles prennent également en charge l'ombrage avec le brouillard volumétrique. Les fonctions d'éclairage sont donc particulièrement utiles pour créer des variations d'éclairage, telles que des effets caustiques dans l'eau, des nuages et des pochoirs projetés.
Fonction de lumière issue du projet Exemples de contenu illustrant une animation pilotée par un matériau à l'aide d'une fonction de lumière avec brouillard volumétrique.
Les fonctions de lumière ne peuvent être appliquées que sur les lumières dont la mobilité est définie sur Mobile ou sur Fixe. Elles ne peuvent pas être précalculées dans des textures de lumière. Les fonctions de lumière suivent les mêmes passes de rendu coûteuses que les lumières qui projettent des ombres dynamiques, car leur contribution doit d'abord être cumulée dans l'espace écran. La deuxième passe de la fonction de lumière évalue ensuite l'éclairage dans l'espace écran. Cette opération séquentielle est effectuée sur le GPU et prend plus de temps en raison des synchronisations des ressources et des vidages du cache.
Vous trouverez ci-dessous des exemples de fonctions de lumière utilisées avec différents types de lumière.
Éclairage directionnel avec fonction de lumière des ombres des nuages | Projecteur avec fonction de lumière caustique | Projecteur et point lumineux avec fonction de lumière colorée et brouillard volumétrique |
Créer une fonction de lumière
Vous pouvez créer une fonction de lumière dans un matériau en réglant le paramètre Domaine de matériau sur Fonction de lumière. Tous les nœuds alimentent l'entrée Couleur émissive du nœud de matériau principal.
Appliquer une fonction de lumière à une lumière
Pour utiliser un matériau de fonction de lumière avec une lumière, assignez-le à un créneau Matériau de fonction de lumière depuis le panneau Détails de la lumière.
Une fois qu'une fonction de lumière a été assignée à une lumière, il n'est pas nécessaire d'activer la fonction Ombres projetées pour afficher le matériau de la fonction de lumière.
Les fonctions de lumière incluent les propriétés suivantes sur les lumières :
| Propriété | Description |
|---|---|
Matériau de fonction de lumière | Le créneau permettant d'appliquer un matériau de fonction de lumière à cette lumière. Les fonctions de lumière ne peuvent être appliquées qu'aux lumières sans texture de lumière. |
Échelle de fonction de lumière | Changer l'échelle de la fonction de lumière projetée. Les axes X et Y appliquent un changement d'échelle aux directions perpendiculaires à celle de la lumière. L'axe Z applique le changement d'échelle dans la direction de la lumière. |
Distance de fondu | Définir une distance à laquelle la fonction de lumière doit être complètement atténuée jusqu'à la valeur de Luminosité désactivée. Ce paramètre est utile pour masquer le crénelage des fonctions de lumière appliquées au loin. |
Luminosité désactivée | Facteur de luminosité appliqué à la lumière lorsque la fonction de lumière est spécifiée, mais désactivée, comme dans les captures de scène qui utilisent une vue dont les ombres sont désactivées. Cette valeur doit être définie sur la luminosité moyenne de l'entrée émissive du matériau de la fonction de lumière, qui doit être comprise entre 0 et 1. |
Atlas de fonctions de lumière
Les fonctions de lumière utilisent les mêmes passes de rendu coûteuses que les lumières qui projettent des ombres dynamiques. La contribution de la fonction de lumière doit d'abord être cumulée dans l'espace écran avant une seconde passe qui évalue l'éclairage dans l'espace écran. Cette opération séquentielle qui est effectuée sur le GPU prend plus de temps en raison de la synchronisation des ressources et des vidages de cache.
Pour atténuer le coût élevé de cette opération sur le GPU, l'atlas des fonctions de lumière est un processus génératif utilisé pour précalculer les fonctions de lumière animées sous forme de carrés (ou de textures 2D) qui composent l'atlas. Ces textures 2D sont stockées, puis projetées sur la scène. Pour mieux comprendre cette opération, vous pouvez utiliser la visualisation de l'atlas des fonctions de lumière pour voir comment chaque fonction de lumière de la scène est stockée dans l'atlas sous forme de carré.
L'exemple de scène ci-dessous contient quatre fonctions de lumière qui ont été précalculées en carrés de texture 2D et stockées dans l'atlas.
Le processus de précalcul des fonctions de lumière dans la texture 2D de l'Atlas est un processus parallèle exécuté sur le processeur graphique, dont le résultat est partagé entre toutes les vues d'une scène. Ensuite, lors de la passe d'éclairage, toutes les lumières utilisant un matériau de fonction de lumière sans projection d'ombres peuvent être accumulées en parallèle sur l'écran. Cela peut réduire considérablement le temps de calcul du processeur graphique. Par exemple, le modèle d'environnement Talisman dans l'Unreal Engine Fortnite Editor (UEFN) a permis de réduire le temps de calcul du processeur graphique de plus que 2 millisecondes (ms).
Contrairement aux anciennes fonctions de lumière, l'atlas des fonctions de lumière prend en charge les matériaux de fonction de lumière en niveaux de gris ou colorés.
Restrictions de l'atlas de fonctions de lumière
Les matériaux de fonction de lumière sont assortis de certaines restrictions pour être valides et précalculés dans un atlas de fonctions de lumière. Tenez compte des éléments suivants lors de l'activation de l'atlas des fonctions de lumière dans votre projet :
Il est impossible d'échantillonner le tampon de profondeur ou la position dans le monde.
Il est impossible d'échantillonner le tampon graphique.
Les UV ne doivent pas être manipulés lors de l'échantillonnage d'une texture. Toutefois, si une telle modification est nécessaire, elle doit être alignée sur les arêtes de l'espace de texture de la fonction de lumière. Le créneau de l'atlas n'est pas reproductible dans le cas contraire.
Ce problème est visible sur les éclairages directionnels et les lumières rectangulaires, ainsi que sur toutes les lumières qui utilisent le contrôle d'échelle depuis leur panneau Détails.
L'échantillonnage de l'atlas est actuellement désactivé pour les éclairages directionnels.
Lorsque ces restrictions sont respectées, une fonction de lumière peut être précalculée dans l'atlas de fonctions de lumière afin d'accélérer les passes d'évaluation de l'éclairage. Les fonctions de lumière sont automatiquement détectées, incluses et exclues de l'atlas de fonctions de lumière.
Visualisation de l'atlas de fonctions de lumière
Vous pouvez visualiser les fonctions de lumière incluses ou exclues de l'atlas de fonctions de lumière à l'aide de la commande ShowFrag.VisualizeLightFunctionAtlas 1.
Les informations suivantes sont affichées dans cette visualisation :
L'atlas de fonctions de lumière montre toutes les fonctions de lumière qui le composent.
Informations sur les fonctions de lumière dans la scène :
Le nombre de fonctions de lumière dans l'atlas.
Le nombre d'atlas d'échantillonnage de lumières locales.
Une échelle colorimétrique liant le nombre de lumières affectant une fonction de lumière dans l'atlas.
Une liste des fonctions de lumière qui ne sont pas compatibles avec l'atlas de fonctions de lumière.
Paramètres de projet de l'atlas de fonctions de lumière
Les propriétés suivantes se trouvent dans la fenêtre Paramètres du projet, sous Moteur > Rendu, dans la catégorie Atlas de fonctions de lumière :
| Propriété | Description | État par défaut |
|---|---|---|
Atlas de fonctions de lumière | Sélectionner le format de la texture de l'atlas de fonctions de lumière. | Niveaux de gris 8 bits |
Le brouillard volumétrique utilise l'atlas de fonctions de lumière | Activer la prise en charge de la fonction de lumière sur le brouillard volumétrique lorsque l'atlas de fonctions de lumière est activé. | Enabled (Activée) |
L'éclairage différé utilise l'atlas de fonctions de lumière | Activer la prise en charge de la fonction de lumière sur l'éclairage différé (multipasse et en cluster) lorsque l'atlas de fonctions de lumière est activé. | Enabled (Activée) |
Les matériaux d'eau à couche unique utilisent l'atlas de fonctions de lumière | Activer la prise en charge de la fonction de lumière sur les matériaux d'eau à couche unique lorsque l'atlas de fonctions de lumière est activé. | Disabled (Désactivée) |
Les matériaux translucides utilisent l'atlas de fonctions de lumière | Activer la prise en charge de la fonction de lumière sur les matériaux translucides à l'aide du mode de forward shading lorsque l'atlas de fonctions de lumière est activé. | Disabled (Désactivée) |
Définir le format de l'atlas de fonctions de lumière
Par défaut, l'atlas de fonctions de lumière utilise des niveaux de gris pour les fonctions de lumière, mais vous pouvez modifier cette option dans les paramètres du projet en définissant le paramètre Format de l'atlas de fonctions de lumière sur Couleur RVB 8 bits pour qu'elles utilisent la couleur. Les fonctions de lumière en couleur sont compatibles avec le brouillard volumétrique, l'illumination globale Lumen, les reflets, ainsi qu'avec les matériaux définis comme translucides ou comme eau en couche unique.
Format de l'atlas de fonctions de lumière : niveaux de gris 8 bits (par défaut) | Format de l'atlas de fonctions de lumière : couleur RVB 8 bits |
Les fonctions de lumière en couleur nécessitent l'activation du paramètre de projet L'éclairage différé utilise l'atlas de fonctions de lumière. Ce paramètre est activé par défaut lors de l'utilisation de l'atlas de fonctions de lumière.
Atlas de fonctions de lumière sur les matériaux translucides et les matériaux d'eau à couche unique
Par défaut, l'atlas de fonctions de lumière est utilisé pour l'éclairage différé, le brouillard volumétrique, et l'illumination globale et les reflets Lumen. Vous pouvez améliorer le réalisme de votre projet en autorisant les fonctions de lumière à échantillonner des matériaux translucides et des matériaux d'eau à couche unique.
Vous pouvez activer la prise en charge des matériaux translucides et des matériaux d'eau à couche unique dans les paramètres du projet, sous Moteur > Rendu, dans la catégorie fonctions de lumière avec les options Les matériaux translucides utilisent l'atlas de fonctions de lumière et Les matériaux d'eau à couche unique utilisent l'atlas de fonctions de lumière.
Les matériaux translucides utilisent l'atlas de fonctions de lumière : désactivé | Les matériaux translucides utilisent l'atlas de fonctions de lumière : activé |
Lorsque l'option Les matériaux translucides utilisent l'atlas de fonctions de lumière est activée, les matériaux translucides dont le mode d'éclairage est défini sur ForwardShading de surface peuvent recevoir une fonction de lumière sur leur surface. Bien que la lumière se projette sur la surface d'un matériau translucide, la fonction de lumière n'est visible (en niveaux de gris ou en couleur) sur cette surface que si le matériau est configuré en conséquence.
Matériau translucide dont le mode d'éclairage est défini sur “TranslucencyVolume de surface”. | Matériau translucide dont le mode d'éclairage est défini sur "ForwardShading de surface". |
Lorsque l'option Les matériaux d'eau à couche unique utilisent l'atlas de fonctions de lumière est activée, un plan d'eau utilisant un matériau d'eau à couche unique reçoit des fonctions de lumière projetées par une source de lumière. Les coefficients d'absorption et de transluminescence du matériau d'eau à couche unique affectent l'apparence de la fonction de lumière sous la surface de l'eau. Ces propriétés affectent la manière dont la lumière se propage dans le milieu, la diffusion par défaut de la lumière bleue ayant pour effet d'atténuer les couleurs du spectre rouge.
Les matériaux d'eau à couche unique utilisent l'atlas de fonctions de lumière : désactivé | Les matériaux d'eau à couche unique utilisent l'atlas de fonctions de lumière : activé |
Si vous utilisez le matériau d'eau à couche unique par défaut avec un plan d'eau, vous pouvez régler la rugosité pour rendre la fonction de lumière plus ou moins visible.
Notes supplémentaires sur l'atlas de fonctions de lumière
Vous trouverez ci-après des notes supplémentaires ainsi que des variables de console que vous pouvez utiliser lors de l'utilisation de l'atlas de fonctions de lumière :
Les fonctions de lumière présentes dans l'atlas de textures s'incrustent en mosaïque et s'estompent correctement en fonction des paramètres définis sur le composant de lumière.
Un matériau de fonction de lumière instancié utilise son propre créneau, indépendamment du matériau dont il est une instance.
Pour les fonctions de lumière en couleur, lorsque le format est défini sur Niveaux de gris 8 bits, un format de texture R8 est utilisé. Sinon, le format de texture R8G8B8 est utilisé.
Variables de console utiles :
r.LightFunctionAtlas: utiliser cette variable de console pour activer/désactiver l'atlas de fonctions de lumière et utiliser les anciennes fonctions de lumière.r.LightFunctionAtlas.SlotResolution: définir la résolution à laquelle un matériau de fonction de lumière est précalculé. La résolution est visible dans la visualisation de l'atlas de fonctions de lumière.r.LightFunctionAtlas.Size: définir de taille de l'atlas de fonctions de lumière. Une valeur de 4 (4x4) signifie qu'il y aura suffisamment de place pour 16 matériaux de fonction de lumière précalculés dans l'atlas. La taille de l'atlas est visible dans la visualisation de l'atlas de fonctions de lumière.