Textures stochastiques procédurales dans Unity

THOMAS DELIOT / UNITY TECHNOLOGIESContributor
Feb 14, 2019|3 Min
Textures stochastiques procédurales dans Unity
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Avez-vous déjà essayé d'utiliser des textures en mosaïque pour couvrir de grandes surfaces ou ajouter des détails à petite échelle à vos maillages ? Si c'est le cas, vous êtes probablement familier avec le modèle de répétition visible qui apparaît rapidement avec des valeurs de tuilage plus élevées. Chez Unity Labs, nous avons développé une nouvelle technique de texturation qui évite ce problème, la texturation stochastique procédurale.

Les textures tuilables sont un outil utile pour ajouter des détails à vos scènes 3D. Cependant, lorsque vous souhaitez texturer de grandes zones ou obtenir des surfaces très détaillées à l'aide de textures et de cartes de détails, les motifs de tuilage deviennent visibles. Cet effet est illustré dans la partie gauche de l'image suivante. En règle générale, la réduction des motifs de répétition nécessite des textures plus grandes ou la dissimulation de la répétition visible par des objets supplémentaires. Dans cet article de blog, nous proposons un plugin qui résout ce problème pour les textures aux apparences stochastiques, telles que la rouille, la mousse, l'écorce, etc. Son impact est illustré dans la partie droite de l'image suivante.

Image de textures en mosaïque pour couvrir de grandes surfaces

Téléchargez le plugin ici.

Étant donné une texture d'entrée, le plugin génère de manière procédurale une texture infinie qui correspond à l'apparence de l'entrée. Pour ce faire, nous nous appuyons sur une fonction de mélange de textures de pointe qui opère sur une version modifiée de la texture d'entrée, ce qui ne nécessite que trois échantillons de texture par fragment, et en récupérant une petite table de consultation. Puisque le plugin évite la nécessité d'un carrelage, il permet de couvrir de grandes surfaces avec des textures plus petites et des niveaux de détail plus élevés sans artefacts de répétition.

Utilisation de la nuance StandardStochastic

Le plugin fournit une variante du shader Standard, qui est inclus dans un package Unity. Une fois le paquet importé, sélectionnez le shader StandardStochastic pour votre matériau. L'interface est la même que celle du shader Standard, avec l'ajout de deux nouveaux contrôles en haut, correspondant aux deux étapes de configuration requises :

L'image montre l'ajout de deux nouveaux contrôles en haut de l'écran
L'image montre les améliorations apportées à la saisie

Le menu Stochastic Inputs vous permet de spécifier sur quelles textures d'entrée vous souhaitez activer notre technique (elle peut être réglée sur Everything, ou sur des textures spécifiques, par exemple l'albédo et/ou la carte normale).

Le bouton Appliquer pré-calcule les données pour les entrées stochastiques sélectionnées et met à jour le matériel, terminant ainsi le processus. Pour chaque texture d'entrée, cette étape génère deux textures intermédiaires situées dans le même dossier.

Quelques remarques supplémentaires :

  • Étant donné que les textures intermédiaires existantes sont chargées lorsqu'elles sautent des temps de génération, toute modification de la texture originale nécessite de les supprimer toutes les deux avant d'appuyer à nouveau sur le bouton "Appliquer" pour forcer leur régénération.
  • Lorsque l'on passe de l'ombrage standard à l'ombrage stochastique standard, les paramètres sont transférés dans les deux sens.
  • Un nuanceur StandardStochastic (configuration spéculaire) est également fourni pour les matériaux utilisant le flux de travail spéculaire.

Les exemples suivants montrent que le prototype fonctionne avec différents matériaux en utilisant des textures d'entrée de petite taille (256²).

Exemple de nuanceur
Exemple de nuanceur
Exemple de nuanceur
Limitations

Cette technique n'est compatible qu'avec les textures stochastiques et quasi-stochastiques pouvant être mises en carreaux, telles que les textures ressemblant à du bruit aléatoire lorsqu'elles sont observées de loin et les matériaux d'apparence typiquement naturelle sans formes géométriques précises.

Exemples de textures
Retour d'information

Il s'agit d'un prototype de recherche ; il ne fait pas l'objet d'un développement actif. En tant que tel, nous ne garantissons pas la maintenance ou l'assistance, mais n'hésitez pas à poser des questions et à faire part de vos commentaires sur ce fil de discussion du forum Unity. Nous travaillons actuellement sur une implémentation de ShaderGraph pour les shaders personnalisés et la compatibilité avec les nouveaux pipelines de rendu. Surveillez les mises à jour sur le fil de discussion du forum !

Pour en savoir plus

Curieux de savoir comment fonctionne le plugin ? Consultez nos deux documents de recherche récemment publiés sur le sujet, sur lesquels notre plugin s'appuie :

Le code livré avec le plugin comporte des commentaires faisant référence à des sections spécifiques du chapitre technique.