
Modularisation du Standard Effect

La dernière release d’Evergine apporte une avancée importante dans l’architecture des shaders avec le nouvel asset Library Effect. Spécialement conçu pour améliorer la lisibilité du code et faciliter sa réutilisation à grande échelle dans plusieurs projets, ce nouvel asset répond aux difficultés courantes du développement de shaders, comme les motifs répétitifs et les fonctions utilitaires.
Dans Evergine, le principal shader intégré s’appelle le Standard Effect. Par défaut, ce shader polyvalent est utilisé chaque fois qu’un modèle 3D est chargé dans une scène Evergine. Conçu pour gérer de nombreuses configurations, le Standard Effect fonctionne comme un « Uber Shader », offrant plus de 18 millions de combinaisons possibles pour créer des effets de matériaux variés. Historiquement, ce shader avait une structure monolithique de plus de deux mille lignes de code, ce qui rendait sa maintenance et sa personnalisation particulièrement complexes.
Pour relever ces défis, l’équipe Evergine a entrepris une restructuration en profondeur en découpant le Standard Effect en bibliothèques modulaires. Cette modularisation améliore nettement la maintenabilité, la clarté et la facilité de réutilisation. Le Standard Effect modularisé se compose désormais des bibliothèques suivantes :
- Structures : définit les structures de shader essentielles utilisées dans tout le StandardEffect (par exemple, LightProperties).
- Common : regroupe les directives communes du moteur et les méthodes utilitaires fréquemment utilisées (par exemple, les conversions gamma-linéaire).
- Material : inclut les méthodes essentielles à la génération de matériaux PBR (physically-based rendering).
- Lighting : contient des méthodes complètes pour calculer différents modèles d’éclairage (lumières directionnelles, ponctuelles, spot et surfaciques).
- Shadow : fournit des méthodes dédiées au calcul de la contribution des ombres des différentes sources lumineuses.
Le Standard Effect mis à jour référence désormais directement ces bibliothèques, ce qui simplifie considérablement le code des shaders et favorise de bonnes pratiques de développement.
Un aspect essentiel de cette modularisation est sa transparence du point de vue de l’utilisateur. Les développeurs peuvent continuer à utiliser le Standard Effect dans leurs projets existants sans constater le moindre changement fonctionnel. En revanche, la nouvelle organisation en bibliothèques leur permet de créer sans effort des shaders personnalisés qui s’appuient sur ces bibliothèques standardisées, pour une intégration facile avec les systèmes avancés d’éclairage et d’ombres d’Evergine.
Par ailleurs, pour donner encore plus de possibilités aux développeurs, l’équipe Evergine développe activement une bibliothèque supplémentaire dédiée aux modèles d’éclairage. Cette bibliothèque complémentaire inclut des algorithmes d’éclairage largement reconnus, conçus spécifiquement pour simplifier l’intégration de shaders personnalisés dans des environnements d’éclairage complexes. La bibliothèque d’éclairage d’origine du Standard Effect nécessitant de gérer de nombreux paramètres, cette bibliothèque dédiée offre des voies d’intégration plus simples et des stratégies d’implémentation plus claires.
Actuellement, les modèles d’éclairage proposés par cette bibliothèque complémentaire sont :
- Phong
- Blinn-Phong
- Cook-Torrance
- Oren-Nayar
Toutes ces bibliothèques modulaires, y compris la nouvelle bibliothèque de modèles d’éclairage, sont incluses dans le package principal Evergine.Core et donc disponibles dans tout projet Evergine standard.
Créer des shaders personnalisés avec prise en charge de l’éclairage et des ombres
Grâce aux nouvelles bibliothèques de shaders modulaires, développer des shaders personnalisés intégrant un éclairage et des ombres avancés devient beaucoup plus simple. Pour créer un shader personnalisé intégrant ces fonctionnalités, suivez ces étapes :
Inclure les bibliothèques essentielles
Intégrez les bibliothèques Lighting Models et Shadow dans votre shader.
![]()
Ajouter les ressources d’ombres et d’éclairage
Ajoutez les ressources nécessaires à votre resource layout :

Implémenter la passe ShadowMap
Incluez une passe dédiée pour rendre la géométrie dans la texture de la shadow map :

Définir les structures Surface et Pixel
Remplissez les structures Surface et Pixel à l’aide des méthodes fournies par la bibliothèque d’ombres :

Choisir et appliquer un modèle d’éclairage
Choisissez l’un des modèles d’éclairage disponibles pour calculer la couleur finale :

Calculer les termes d’ombre
Appliquez les calculs d’ombres à l’aide de la bibliothèque Shadow :

Voici un exemple illustrant le résultat final :

Vous pouvez consulter l’implémentation complète du shader personnalisé [ici].
L’équipe Evergine accorde une grande importance à vos retours sur le nouveau système de shaders modulaire et a hâte de découvrir les shaders créatifs et innovants que vous développerez grâce à ces nouvelles capacités.
