Écriture de shaders Unity avec l'IA | ChatGPT + Unity Shaders
Table des matières
- Introduction
- Qu'est-ce que les shaders Unity ?
- Comment écrire des shaders Unity "from scratch"?
- Essayons avec Chat GPT
- Analyse du résultat du Chat GPT
- Ajoutons un effet de Fresnel
- Essayons avec le pipeline intégré
- Ajoutons un effet de dissolution
- Formation du modèle de Chat GPT
- Conclusion
🔍 Introduction
Bienvenue dans cet article sur l'écriture de shaders Unity à partir de zéro ! Je suis Ben et aujourd'hui, je vais essayer quelque chose de différent. Au lieu de vous enseigner moi-même, j'ai décidé d'utiliser Chat GPT pour générer du code HLSL. Pour commencer, je vais demander à Chat GPT de me créer un shader de personnage en utilisant HLSL.
🎨 Qu'est-ce que les shaders Unity ?
Les shaders sont des programmes informatiques utilisés dans le domaine de la création graphique et des jeux vidéo pour contrôler l'apparence visuelle des objets. Dans Unity, les shaders sont utilisés pour définir comment les objets sont rendus à l'écran en manipulant la lumière, les ombres, les couleurs et les effets visuels.
🖊️ Comment écrire des shaders Unity "from scratch" ?
Écrire des shaders Unity "from scratch" signifie créer des shaders à partir de zéro, sans utiliser de modèles ou de bibliothèques existantes. Cela peut sembler complexe, mais en comprenant les principes de base des shaders et en utilisant le langage de programmation HLSL (High-Level Shading Language), vous pouvez créer des effets visuels personnalisés et uniques.
Pour écrire un shader Unity "from scratch", vous devez:
- Comprendre les différents types de shaders, tels que les shaders de surface, les shaders de vertex et les shaders de fragment.
- Utiliser le langage HLSL pour écrire le code du shader.
- Déclarer les variables, les fonctions et les instructions nécessaires pour créer les effets visuels souhaités.
- Comprendre les concepts de base tels que les coordonnées de texture, les normales des surfaces et les calculs d'éclairage.
- Testez et ajustez votre shader en l'appliquant à des objets dans votre scène Unity.
En suivant ces étapes, vous pourrez créer vos propres shaders personnalisés dans Unity.
🤖 Essayons avec Chat GPT
Maintenant que nous avons une compréhension de base des shaders Unity, voyons comment Chat GPT peut nous aider à générer du code HLSL. J'ai demandé à Chat GPT d'écrire un shader de personnage pour Unity en utilisant HLSL. Voyons ce que cela donne.
write me a character Shader for Unity using HLSL
Après avoir donné cette instruction à Chat GPT, il a généré un code de shader très basique avec une structure Vert/frag et une couleur de base. Voyons si nous pouvons lui demander de faire quelque chose de plus intéressant.
📝 Analyse du résultat du Chat GPT
Le résultat généré par Chat GPT était une version très basique du shader demandé. Il semble que Chat GPT ait utilisé une approche fondée sur des shaders de surface plutôt que sur des shaders utilisant la fonction Surface Shader d'Unity. Cependant, le shader généré ne semble pas afficher correctement à l'écran.
Après une analyse plus approfondie, j'ai remarqué que Chat GPT a utilisé World Reflection à la place de View Direction et View Normal dans l'effet Fresnel. Cela peut être dû au fait que Chat GPT utilise une approche basée sur le rendu physiquement basé (PBR), où le Fresnel est calculé à l'Aide de réflexions mondiales. Cependant, cela ne correspond pas exactement à ce que nous recherchions.
Bien que Chat GPT ait fait quelques erreurs, il est impressionnant de voir qu'il a pu générer un code shader de base. Cela montre que la technologie est déjà très prometteuse et qu'avec quelques améliorations, elle pourrait devenir un outil puissant pour les développeurs de shaders Unity.
🌌 Ajoutons un effet de Fresnel
Pour améliorer le shader généré par Chat GPT, nous allons ajouter un effet de Fresnel. Cet effet ajoute une intensité variable en fonction de l'angle de vue, ce qui crée une belle illusion de brillance sur les bords des objets.
Voici le code du shader modifié avec l'effet de Fresnel :
void Surf(Input IN, inout SurfaceOutputStandard o)
{
// Calcul du Fresnel
float fresnel = pow(1.0 - dot(IN.viewDir, IN.worldNormal), 5.0);
// Ajout de l'effet Fresnel à la couleur
o.Albedo *= fresnel;
}
Maintenant, après avoir appliqué cette modification, nous devrions voir un rendu amélioré avec un effet de Fresnel sur le personnage.
📦 Essayons avec le pipeline intégré
Maintenant, nous allons essayer de générer un shader en utilisant le pipeline intégré à Unity. J'ai configuré la scène pour utiliser le pipeline intégré et j'ai demandé à Chat GPT de générer un shader pour un personnage.
write me a character Shader for Unity using the built-in pipeline
Après avoir donné cette instruction, Chat GPT a généré un code de shader similaire au précédent. Mais cette fois, nous avons rencontré quelques problèmes avec l'ajout d'un effet de dissolution à l'aide de la texture fournie.
🔥 Ajoutons un effet de dissolution
L'effet de dissolution est un effet visuel commun utilisé dans les jeux pour faire disparaître les objets d'une manière intéressante. Nous allons essayer d'ajouter cet effet à notre shader de personnage.
Voici le code du shader modifié avec l'effet de dissolution :
void Surf(Input IN, inout SurfaceOutputStandard o)
{
// Utilisation du canal rouge pour le seuil de dissolution
float dissolveThreshold = IN.texcoord.r;
// Calcul de l'effet de dissolution
clip(dissolveThreshold - o.Alpha);
// Ajout de l'effet de fresnel
float fresnel = pow(1.0 - dot(IN.viewDir, IN.worldNormal), 5.0);
o.Albedo *= fresnel;
}
Maintenant, après avoir ajouté l'effet de dissolution, nous devrions voir notre personnage se dissoudre de manière fluide lorsque la valeur du seuil de dissolution est dépassée.
🤓 Formation du modèle de Chat GPT
Il est important de noter que Chat GPT n'a pas été spécifiquement formé pour générer du code HLSL pour les shaders Unity. Il est basé sur un modèle de langage pré-entraîné sur une large variété de textes francophones. Malgré cela, il a réussi à générer du code qui était proche de ce que nous cherchions.
Cependant, pour obtenir des résultats plus précis et spécifiques, l'entraînement de Chat GPT avec des exemples de shaders Unity et des instructions claires sur les effets visuels souhaités serait nécessaire.
✅ Conclusion
Dans cet article, nous avons exploré l'écriture de shaders Unity à partir de zéro et avons utilisé Chat GPT pour générer du code HLSL. Bien que les résultats générés par Chat GPT n'étaient pas parfaits, ils ont montré le potentiel de cette technologie pour aider les développeurs de shaders.
Il est évident qu'il y a encore beaucoup de travail à faire pour améliorer la précision et la spécificité des résultats de Chat GPT. Cependant, avec des améliorations continues, il est possible que cette technologie devienne un outil puissant et innovant pour les développeurs de jeux et les artistes graphiques.
Restez à l'affût des développements futurs de Chat GPT et de ses capacités à générer du code HLSL de haute qualité pour les shaders Unity !
Ressources utiles :