En bref : une forêt dense convaincante est un combat de boss en performance : des milliers d'arbres high-poly, de la transparence en couches, et des instances s'étirant jusqu'à l'horizon. Tu le gagnes avec une chaîne de LOD disciplinée qui finit en impostors (billboards face caméra qui simulent un arbre 3D sous n'importe quel angle), un instancing et un culling agressifs, et quelques astuces de shading pour que les arbres lointains bon marché ne se trahissent pas. Cet article parcourt toute la chaîne du mesh complet au billboard, l'astuce de l'impostor octaédrique, et comment empêcher une forêt fortement optimisée de paraître morte.
Chaque arbre ici est à une distance différente de la caméra, donc chaque arbre devrait être un coût différent. L'art d'une forêt bon marché est de dépenser des polygones seulement sur ceux tout près et de simuler le reste de façon convaincante.
L'idée centrale : payer par distance
Un arbre à 5 mètres et un à 500 mètres ne devraient pas coûter la même chose. Une chaîne de LOD dépense le détail complet de près et des représentations progressivement moins chères avec la distance, finissant en un billboard plat, pour que le coût total reste plat à mesure que la forêt grandit.
Tout le jeu est de refuser de payer le plein prix pour des arbres que la caméra résout à peine. De près, un arbre est un mesh complet avec des cartes de feuilles individuelles ; au loin, c'est une poignée de pixels qu'une image plate reproduit parfaitement. Une chaîne de LOD (level-of-detail) formalise ça : plusieurs versions du même arbre à coût décroissant, échangées par taille à l'écran, pour qu'une forêt de dix mille arbres coûte à peu près ce qui est visible en détail plutôt que la somme de chaque arbre en pleine qualité. Sans elle, la densité fait plonger ton temps de frame linéairement dans le sol ; avec elle, tu peux pousser le compte d'arbres bien plus haut pour le même budget.
La chaîne de LOD, étape par étape
LOD0 mesh complet avec cartes de feuilles (près) ; LOD1–2 géométrie réduite et feuilles simplifiées (milieu) ; LOD3 quelques cartes ou une seule carte ; LOD final un impostor/billboard (loin). Chaque étape divise à peu près le coût par deux tandis que l'échange reste invisible.
Une chaîne de LOD de feuillage typique tourne à peu près ainsi : LOD0, le mesh en plein détail avec toutes ses cartes de feuilles, pour les arbres juste à côté du joueur ; LOD1–LOD2, géométrie de tronc réduite et cartes de feuilles moins nombreuses et plus grandes, pour le plan moyen ; LOD3, un cluster de cartes drastiquement simplifié ; et un impostor final (essentiellement une image plate) pour tout le lointain. Le métier est dans les distances de transition et le blend, pour que l'échange ne poppe pas. Les transitions de LOD ditherées ou en cross-fade cachent le changement ; un pop dur à la mauvaise distance est le signe qui casse l'illusion. Règle les distances contre ta caméra réelle, pas les défauts.
Impostors : simuler la 3D sous n'importe quel angle
Un impostor (impostor octaédrique) pré-rend l'arbre depuis des dizaines d'angles dans un atlas, puis montre la vue capturée la plus proche comme un billboard. Contrairement à un billboard plat, il paraît correct à mesure que la caméra bouge autour de lui, bon marché mais 3D-ish.
L'extrémité lointaine de la chaîne est où vivent les plus grosses économies, et l'impostor est l'astuce maligne qui les rend acceptables. Un billboard simple (une image plate qui se tourne face à la caméra) paraît bien de face, mais s'aplatit et glisse de façon peu naturelle quand tu bouges. Un impostor octaédrique résout ça en pré-rendant l'arbre depuis de nombreux points de vue disposés autour d'une sphère, en les empaquetant dans un atlas de texture, et en affichant l'angle capturé le plus proche de la direction actuelle de la caméra (en blendant entre les quelques plus proches). Le résultat se lit comme un vrai arbre 3D sous n'importe quel angle à une fraction du coût, ce qui est pourquoi les impostors sont l'épine dorsale des forêts lointaines crédibles. Ils sont bakés une fois et coûtent presque rien à dessiner.
La couche de sol multiplie vite le compte d'instances. Le sous-bois a besoin de la même discipline que les arbres : instancie-le, LOD-le, et culle-le dur ; une fougère à 80 mètres ne devrait pas dessiner du tout.
Instancing et culling
Dessine les arbres répétés comme instances pour que des milliers coûtent peu de draw calls, et culle agressivement : frustum-culle ce qui est hors écran et distance-culle le petit truc. L'instancing corrige le coût CPU ; le culling t'empêche de payer pour l'invisible.
Même avec des LODs parfaits, soumettre dix mille arbres comme objets individuels enterre le CPU. L'instancing effondre toutes les copies d'un arbre en une poignée de draw calls, ce qui est non négociable pour une vraie forêt, et c'est exactement ce que te donne le baking d'un scatter en instances natives du moteur. En plus, culle sans pitié : le frustum culling largue tout hors de la vue, et le distance culling retire le clutter de sol et le petit feuillage trop minuscule pour être remarqué au-delà d'une certaine portée. L'herbe et le sous-bois surtout devraient avoir des distances de cull dures et proches, car ils multiplient le compte d'instances plus vite que les arbres. Un workflow qui peint la densité puis bake en meshes instanciés (comme celui de Numivo) remet au moteur exactement la forme batchée et cullable dont une forêt dense a besoin.
Garder la forêt bon marché vivante
Une optimisation lourde peut faire paraître une forêt statique et morte : contre-la avec un vent subtil sur les LODs proches, une variation de couleur et d'échelle entre instances, et un shading qui empêche les impostors lointains de se lire comme du carton plat.
Le risque de toute cette efficacité est une forêt qui tourne super et se sent sans vie. Trois touches bon marché la ramènent : vent, animation de vertex sur les LODs proches pour que le feuillage proche bouge, même si les impostors lointains restent immobiles (personne ne remarque un arbre statique à 300 mètres). Variation, randomise échelle, rotation et une teinte par instance pour que l'œil n'attrape pas la répétition ; des arbres identiques sont le signe du copier-coller. Et soin du shading sur les impostors, bake leur éclairage pour qu'ils ne s'aplatissent pas en carton évident quand l'angle du soleil change. Dépense le temps de frame que tu as économisé sur ces détails de près, où le joueur regarde vraiment, et la forêt optimisée se sent tout aussi vivante qu'une non optimisée, tout en tournant plusieurs fois plus vite.
Chiffres de terrain à voler
- Principe de coût : payer par distance (un arbre lointain ne doit pas coûter comme un proche)
- Chaîne de LOD : mesh complet → réduit → cluster de cartes → impostor, chacun ~divisant le coût par deux
- Impostor = angles pré-rendus dans un atlas → billboard 3D-ish sous n'importe quelle vue
- Instancie les répétitions (peu de draw calls) + culle dur le petit feuillage lointain
- Garde-la vivante : vent LOD-proche + variation par instance + shading d'impostor baké
Mini-FAQ
Billboard vs impostor : quelle est la différence ? Un billboard est une image plate qui fait face à la caméra et s'aplatit quand tu tournes autour. Un impostor stocke de nombreux angles et montre le bon, donc il tient en 3D. Pour tout ce que le joueur orbite ou dépasse, utilise des impostors ; les billboards simples ne vont que pour des toiles de fond vraiment lointaines et statiques.
Combien de niveaux de LOD un arbre a-t-il besoin ? Communément trois à quatre plus un impostor. Plus n'est pas automatiquement mieux : chaque niveau est un coût de création et de mémoire. Assez pour faire de chaque échange un petit pas imperceptible est la cible, pas un maximum.
Nanite rend-il ça obsolète ? Il change le côté géométrie (Nanite gère le détail de mesh dense sans LODs traditionnels), mais la transparence (cartes de feuilles), la discipline d'instancing et le culling comptent toujours, et les impostors restent utiles pour la distance lointaine. Les principes survivent ; l'outillage se déplace.
Qu'est-ce qui tue la performance de forêt le plus souvent ? L'overdraw de cartes de feuilles transparentes qui se chevauchent, et le feuillage de sol non-cullé. Resserre les cartes de feuilles, culle le sous-bois de près, et instancie tout : ce trio récupère la majeure partie du budget avant même que tu touches les meshes d'arbres.
Une forêt dense est une des choses les plus punitives à rendre et une des plus gratifiantes à réussir. Bâtis la chaîne de LOD, laisse les impostors porter la distance, instancie et culle sans merci, et dépense tes économies sur le vent et la variation de près, et tu auras une forêt qui s'étire jusqu'à l'horizon et tient son framerate.

