Environnement et post-traitement

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

Sélectionne la courbe de tone-mapping qui sera appliquée à la scène, à partir d’une courte liste de courbes standard utilisées dans l’industrie du film et du jeu. Le tone-mapping peut rendre les zones claires et sombres plus homogènes, même si le résultat n’est pas très bon. Les options de tone-mapping sont :

  • Mode: Le mode de Tone mapping , peut être Linear, Reindhart, Filmic, or Aces.
  • Exposure: Tone mapping exposure qui simule la quantité de lumière reçue au fil du temps.
  • White: Tone Mapping blanc, qui simule où blanc est situé dans l’échelle (par défaut 1,0).

Auto Exposure (HDR)

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 ) aie une énergie au delà de 1.0. Ceci est obtenu en manipulant leur multiplicateur Energy ( sur la lumière elle-même ). Pour un tout homogène, Sky nécessite aussi souvent le multiplicateur d’énergie, afin d’être en harmonie avec les lumières directionnelles. Habituellement, des valeurs entre 3.0 et 6.0 sont suffisantes pour émuler un environnement intérieur-extérieur.

By combining Auto Exposure with Glow post processing (more on that below), pixels that go over the tonemap White will bleed to the glow buffer, creating the typical bloom effect in photography.

../../_images/environment_hdr_bloom.png

The user-controllable values in the Auto Exposure section come with sensible defaults, but you can still tweak them:

../../_images/environment_hdr.png
  • Scale: Value to scale the lighting. Brighter values produce brighter images, smaller ones produce darker ones.
  • Min Luma: Minimum luminance that auto exposure will aim to adjust for. Luminance is the average of the light in all the pixels of the screen.
  • Max Luma: Maximum luminance that auto exposure will aim to adjust for.
  • Speed: Speed at which luminance corrects itself. The higher the value, the faster correction happens.

Effets de mi et post-traitement

A large amount of widely-used mid- and post-processing effects are supported in the Environment.

Screen-Space Reflections (SSR)

While Godot supports three sources of reflection data (Sky, ReflectionProbe, and GIProbe), they may not provide enough detail for all situations. Scenarios where Screen Space Reflections make the most sense are when objects are in contact with each other (object over floor, over a table, floating on water, etc).

../../_images/environment_ssr.png

The other advantage (even if only enabled to a minimum), is that it works in real-time (while the other types of reflections are pre-computed). This can be used to make characters, cars, etc. reflect on surrounding surfaces when moving around.

A few user-controlled parameters are available to better tweak the technique:

  • Max Steps determines the length of the reflection. The bigger this number, the more costly it is to compute.
  • Fade In allows adjusting the fade-in curve, which is useful to make the contact area softer.
  • Fade Out allows adjusting the fade-out curve, so the step limit fades out softly.
  • Depth Tolerance can be used for screen-space-ray hit tolerance to gaps. The bigger the value, the more gaps will be ignored.
  • Roughness will apply a screen-space blur to approximate roughness in objects with this material characteristic.

Keep in mind that screen-space-reflections only work for reflecting opaque geometry. Transparent objects can’t be reflected.

Screen-Space Ambient Occlusion (SSAO)

As mentioned in the Ambient section, areas where light from light nodes does not reach (either because it’s outside the radius or shadowed) are lit with ambient light. Godot can simulate this using GIProbe, ReflectionProbe, the Sky, or a constant ambient color. The problem, however, is that all the methods proposed previously act more on a larger scale (large regions) than at the smaller geometry level.

Constant ambient color and Sky are the same everywhere, while GI and Reflection probes have more local detail, but not enough to simulate situations where light is not able to fill inside hollow or concave features.

This can be simulated with Screen Space Ambient Occlusion. As you can see in the image below, its purpose is to make sure concave areas are darker, simulating a narrower path for the light to enter:

../../_images/environment_ssao.png

It is a common mistake to enable this effect, turn on a light, and not be able to appreciate it. This is because SSAO only acts on ambient light, not direct light.

This is why, in the image above, the effect is less noticeable under the direct light (on the left). If you want to force SSAO to work with direct light too, use the Light Affect parameter (even though this is not correct, some artists like how it looks).

SSAO looks best when combined with a real source of indirect light, like GIProbe:

../../_images/environment_ssao2.png

Tweaking SSAO is possible with several parameters:

../../_images/environment_ssao_parameters.png
  • Radius/Intensity: To control the radius or intensity of the occlusion, these two parameters are available. Radius is in world (Metric) units.
  • Radius2/Intensity2: A Secondary radius/intensity can be used. Combining a large and a small radius AO generally works well.
  • Bias: This can be tweaked to solve self occlusion, though the default generally works well enough.
  • Light Affect: SSAO only affects ambient light, but increasing this slider can make it also affect direct light. Some artists prefer this effect.
  • Quality: Depending on quality, SSAO will take more samples over a sphere for every pixel. High quality only works well on modern GPUs.
  • Blur: Type of blur kernel used. The 1x1 kernel is a simple blur that preserves local detail better, but is not as efficient (generally works better with the high quality setting above), while 3x3 will soften the image better (with a bit of dithering-like effect), but does not preserve local detail as well.
  • Edge Sharpness: This can be used to preserve the sharpness of edges (avoids areas without AO on creases).

Depth of Field / Far Blur

This effect simulates focal distance on high end cameras. It blurs objects behind a given range. It has an initial Distance with a Transition region (in world units):

../../_images/environment_dof_far.png

The Amount parameter controls the amount of blur. For larger blurs, tweaking the Quality may be needed in order to avoid artifacts.

Depth of Field / Near Blur

This effect simulates focal distance on high end cameras. It blurs objects close to the camera (acts in the opposite direction as far blur). It has an initial Distance with a Transition region (in world units):

../../_images/environment_dof_near.png

The Amount parameter controls the amount of blur. For larger blurs, tweaking the Quality may be needed in order to avoid artifacts.

It is common to use both blurs together to focus the viewer’s attention on a given object:

../../_images/environment_mixed_blur.png

Glow

In photography and film, when light amount exceeds the maximum supported by the media (be it analog or digital), it generally bleeds outwards to darker regions of the image. This is simulated in Godot with the Glow effect.

../../_images/environment_glow1.png

By default, even if the effect is enabled, it will be weak or invisible. One of two conditions need to happen for it to actually show:

    1. The light in a pixel surpasses the HDR Threshold (where 0 is all light surpasses it, and 1.0 is light over the tonemapper White value). Normally, this value is expected to be at 1.0, but it can be lowered to allow more light to bleed. There is also an extra parameter, HDR Scale, that allows scaling (making brighter or darker) the light surpassing the threshold.
../../_images/environment_glow_threshold.png
    1. The Bloom effect has a value set greater than 0. As it increases, it sends the whole screen to the glow processor at higher amounts.
../../_images/environment_glow_bloom.png

Both will cause the light to start bleeding out of the brighter areas.

Once glow is visible, it can be controlled with a few extra parameters:

  • Intensity is an overall scale for the effect, it can be made stronger or weaker (0.0 removes it).
  • Strength is how strong the gaussian filter kernel is processed. Greater values make the filter saturate and expand outwards. In general, changing this is not needed, as the size can be more efficiently adjusted with the Levels.

The Blend Mode of the effect can also be changed:

  • Additive is the strongest one, as it just adds the glow effect over the image with no blending involved. In general, it’s too strong to be used, but can look good with low intensity Bloom (produces a dream-like effect).
  • Screen is the default one. It ensures glow never brights more than itself and works great as an all around.
  • Softlight is the weakest one, producing only a subtle color disturbance around the objects. This mode works best on dark scenes.
  • Replace can be used to blur the whole screen or debug the effect. It just shows the glow effect without the image below.

To change the glow effect size and shape, Godot provides Levels. Smaller levels are strong glows that appear around objects, while large levels are hazy glows covering the whole screen:

../../_images/environment_glow_layers.png

The real strength of this system, though, is to combine levels to create more interesting glow patterns:

../../_images/environment_glow_layers2.png

Finally, as the highest layers are created by stretching small blurred images, it is possible that some blockiness may be visible. Enabling Bicubic Upscaling gets rids of it, at a minimal performance cost.

../../_images/environment_glow_bicubic.png

Adjustments

At the end of processing, Godot offers the possibility to do some standard image adjustments.

../../_images/environment_adjustments.png

The first one is being able to change the typical Brightness, Contrast, and Saturation:

../../_images/environment_adjustments_bcs.png

The second is by supplying a color correction gradient. A regular black to white gradient like the following one will produce no effect:

../../_images/environment_adjusments_default_gradient.png

But creating custom ones will allow to map each channel to a different color:

../../_images/environment_adjusments_custom_gradient.png