Les environnements et les effets post-rendu

Godot 3 fournit une ressource Environnement repensée, ainsi qu'un tout nouveau système de post-traitement avec de nombreux effets disponibles directement.

Environnement

La ressource Environnement stocke toutes les informations nécessaires au contrôle de l'environnement de rendu. Cela comprend le ciel, l'éclairage ambiant, la cartographie des tons, les effets et les réglages. Par elle-même, elle ne fait rien, mais elle devient active une fois utilisée dans l'un des endroits suivants par ordre de priorité :

Nœud Camera

Un environnement peut être réglé sur une caméra. Il aura la priorité sur tout autre réglage.

../../_images/environment_camera.png

C'est surtout utile lorsque vous voulez remplacer un environnement existant, mais en général c'est une meilleure idée d'utiliser l'option ci-dessous.

Nœud WorldEnvironnement

Le nœud WorldEnvironment peut être ajouté à n'importe quelle scène, mais un seul peut exister par arbre de scène actif. Si vous en ajoutez plus d'un, vous recevrez un avertissement.

../../_images/environment_world.png

Tout environnement ajouté a une priorité plus élevée que l'environnement par défaut (expliqué ci-dessous). Cela signifie qu'il peut être remplacé par scène, ce qui le rend très utile.

Environnement par défaut

Un environnement par défaut peut être défini, ce qui agit comme une solution de repli lorsque aucun environnement n'a été défini sur une caméra ou WorldEnvironment. Il vous suffit de vous rendre dans Paramètres du projet -> Rendu -> Environnement :

../../_images/environment_default.png

Les nouveaux projets créés à partir du Gestionnaire de projets sont livrés avec un environnement par défaut (default_env.tres). S'il est nécessaire d'en créer un, sauvegardez-le sur disque avant de le référencer ici.

Options d'environnement

Vous trouverez ci-dessous une description détaillée de toutes les options d'environnement et de la façon dont elles doivent être utilisées.

Arrière-plan

La section Arrière-plan contient les paramètres sur la façon de remplir l'arrière-plan (parties de l'écran où les objets n'ont pas été dessinés). Dans Godot 3.0, l'arrière-plan ne sert pas seulement à afficher une image ou une couleur, il peut aussi changer la façon dont les objets sont affectés par la lumière ambiante et réfléchie.

../../_images/environment_background1.png

Il y a plusieurs façons de régler l'arrière-plan :

  • Clear Color utilise la couleur claire par défaut définie par le projet. L'arrière-plan sera d'une couleur constante.

  • Couleur personnalisée comme Clear Color, mais avec une valeur de couleur personnalisée.

  • Sky vous permet de définir un ciel panoramique (une texture de sphère de 360 degrés) ou un ciel procédural (un ciel simple avec un dégradé et un soleil en option). Les objets le reflètent et absorbent la lumière ambiante.

  • Couleur+Ciel vous permet de définir un ciel (comme ci-dessus), mais utilise une valeur de couleur constante pour dessiner le fond. Le ciel ne sera utilisé que pour la réflexion et la lumière ambiante.

Lumière ambiante

L'ambiante (tel que défini ici) est un type de lumière qui affecte chaque pièce de la géométrie avec la même intensité. Elle est globale et indépendante des lumières qui pourraient être ajoutées à la scène.

Il existe deux types de lumière ambiante : la Couleur ambiante (qui est une couleur constante multipliée par l'albédo du matériau) et celle obtenue à partir du Sky (comme décrit précédemment, mais un ciel doit être défini comme fond pour que cela soit activé).

../../_images/environment_ambient.png

Lorsqu'un Sky est défini comme arrière-plan, il est possible de fusionner la couleur ambiante et le ciel à l'aide du paramètre Sky Contribution (cette valeur est 1.0 par défaut par commodité, donc seul le ciel affecte les objets).

Voici une comparaison montrant comment différentes lumières ambiantes affectent la scène :

../../_images/environment_ambient2.png

Enfin, il y a un paramètre Énergie, qui est un facteur multiplicatif, utile lorsque l'on travaille en HDR.

En général, la lumière ambiante ne devrait être utilisée que pour des scènes simples, espaces extérieurs, ou pour des raisons de performance (la lumière ambiante est peu cher), car cela ne donne pas le meilleur rendu. Le mieux est de générer la lumière ambiante à partir de ReflectionProbe ou de GIProbe, cela donnera un rendu plus fidèle de la propagation de la lumière. Ci-dessous voici une comparaison en terme de qualité entre la lumière ambiante plate (flat) et GIProbe :

../../_images/environment_ambient_comparison.png

En utilisant une des méthodes décrites ci-dessus, les objets reçoivent une lumière ambiante constante remplacé par la lumière ambiante des probes.

Brouillard

Le brouillard, comme dans la vie réelle, fait disparaître des objets éloignés dans une couleur uniforme. L'effet physique est en fait assez complexe, mais Godot fournit une bonne approximation. Il y a deux sortes de brouillard dans Godot :

  • Depth Fog: Celui-ci est appliqué en fonction de la distance de la caméra.

  • Height Fog: Celui-ci est appliqué à tout objet situé au-dessous (ou au-dessus) d'une certaine hauteur, quelle que soit la distance qui le sépare de la caméra.

../../_images/environment_fog_depth_height.png

Ces deux types de brouillard peuvent avoir leur courbe modifiée, ce qui rend leur transition plus ou moins nette.

Deux propriétés peuvent être modifiées pour rendre l’effet de brouillard plus intéressant :

La première est Sun amount, qui utilise la propriété Sun Color du brouillard. En regardant vers une lumière directionnelle (généralement un soleil), la couleur du brouillard sera changée, simulant la lumière du soleil passant à travers le brouillard.

La seconde est transmission Enabled qui simule une transmittance de la lumière plus réaliste. Dans la pratique, cela rend la lumière plus visible dans le brouillard.

../../_images/environment_fog_transmission.png

Tonemap

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Sélectionne la courbe de correspondance tonale qui sera appliquée à la scène, à partir d’une liste de courbes standard utilisées dans l’industrie du film et du jeu vidéo. L'application de la courbe peut rendre les zones claires et sombres plus homogènes tout en évitant le clipping des lumières vives.

Les options de la correspondance tonale sont :

  • Mode: Le mode de correspondance tonale à utiliser.

    • Linéaire : Le mode de correspondance tonale par défaut . C'est l'opérateur le plus simple et rapide mais fait apparaître ternes les lumières vives, avec un clipping visible des couleurs en résultant.

    • Reinhardt : Effectue une variation de la couleur des pixels avec la formule suivante : color = color / (1 + color). Cela évite le clipping des lumières vives mais l'image en résultant peut paraître un peu terne.

    • Filmique: Évite le clipping des lumières vives et donne une image qui paraît plus vive que Reinhardt.

    • Adapté ACES: Correspondance tonale Academy Color Encoding System. L'Adaptaté ACES est légèrement plus coûteux que les autres options mais gère l'éclairage de manière plus réaliste en le désaturant au fur et a mesure qu'il devient plus vif. L'ACES donne généralement des résultats plus contrasté en comparaison de Reinhardt ou Filmique. L'ACES est l'option recommandée si l'on souahite des visuels photoréalistes.

    • ACES: Déprécié (sera retiré dans Godot 4.0). fonctionne comme ACES, mais ne désature pas la lumière lorsqu'elle s'intensifie (ce qui est moins réaliste). Il est recommandé d'utiliser Adapté ACES au lieu d'ACES.

  • Exposition: Correspondance tonale qui simule la quantité de lumière reçue au fil du temps (par défaut : 1.0). Des valeurs plus élevées donnent une apparence générale plus lumineuse. Si la scène paraît trop sombre après l'application d'un opérateur ou d'un changement de la balance des blancs, essayez d'augmenter légèrement cette valeur.

  • Blanc : Valeur de blanc de la correspondance tonale, indique où se trouve le blanc sur l’échelle (par défaut : 1.0). Pour un éclairage photo-réaliste, des valeurs entre 6.0 et 8.0 sont recommandées. Des valeurs plus hautes donnent des lumières moins éclatantes mais la scène apparaîtra dans l’ensemble légèrement plus sombre.

Exposition automatique (HDR)

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Même si, dans la plupart des cas, l’éclairage et la texturation sont fortement contrôlés par les artistes, Godot permet une mise en œuvre simple du HDR (high dynamic range) avec le mécanisme d’exposition automatique. Ceci est généralement utilisé dans un souci de réalisme lors de la combinaison d'espace intérieures faiblement éclairé et d'extérieur. L’exposition automatique simule la caméra (ou l’œil) qui s'efforce de s’adapter entre les zones clairs et sombres et leurs différentes quantités de lumière.

../../_images/environment_hdr_autoexp.gif

La manière la plus simple d'utiliser l'exposition automatique et de s'assurer que les éclairages extérieurs ( ou les autres puissants éclairages ) aient une énergie au delà de 1.0. Ceci est obtenu en manipulant leur multiplicateur Energy ( sur la lumière elle-même ). Pour le rendre cohérent, Sky nécessite généralement aussi le multiplicateur d'énergie, afin de correspondre aux lumières directionnelles. Habituellement, des valeurs entre 3.0 et 6.0 sont suffisantes pour simuler un environnement intérieur-extérieur.

En combinant Auto Exposure et le post-traitement Glow (plus d'informations ci-dessous), les pixels qui passent au-dessus de la tonemap White saignent dans le glow buffer, créant ainsi l'effet de bloom typique en photographie.

../../_images/environment_hdr_bloom.png

Les valeurs contrôlables par l'utilisateur de la section Exposition automatique sont définies par défaut, mais vous pouvez toujours les modifier :

../../_images/environment_hdr.png
  • Echelle : Valeur pour mettre l'éclairage à l'échelle. Des valeurs plus lumineuses produisent des images plus lumineuses, des valeurs plus petites produisent des images plus sombres.

  • Min Luma : luminance minimale que l'exposition automatique visera pour ajuster. La luminance est la moyenne de la lumière dans tous les pixels de l'écran.

  • Max Luma : Luminance maximale que l'exposition automatique visera pour ajuster.

  • Vitesse : Vitesse à laquelle la luminance se corrige d'elle-même. Plus la valeur est élevée, plus la correction est rapide.

Effets de mi et post-traitement

Un grand nombre d'effets de milieu et de post-traitement largement utilisés, sont pris en charge dans l'Environment.

Screen-Space Reflections (SSR)

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Bien que Godot supporte trois sources de données de réflexion (Sky, ReflectionProbe et GIProbe), elles peuvent ne pas fournir suffisamment de détails pour toutes les situations. Les scénarios où les Screen Space Reflections ont le plus de sens sont ceux où les objets sont en contact les uns avec les autres (objet au-dessus du sol, au-dessus d'une table, flottant sur l'eau, etc).

../../_images/environment_ssr.png

L'autre avantage (même si activée uniquement au minimum), est qu'il fonctionne en temps réel (alors que les autres types de réflexions sont pré-calculées). Cela peut être utilisé pour faire des personnages, des voitures, etc. réfléchir sur les surfaces environnantes lors du déplacement.

Quelques paramètres contrôlés par l'utilisateur sont disponibles pour mieux ajuster la technique :

  • Max Steps détermine la longueur de la réflexion. Plus ce nombre est élevé, plus c'est coûteux à calculer.

  • Fade In permet d'ajuster la courbe de fondu enchaîné, ce qui est utile pour rendre la surface de contact plus douce.

  • Fade Out permet d'ajuster la courbe de fondu enchaîné, de sorte que la limite de pas s'estompe en douceur.

  • Depth Tolerance peut être utilisée pour la tolérance d'impact des rayons dans l'espace de l'écran aux écarts. Plus la valeur est grande, plus il y aura d'écarts ignorés.

  • L'option Rugosité permet d'appliquer un flou de l'espace-écran pour obtenir une approximation de la rugosité des objets présentant cette caractéristique de matériau.

Gardez à l'esprit que les réflexions de l'espace écran ne fonctionnent que pour une géométrie opaque réfléchissante. Car ils ne sont pas écrits dans le tampon de profondeur, les matériaux transparents ne seront pas être réfléchis. Cela s'applique également aux shaders qui utilisent SCREEN_TEXTURE ou DEPTH_TEXTURE.

Screen-Space Ambient Occlusion (SSAO)

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Comme mentionné dans la section Ambiant, les zones que la lumière des nœuds lumineux n'atteint pas (soit parce qu'elle est à l'extérieur du rayon, soit parce qu'elle est dans l'ombre) sont éclairées par la lumière ambiante. Godot peut simuler cela en utilisant GIProbe, ReflectionProbe, le ciel ou une couleur ambiante constante. Le problème, cependant, c'est que toutes les méthodes proposées précédemment agissent davantage à plus grande échelle (grandes régions) plutôt qu'au niveau de la géométrie plus petite.

La couleur ambiante constante et le ciel sont les mêmes partout, tandis que les sondes GI et Reflection ont plus de détails locaux, mais pas assez pour simuler des situations où la lumière n'est pas capable de remplir d'éléments creux ou concaves.

Cela peut être simulé à l'aide de Screen Space Ambient Occlusion. Comme vous pouvez le voir dans l'image ci-dessous, son but est de faire en sorte que les zones concaves soient plus sombres, simulant un chemin d'entrer de la lumière étroit :

../../_images/environment_ssao.png

C'est une erreur courante d'activer cet effet, d'allumer une lumière et de ne pas être capable de l'apprécier. En effet, SSAO n'agit que sur la lumière ambiante et non sur la lumière directe.

C'est pourquoi, dans l'image ci-dessus, l'effet est moins visible sous la lumière directe (à gauche). Si vous voulez forcer SSAO à travailler aussi avec la lumière directe, utilisez le paramètre Light Affect (même si ce n'est pas correct, certains artistes aiment son aspect).

SSAO est plus esthétique lorsqu'il est combiné avec une véritable source de lumière indirecte, comme GIProbe :

../../_images/environment_ssao2.png

Le réglage de SSAO est possible avec plusieurs paramètres :

../../_images/environment_ssao_parameters.png
  • Radius/Intensity : Pour contrôler le rayon ou l'intensité de l'occlusion, ces deux paramètres sont disponibles. Le rayon est en unités mondiales (métriques).

  • Radius2/Intensity2 : Un rayon/intensité secondaire peut être utilisé. La combinaison d'un AO à grand et à petit rayon fonctionne généralement bien.

  • Bias : Ceci peut être modifié pour résoudre l'auto-occlusion, bien que la valeur par défaut fonctionne généralement assez bien.

  • Light Affect : SSAO n'affecte que la lumière ambiante, mais l'augmentation de ce curseur peut également affecter la lumière directe. Certains artistes préfèrent cet effet.

  • Ao Channel Affect : Si une valeur de zéro est utilisée, seule la texture AO du matériau sera utilisée pour l'occlusion ambiante ; SSAO ne sera pas appliqué. Les valeurs supérieures à 0 multiplient la texture AO par l'effet SSAO à des degrés divers. Ceci n'affecte pas les matériaux sans texture AO.

  • Quality : Selon la qualité, SSAO prélèvera plus d'échantillons sur une sphère pour chaque pixel. La haute qualité ne fonctionne bien que sur les GPU modernes.

  • Blur : Type de noyau flou utilisé. Le noyau 1x1 est un simple flou qui préserve mieux les détails locaux, mais n'est pas aussi efficace (fonctionne généralement mieux avec le réglage de haute qualité ci-dessus), tandis que 3x3 adoucira mieux l'image (avec un peu d'effet dithering-like), mais ne conserve pas les détails locaux ainsi.

  • Edge Sharpness : Ceci peut être utilisé pour préserver la netteté des arêtes (évite les zones sans AO sur les plis).

Profondeur de champ / Flou lointain

Cet effet simule la distance focale sur les appareils photo haut de gamme. Il brouille les objets derrière une plage donnée. Il a une Distance initiale avec une région de Transition (en unités mondiales) :

../../_images/environment_dof_far.png

Le paramètre Amount contrôle la quantité de flou. Pour les flous plus importants, il peut être nécessaire d'ajuster la Quality afin d'éviter les artefacts.

Profondeur de champ / flou de proximité

Cet effet simule la distance focale sur les appareils photo haut de gamme. Il brouille les objets à proximité de l'appareil photo (agit dans la direction opposée jusqu'au flou). Il a une Distance initiale avec une région de Transition (en unités mondiales) :

../../_images/environment_dof_near.png

Le paramètre Amount contrôle la quantité de flou. Pour les flous plus importants, il peut être nécessaire d'ajuster la Quality afin d'éviter les artefacts.

Il est courant d'utiliser les deux flous ensemble pour concentrer l'attention du spectateur sur un objet donné :

../../_images/environment_mixed_blur.png

Luisance

En photographie et en film, lorsque la quantité de lumière dépasse le maximum supporté par le support (qu'il soit analogique ou numérique), elle se dirige généralement vers des zones plus sombres de l'image. Ceci est simulé dans Godot avec l'effet Glow.

../../_images/environment_glow1.png

Par défaut, même si l'effet est activé, il sera faible ou invisible. L'une ou l'autre de ces deux conditions doit se produire pour qu'il soit vraiment visible :

    1. La lumière dans un pixel dépasse le seuil HDR (où 0 est toute la lumière le dépasse, et 1.0 est la lumière au-dessus de la valeur de tonemapper White). Normalement, on s'attend à ce que cette valeur soit de 1,0, mais elle peut être abaissée pour permettre à plus de lumière de saigner. Il existe également un paramètre supplémentaire, HDR Scale, qui permet de mettre à l'échelle (éclaircir ou assombrir) la lumière qui dépasse le seuil.

../../_images/environment_glow_threshold.png
    1. L'effet Bloom a une valeur supérieure à 0 et, à mesure qu'il augmente, il envoie l'ensemble de l'écran au processeur de luminescence à des valeurs plus élevées.

../../_images/environment_glow_bloom.png

Dans les deux cas, la lumière commencera à saigner hors des zones les plus claires.

Une fois que la lueur est visible, elle peut être contrôlée avec quelques paramètres supplémentaires :

  • Intensity est une échelle globale de l'effet, elle peut être renforcée ou affaiblie (0,0 l'élimine).

  • Strength est la force avec laquelle le noyau du filtre gaussien est traité. Des valeurs plus élevées rendent le filtre saturé et le font se dilater vers l'extérieur. En général, il n'est pas nécessaire de changer cela, car la taille peut être ajustée plus efficacement avec les Niveaux.

Le Blend Mode de l'effet peut également être modifié :

  • Additive est le plus fort, car il ajoute seulement l'effet de lueur sur l'image sans aucun mélange. En général, il est trop fort pour être utilisé, mais il peut donner de bons résultats avec un Bloom de faible intensité (il produit un effet de rêve).

  • Écran garantit que l'éclat n'est jamais plus brillant que lui-même et il fonctionne très bien en tant qu'écran polyvalent.

  • Softlight est le mode par défaut et le plus faible, produisant seulement une subtile perturbation des couleurs autour des objets. Ce mode fonctionne mieux sur les scènes sombres.

  • Replace peut être utilisé pour brouiller l'ensemble de l'écran ou déboguer l'effet. Il ne montre que l'effet de lueur sans l'image ci-dessous.

Pour modifier la taille et la forme de l'effet lumineux, Godot propose Levels. Les petits niveaux sont des lueurs fortes qui apparaissent autour des objets, tandis que les grands niveaux sont des lueurs floues qui couvrent l'ensemble de l'écran :

../../_images/environment_glow_layers.png

La vraie force de ce système, cependant, est de combiner les niveaux pour créer des motifs lumineux plus intéressants :

../../_images/environment_glow_layers2.png

Enfin, comme les couches les plus élevées sont créées en étirant de petites images floues, il est possible que des blocs soit visible. L'activation de l'option Bicubic Upscaling permet d'éviter ce problème, à un coût de performance minimal. Notez que cela n'est efficace que si vous utilisez le backend GLES3.

../../_images/environment_glow_bicubic.png

Ajustements

A la fin du traitement, Godot offre la possibilité d'effectuer quelques réglages standard d'image.

../../_images/environment_adjustments.png

La première est la possibilité de modifier la luminosité, le contraste et la saturation typiques :

../../_images/environment_adjustments_bcs.png

La seconde est de fournir un dégradé de correction de couleur. Un dégradé noir à blanc régulier comme celui qui suit ne produira aucun effet :

../../_images/environment_adjusments_default_gradient.png

Mais la création de canaux personnalisés permettra de mapper chaque canal à une couleur différente :

../../_images/environment_adjusments_custom_gradient.png