Géométrie virtualisée Nanite

Aperçu du système de géométrie virtualisée d'Unreal Engine 5 permettant d'obtenir des détails à l'échelle du pixel et un nombre élevé d'objets.

Cette fonctionnalité apparaît à la fois dans l'Unreal Engine et dans l'Unreal Editor pour Fortnite (UEFN).

Comme cette page a d'abord été écrite pour l'Unreal Engine, certaines descriptions et images peuvent ne pas correspondre à ce que vous voyez dans l'UEFN.

Cliquez aquí pour retourner sur le site de la documentation de l'UEFN.

Nanite est le système de géométrie virtualisée d'Unreal Engine 5 qui utilise un nouveau format de maillage interne et une nouvelle technologie de rendu pour restituer des détails à l'échelle du pixel et un nombre élevé d'objets. Il ne travaille intelligemment que sur les détails qui peuvent être perçus et pas plus. Le format de données de Nanite est également hautement compressé et prend en charge le streaming à grain fin avec un niveau de détail automatique.

Exemples de scènes avec Nanite

Avantages de Nanite

  • Augmentation de plusieurs ordres de grandeur de la complexité géométrique, nombre de triangles et d'objets plus élevé que ce qui était possible auparavant en temps réel

  • Les budgets de trame ne sont plus limités par le nombre élevé de polygones, les appels à générer et l'utilisation de la mémoire du maillage

  • Il est désormais possible d'importer directement des images sources de qualité cinématographique, telles que des sculptures ZBrush et des scans de photogrammétrie

  • Utilisez des détails en haute densité plutôt que de les intégrer dans les textures normales

  • Le niveau de détail (LOD) est géré automatiquement et ne nécessite plus de configuration manuelle pour les LOD des maillages individuels

  • La perte de qualité est rare ou inexistante, surtout avec les transitions LOD.

Bien que les avantages puissent changer la donne, des limites pratiques subsistent. Par exemple, le nombre d'instances, les triangles par maillage, la complexité des matériaux, la résolution de sortie et les performances doivent être soigneusement mesurés pour toute combinaison de contenu et de matériau. Nanite continuera à étendre ses capacités et à améliorer ses performances dans les futures versions d'Unreal Engine.

Différences entre un maillage Nanite et un maillage statique

Un maillage Nanite est un maillage statique sur lequel Nanite est activé. Un maillage Nanite est toujours essentiellement un maillage triangulaire à la base, avec un niveau de détail et de compression élevé appliqué à ses données. En outre, Nanite utilise un système entièrement nouveau pour restituer ce format de données de manière extrêmement efficace.

Tout ce qui est nécessaire pour qu'un maillage statique puisse profiter de Nanite est un drapeau pour l'activer. La création de contenu pour Nanite n'est pas différente de celle des maillages traditionnels, à l'exception du fait que Nanite peut gérer des ordres de grandeur plus importants de triangles et d'instances que ce qui est possible pour la géométrie rendue de manière traditionnelle. Déplacez la caméra assez près et Nanite dessinera les triangles sources originaux qui ont été importés.

Les maillages Nanite prennent en charge plusieurs UV et couleurs de vertex. Les matériaux sont affectés à des sections du maillage de sorte que ces matériaux puissent utiliser différents modèles d'ombrage et des effets dynamiques qui peuvent être réalisés dans les nuanceurs. L'affectation des matériaux peut être changée dynamiquement, comme pour tout autre maillage statique, et Nanite ne nécessite aucun processus de prégénération des matériaux.

Textures virtuelles ne sont pas obligatoires pour être utilisées avec Nanite, mais ils sont fortement recommandées. Les textures virtuelles sont une fonctionnalité orthogonale d'Unreal Engine qui vise les mêmes objectifs pour les données de texture que Nanite pour les données de maillage.

Le travail avec Nanite devrait être familier aux flux de travail pour les maillages statiques, mais il y a beaucoup de choses qui ne sont pas encore prises en charge. Voir la section Fonctions prises en charge de cette page pour en savoir plus.

Fonctionnement de Nanite

Nanite s'intègre de manière aussi transparente que possible dans les flux de travail des moteurs existants, tout en utilisant une nouvelle approche pour le stockage et le rendu des données maillées.

  • Au cours de l'importation — Les maillages sont analysés et décomposés en clusters hiérarchiques de groupes de triangles.

  • Au cours du rendu — Les clusters sont échangés à la volée à différents niveaux de détail en fonction de la vue de la caméra, et se connectent parfaitement sans fissures aux clusters voisins au sein du même objet. Les données sont transmises à la demande, de sorte que seuls les détails visibles doivent être conservés en mémoire. Nanite fonctionne dans sa propre passe de rendu qui contourne complètement les appels de dessin traditionnels. Les modes de visualisation peuvent être utilisés pour inspecter le pipeline Nanite.

Étant donné que Nanite repose sur la capacité de diffuser rapidement des données de maillage sur disque à la demande. Les disques durs solides (ou SSD) sont recommandés pour le stockage en cours d'exécution.

Pour quels types de maillage faut-il utiliser Nanite ?

Nanite doit généralement être activé dans la mesure du possible. Tout maillage statique pour lequel cette option est activée s'affiche généralement plus rapidement et occupe moins de mémoire et d'espace disque.

Plus précisément, un maillage est un particulièrement bon candidat pour Nanite si il :

  • Contient de nombreux triangles, ou des triangles qui seront très petits à l'écran.

  • A de nombreuses instances dans la scène

  • Agit comme un occluseur majeur de l'autre géométrie Nanite.

  • Projette des ombres en utilisant les Cartes d'ombres virtuels

Un exemple d'exception à ces règles est une sphère de ciel : ses triangles seront grands à l'écran, elle n'occulte rien et il n'y en a qu'une seule dans la scène. En règle générale, ces exceptions sont rares et la perte de performance liée à l'utilisation de Nanite est assez minime. Il est donc recommandé de ne pas trop s'inquiéter des endroits où Nanite ne devrait pas être activé si Nanite prend en charge le cas d'utilisation.

Certains cas d'utilisation ne sont pas pris en charge par Nanite actuellement. Voir la section Fonctions prises en charge de cette page pour en savoir plus.

Activation de la prise en charge de Nanite sur des maillages

Nanite peut être activé sur les géométries prises en charge de la manière suivante :

La conversion de la géométrie en Nanite nécessite un certain temps de traitement pour chaque maillage. Sur les grands projets, l'utilisation d'un cache de données dérivées (DDC) partagé est particulièrement utile s'il y a beaucoup de ressources Nanite. Veuillez vous reporter à la documentation DDC partagée pour en savoir plus.

Importation d'un maillage statique

Lorsque vous importez un maillage destiné à être utilisé avec Nanite, cochez la case Construire Nanite.

Options d'importation de Nanite FBX

Il est recommandé de désactiver la propriété Générer des UV de lightmap lorsqu'on n'utilise pas l'éclairage précalculé avec la fonction Lightmass.

Lorsque cette propriété est activée, une géométrie très détaillée ajoute un temps significatif à l'importation et à la construction des données de maillage statique. La propriété ajoute également un canal UV supplémentaire, qui comprend une quantité importante de données pour les maillages très denses. Si votre projet ne nécessite pas d'éclairage prégénéré, il n'est pas nécessaire d'engager ces frais.

Activation de Nanite sur des ressources

Si votre projet contient déjà du contenu sur lequel vous souhaitez activer Nanite, vous avez deux options : activer les ressources par lots à l'aide du Navigateur de contenu ou activer les ressources individuelles via leurs propres éditeurs.

Activer Nanite sur le maillage par lots

Pour les lots de ressources de maillage statique pour lesquels vous souhaitez activer Nanite, utilisez le Navigateur de contenu pour tous les sélectionner. Faites un clic droit et choisissez Nanite > Activer dans le menu contextuel.

Activer Nanite sur les lots de ressource dans le Navigateur de contenu

Activer Nanite sur des maillages individuels

Ouvrez l'éditeur de tout maillage prenant en charge Nanite, comme les maillages statiques et les Collections de géométrie (Maillages de fracture reposant sur la physique du chaos) et activez Nanite via le panneau Détails.

Dans l'Éditeur de maillage statique, localisez les Paramètres Nanite et cochez la case Activer la prise en charge Nanite.

Activer Nanite dans l'Éditeur de maillage statique

Dans l'Éditeur de collections de géométrie, localisez la section Nanite et cochez la case Activer Nanite.

Activer Nanite sur les caches de géométrie

Fonctions de Nanite prises en charge

Cette section décrit la meilleure façon de travailler avec Nanite dans un projet Unreal Engine, avec des détails sur ce qui est et n'est pas pris en charge et les limitations possibles.

Géométrie

Nanite peut être activé sur les maillages statiques et les Collections de géométrie.

Un maillage activé par Nanite peut être utilisé avec les types de composants suivants :

  • Maillage statique

  • Maillage statique instancié

  • Maillage statique instancié hiérarchique

  • Collection de géométrie

  • Peinture de feuillage

  • Herbe du paysage

Nanite offre une prise en charge limitée pour la déformation des maillages rigides. Nanite prend en charge la translation dynamique, la rotation et la mise à l'échelle non uniforme de ces maillages, qu'ils soient dynamiques ou statiques. Cela signifie qu'il faut déplacer n'importe quelle position d'un maillage Nanite d'une manière plus complexe que ce qui peut être exprimé par une seule multiplication matricielle 4x3, appliquée uniformément à tout le maillage.

La déformation est limitée avec :

  • (Beta) Décalage de la position mondiale dans les matériaux

    • Les cages de délimitation utilisées pour les clusters d'escamotage d'occlusion ne sont pas mises à jour ou étendues en fonction de la déformation. Cela signifie que chaque fois qu'une surface est déplacée vers l'extérieur, de telle sorte qu'elle recouvre l'endroit où elle se trouvait auparavant, il y a de fortes chances qu'elle s'occlue et ait l'air cassée.

    • Le feuillage utilisant le décalage de la position du monde WPO) est moins problématique car le feuillage est rempli de trous et ne peut pas vraiment s'occlure.

La déformation n'est pas prise en charge :

  • Animation squelettique

  • Cibles de transformation

  • Maillages Spline

Les maillages compatibles avec Nanite ne prennent pas en charge actuellement :

  • Profondeur personnalisée ou stencil

  • Peinture de vertex sur des instances

    • Il s'agit en particulier de couleurs peintes par instance à l'aide du mode Peinture de maillage de l'éditeur, mais Nanite prend en charge les couleurs de vertex sur le maillage d'origine.

Le nombre maximal d'instances pouvant être présentes dans la scène est verrouillé à 16 millions d'instances, ce qui inclut toutes les instances diffusées en continu, et pas seulement celles activées pour être utilisées avec Nanite. Seules les instances diffusées en continu sont comptabilisées dans le total.

Les tangentes par vertex ne sont pas stockées à partir du maillage statique lorsqu'il est activé pour Nanite. Au lieu de cela, l'espace tangent est implicitement dérivé dans le nuanceur de pixel. Les données tangentes ne sont pas stockées afin de réduire la taille des données. Cette différence dans l'espace tangent en utilisant cette approche pourrait causer des discontinuités sur les bords. Toutefois, ce problème particulier ne s'est pas révélé être significatif, et il est prévu de prendre en charge les tangentes de sommet dans une prochaine version.

Matériaux

Nanite prend en charge les matériaux dont le mode de mélange est réglé sur Opaque et Masqué. Lorsqu'un type de matériau non pris en charge est détecté, un matériau par défaut est attribué au maillage activé par Nanite et un avertissement est placé dans le Journal de sortie avec des informations supplémentaires.

Notes sur les caractéristiques du matériel supplémentaire :

  • Les maillages activés par Nanite peuvent recevoir des décalcomanies projetées sur leurs surfaces, mais ils ne prennent pas en charge les Décalcomanies de maillage, qui nécessitent que les matériaux utilisent un mode de mélange Translucide.

  • La case à cocher Fils de fer n'est pas prise en charge.

  • Le nœud InterpolationVertex et UV personnalisés sont pris en charge mais seront évalués trois fois par pixel.

Rendu

Les fonctions de rendu suivantes ne sont pas prises en charge actuellement :

  • Filtrage des objets en fonction de la vue en utilisant :

    • Rayon minimal de l'écran

    • Escamotage de la distance

  • Rendu vers l'avant

  • Rendu stéréo pour la réalité virtuelle

  • Ecran fractionné

  • Anticrénelage multiéchantillonnage (MSAA)

  • Canaux d'éclairage

  • Ray-tracing sur les maillages Nanite

    • Le maillage de secours est utilisé pour les maillages activés par Nanite par défaut. Diminuez le paramètre Erreur relative de secours dans l'Éditeur de maillage statique pour utiliser davantage de triangles du maillage source.

    • (Expérimental) Le support initial pour le ray-tracing natif des maillages Nanite est activé avec la variable de console r.RayTracing.Nanite.Mode 1. Cela permet de préserver tous les détails tout en utilisant beaucoup moins de mémoire GPU que les maillages de secours à erreur zéro.

  • Certains modes de visualisation ne prennent pas encore en charge l'affichage des maillages Nanite.

    Soyez prudent avec certains modes de visualisation dans l'Éditeur de maillage statique lorsque vous visualisez une géométrie très détaillée. L'affichage des Normales et des UV peut causer des problèmes de performance de l'éditeur.

Plateformes prises en charge

Nanite est actuellement prise en charge sur la PlayStation 5, la Xbox Series S|X et les PC équipés de cartes graphiques répondant à ces spécifications, utilisant les derniers pilotes avec DirectX 12 et Shader Model 6 (SM6) :

  • NVIDIA : Cartes de génération Maxwell ou plus récentes

  • AMD : Cartes GCN ou plus récentes

  • Toutes les nouvelles versions de Windows 10 (plus récentes que la version 1909.1350) et de Windows 11 prenant en charge le kit SDK Agility DirectX 12 sont prises en charge.

    • Windows 10 version 1909 : le numéro de révision doit être supérieur ou égal à .1350.

    • Windows 10 version 2004 et 20H2 : le numéro de révision doit être supérieur ou égal à .789.

    • DirectX 12 (avec Shader Model 6.6 atomics), ou Vulkan (VK_KHR_shader_atomic_int64)

  • Derniers pilotes graphiques

La PlayStation 4 et la Xbox One prennent également en charge Nanite, mais la prise en charge sur ces plateformes est actuellement considéré comme expérimental. On s'attend à ce que les performances de Nanite sur ces plateformes avec un contenu de très haute fidélité ne répondent pas aux exigences d'un jeu expédiable.

Maillage de secours Nanite et Paramètres de précision

Les maillages statiques comprennent des propriétés supplémentaires qui contrôlent la précision de la représentation Nanite et du maillage de secours généré à partir du maillage complet.

Ces paramètres se trouvent dans le panneau Détails de l'éditeur de maillage statique, dans la section Paramètres Nanite.

Paramètres Nanite de l'Éditeur de maillage

Les paramètres de Nanite comprennent les propriétés suivantes :

Propriété

Description

Activer la prise en charge Nanite

Permet à ce maillage d'être utilisé avec Nanite et de générer un maillage de secours dans les situations où Nanite ne peut être utilisé.

Conserver la zone

Permet aux maillages Nanite qui perdraient de la surface en raison de la simplification de redistribuer cette surface perdue aux triangles restants en dilatant les bords ouverts des bords. C'est très utile pour le feuillage où les feuilles ont tendance à devenir des triangles et des quads disjoints par simplification. L'effet de ce paramètre est de mettre chaque feuille à l'échelle. Pour les rubans de géométrie, comme les brins d'herbe, il a pour effet de les épaissir. Ce paramètre doit être activé sur tous les maillages de feuillage et rien d'autre.

Précision de la position

Choisissez la précision que ce maillage doit utiliser lors de la génération du maillage Nanite. Auto détermine la précision appropriée en fonction de la taille du maillage. La précision peut être remplacée pour améliorer la précision ou optimiser l'encombrement du disque.

Résidence minimale

Définit la taille de l'octet de mémoire que ce maillage doit toujours garder en mémoire, et le reste est transmis en continu. Des valeurs plus élevées nécessitent plus de mémoire, mais pour certains maillages, cela peut atténuer les problèmes de pop-in du streaming.

Conserver le pourcentage du triangle

Le pourcentage de triangles à conserver du maillage source. Réduisez ce pourcentage pour optimiser la taille du disque.

Découper le réglage relatif

Définit la quantité maximale d'erreur relative qui est autorisée à être supprimée pour le maillage Nanite. Tous les détails du maillage source dont l'impact visuel est inférieur à cette valeur d'erreur relative sont supprimés. L'erreur relative n'a pas de taille unitaire et est relative à la taille de la maille. Par défaut, Nanite stocke tous les triangles du maillage source original.

Pourcentage de triangle de secours

Définit le pourcentage de triangles qui restent lors de la réduction du maillage source pour Nanite. Il s'agit de la représentation grossière (ou maillage de secours) utilisée lorsque les données Nanite détaillées ne peuvent pas être utilisées, par exemple sur les plateformes qui ne prennent pas en charge le rendu Nanite, ou lorsqu'il n'est pas pratique d'utiliser les données Nanite, comme dans le cas de collisions complexes.

Erreur relative au secours

Définit la quantité maximale d'erreur relative qui est autorisée à être supprimée pour le maillage de secours. Tous les détails du maillage de secours généré dont l'impact visuel est inférieur à cette valeur d'erreur relative sont supprimés. L'erreur relative n'a pas de taille unitaire et est relative à la taille du maillage.

Nom du fichier d'importation source

Le chemin du fichier utilisé pour importer un maillage Haute résolution à utiliser avec Nanite. La version haute résolution du maillage est utilisée à la place de LOD0 par les systèmes qui peuvent bénéficier d'une géométrie plus détaillée, comme Nanite et la modélisation de la géométrie dans Unreal Engine.

Précision du Vertex

Nanite quantifie les positions des sommets du maillage afin de maximiser la densité de la mémoire et de minimiser l'empreinte sur le disque. La taille de l'étape de quantification est une puissance de deux qui peut être sélectionnée pour répondre aux exigences des maillages individuels en utilisant la propriété Précision de la position. Par défaut, Auto choisit la précision appropriée en fonction de la taille du maillage et de sa densité de triangles. Vous pouvez passer outre manuellement en sélectionnant une taille de précision pour améliorer la précision ou optimiser l'encombrement du disque.

Paramètres Nanite l'Éditeur de maillage statique pour la précision de la position

La quantinisation est une forme de compression avec perte. La compression avec perte est particulièrement difficile lorsqu'on travaille avec des morceaux de maillages modulaires ou d'autres maillages qui ont des bords partagés. Surtout lorsque ces limites doivent être parfaitement alignées pour ne pas introduire de trous ou de fissures dans la géométrie.

Pour assurer la cohérence, la quantification se fait dans des coordonnées d'objet non normalisées centrées autour de l'origine du maillage. Cela permet de s'assurer que la quantification ne provoque jamais de fissures lorsque le maillage utilise le même paramètre de précision, et que la translation entre le centre du maillage est un multiple de cette précision.

Données de découpe

Il arrive que vous deviez réduire la quantité de données stockées par Nanite pour optimiser la taille du disque. Nanite comprend des paramètres qui vous permettent de réduire les données de détail d'un maillage Nanite stocké à tout moment pendant la production, ce qui signifie que vous pouvez en toute sécurité dépasser la qualité au départ et l'ajuster en conséquence par la suite.

Pour découper les données détaillées, vous voudrez utiliser les propriétés Conserver le pourcentage de triangle et Découper l'erreur relative. Vous pouvez les considérer comme une option de prédécimation avant d'être stocké comme un maillage Nanite. Dans le cas de Nanite, les détails n'ont pas besoin d'être uniformes sur toute le maillage. Elle supprime d'abord les données les moins significatives et s'apparente davantage à une compression avec perte.

Utilisez Conserver le pourcentage de triangle pour définir le pourcentage de triangles à conserver à partir du maillage source.

Utilisez Découper l'erreur relative pour définir la quantité maximale d'erreur relative autorisée lors de l'ajustement des données du maillage source. Tout triangle dont la suppression entraînerait une erreur relative inférieure à ce montant est supprimé. Ou encore, tous les détails dont l'impact visuel est inférieur à cette valeur sont rognés. L'erreur relative n'a pas de taille unitaire et est relative à la taille du maillage.

Les valeurs par défaut de ces deux propriétés sont telles que rien n'est rogné par défaut, et Nanite stocke tous les triangles du maillage source original.

Le découpage des données est important pour réduire la taille du disque (en d'autres termes, la taille du téléchargement), mais pas pour améliorer les performances. Voir la section Taille des données ci-dessous pour plus d'informations sur ce sujet.

Maillage de secours

De nombreuses parties d'Unreal Engine ont besoin d'accéder au tampon de vertex traditionnel fourni par les maillages rendus de manière traditionnelle. Lorsque Nanite est activé pour un maillage statique, il génère une représentation grossière (appelée Maillage de secours) du maillage hautement détaillé qui est accessible et utilisée là où les données Nanite ne peuvent pas l'être. Le maillage de secours est le maillage généré utilisé lorsque le rendu Nanite n'est pas pris en charge. Il est également utilisé dans des situations où il ne serait pas idéal d'utiliser le maillage complet, comme lorsque des collisions complexes sont nécessaires, l'utilisation de lightmaps pour l'éclairage prégénéré est nécessaire, et pour les réflexions par ray tracing du matériau avec Lumen.

La propriété Pourcentage de triangle de secours représente le pourcentage de triangles du maillage source original qui sont utilisés pour générer le maillage de secours. Vous pouvez spécifier le pourcentage de triangles à conserver entre 0 et 100 pour cent, les pourcentages élevés permettant de conserver davantage de détails du maillage d'origine.

Le paramètre Erreur relative de secours définit la quantité maximale d'erreur relative qui est autorisée lors de la suppression de détails du maillage source. Tous les triangles qui, s'ils étaient retirés, entraîneraient une erreur relative inférieure à cette valeur sont supprimés, les détails ayant un impact visuel moindre étant les premiers à être éliminés. L'erreur relative n'a pas de taille unitaire et est relative à la taille de la maille.

Par exemple, si vous voulez que votre maillage n'ait aucune décimation, vous utiliserez un pourcentage de triangle de secours de 100 et une erreur relative de secours de 0.

Dans la comparaison ci-dessous, on voit le maillage Nanite hautement détaillé créé à partir du maillage source original qui est comparé aux paramètres par défaut d'un maillage Nanite de secours généré.

Maillage poly Nanite élevé

Maillage de secours généré par Nanite | Paramètres par défaut

Utilisez l'Erreur relative de secours pour spécifier la quantité de détails d'origine conservés à partir du maillage source d'origine, et le pourcentage de secours pour définir la quantité de ces détails utilisée.

Dans la comparaison ci-dessous, le maillage de secours conserve 100 % du pourcentage de triangles de secours mais ajuste l'erreur relative de secours pour utiliser davantage de triangles du maillage source original. Lors de l'ajustement de ces valeurs, vous pouvez utiliser les détails Nanite pour les triangles Nanite dans le viewport comme un indicateur lors de la modification de leurs valeurs.

Maillage de secours généré par Nanite | Paramètres par défaut

Maillage de secours généré par Nanite | Paramètres ajustés pour la qualité

Visualisation du maillage de secours

Dans l'Éditeur de maillage statique, vous pouvez basculer entre le maillage Nanite entièrement détaillé et le maillage Nanite de secours en utilisant l'option *Nanite de secours** dans le menu déroulant **Afficher** des viewports. Vous pouvez également utiliser le raccourci clavier **Ctrl + N** pour basculer rapidement entre les deux options de visualisation.

Bascule du maillage de secours Nanite de l'Éditeur de maillage statique

Utilisation des LOD de maillage de secours personnalisé pour les maillages activés par Nanite

Le maillage de secours est utilisé pour les fonctionnalités du moteur, telles que les collisions complexes par poly, le ray tracing, l'éclairage prégénéré, etc. Il est également utilisé pour les plateformes qui ne prennent pas en charge Nanite. Lors de la génération du maillage de secours, un maillage activé par Nanite utilise toujours l'emplacement LOD0 du maillage source pour générer automatiquement le maillage statique. Cependant, il est parfois souhaitable d'utiliser un maillage de secours spécifié manuellement, ou une série de LOD traditionnels, plutôt qu'un maillage généré automatiquement.

Ce niveau de contrôle vous permettrait d'utiliser Nanite dans un projet mais aussi de contrôler directement la géométrie vue dans les reflets par ray-tracing, ou sur les plateformes qui ne prennent pas en charge Nanite.

Suivez les étapes ci-dessous pour spécifier votre propre maillage de secours personnalisé, ou pour utiliser une série de LOD :

  1. Définissez le Pourcentage du triangle de secours sur 0 afin que le maillage de secours soit aussi petit que possible, car il sera ignoré lors de l'utilisation de cette approche.

  2. Ajoutez un ou plusieurs LOD au maillage à l'aide de cette procédure configuration de LOD traditionnel.

  3. Utilisez la liste déroulante Importation LOD pour Importer LOD niveau 1 dans la section Paramètres LOD.

  4. Réglez le LOD minimum sur 1 dans la section Paramètres LOD. Cela permet d'ignorer le maillage de secours généré par Nanite.

La collision complexe constitue un cas particulier. Utilisez la propriété LOD pour les collisions sous Paramètres généraux pour spécifier quel LOD doit être utilisé pour la collision. N'importe quel LOD peut être utilisé pour la collision, y compris le LOD0.

Il se peut que cette approche particulière ne permette pas de rendre les projets Nanite automatiquement compatibles avec les plateformes ne prenant pas en charge Nanite, et elle doit être testée et évaluée pour votre projet.

Nanite gère efficacement un très grand nombre d'instances, mais si Nanite est désactivé, il pourrait y avoir un nombre excessif d'appels à générer pour le pipeline de rendu traditionnel. Vous pouvez tester cela dans votre projet pour la connaître faisabilité en utilisant le r.Nanite 0 pour activer ou désactiver la prise en charge de Nanite.

Voir la section Variables et commandes de la console sur cette page pour en savoir plus.

Utilisation de contenu activé par Nanite

Dans la plupart des cas, Nanite s'adapte très bien à la résolution de l'écran. Il s'appuie pour cela sur deux techniques : un niveau de détail très fin et l'élimination des occlusions. En général, cela signifie que, quelle que soit la complexité géométrique des données sources dans la scène, le nombre de triangles que Nanite tente de dessiner à l'écran est cohérent et proportionnel au nombre de pixels.

Nanite suit le principe de conception selon lequel il est inutile de dessiner beaucoup plus de triangles qu'il n'y a de pixels.

Cependant, il existe des cas de contenu qui ne respectent pas les techniques utilisées par Nanite pour la mise à l'échelle, mais cela ne signifie pas qu'il ne doit pas être utilisé du tout pour ce contenu, ou qu'il ne rendra pas plus rapidement que le pipeline de rendu traditionnel. Cela signifie seulement que pour ce type de contenu, la mise à l'échelle en pixels - et non la complexité de la scène - ne s'applique plus à eux. Utilisez les fonctions de Profilage fournies par Unreal Engine pour surveiller ces types de situations lorsqu'elles se produisent.

Géométrie des agrégats

La géométrie des agrégats est une géométrie qui comporte de nombreuses parties disjointes qui deviennent un volume à distance, comme les cheveux, les feuilles des arbres et l'herbe. Ce type de géométrie brise le niveau de détail et les techniques d'élimination des occlusions de Nanite.

Nanite est par nature une structure hiérarchique de niveau de détail qui repose sur la capacité à simplifier les petits triangles en triangles plus grands et à choisir le plus grossier lorsqu'elle détermine que la différence est plus petite que ce qui peut être perçu. Pour les surfaces continues, cela fonctionne bien, mais pas pour les géométries agrégées qui, de loin, ressemblent davantage à un nuage partiellement opaque qu'à une surface solide.

Ainsi, Nanite est plus susceptible de déterminer qu'il ne peut pas réduire la géométrie des agrégats de manière aussi agressive que les surfaces solides typiques, ce qui entraîne le dessin de plus de triangles pour le même nombre de pixels couverts.

Une autre optimisation qui permet d'agréger les ruptures de géométrie est la Suppression d'occlusion. Bien qu'elle soit très fine, sa granularité n'est pas par pixel. Une géométrie remplie de trous - et pire encore, des couches successives de géométrie remplie de trous - entraîne une surimpression excessive car de nombreuses couches de profondeur doivent s'accumuler avant que cette zone de l'écran ne bloque tout ce qui se trouve derrière elle. Une façon d'y penser est de considérer une région de 8x8 pixels à l'écran et le nombre de couches de profondeur qui doivent être générées avant que chaque pixel soit rempli. Une superposition excessive signifie que pour le même nombre de pixels couverts, Nanite tente de dessiner plus de triangles, ce qui ralentit le rendu.

Le feuillage est le cas le plus évident de problèmes avec l'élimination des occlusions, mais même dans ce cas, cela ne signifie pas que Nanite ne devrait pas du tout être utilisé sur des maillages de type feuillage. Reportez-vous à la section Feuillage à l'aide de Nanite ci-dessous pour en savoir plus.

Il est conseillé d'expérimenter différents cas d'utilisation et de voir ce qui fonctionne bien pour vos projets. Utilisez les outils de profilage pour confirmer les performances correctes de Nanite avec ces types de maillage.

Surfaces étroitement empilées

L'élimination de l'occlusion avec des maillages traditionnels rend les flux de travail de kitbashing presque impossibles à grande échelle en raison de limitations pratiques. La nature fine de l'élimination des occlusions avec Nanite permet d'utiliser ces types de flux de travail pendant le développement avec moins d'inquiétude.

Comme l'explique la section Géométrie des agrégats ci-dessus, le surdimensionnement peut provenir du fait que les surfaces cachées sont très proches des surfaces visibles situées en dessous d'elles. Si une géométrie est enfouie bien en dessous de la surface visible, Nanite la détecte et l'élimine à peu de frais, de sorte qu'elle peut être considérée comme gratuite. Cependant, lorsqu'une géométrie empilée est proche de la surface la plus élevée, Nanite n'est pas en mesure de déterminer laquelle se trouve en haut ou en bas, ce qui fait que les deux sont dessinées simultanément.

Ce problème particulier avec l'élimination est le pire des scénarios où Nanite ne sait pas quelle surface est au sommet, et dessine simplement toutes les couches à la place. Une telle imprécision s'échelonne en fonction de la taille de l'écran et de la distance. Ainsi, alors que 10 centimètres peuvent séparer des couches et sembler parfaits lorsqu'ils sont proches de la surface, à des distances plus éloignées, la différence de distance peut être inférieure à un pixel, ce qui entraîne une surcharge.

Vue du jeu

De nombreuses instances Nanite étroitement empilées les unes sur les autres

Dans l'exemple ci-dessous, si la caméra est déplacée pour regarder vers le bas sur la zone où se tient le personnage, la visualisation de la Superposition Nanite montre comment ces surfaces empilées sont rendues. Les zones plus claires indiquent que la superposition est plus importante dans ces zones que dans les autres.

Visualisation de la superposition Nanite

La visualisation des superpositions est le moyen le plus efficace de trouver des problèmes de superpositions. Bien qu'il faille s'attendre à une certaine quantité de superpositions, des quantités excessives entraînent une augmentation des coûts d'élimination et de rastérisation de Nanite, et la mise à l'échelle de Nanite indépendamment de la complexité de la scène devient moins efficace dans le processus.

Normales à facettes et à bords durs

Un problème auquel il faut faire attention est l'importation de maillages très détaillés qui ont des normales à facettes, ce qui signifie que la normale entre deux polygones différents n'a pas été lissée. Ce problème est courant et facile à ignorer et il faut faire attention à éviter ce problème particulier car un faible partage des sommets dans un maillage peut devenir considérablement plus coûteux à la fois en termes de performance de rendu et de taille des données.

Idéalement, le nombre de sommets d'un maillage devrait être inférieur au nombre de triangles qu'il comporte. Si le rapport est de 2:1 ou plus, il y a probablement un problème, surtout si cela se traduit par un nombre élevé de triangles. Un rapport de 3:1 signifie que le maillage est entièrement à facettes, chaque triangle ayant ses propres trois sommets, dont aucun n'est partagé avec un autre triangle. Le plus souvent, cela est dû au fait que les normales ne sont pas les mêmes parce qu'elles ne sont pas lissées.

Dans cette optique, plus de sommets signifie plus de données à stocker. Cela signifie aussi plus de travail de transformation de vertex, et les rapports supérieurs à 2:1 entraînent des lenteurs dans le rendu. L'utilisation intentionnelle dans le modelage de surfaces dures ne devrait pas poser de problèmes, et il n'y a aucune raison de ne pas les utiliser. Cependant, les maillages accidentels très denses à 100% de facettes sont beaucoup plus coûteux que prévu. Une autre chose à laquelle il faut faire attention est l'importation de normales sur des surfaces denses de type organique générées dans d'autres paquets CCN qui ont des seuils de normales durs qui peuvent être raisonnables sur des maillages à faible polygone, mais qui peuvent ajouter des dépenses inutiles avec Nanite.

Par exemple, dans les deux maillages ci-dessous, le maillage de gauche a des normales à facettes tandis que celui de droite a des normales lissées. En les comparant à l'aide de la visualisation Nanite Triangles, on constate des différences notables dans le nombre de triangles utilisés par Nanite pour les dessiner. Le modèle à facettes de gauche dessine beaucoup plus de triangles que le modèle lissé de droite.

[INCLUDE:#facetednormalscene]

Maillages activés par Nanite avec normales à facettes (à gauche) et normales lissées (à droite)

Visualisation de Triangle Nanite de maillages activés par Nanite à facettes (à gauche) et des normales lissées (à droite).

Cliquez sur l'image pour l'agrandir.

Cliquez sur l'image pour l'agrandir.

Feuillage utilisant Nanite

Le feuillage utilisant Nanite est en phase bêta et fait l'objet de recherches et de développements actifs.. Cette section fournit quelques conseils sur l'utilisation du feuillage avec Nanite dans Unreal Engine 5.1.

Pour les ressources telles que les arbres avec les paramètres Nanite par défaut, vous pouvez constater que les canopées ont tendance à s'amincir avec la distance. Ces cas sont une forme particulière de Géométrie d'aggrégats où chaque partie disjointe (une feuille ou un brin d'herbe) a des bords ouverts à sa limite. L'activation de Préserver la surface est utile pour empêcher cet amincissement lorsque Nanite est activé. Lorsque Nanite simplifie la géométrie à distance en réduisant le nombre de triangles, il doit éventuellement commencer à supprimer complètement certains de ces éléments disjoints. Si Nanite ne dispose pas de plus d'informations, le résultat aura l'air aminci parce qu'il y a eu une perte de surface importante. Préserver la surface redistribuera cette surface perdue aux triangles restants en dilatant les bords ouverts des frontières. La dilatation pour les formes symétriques comme les feuilles a le même effet que leur mise à l'échelle. Dans les cas non symétriques comme les rubans, par exemple les brins d'herbe, elle a pour effet de les épaissir.

L'option Préserver la surface est recommandée pour toutes les maillages de feuillage, mais pas pour les maillages qui ne sont pas du feuillage.

Sans l'option Préserver la surface

Avec l'option Préserver la surface

La visualisation de Cluster Nanite permet de voir plus clairement comment l'option Préserver la surface redistribue la surface perdue.

Visualisation de cluster Nanite | Sans l'option Préserver la surface

Visualisation de cluster Nanite | Avec l'option Préserver la surface activée

Vous trouverez ci-dessous quelques recommandations pour l'utilisation et la création d'éléments de feuillage en tenant compte de Nanite. Nous sommes toujours en train d'expérimenter et d'apprendre nous-mêmes quelles sont les meilleures approches. Jusqu'à présent, nous avons vu que les feuillages utilisant Nanite doivent être créés différemment, mais si vous jouez sur ses forces, vous pouvez obtenir des résultats plus rapides et de meilleure qualité avec Nanite.

  • Utilisez l'option Préserver la surface (activé dans l'Éditeur de maillage statique).

  • Utilisez la géométrie au lieu des cartes masquées.

    • Les matériaux masqués sont assez chers par rapport aux matériaux opaques. Les résultats les plus rapides sont probablement obtenus en ne les utilisant pas du tout.

    • L'approche traditionnelle par carte (plusieurs éléments sont représentés par une seule carte) avec Nanite peut être plus lente que sans Nanite. Ne vous attendez pas à ce que l'activation de Nanite sur les feuillages basés sur des cartes constitue toujours une amélioration des performances.

    • Les pixels masqués coûtent presque autant que les pixels dessinés. La superposition est déjà un problème avec les agrégats dans Nanite. Si un matériau masqué est utilisé, la visualisation de la superposition Nanite ne vous donnera pas toute l'information en termes de coût. Dans ce cas, la superposition est un concept complexe et la visualisation n'en montre qu'un aspect particulier.

    • Le feuillage de la géométrie s'est révélé plus rapide avec les approches Nanite qu'avec les cartes, qu'il s'agisse de cartes Nanite ou de cartes non Nanite. Il est également plus beau.

    • Le pack Megascans : Herbe sur la place du marché Unreal Engine offre de bons exemple de test. Le pack offre à la fois une géométrie masquée et un nombre élevé de polygones où chaque élément est indépendant et des cartes masquées avec un faible nombre de polygones où de nombreux éléments sont représentés par une seule carte.

  • Lors de l'utilisation de la position de décalage du monde (WPO), un plus grand nombre de sommets entraîne un coût plus élevé. La logique de la WPO doit être limitée et contrôlée.

  • Les problèmes expliqués dans la section Géométrie des agrégats de cette page restent d'actualité. Les forêts denses (comme les exemples ci-dessus) auront un rendu beaucoup plus lent que la même scène dont tous les maillages sont remplacés par des formes solides ayant le même nombre de triangles.

Flux de travail hybrides de contenu Nanite et non Nanite

Les sections suivantes mettent en évidence les flux de travail que vous pouvez utiliser dans vos projets Nanite qui doivent également prendre en charge les fonctionnalités et les plateformes non Nanite sans dupliquer les ressources.

Importation d'un maillage haute résolution pour Nanite

Vous pouvez importer un maillage haute résolution qui sera votre représentation Nanite pour tout maillage statique non Nanite existant via le Navigateur de contenu ou l'Éditeur de maillage statique.

Dans le Navigateur de contenu, vous pouvez utiliser le menu contextuel du clic droit sur une ressource de maillage statique pour sélectionner Niveau de détail > Haute résolution > Importer haute résolution et naviguer jusqu'au fichier que vous souhaitez importer.

Option d'importation haute résolution du niveau de détail des ressources par clic droit du Navigateur de contenu.

Vous pouvez également utiliser l'Éditeur de maillage statique pour importer un maillage haute résolution en utilisant les paramètres Nanite dans le panneau Details. Cliquez sur Importer et naviguez jusqu'au fichier que vous voulez importer.

Éditeur de maillage statique Options de maillage haute résolution pour l'importation de Nanite.

En utilisant ce flux de travail, le maillage statique préexistant et sa chaîne de niveaux de détail (LOD) deviennent le Maillage de secours plutôt que de laisser le processus d'importation générer automatiquement un maillage de secours à partir de la géométrie Nanite.

Ce flux de travail respecte le paramètre Ne pas autoriser Nanite sur les acteurs du maillage statique dans vos scènes et est expliqué plus en détail dans la section Options du composant du maillage statique ci-dessous.

Flux de travail des matériaux

Il existe deux façons d'améliorer vos flux de travail Nanite et non-Nanite avec des matériaux : en utilisant un nœud dans le graphique des matériaux pour séparer les chemins logiques, ou en utilisant un matériau de remplacement utilisé uniquement pour le rendu avec Nanite.

Noeud Commutateur de passage Nanite

Le nœud Nanite Commutateur de passage vous permet de définir un comportement spécialisé dans un graphique de matériaux lorsqu'il est rendu avec Nanite.

Noeud de matériau Commutateur de passage Nanite

Utilisez l'entrée Par défaut lors du rendu dans des passages non-Nanite, pour gérer le matériau comme il le ferait normalement. Utilisez l'entrée Nanite pour toute logique de matériau que vous souhaitez simplifier ou rendre spécifique aux passages Nanite. Par exemple, dans les cas où un matériau utilise une fonctionnalité non prise en charge par Nanite, vous pouvez conserver la même logique pour l'entrée Par défaut et utiliser une logique plus conviviale pour l'entrée Nanite.

Matériau de substitution Nanite

L'emplacement Matériau de substitution Nanite est disponible sur les matériaux et les instances de matériaux. Lorsque vous définissez un matériau de substitution, tous les maillages activés par Nanite auxquels le matériau ou l'instance de matériau est attribué utiliseront le matériau de remplacement Nanite référencé à la place. Cela signifie que vous pouvez créer des matériaux spécifiques aux flux de travail Nanite plutôt que de gérer la logique directement dans le graphique des matériaux à l'aide du nœud Commutateur de passage Nanite.

Emplacement de matériau de substitution Nanite dans une instance de matériau.

Dans les instances de matériau, l'emplacement Matériau de substitution Nanite est obligatoirement défini par défaut sur Aucun, de sorte que la définition de la substitution dans un matériau parent n'entraîne pas son héritage automatique dans les instances enfants de ce matériau.

Dans l'exemple ci-dessous, Nanite est activé dans le ressource de maillage statique de la statue et une instance de matériau lui est appliquée. L'instance de matériau a son Matériau de substitution Nanite défini avec quelques changements de couleur simples à des fins de démonstration. L'acteur de maillage statique à gauche affiche le matériau de substitution Nanite puisque le maillage est rendu avec Nanite. L'acteur de maillage statique de droite affiche le même matériau jusqu'à ce que l'option Ne pas autoriser Nanite soit activée sur l'acteur, ce qui désactive le matériau de substitution Nanite pour afficher le matériau de base non Nanite de l'instance de matériau.

Option de composant de maillage statique : Ne pas autoriser Nanite

Vous pouvez définir quand les maillages statiques activés par Nanite doivent utiliser leur représentation Nanite en utilisant le paramètre Ne pas autoriser Nanite sur les acteurs de scène individuels. Cela signifie que vous pouvez avoir un mélange d'acteurs Nanite et non-Nanite qui utilisent la même ressource de maillage statique.

Paramètre de composant de maillage statique pour Ne pas autoriser Nanite.

L'exemple ci-dessous montre une seule ressource de maillage statique activé par Nanite où la gauche est la représentation de maillage Nanite et la droite a l'option Ne pas autoriser Nanite activée.

Exemple de visualisation avec un maillage activé par Nanite et Nanite non autorisé

Terrain de paysage

Il s'agit d'une fonction expérimentale.

Pour utiliser Nanite avec votre terrain Paysage, sélectionnez-le et utilisez le panneau Details pour cocher la case à côté de Activer Nanite.

Propriété Paysage pour activer Nanite.

Il y a deux façons de construire la représentation du maillage Nanite à partir des données du paysage :

  • Cliquez sur le bouton Reconstruire les données dans le panneau Détails du paysage, sous la section Nanite.

  • Utilisez le menu Construire pour sélectionner Construire uniquement Nanite.

En fonction de la taille du paysage, ou du nombre de tuiles, cela peut prendre un moment pour qu'il génère sa représentation Nanite. Une fois terminé, vous pourrez le vérifier dans les modes de visualisation Nanite.

Visualisations Nanite d'un Paysage activé en tant que maillage Nanite.

Les variables suivantes de la console sont utiles lorsque vous travaillez avec des Paysages activés par Nanite :

  • Landscape.LiveRebuildNaniteOnModification déclenche une reconstruction de la représentation Nanite dès qu'une modification est effectuée. (Par défaut 0)

  • Landscape.RenderNanite définit si le paysage doit être rendu en utilisant Nanite ou non. (Par défaut 1)

Les paysages activés par Nanite présentent les limites suivantes :

  • Lorsque vous utilisez la modification en direct des paysages activés par Nanite (Landscape.LiveRebuiltNaniteOnModification 1), cela rend la sculpture de paysage presque inutilisable car elle reconstruit la représentation Nanite de tous les acteurs du paysage à chaque image.

  • La résolution maximale du maillage Nanite est la même que LOD0 pour Paysage. Il ne faut pas s'attendre à une augmentation de la résolution en utilisant Nanite par rapport à un paysage normal. Dans son état actuel, il s'agit purement d'une optimisation de l'exécution.

  • La sauvegarde des acteurs de paysage avec Nanite activé lorsque le maillage de Nanite n'a pas été mis à jour est plus lente car les maillages de Nanite doivent être construits avant la sauvegarde.

Considérations techniques :

  • Les paysages Nanite sont actuellement diffusés en plus du flux de données habituel des paysages car les données Nanite et non Nanite sont nécessaires au moment de l'exécution, ces dernières étant requises pour les textures virtuelles d'exécution, le rendu de l'eau, etc. Cela signifie que deux fois plus de données doivent être transmises en continu - un ensemble de données avec le streaming Nanite, et l'autre avec le streaming de la texture - et résident en mémoire lorsque Nanite est activé.

  • Les performances d'exécution sont améliorées avec le rendu Nanite, notamment en ce qui concerne les passages d'ombres, mais aucune amélioration (ou dégradation) visuelle ne doit être attendue puisque les données sources sont identiques.

  • Le niveau de détail hiérarchique (HLOD)/streaming devrait se comporter de la même manière que le paysage non-Nanite.

Lorsque vous éditez des paysages activés par Nanite, nous vous conseillons de désactiver la reconstruction en direct des maillages Nanite (Landscape.LiveRebuiltNaniteOnModification 0). Le rendu des paysages repose sur des paysages non Nanite jusqu'à ce que le maillage Nanite soit reconstruit (soit lors de la sauvegarde, soit en utilisant les options Construire Nanite uniquement / Construire tous les paysages dans le menu Construire**) et mis à jour, auquel cas il utilisera cette version pour le rendu. Puisqu'il ne devrait pas y avoir de différence visuelle majeure entre les paysages Nanite et non-Nanite, cela signifie que la performance dans l'éditeur pendant que le paysage non-Nanite est utilisé n'est pas représentative de la performance d'exécution dans votre projet.

Performance du contenu type

À titre de comparaison, les temps d'utilisation du GPU suivants ont été extraits de la démo technique de l'Unreal Engine 5 Lumen dans le terrain de Nanite sur une PlayStation 5 :

  • Résolution moyenne de rendu de 1 400 p temporellement échantillonné vers le haut à 4K.

  • ~2,5 millisecondes (ms) pour éliminer et rastériser tous les maillages Nanite (ce qui était presque tout dans cette démo)

    • Presque toute la géométrie utilisée était un maillage Nanite.

    • Le coût du processeur graphique est pratiquement nul, car il est piloté à 100 % par le processeur graphique.

  • ~2ms pour évaluer les matériaux pour toutes les maillages Nanite

    • Faible coût pour le processeur avec 1 appel à générer par matériau présent dans la scène.

Si l'on considère l'ensemble de ces temps de processeur graphique, on obtient environ 4,5 ms pour ce qui équivaudrait à la passe préliminaire de profondeur d'Unreal Engine 4 plus la passe de base. Cela rend Nanite bien adapté aux projets de jeux visant 60 FPS.

Des chiffres comme ceux-là devraient être attendus d'un contenu qui ne souffre pas des pièges de performance mentionnés dans les sections précédentes. Un nombre d'instances très élevé et un grand nombre de matériaux uniques peuvent également entraîner une augmentation des coûts. C'est un domaine du développement Nanite sur lequel nous travaillons activement.

Taille de données

En raison des micro-détails que Nanite est capable d'atteindre, on pourrait supposer que cela signifie une augmentation importante des données géométriques, ce qui se traduit par des tailles de paquets de jeu et des téléchargements plus importants pour les joueurs. Cependant, la réalité n'est pas si terrible. En fait, le format de maillage de Nanite est nettement plus petit que le format standard de maillage statique en raison de l'encodage spécialisé du maillage de Nanite.

Par exemple, en utilisant l'échantillon d'Unreal Engine 5 Valley of the Ancients, les maillages Nanite ont une moyenne de 14,4 octets par triangle d'entrée. Cela signifie qu'un maillage Nanite moyenne d'un million de triangles occupera ~13,8 mégaoctets (Mo) sur le disque.

Si l'on compare un maillage traditionnel avec un faible nombre de polygones et sa carte normale à un maillage Nanite à un nombre élevé de polygones, on obtient quelque chose comme ça :

[INCLUDE:#lowpolystats]

Maillage Nanite

  • Triangles : 1,545,338

  • Sommets : 793,330

  • Num LOD : n/a

  • Nanite : Activé

Taille du paquet compressé du maillage statique : 19,64 Mo

Maillage statique à faible nombre de polygones | avec une carte normale de 4k

Maillage statique à nombre élevé de polygones | avec une carte normale de 4k

La taille du paquet compressé n'est cependant pas la taille totale de la ressource. Il existe également des textures uniques utilisées uniquement par ce maillage qui doivent être prises en compte. De nombreux matériaux utilisés par les maillages ont leurs propres textures uniques composées de différentes textures Normales, Couleur de base, Métalliques, Spéculaire, Rugosité et Masque.

Cette ressource particulière n'utilise que deux textures (Couleur de base et Normal) et n'est donc pas aussi coûteuse en espace disque qu'une ressource comportant de nombreuses autres textures uniques. Par exemple, notez que la taille du maillage Nanite avec ~1,5 million de triangles est plus petite (à 19,64 Mo) qu'une texture de carte normale de 4k.

Type de Texture

Taille de Texture

Taille sur le disque

Couleur de base

4k x 4k

8,2 Mo

Normal

4k x 4k

21,85 Mo

La taille totale du paquet compressé pour ce maillage et ses textures est :

  • Maillage à faible nombre de polygones : 31,04 Mo

  • Maillage à nombre élevé de polygones : 49,69 Mo

Comme le maillage de Nanite est déjà très détaillé, nous pouvons essayer de remplacer la carte normale unique par une normale de détail de carrés qui est partagée avec d'autres ressources. Bien que cela entraîne une certaine perte de qualité dans ce cas, elle est assez faible et certainement beaucoup plus faible que la différence de qualité entre la version à faible nombre de polygones et à nombre élevé de polygones. Ainsi, un maillage Nanite de 1,5 M de triangle peut à la fois être plus beau et plus petit qu'un maillage à faible nombre de polygones avec une carte normale de 4k.

Taille totale du paquet compressé pour le maillage et les textures activés par Nanite : 27,83 Mo

Maillage statique à nombre élevé de polygones | avec une carte normale de 4k

Maillage Nanite | avec une carte normale détaillée de 4k

De nombreuses expériences peuvent être réalisées avec la résolution des textures et les cartes normales détaillées, mais cette comparaison particulière vise à démontrer que la taille des données des maillages Nanite n'est pas trop différente de celle des données que les artistes connaissent déjà.

Enfin, nous pouvons comparer la compression Nanite au format standard de Maillage statique en utilisant un nombre élevé de polygones, où les deux sont identiques à LOD0.

Maillage statique avec un nombre élevé de polygones

  • Triangles : 1,545,338

  • Sommets : 793,330

  • Num LOD : 4

  • Nanite : Désactivé

Taille du paquet comprimé du maillage statique : 148,95 Mo

Maillage Nanite

  • Triangles : 1,545,338

  • Sommets : 793,330

  • Num LOD : n/a

  • Nanite : Activé

Taille du paquet compressé du maillage statique : 19,64 Mo

Si l'on compare la compression Nanite de tout à l'heure avec une taille de 19,64 Mo, elle est 7,6x plus petite que la compression standard du maillage statique avec 4 LOD.

La compression Nanite et la taille des données sont un domaine clé qui sera amélioré dans les prochaines versions d'Unreal Engine.

Conseils généraux sur la taille des données

Nanite et les systèmes Texturation virtuelle, associés à des SSD rapides, ont diminué les problèmes liés aux budgets d'exécution de la géométrie et des textures. Le principal goulet d'étranglement est maintenant de savoir comment fournir ces données à l'utilisateur.

La taille des données sur le disque est un facteur important lorsqu'on examine la manière dont le contenu est diffusé - sur des supports physiques ou téléchargé depuis Internet - et la technologie de compression a ses limites. La bande passante Internet, la taille des supports optiques et des disques durs de l'utilisateur final moyen n'ont pas évolué au même rythme que la bande passante et la latence d'accès des disques durs, la puissance de calcul des processeurs graphiques et la technologie logicielle comme Nanite. Il est difficile de transmettre ces données aux utilisateurs.

Le rendu efficace de maillages très détaillés est moins problématique avec Nanite, mais le stockage de ses données sur le disque est désormais le point clé à surveiller.

Modes de visualisation

Nanite comprend un certain nombre de modes de visualisation pour inspecter ses données dans la scène actuelle.

Dans le viewport du niveau, sous le menu déroulant Modes d'affichage, survolez Visualisation de Nanite et choisissez parmi la sélection.

Menu Visualisation de Nanite dans le Viewport

La visualisation Vue d'ensemble affiche la scène rendue au centre de l'image avec certaines visualisations Nanite autour de l'écran pour référence.

Visualisation Vue d'ensemble Nanite

Les modes de visualisation Nanite suivants sont disponibles au choix :

Visualisation Nanite

Description

Masque

Visualisation qui marque la géométrie Nanite (vert) et Non-Nanite (rouge).

Triangles

Affiche tous les triangles des maillages Nanite dans la scène actuelle.

Clusters

Affiche des représentations colorées de tous les clusters de triangles en cours de rendu dans la vue de la scène actuelle.

Primitives

Visualisation qui colore les composants de la même couleur pour toutes les instances d'un maillage statique d'instance (ISM).

Instances

Visualisation qui applique une couleur différente pour chaque instance de la scène.

Superposition

Affiche la quantité de superposition qui se produit pour la géométrie de la scène. Les objets plus petits qui sont étroitement empilés les uns sur les autres créent plus de superposition que les objets plus grands.

ID du matériau

Affiche des couleurs distinctes pour chaque ID de matériau des maillages Nanite individuelles.

UV de Lightmap

Visualisation qui affiche les coordonnées UV des surfaces de maillages Nanite.

Evaluer WPO

Colore les géométries activées par Nanite qui utilisent la position mondiale de façon décalée (vert) par rapport à celles qui ne le font pas (rouge).

Nanite comprend un mode de visualisation Avancé qui active des options de visualisation supplémentaires dans le menu Visualisation Nanite. Ces visualisations sont utiles pour les programmeurs qui déboguent ou étudient le profil de divers aspects de bas niveau de Nanite.

Activez ce mode de visualisation avancé avec la variable de console r.Nanite.Visualize.Advanced 1.

Variables et commandes de la console

Les statistiques et variables de console suivantes sont disponibles pour être utilisées dans le débogage et la configuration de Nanite.

Le rendu Nanite peut être activé et désactivé globalement au moment de l'exécution en utilisant la variable de console r.Nanite 0. La désactivation de Nanite est un bon moyen d'émuler les plateformes où il n'est pas pris en charge.

Modes de rendu de secours Nanite

Nanite fournit des modes de rendu de maillage de secours pour les cas où Nanite est désactivé ou non pris en charge par une plateforme. Vous pouvez contrôler quel mode est utilisé avec la variable de console r.Nanite.ProxyRenderMode.

0 est le mode par défaut et revient au rendu des maillages de secours, ou des LOD de l'espace écran, s'ils sont définis. Cela inclut la reconnaissance de LOD Min dans les propriétés de l'Éditeur de maillage statique (décrit dans la section Maillage de secours ci-dessus).

  • 1 désactive tous les rendus des maillages activé par Nanite.

  • 2 fonctionne de la même manière que le mode 1 mais permet à la visualisation Afficher > Maillage de secours Nanite dans l'Éditeur de maillage statique de rendre un maillage de secours Nanite.

Les modes de rendu de secours 1 et 2 sont utiles pour les scènes qui comportent beaucoup plus d'instances qu'il n'est possible de prendre en charge sans Nanite. Ils permettent d'ouvrir la scène dans l'Éditeur sur des plateformes ne prenant pas en charge Nanite.

Par exemple, dans le projet d'exemple Unreal Engine 5 Valley of the Ancients, la désactivation de Nanite entraînerait des dizaines de milliers d'appels à générer réguliers, ce qui rendrait difficile l'ouverture de la carte sur une plateforme non compatible.

Commande Stats Nanite

La commande Nanitestats permet d'ajouter une superposition de statistiques d'élimination Nanite en haut et à droite de la fenêtre. Nanite sur l'affichage statistique à l'écran

Les arguments de commande sont utilisés pour spécifier les statistiques que Nanite affiche à l'écran. Si aucun argument n'est fourni, la vue primaire est utilisée.

Utilisez Nanitestats List pour montrer toutes les vues disponibles dans la sortie de débogage :

  • Primaire

  • VirtualShadowMaps

Vous pouvez également voir d'autres statistiques disponibles pour ShadowAtlas et CubemapShadows lorsqu'elles sont disponibles. Sélectionnez une vue en entrant la commande suivie du nom de la liste de statistiques que vous voulez visualiser. Par exemple, vous pouvez entrer la commande NaniteStats VirtualShadowMaps.

Pour les vues qui utilisent l'élimination des occlusions en deux passes, les statistiques sont divisées en deux parties distinctes pour les passes principale et postérieure.

Contrôle de la taille de la réserve de streaming Nanite

Contrôlez la quantité de mémoire dédiée au stockage des données Nanite en streaming avec la variable de console r.Nanite.Streaming.StreamingPoolSize. L'utilisation de pools plus importants réduit le travail d'E/S et de décompression lors des déplacements dans la scène, mais au prix d'une empreinte mémoire plus importante.

Si le pool n'est pas assez grand pour contenir toutes les données nécessaires à une vue, il peut se produire un "thrashing" du cache où le flux ne se stabilise jamais, même pour une vue statique.

Cette variable de console ne peut pas être modifiée au moment de l'exécution et doit être spécifiée dans un fichier de configuration (.ini).

Définition du nombre maximum de clusters en une seule passe

Vous pouvez spécifier le nombre maximum de clusters candidats et visibles utilisés en une seule passe avec les variables de console r.Nanite.MaxCandidateClusters et r.Nanite.MaxVisibleClusters. Leurs valeurs sont utilisées pour le dimensionnement des tampons intermédiaires et leurs valeurs par défaut ont été choisies pour fonctionner dans les scénarios de rendu courants.

Il n'existe aucun mécanisme permettant de redimensionner dynamiquement l'un ou l'autre de ces tampons, ou de réduire automatiquement la qualité en cas de dépassement, ce qui peut entraîner des artefacts de rendu dus au fait qu'ils sont trop petits pour la complexité de la scène, et se manifestent généralement par une géométrie manquante ou clignotante. Lorsque ces types d'artefacts se produisent, utilisez Nanitestats pour déterminer des limites conservatrices pour les candidats et les clusters visibles. Plus précisément, regardez les statistiques pour ClustersSW et ClustersHW. Le coût mémoire d'un cluster candidat est actuellement de 12 octets et celui d'un cluster visible de 16 octets.

Cette variable de console ne peut pas être modifiée au moment de l'exécution et doit être spécifiée dans un fichier de configuration (.ini).

This page was written for a previous version of Unreal Engine and has not been updated for the current Unreal Engine 5.1 release.
Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Cancel