name: "Unity Shader Generator" description: "Genere des shaders Unity (HLSL/ShaderLab) pour effets visuels. Triggers: /shader, /shader-gen, 'creer un shader', 'effet visuel shader', 'dissolve', 'outline', 'toon shading', 'hologram', 'water shader'. Detecte automatiquement le render pipeline (URP/HDRP/Built-in) et produit un fichier .shader pret a l'emploi avec instructions de Material."
Unity Shader Generator
Ce que fait cette skill
Genere des shaders Unity complets (fichiers .shader) adaptes au render pipeline du projet. Couvre les effets courants : dissolve, outline, toon, hologram, force field, water, triplanar, vertex displacement. Produit du code HLSL/ShaderLab propre, optimise mobile, avec instructions de setup Material.
Prerequis
- Un projet Unity existant avec un
Packages/manifest.json - Connaissance de l'effet souhaite (description textuelle ou reference visuelle)
- Acces en ecriture au dossier
Assets/
Arbre de decision
Type de shader demande ?
|
+-- Effet sur un materiau (dissolve, outline, toon, hologram) ?
| +-- --> Recettes dans references/shader-recipes.md
|
+-- Post-processing / fullscreen effect ?
| +-- URP 6.3+ --> Fullscreen Shader Graph (prefere, zero code)
| +-- URP custom --> Custom render pass avec Render Graph API
| +-- HDRP --> Custom Pass Volume
|
+-- Custom render pass (injection dans le pipeline) ?
| +-- Unity 6+ --> Render Graph API (RecordRenderGraph)
| +-- Pre-Unity 6 --> ScriptableRenderPass.Execute (deprecie)
|
+-- Modification de vertices (displacement, wind, snow) ?
+-- --> Vertex shader avec noise (voir references/hlsl-utils.md)
Demarrage rapide
- L'utilisateur decrit l'effet voulu (ex: "un shader de dissolve avec bordure lumineuse")
- Le skill detecte le render pipeline du projet
- Le skill genere le fichier
.shaderet les instructions Material
Guide etape par etape
Etape 1 : Identifier l'effet desire
Analyser la demande utilisateur. Classifier l'effet parmi les recettes connues :
- Dissolve : destruction progressive avec seuil
- Outline : contour colore autour d'un objet
- Toon/Cel-shading : rendu cartoon avec paliers de lumiere
- Hologram : effet holographique avec scanlines et transparence
- Force field : bouclier energetique avec fresnel et intersection
- Water surface : eau avec vagues et transparence
- Triplanar mapping : projection UV en world-space
- Vertex displacement : deformation de vertices par noise
- Custom : combiner les techniques ci-dessus
Pour les recettes d'effets detaillees, voir references/shader-recipes.md.
Etape 2 : Detecter le render pipeline
Utiliser Grep sur le fichier manifest.json du projet :
Grep "com.unity.render-pipelines.universal" dans Packages/manifest.json → URP
Grep "com.unity.render-pipelines.high-definition" dans Packages/manifest.json → HDRP
Aucun match → Built-in Render Pipeline
Cette detection est obligatoire avant de generer le moindre code.
Etape 3 : Choisir le format shader
Selon le pipeline detecte, utiliser le template correspondant dans references/shader-templates.md :
| Pipeline | Format | Tags cles |
|---|---|---|
| Built-in | ShaderLab + CG/HLSL | CGPROGRAM/ENDCG, surface shader |
| URP | ShaderLab + HLSL | "RenderPipeline"="UniversalPipeline", CBUFFER_START(UnityPerMaterial) |
| HDRP | ShaderLab + HLSL (HDRP includes) | Preferer Shader Graph |
Important URP : Toujours inclure CBUFFER_START(UnityPerMaterial) pour la compatibilite SRP Batcher.
Etape 4 : Generer le shader
Ecrire le fichier .shader complet dans le projet :
- Emplacement :
Assets/Shaders/ouAssets/Art/Shaders/ - Nommage :
Game_Category_EffectName.shader(ex:Game_FX_Dissolve.shader) - Inclure : Properties, SubShader, Pass(es), vertex/fragment, Fallback
Etape 5 : Instructions Material
Toujours fournir les instructions de setup Material :
- Dans Unity :
Assets > Create > Material - Assigner le shader dans le dropdown Material (chercher
Game/Category/EffectName) - Configurer les Properties exposees (textures, couleurs, seuils)
- Appliquer le Material sur le GameObject cible
Render Graph API (Unity 6+)
Unity 6 utilise le Render Graph comme backend pour URP et HDRP. Les custom render passes doivent migrer vers RecordRenderGraph (l'ancien Execute est deprecie).
Pattern et migration detailles dans references/shader-templates.md#render-graph-api.
ShadowCaster Pass URP
Pass requis pour que l'objet projette des ombres en URP. Template dans references/shader-templates.md#shadowcaster-pass.
Regles strictes
- TOUJOURS detecter le render pipeline avant de generer du code
- TOUJOURS inclure un
Fallbackshader - TOUJOURS exposer les parametres cles comme Properties (jamais de valeurs hardcodees)
- TOUJOURS fournir les instructions Material apres le shader
- TOUJOURS placer le fichier dans
Assets/Shaders/ou sous-dossier - TOUJOURS nommer le shader avec le pattern
Game/Category/EffectName - TOUJOURS inclure un pass
ShadowCasteren URP (voir section dediee) - JAMAIS melanger
CGPROGRAM/ENDCGetHLSLPROGRAM/ENDHLSLdans le meme shader - JAMAIS utiliser des surface shaders en URP/HDRP (vertex/fragment uniquement)
- JAMAIS oublier le
CBUFFER_START(UnityPerMaterial)en URP (necessaire pour SRP Batcher) - PREFERER
halfprecision pour les targets mobiles - PREFERER Shader Graph pour les artistes non-techniques (fournir une description nodale)
Skills connexes
- Le shader est pour un prototype rapide ? Utiliser
/proto(Unity Rapid Proto) pour le setup scene - Configurer le build apres les shaders ? Utiliser
/build-config(Unity Build & CI/CD Configurator) - Problemes de performance shader ? Utiliser
/unity-perf-auditpour l'audit de performance - Performance de rendu ? Utiliser
/perf-audit(Unity Perf Audit)
Troubleshooting
| Probleme | Solution |
|---|---|
| Shader rose/magenta | Erreur de compilation : verifier les includes du pipeline, les noms de fonctions, les semantiques |
| SRP Batcher incompatible | Mettre toutes les Properties dans un CBUFFER_START(UnityPerMaterial) / CBUFFER_END |
| Shader ne fonctionne pas en URP | Verifier les tags "RenderPipeline"="UniversalPipeline" et "LightMode"="UniversalForward" |
| Transparence ne s'affiche pas | Ajouter Tags { "Queue"="Transparent" }, Blend SrcAlpha OneMinusSrcAlpha, ZWrite Off |
| Ombre absente | Ajouter un pass ShadowCaster avec les includes appropriees (voir section ShadowCaster) |
| Performance faible mobile | Reduire les samples texture, passer en half, supprimer les if dynamiques |
| Textures floues / tiling incorrect | Verifier TRANSFORM_TEX(IN.uv, _MainTex) et les _ST variables dans le CBUFFER |
| Depth intersection ne fonctionne pas | S'assurer que _CameraDepthTexture est active (URP : cocher Depth Texture dans le pipeline asset) |
References
- Pour les recettes d'effets detaillees, voir
references/shader-recipes.md - Pour les fonctions utilitaires HLSL et l'optimisation mobile, voir
references/hlsl-utils.md