Rapport NuagesVolumetriques
Rapport Technique : Système de Nuages Volumétriques
Projet : Operation Dragoon - Beneath the Sand
Date : 7 Décembre 2025
Auteur : Ilyas Ghandaoui E4FI Depo git : https://github.com/ilyasgdo/procedural-generation-and---volumetric-cloud/tree/main/ARessourcesPlaneScene Video : https://www.youtube.com/watch?v=IKLIivcP06g
Introduction
Ce rapport détaille l’implémentation technique d’un système de rendu de nuages volumétriques en temps réel pour Unity Universal Render Pipeline. L’approche combine des techniques de graphisme avancées issues de l’industrie du jeu vidéo AAA pour produire des nuages photoréalistes à haute performance.
1. Architecture Globale du Système
Le système repose sur trois composants principaux :
- VolumetricCloudsRendererFeature.cs : Intégration dans le pipeline URP
- VolumetricClouds.shader : Shader haute qualité avec Worley Noise
- VolumetricCloudsFullscreen.shader : Version optimisée fullscreen

2. Ray Marching Volumétrique
Principe Fondamental
Le Ray Marching est une technique de rendu qui simule le comportement de la lumière dans un milieu participatif (nuages, brouillard). Contrairement à la rasterisation classique, on traverse le volume pixel par pixel.

Paramètres Clés
| Paramètre | Plage | Impact |
|---|---|---|
| Max Steps | 32-256 | Qualité vs Performance |
| Step Size | 8-15 unités | Précision vs Vitesse |
| Max Distance | 2000-10000 | Portée de rendu |
Mécanisme d’Accumulation

3. Système de Bruit Procédural Multi-Échelles
Architecture du Bruit

3.1 Fonctions de Hachage (Hash Functions)
Les fonctions de hachage transforment des coordonnées 3D en valeurs pseudo-aléatoires reproductibles.
Technique utilisée : Multiplication par nombres premiers + fonction sinus + grande constante fractionnaire

| Fonction | Entrée | Sortie | Usage |
|---|---|---|---|
| hash31 | float3 | float | Bruit de base |
| hash33 | float3 | float3 | Worley noise |
3.2 Value Noise 3D avec Interpolation Trilinéaire
Le Value Noise génère du bruit continu en interpolant des valeurs aléatoires aux coins d’un cube.

Smoothstep : Fonction de lissage polynomiale qui élimine les discontinuités visibles
- Formule :
f(t) = 3t² - 2t³ - Propriété : Dérivée nulle aux extrémités → transitions douces
3.3 Fractal Brownian Motion (FBM)
Le FBM superpose plusieurs octaves de bruit à différentes fréquences pour créer des détails multi-échelles.

| Paramètre | Valeur | Description |
|---|---|---|
| Lacunarité | 2.0 | Facteur de multiplication de fréquence |
| Persistance | 0.5 | Facteur de réduction d’amplitude |
| Octaves | 3-6 | Nombre de couches de détail |
3.4 Worley Noise (Bruit Cellulaire)
Le Worley Noise génère des motifs cellulaires utilisés pour les bords “mousseux” des nuages.

Caractéristiques :
- Génère des patterns organiques de type cellulaire
- L’inversion (1 - distance) crée des zones de haute densité aux centres des cellules
- Contribution de 15% au bruit final pour les textures de bord
4. Fonction de Densité Implicite (SDF-Like)
Modélisation de la Couche Nuageuse

Gradient de Hauteur Parabolique
Le gradient 4h(1-h) crée une distribution de densité maximale au centre de la couche :

Seuil de Couverture (Coverage Threshold)
Le seuil de couverture crée des “trous” dans les nuages en éliminant les valeurs de bruit faibles :
| Bruit | Coverage (0.45) | Densité résultante |
|---|---|---|
| 0.3 | < 0.45 | 0 (pas de nuage) |
| 0.6 | > 0.45 | ~0.27 (nuage léger) |
| 0.9 | > 0.45 | ~0.82 (nuage dense) |
5. Modèle d’Éclairage Physique
5.1 Loi de Beer-Lambert
Modèle fondamental de l’absorption lumineuse dans les milieux participatifs.
Équation : Transmittance = exp(-absorption × densité × distance)

5.2 Échantillonnage de Lumière Secondaire
Pour chaque point du ray marching, un second ray marching vers la lumière calcule l’ombre propre (self-shadowing).

5.3 Composition Couleur Finale

6. Intersection Rayon-Volume
6.1 Algorithme Ray-Box (Slab Method)
Le shader haute qualité utilise l’intersection rayon-boîte AABB (Axis-Aligned Bounding Box) :

6.2 Intersection Ray-Plane (Version Fullscreen)
La version optimisée utilise une intersection plan horizontal simple :

7. Techniques d’Anti-Aliasing et Optimisation
7.1 Jitter Temporel (Dithering Stochastique)
Technique pour éliminer le banding visible causé par l’échantillonnage discret.

Avantage : Qualité perçue équivalente à 2× plus d’échantillons sans coût supplémentaire.
7.2 Early Termination
Sortie anticipée du ray marching quand le résultat est déterminé :

7.3 Intégration avec le Depth Buffer
Les nuages respectent la géométrie de la scène via le depth buffer :

8. Animation Procédurale
Système de Vent

| Axe | Direction par défaut | Effet |
|---|---|---|
| X | 1.0 | Mouvement principal Est-Ouest |
| Y | 0.0 | Pas de dérive verticale |
| Z | 0.5 | Mouvement secondaire Nord-Sud |
Caractéristique clé : Le bruit est échantillonné à la position animée, mais le gradient de hauteur reste fixe → nuages se déplacent horizontalement sans “monter”.
9. Intégration Pipeline URP
Architecture Renderer Feature

Double Blit Pattern

10. Tableau Comparatif des Deux Shaders

| Critère | Shader Géométrique | Shader Fullscreen |
|---|---|---|
| Worley Noise | ✅ 3 boucles imbriquées | ❌ Non inclus |
| Intersection | Ray-Box AABB | Ray-Plane horizontal |
| Light Samples | 6 échantillons | 1 échantillon |
| FBM Octaves | Configurable 1-6 | Fixe à 4 |
| Usage | Qualité maximale | Vitesse optimale |
| Cas d’usage | Cinématiques, vues proches | Gameplay, grandes distances |
11. Synthèse des Techniques Avancées

Conclusion
Cette implémentation de nuages volumétriques combine 12 techniques avancées de rendu graphique :
- Ray Marching avec accumulation de transmittance
- Fonctions de Hachage pseudo-aléatoires 3D
- Value Noise 3D avec interpolation trilinéaire
- Smoothstep pour transitions continues
- Fractal Brownian Motion multi-octaves
- Worley Noise pour textures cellulaires
- Loi de Beer-Lambert pour absorption physique
- Secondary Ray Marching pour self-shadowing
- Intersection Ray-Box/Ray-Plane
- Jitter Stochastique anti-aliasing
- Early Termination pour optimisation
- Intégration URP via ScriptableRendererFeature
Le système offre un équilibre entre qualité visuelle photoréaliste et performance temps réel adaptée au jeu vidéo.