Aujourd’hui, tous les jeux 3D possèdent des ombres dynamiques. Elles sont indispensables pour évaluer correctement les distances. Comment cela fonctionne ? Voyons cela avec un cas simple, celui de Mario Kart 8 Deluxe sur Nintendo Switch.

Mario Kart utilise des ombres pré-calculés pour le décor et les objets statiques. Lorsqu’un niveau est prêt, les devs ont juste à lancer un calcul des ombres qui sera réutilisé une fois en jeu. Cela permet d’avoir des ombres réalistes à moindre coût.

Ecran d'intro de la carte Mario Kart Stadium de Mario Kart 8 Deluxe.
Pour les personnages, les objets et certains éléments dynamiques des niveaux, le jeu utilise des ombres calculées en temps-réel. On les différencie facilement des ombres précalculées grâce à leurs bordures nettes.

Différence entre avions dynamiques (1,2) et dynamiques (3,4), Aéroport Azur.

Avoir des ombres douces dynamiques ajoute un coût en performance important, c’est la raison pour laquelle la majorité des jeux de la Switch s’en passe (même Zelda: TOTK).

Pour avoir des ombres dynamiques, les jeux se basent souvent sur des Shadow Maps (SM). En plaçant une caméra où se trouve la lumière, ils créent une texture (Depth Map) contenant pour chaque pixel la distance entre la lumière et l’objet le plus proche. Cette distance leur permet, lors du rendu principal, de détecter si un pixel vu à l’écran est derrière ce que voit la lumière.

Diagram of how a shadow map works. Real-Time Shadows. Schéma du fonctionnement des shadows maps. Ombres Temps-Réels.

Mario Kart utilise comme 90% des jeux récents une évolution de la SM appelé Shadow Cascades. L’idée est de rendre plusieurs SM de tailles différentes selon la distance au joueur. Cela permet d’avoir des ombres proches précises grâce à une texture couvrant une zone restreinte.

Diagram of how shadow cascades work. Real-Time Shadows. Schéma du fonctionnement des shadows cascades. Ombres Temps-Réel.

Dans Mario Kart les ombres dynamiques sont générés en prenant uniquement en compte une directionnal light (la lumière du soleil). Elle éclaire uniformément tout le niveau.

Le défaut de cela, c’est qu’il n’y a pas d’ombre en intérieur, même s’il y a des lumières. Gérer des ombres pour plusieurs sources à la fois est trop couteux pour la Switch.

Dans certains cas, le jeu fait comme si nous étions en extérieur pour mettre en avant un élément. Grâce à ça + déformation de la route, Bowser semble émettre de la lumière dans Château de Bowser.

Pour les ombres des niveaux de nuit, MK8 a une lumière comme en plein jour. Les ombres étant surtout visibles lorsque le sol est éclairé, on a l’impression que cela vient des lampadaires. La direction de l’ombre n’est pas juste, mais le résultat est convaincant.

Les ombres dynamiques de Mario Kart reposent sur des trics et possèdent des défauts évidents. Mais les joueurs ne le remarquent pas et cela n’entache pas leur plaisir de jeu.

Les AAA next-gen se basent (presque) tous sur la même méthode de gestion des ombres. Mais ils la complètent avec d’autres méthodes plus complexes pour ajouter des détails et avoir plus de réalismes.

Si le sujet des ombres dynamiques vous intéresse, j’ai posté un article plus complet.
Vous y retrouverez les différentes méthodes utilisées dans l’industrie avec des exemples et les avantages/inconvénients de chacune. ⏬⏬