OK, let’s start with the basics: Every object in Unreal Engine is rendered with direct/indirect lighting, shadows, and reflections, and they all work in kind of the same way. Lighting is pretty simple: what’s lit has specular, what’s in shadow doesn’t, and everything has some basic indirect color. Reflections take care of the more complex surface properties beyond lighting and really “sells” your material surfaces. But a perfect raytraced reflection every time would cost several GTX 980 Tis running in SLI, and it may take a few seconds to render one frame. UE4 can pump out 60 frames a second, so, what gives? Well, UE4’s reflection is not perfect. It’s actually a lot of really smart smoke and mirrors, combining some very powerful reflection rendering techniques that have severe limitations with other methods that are no where near as accurate, but cheaper to render and covers the drawbacks significantly.
Here’s how sphere reflection captures actually work: they capture the area to a cubemap texture, using the object location as a reference, and apply that cubemap to the reflection environment within its specified radius. That’s the generic dumb reflection everyone gets when the big guns are not in play. Typically, UE4 prioritizes screen space reflections whenever possible. Screen space reflections, the “big guns,” use the pixels on the screen to provide a superbly accurate reflection very quickly. It’s not quite raytracing, but it aspires to perfection. Every single nuance in your polygons and normal map are captured in SSR. You get the benefit of a (near) perfect reflection around curved objects, bumpy normal maps, and it even works properly with parallax and parallax occlusion. BUT, and here’s the catch, it only works if the scene it’s reflecting is already rendered onscreen. So, you can use SSR on a lake to reflect the bridge sitting on top of it, shimmering in the distance, but you can’t use it in a first-person game to look at yourself in a mirror. Your character is not rendered on the screen, just the giant mirror. So, when SSR tries to bounce the pixels around, it hits nothing. It hits offscreen on some weird area it can’t see. That’s where reflection captures come in!
What UE4 does to maintain an “ideal” reflection environment is that it will automatically replace the generic reflection captures with SSR if it can do so. So, if you’re staring at a floor, the reflection you get of the ceiling will be the general cubemap (or sphere reflection/box reflection captures, what have you). But if you look down a shiny hallway and your reflection glances across the surface, it will start fading in the SSR and show you an accurate, pixel-perfect reflection (…well, not really, but close enough. It actually uses voxel tracing to calculate the general shape of the reflection and then uses the data from the last four frames to compile the result of the newest one… but for this example, let’s call it pixel-perfect, k?).
It seems you have disabled SSR reflections in your project. WHY?! TURN THEM BACK ON THIS INSTANT!!! And put them at the highest quality setting you can (typically done in the post process volume settings under “Screen Space Reflections”). Problem solved.
But while you’re at it, you can totally hack down the number of reflection captures you’re using, and make their radius much bigger: the reflection fades into the SSR anyways, so having a ton of them doesn’t help you with your cause if you want to be accurate. Reflection captures are NEVER accurate UNLESS you look at the reflection in the exact location of the capture! As soon as you move an inch to the right, the reflection’s off. And if you think the answer is to put captures absolutely everywhere, just know that this will generate a ton of texture waste, clog up your engine, look terrible, and there’s no need for your crashing file to look terrible. All you need is one giant reflection capture to cover your general space, just to make sure everything has some sort of a reflection (otherwise, there will be no reflection, and the appearance will be very flat and dull). One reflection per room is very reasonable. But beyond that, you should be conservative with it: too many overlapping reflections results in overdraw, the same way too many too many lights in one area will hinder your render time. Let the reflection captures and SSRs work together for you.