I started to work with EEVEE short time ago and I was amazed by the capabilities of this engine. However, I noticed something strange when I was rendering some tests. Some objects/reflections/shadows dissapear when they're off canvas. I imagine that maybe this is for save memory data, but it can be not suitable to some projects.

To make my point graphical, I made a simple scene with simple objects. The main object is the sphere with a mirror-like shader. Out of focus there are different objects with different shaders. A yellow cone, a blue cylinder and a white cube light. But surprisingly, those objects dissapear when the composition is rendered. See the rendered animation below:

mirror ball reflections eevee engine

Notice that the blue cylinder is not even showing at all in the final render. And the blooming effect from the light cube also dies.

I would like to improve this bahaviour and render the objects that are still out of canvas using EEVEE. Do I missing something like memory configuration or reflection/shadow tweaks? Is this caused by the EEVEE engine or by my GPU config (GTX1060)?

Thank you in advance!

  • 3
    $\begingroup$ reflections are only screen-space, this is a limitation of the engine. You would need to bake the objects into a reflection map, but that would only work for a static scene. $\endgroup$ – Jaroslav Jerryno Novotny Oct 24 '18 at 15:32

As Jaroslav mentioned in his comment this is an intrinsic limitation of EEVEE's rendering system, and in fact a broader shortcoming of screen space effects in general.

Since they are, as the name says, computed in screen space, only currently visible on screen objects are actually accounted for, as such, for performance reasons, as soon as an object is out of view it is discarded to save memory and rendering steps, and thus is no longer rendered.

This generally isn't a problem for direct lighting and visibility, but can have nasty side effects in inter-object relationships, like shadows, reflections, refraction, indirect lighting, among others.

There really isn't any elegant workaround or solution to this.

Luckily to minimize the effect the developers added an overscan option. As of commit Eevee: Implement Overscan option it can be set in the Properties Window > Render Tab > Film > Overscan.

It is an option that internally increases render size, while keeping the field of view intact, virtually creating an invisible buffer area around the camera where objects are no longer directly visible to the user but still accounted for in screen space effects that need it.

EEVEE: Implement Overscan option

This option make the internal render size larger than the output size in order to minimize screenspace effects disappearing at the render edges.

The overscan size added around the render is the maximum dimension multiplied by the overscan percentage.

This is a workaround however and doesn't really solve the underlying limitations. While it may slightly reduce these kinds of issues, it does so at the expense of performance.

If this is still insufficient you can improve the situation by using reflection probes to get proper reflections.

If those are still not giving good enough results, it is likely a sign that you are probably reaching real time rendering limitations, and may actually need to change render engines to something more robust with proper raytracing like Cycles or third party solutions.

| improve this answer | |
  • 1
    $\begingroup$ Thank you! for me this works, I will have some time testing it, but it looks like it solved this problem :) $\endgroup$ – ermac Nov 8 '18 at 14:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.