96 lines
4.3 KiB
ReStructuredText
96 lines
4.3 KiB
ReStructuredText
.. _doc_reflection_probes:
|
|
|
|
Reflection Probes
|
|
=================
|
|
|
|
Introduction
|
|
------------
|
|
|
|
As stated in the :ref:`doc_spatial_materials`, objects can show reflected or diffuse light.
|
|
Reflection Probes are used as a source of reflected and ambient light for objects inside their area of influence.
|
|
|
|
A probe of this type captures the surroundings (as a sort of 360 degrees image), and stores versions
|
|
of it with increasing levels of *blur*. This is used to simulate roughness in materials, as well as ambient lighting.
|
|
|
|
While these probes are a very efficient way of storing reflections, they have a few shortcomings:
|
|
|
|
* They are efficient to render, but expensive to compute. This leads to a default behavior where they only capture on scene load.
|
|
* They work best for rectangular shaped rooms or places, otherwise the reflections shown are not as faithful (specially when roughness is 0).
|
|
|
|
Setting Up
|
|
----------
|
|
|
|
Setting up reflection probes is really easy! Just create a ReflectionProbe node, and wrap it around the area where you want to have reflections:
|
|
|
|
.. image:: img/refprobe_setup.png
|
|
|
|
This should result in immediate local reflections. If you are using a Sky texture, reflections are by default blended. with it.
|
|
|
|
By default, on interiors, reflections may appear to not have much consistence. In this scenario, make sure to tick the *"Box Correct"* property.
|
|
|
|
.. image:: img/refprobe_box_property.png
|
|
|
|
|
|
This setting changes the reflection from an infinite skybox to reflecting a box the size of the probe:
|
|
|
|
.. image:: img/refprobe_boxcorrect.png
|
|
|
|
Adjusting the box walls may help improve the reflection a bit, but it will always look the best in box shaped rooms.
|
|
|
|
The probe captures the surrounding from the center of the gizmo. If, for some reason, the room shape or contents occlude the center, it
|
|
can be displaced to an empty place by moving the handles in the center:
|
|
|
|
.. image:: img/refprobe_center_gizmo.png
|
|
|
|
By default, shadow mapping is disabled when rendering probes (only in the rendered image inside the probe, not the actual scene). This is
|
|
a simple way to save on performance and memory. If you really want shadows in the probe, they can be toggled on/of with the *Enable Shadow* setting:
|
|
|
|
.. image:: img/refprobe_shadows.png
|
|
|
|
Finally, keep in mind that you may not want the Reflection Probe to render some objects. A typical scenario is an enemy inside the room which will
|
|
move around. To keep objects from being rendered in the reflections, use the *Cull Mask* setting:
|
|
|
|
.. image:: img/refprobe_cullmask.png
|
|
|
|
Interior vs Exterior
|
|
--------------------
|
|
|
|
If you are using reflection probes in an interior setting, it is recommended that the **Interior** property is enabled. This makes
|
|
the probe not render the sky, and also allows custom amibent lighting settings.
|
|
|
|
.. image:: img/refprobe_cullmask.png
|
|
|
|
When probes are set to **Interior**, custom constant ambient lighting can be specified per probe. Just choose a color and an energy.
|
|
|
|
Optionally, you can blend this ambient light with the probe diffuse capture by tweaking the **Ambient Contribution** property (0.0 means, pure ambient color, while 1.0 means pure diffuse capture).
|
|
|
|
|
|
Blending
|
|
--------
|
|
|
|
Multiple reflection probes can be used and Godot will blend them where they overlap using a smart algorithm:
|
|
|
|
.. image:: img/refprobe_blending.png
|
|
|
|
As you can see, this blending is never perfect (after all, these are box reflections, not real reflections), but these arctifacts
|
|
are only visible when using perfectly mirrored reflections. Normally, scenes have normal mapping and varying levels of roughness which
|
|
can hide this.
|
|
|
|
Alternatively, Reflection Probes work very well blended together with Screen Space Reflections to solve these problems. Combining them makes local reflections appear
|
|
more faithful, while probes only used as fallback when no screen-sace information is found:
|
|
|
|
.. image:: img/refprobe_ssr.png
|
|
|
|
Finally, blending interior and exterior probes is a recommended approach when making levels that combine both interiors and exteriors. Near the door, a probe can
|
|
be marked as *exterior* (so it will get sky reflections), while on the inside it can be interior.
|
|
|
|
Reflection Atlas
|
|
-----------------
|
|
|
|
In the current renderer implementation, all probes are the same size and they are fit into a Reflection Atlas. The size and amount of probes can be
|
|
customized in Project Settings -> Quality -> Reflections
|
|
|
|
.. image:: img/refprobe_atlas.png
|
|
|
|
|