Is it possible to enable mirror reflections in Eevee?

I have a mirror on a wall that I want to reflect everything in a scene (as ordinary mirrors would). I am using nothing but a Glossy BSDF shader with roughness turned down to zero. The mirror works perfectly fine in Cycles, but Eevee only shows the World Environment texture. I attempted to add a reflection plane, but this particular function (at least in Blender 2.9) does not work at all – that is, it doesn’t reflect anything. Hopefully, the developers are aware and are working on a fix.

I presume Eevee simply can’t handle mirror reflections, which is a shame, because waiting for longer Cycles render simply slows things down.

It works to some extent. but lots of glitches for me. some how the hdri gets traced back :> i think its hard for eevee to do these calculations as its not based on path tracing. Maybe im wrong.

what do you mean when you say that Reflection Plane doesn’t work? Have you followed all the necessary steps? Also, you need to move the reflection plane slightly to make the reflection visible

1 Like

Reflection plane is completley usable in 2.9. @123ERTYY Example only has SSR reflection from what I can see.

If there’s no SSR and reflection plane contribution then the glossy/specular surface will use closest reflection probe, with the world HDRI probe being the last to fall back on to. So if the previous conditions are not met you will only see world HDRI.

The placement of the reflection plane is crucial. It’s also 1 directional, so make sure it faces the correct direction.

1 Like

By saying “Reflection Plane doesn’t work”, I mean it’s not functional. Following all the proper steps, it never reflects anything. I have the same issue (in Eevee) with transparency. Using the following steps, for example:

  1. Create a plane.
  2. In Shaders, set it’s primary shader to Diffuse BSDF.
  3. Plug Diffuse BSDF into a Shader to RGB node and route that node to a ColorRamp
  4. Plug the ColorRamp’s alpha into a Principled BSDFshader’s alpha, and then that into a Material Output surface
  5. Go to Render settings, Film section, and check transparent.
  6. In the plane’s Material tab, ensure Blend Mode is set to “Alpha Blend”.

Doing all this will not produce a transparency. If I click over to Cycles, however, the plane will show transparent and reflect shadows properly, but for that, we have the shadow catcher.

Same goes for Reflection Planes. All the necessary steps (which I won’t list for brevity here), but — everything to a Tee. I just do not see that Eevee is able to handle these things. Cycles can every time, but I wanted a pipeline for fast prelim renders. It’s frustrating to see others in tutorials using such features. I can only presume it’s a problem with 2.9, but I don’t want to raise a bug alert until I have ruled out all other possible explanations.

maybe share your file or at least a part of it?

Well it does work. You just need to make sure that you are in Rendered View (it does not work in Material Preview) and your Reflection Plane is placed slightly above the mirror surface (my surface is at Z=0). You can increase the Distance parameter inside Reflection Plane just to be sure that it covers everything.

PS Shadow Catcher also works - you just need to inverse the colors in ColorRamp node - White on the left and Black on the right (and make it tighter).

And you are doing this all in Eevee render mode?

Yeah it’s Eevee

There are my shader settings for the “transparent” plane:

These settings do not display a transparent plan in Eevee – with Film set to “transparent” and blend mode set to “alpha blend”. Confirm you are in Eevee render mode. It works fine in Cycles.

Dude - use the color output of the ColorRamp node not alpha

I have ColorRamp color plugged into Principled BDSF alpha, as you do. The screen shot I shared was just a mock-up, as I didn’t want to touch the render computer. It makes absolutely no difference.

Well again - it does work. Maybe just look at the blend fileshadow.blend (116.8 KB)

In your image it looks like you haven’t used a Light Probe

I took a look at your file. Literally the same exact settings as mine, without a single exception. In my scene, I have three point lights overhead… I can turn up to 1000W, and it won’t cast any shadows. It just lights the objects themselves.

I’ve been working through this a bit, and it appears the problem really is that Eevee doesn’t handle light all that well. Shadows are present if the background or HDRI is removed, but as soon as you put any complex rasters into a scene, Eevee doesn’t seem to know what to do with it. Here is a shadow on my plane with a simple cube (without the background image). I also had to completely remove the Diffuse BSDF, Shader as RGB, and ColorRamp to see anything:


Now if I add them back in, still without background:


The shadow is barely visible, and there is no way to make it darker, intensify its angle, etc. No matter where the light is in the scene, Eevee just casts a shadow directly below the object. Not sure what the developers were thinking. Perhaps I am missing the point of using Eevee.

Now, as soon as I add the background back in, the shadow is all but obscured:


If I switch over to Cycles, the shadow completely disappears:


I guess my whole point here is — there really isn’t a valid way to get physically accurate shadows on transparent planes in Eevee, and certainly not if backgrounds are added. And there also appears to be no interchangability between shaders ---- implementing the nodes for shadows in Eevee will not translate to Cycles, and vice versa. They both have their own way of doing things, and that makes working with Blender for renders problematic, at least in a large commercial pipeline.

The whole purpose of this test was to see if we could achieve the same results we are getting with Maya and Houdini, which both are able to execute these tasks with zero problems. Blender, on the other hand, does not seem to support flexible lighting and on-the-fly render passes in a way that reflects reality.

I find it rather disappointing that we can’t use this tool to simulate lighting using our motion capture and previous footage. This is a very simple task, and this tool is having a very hard time living up to its reputation.

for the shadows you need to make some tweakng in Eevee, both in the Render panel and in the light settings. Eevee is not supposed to be realistic, it uses some tricks to speed up the render, but you can come close to Cycles with the good settings. Maybe share a part of your file if you want people to test (both shadow and reflection, as you say that it doesn’t work)

You could be right!, however i see reflection 2 times now. maybe its a limitation. -if u notice the smaller reflections are kinda being cut off from sides.

reflection.blend (1.3 MB)

You need to :

  • Display the reflection cubemap clipping lines (Properties > Object Data > Viewport Display > Clipping) and increase the Clipping Start value (Properties > Object Data > Probe > Clipping Start) so it doesn’t start within the octahedron (that’s why for the moment you have black reflections)

  • In the material of the octahedron, enable Screen Space Refraction, it will remove the double reflections

  • In the Render settings make sure that Screen Space Reflections and Refraction are enabled but it’s already the case

  • Bake the indirect lights again

Of course the mirrored image won’t be faithful to reality (the reflected objects are too big) because the Clipping Start value is high (it begins far from the octahedron surface and close to the objects it is supposed to reflect, thus this big size)

1 Like