# Unity Shader Generator

> 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.

- Skill: `juliankerignard/unity-shader-generator` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add juliankerignard/unity-shader-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/juliankerignard/unity-shader-generator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: JulianKerignard (https://skillmd.com/u/juliankerignard)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/juliankerignard/unity-shader-generator

---


# 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

1. L'utilisateur decrit l'effet voulu (ex: "un shader de dissolve avec bordure lumineuse")
2. Le skill detecte le render pipeline du projet
3. Le skill genere le fichier `.shader` et 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/` ou `Assets/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 :
1. Dans Unity : `Assets > Create > Material`
2. Assigner le shader dans le dropdown Material (chercher `Game/Category/EffectName`)
3. Configurer les Properties exposees (textures, couleurs, seuils)
4. 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 `Fallback` shader
- **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 `ShadowCaster` en URP (voir section dediee)
- **JAMAIS** melanger `CGPROGRAM/ENDCG` et `HLSLPROGRAM/ENDHLSL` dans 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** `half` precision 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)
- 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`

