Les textures de jeu présentent des exigences spécifiques en termes de rendu. Lorsque vous créez des textures dans l'Unreal Editor pour Fortnite (UEFN) avec des images importées, assurez-vous que la hauteur et la largeur du fichier image source utilisent la puissance 2. Cela permet d'améliorer la compatibilité et la stabilité de votre île sur les plateformes.
Les formats de fichiers compressés pour les processeurs graphiques (GPU) doivent utiliser des textures de puissance 2 sur l'ensemble des consoles, PC et téléphones portables. Les textures qui ne respectent pas la règle de puissance 2 deviennent instables sur les plateformes bas de gamme et risquent de faire planter le jeu. La puissance 2 est également utilisée dans le chargement dynamique des textures pour réduire la résolution des textures sur les plateformes disposant de moins de mémoire.
Le chargement dynamique de textures permet :
-
de modifier la résolution d'une texture ;
-
de déterminer la vitesse de chargement d'un jeu ;
-
d'améliorer la qualité visuelle du jeu ;
-
d'économiser la mémoire du processeur graphique.
Qu'est-ce que la puissance 2 ?
Les ordinateurs et les consoles gèrent et traitent les données par tronçons délimités plutôt qu'en une seule fois. Il s'agit d'un principe semblable au mode de rendu des arrière-plans à l'aide du système World Partition.
Lorsque les tronçons de données de jeu respectent la règle de la puissance 2, les tronçons de données établissent un ensemble de restrictions physiques codées en dur sur le support. Si ces restrictions ne sont pas respectées, le moteur de jeu gaspille les ressources en tentant de rendre correctement les ressources.
La puissance 2 est un moyen d'optimiser les données de jeu et les images de rendu afin d'optimiser les expériences visuelles.
Exemples de tailles d'image acceptables : 256 x 256, 512 x 512 ou 1 024 x 2 048. Les textures qui n'utilisent pas la puissance 2 ne sont pas optimisées et entraînent à la fois l'instabilité de l'île et des performances médiocres.
Les textures de puissance 2 permettent à l'UEFN d'utiliser trois fonctionnalités clés :
-
Compression des textures : réduit environ par huit la taille de la mémoire pour un coût visuel minime.
-
Mipmapping : génère automatiquement des variantes basse résolution.
-
Chargement dynamique de texture : affiche une variante à résolution plus basse avant de pouvoir charger dynamiquement les données à résolution plus élevée dans la mémoire.
La combinaison de ces fonctionnalités permet de rendre une ressource haut de gamme dotée de textures 4K sur n'importe quelle plateforme, car les textures présentent alors des variantes de haute qualité à une résolution réduite.
Par exemple, une texture de 4 000 x 4 000 sans couche alpha nécessite 64 mégaoctets de mémoire. Cette texture doit être chargée en une seule fois et s'affiche toujours à une résolution de 4 000 x 4 000 même si elle entraîne un crénelage sur un petit panneau d'affichage éloigné du joueur. Des textures trop volumineuses peuvent entraîner le plantage des appareils dont la mémoire est insuffisante.
En revanche, la version 4 096 x 4 096 d'une texture utilisant la compression par défaut ne consomme que 8 mégaoctets, est chargée dynamiquement de façon progressive et réduit le crénelage à distance. Des textures trop volumineuses augmentent également la taille du paquet, bien qu'elles n'entraînent pas le plantage du jeu.
Conditions du dimensionnement des textures dans l'UEFN
Pour garantir le bon fonctionnement de toutes les îles sur toutes les plateformes cibles, l'UEFN impose certaines conditions concernant les ressources de texture.
Les ressources de texture qui ne respectent pas ces conditions ne seront pas validées, et vous ne pourrez pas mettre votre projet en ligne.
-
Si votre texture est assignée au groupe de textures de l'IU, ses dimensions doivent être inférieures à la taille maximale de 2048x2048. Il n'est toutefois pas nécessaire que les dimensions de la texture soient de puissance 2 (le chargement dynamique ne s'applique généralement pas aux textures d'IU, si bien que leur netteté sera toujours optimale.)
-
Si votre texture n'est pas assignée au groupe de textures de l'IU, ses dimensions doivent être inférieures à la taille maximale de 4096x4096. Et si elle contient davantage de pixels que le seuil minimal (1024x1024, soit 1048576), elle doit être chargeable dynamiquement. Cela signifie que :
-
chacune de ses dimensions doit être de puissance deux : par exemple, 256x256, 512x512, 1024x1024 et ainsi de suite).
Chaque dimension doit être de puissance deux : par exemple, 256x512, 512x1024, 256x1024 et ainsi de suite, mais il n'est pas nécessaire que l'image soit carrée.
-
-
Sa propriété Ne jamais charger dynamiquement doit être désactivée.
-
Elle doit être configurée de manière à générer des mipmaps.
-
Le coût de mémoire total de toutes les textures de votre projet qui n'utilisent pas le chargement dynamique doit être inférieur à un budget maximal prédéfini. C'est la somme du coût de mémoire de toutes les textures dont la propriété Ne jamais charger dynamiquement est activée qui détermine le coût de mémoire de votre projet. Il comprend :
-
Toutes les textures dont les dimensions ne sont pas de puissance deux (et pour lesquelles la propriété Remplissage et redimensionnement n'a pas été utilisée). La propriété Ne jamais charger dynamiquement est toujours automatiquement activée pour ces textures.
-
Toutes les autres textures dont la propriété Ne jamais charger dynamiquement a été activée manuellement.
-
Toute texture possède un paramètre Groupe de textures indiquant son utilisation attendue. Vous pouvez définir ce groupe, et les autres propriétés de texture mentionnées ci-dessus, en double-cliquant sur la ressource de texture dans le navigateur de contenu pour ouvrir l'éditeur de texture.
Redimensionner les textures
Dans l'UEFN, il est possible de redimensionner à la puissance 2 les anciennes textures importées qui utilisent des dimensions inégales ou des tailles exagérées. Recherchez et corrigez les textures défaillantes en procédant comme suit :
-
Ouvrez le tiroir à contenu ou le navigateur de contenu et assurez-vous de sélectionner le dossier de contenu racine de votre projet, situé dans la partie FortniteGame du panneau d'arborescence de fichiers côté gauche.
-
Sous Tous, recherchez le dossier nommé Contenu de VotreNomDeProjet.
-
Tapez
NeverStream==true&&TextureGroup!=UI
dans la barre de recherche en haut du tiroir à contenu. Une requête est exécutée pour identifier toutes les ressources concernées.
Toutes les ressources qui figurent dans cette vue filtrée sont concernées. Bien que la correction de ces ressources prenne du temps, elle permet d'améliorer les performances de votre niveau.
Il existe deux façons de mettre à jour les textures concernées qui ne font pas partie du groupe IU.
L'option A utilise les fonctionnalités de modification en masse de l'UEFN pour regrouper les textures et les modifier simultanément. C'est le moyen le plus rapide de corriger automatiquement vos textures en remplissant les proportions correctes, bien que ce remplissage puisse entraîner une utilisation inutile de la mémoire.
L'option B prend un peu plus de temps, mais permet d'optimiser votre budget mémoire si vous avez besoin de corriger plusieurs textures concernées. Cette option vous permet de modifier et de recharger les textures afin d'éviter tout remplissage inutile.
Option A
-
Cliquez sur l'icône de menu dans le navigateur de contenu à côté de la barre de recherche et sélectionnez Textures. Toutes les textures sont isolées dans le navigateur de contenu.
-
Cliquez sur l'icône Paramètres et activez Colonnes. Toutes les textures sont désormais répertoriées sous forme de colonnes dans le navigateur de contenu.
-
Dans la colonne Dimensions, recherchez toute ressource qui n'utilise pas la puissance 2.
-
Sélectionnez toutes les textures qui ne respectent pas la règle de puissance 2.
-
Effectuez un clic droit dans le navigateur de contenu et sélectionnez Actions sur les ressources > Modifier la sélection dans la matrice des propriétés. L'outil de modification en masse s'ouvre. Toutes les textures sélectionnées y sont répertoriées dans l'onglet Éditeur de composants.
-
Sélectionnez tous les noms de fichiers de texture dans la section Racine.
Cliquez sur l'image pour l'agrandir.
-
Ouvrez l'option Texture dans l'onglet Colonnes épinglées.
-
Sélectionnez Remplir jusqu'à la puissance 2 dans le menu déroulant mode Puissance 2. Une barre de progression apparaît en bas de la fenêtre de l'éditeur.
Les textures sont toutes converties en puissance 2 et fonctionnent désormais sur toutes les plateformes.
Option B
-
Double-cliquez sur la texture pour ouvrir l'éditeur de texture.
-
Dans la barre de recherche située en haut du panneau Détails, saisissez le nom de votre fichier source. Le chemin d'accès au fichier s'affiche sur votre PC. Il sera utilisé comme fichier source d'origine de la texture.
Cliquez sur l'image pour l'agrandir.
-
Redimensionnez la texture à la puissance 2 la plus proche à l'aide d'un éditeur d'images tel que GIMP ou Paint.NET 5. Vous pouvez même utiliser Paint si la texture ne comporte pas de couche alpha.
-
Parmi les tailles à la puissance 2 figurent 256, 512, 1024, etc.
-
Par exemple, une texture de 500 x 500 doit être corrigée en 512 x 512, et une texture de 600 x 256 peut adopter la taille 512 x 256.
-
Les changements de proportions ne devraient pas entraîner d'effets négatifs sur votre île.
-
-
Faites un clic droit sur la texture dans le navigateur de contenu et sélectionnez Réimporter.
Si l'image de texture d'origine n'est pas présente dans vos fichiers :
-
Effectuez un clic droit sur la texture dans le navigateur de contenu, puis sélectionnez Actions sur les ressources > Exporter pour obtenir une nouvelle copie.
-
Redimensionnez la texture à la puissance 2 la plus proche. Ensuite, dans le navigateur de contenu, effectuez un clic droit sur la texture et sélectionnez Réimporter avec un nouveau fichier. Une fois le fichier importé, double-cliquez sur la texture pour ouvrir l'éditeur de texture.
-
Dans la barre de recherche Détails, saisissez Never Stream (Aucun chargement dynamiquement), puis définissez l'option sur False. S'il s'avère impossible de la définir sur False, assurez-vous que la spécification Importée en haut de la page indique que votre image a une taille puissance 2.
-
Dans le panneau Détails, recherchez l'option Mip Gen Settings (Paramètres généraux mip). Ensuite, dans le menu déroulant, sélectionnez Du groupe de textures.
-
Dans le panneau Détails, recherchez l'option Compression Settings (Paramètres de compression), puis sélectionnez Par défaut (DXT1/5) dans le menu déroulant.
Au terme de cette procédure, vérifiez que vous avez bien supprimé la texture restreinte en recherchant NeverStream==true&&TextureGroup!=UI
dans la barre de recherche du navigateur de contenu. Les ressources mises à jour ne doivent plus apparaître ici.
Modifier une texture individuelle
Suivez les instructions ci-dessous si vous n'avez qu'une seule texture qui n'obéit pas à la règle de puissance 2.
-
Double-cliquez sur la texture pour ouvrir l'éditeur de texture.
Cliquez sur l'image pour l'agrandir.
-
Dans la barre de recherche Détails, saisissez mode Puissance 2. Ensuite, dans le menu déroulant Remplissage et redimensionnement, sélectionnez Remplir jusqu'à un carré de puissance 2.
-
Recherchez l'option Aucun chargement dynamique et réglez-la sur False.
-
Recherchez l'option Paramètres généraux mip. Dans le menu déroulant, sélectionnez Du groupe de textures.
-
Recherchez l'option Paramètres de compression puis, dans le menu déroulant, sélectionnez Par défaut (DXT1/5).
Au terme de cette procédure, vérifiez que vous avez bien supprimé la texture restreinte en recherchant NeverStream==true&&TextureGroup!=UI
dans la barre de recherche du navigateur de contenu. Les ressources mises à jour ne doivent plus apparaître dans la liste.
Rechercher des textures invalides
Les ressources de texture qui n'obéissent pas aux conditions susmentionnées sont signalées dans le navigateur de contenu par une icône d'erreur. Passez la souris sur la ressource concernée pour obtenir des détails sur le problème rencontré :
Cliquez sur l'image pour l'agrandir.
Résoudre les problèmes de textures invalides
Le meilleur moyen de corriger les textures invalides importées de fichiers externes est de les modifier dans l'application d'origine utilisée pour les créer, puis de réimporter la ressource. Vous pouvez aussi utiliser une autre application de modification d'image pour éditer les textures avant de les réimporter dans l'UEFN.
Veillez à ce que les dimensions de chaque image soient inférieures aux dimensions maximales susmentionnées. Si vous n'utilisez pas l'image pour l'IU, sa hauteur et sa largeur doivent être chacune de puissance deux, sans pour autant être nécessairement carrée.
L'UEFN propose également une solution intégrée pour que la taille de vos textures respecte automatiquement les conditions de l'UEFN. Voici comment l'utiliser :
-
Sélectionnez au moins une texture invalide dans le navigateur de contenu.
-
Faites un clic droit sur la vignette d'une texture et choisissez Rendre conforme dans le menu contextuel.
L'éditeur tente d'ajuster les propriétés des textures sélectionnées pour éviter les problèmes de validation et inscrit ses résultats dans le journal de sortie.
Les effets de cette opération sont les suivants :
-
Si la texture se trouve dans le groupe de textures d'IU et que ses dimensions sont supérieures à la limite autorisée, le paramètre Compression > Avancé > Taille de texture maximale est ajusté pour limiter la résolution maximale de la texture chargeable à l'exécution.
-
Si la texture ne se trouve pas dans le groupe de textures d'IU et que ses dimensions sont supérieures à la limite autorisée, le paramètre Biais de LOD est ajusté de manière à abandonner les plus gros mipmaps de la texture. Cela limite de manière efficace la résolution maximale de la texture chargeable à l'exécution.
-
Si la texture se situe hors du groupe de textures d'IU et que ses dimensions ne sont pas de puissance deux, le paramètre Remplissage et redimensionnement est utilisé pour la faire passer à la puissance 2.
-
Si la texture ne se trouve pas dans le groupe de textures d'IU, son paramètre Ne jamais charger dynamiquement est désactivé.