Download

Reflections going through object.

Hi!
I am having trouble finding out what is causing this wrong reflection. The mesh is double-sided, there are also sphere capture probes on the scene. I thought the problem is coming from something like culling distance etc, but I don’t have any culling volumes in the scene. And to add to the problem, there is zero information on the net about this problem. The funny thing is that the reflections are correct everywhere else except at this place at the picture shown bellow.
Have someone encountered this problem and eventually fixed it or this is a bug that I don’t know about?

9c57a1b5695d159bdc82ce80e7386e344daa678a.jpeg

Thanks in advance.

It could simply be because the floor is rough and the reflection isn’t mirror perfect. Maybe show a screenshot without the game mode on so we can see where the reflection capture actors are?

Here is the screenshot with the sphere reflection captures. And I forgot to mention that when I go near the window the reflection is almost correct, but when I go backward the reflections shows up like the screenshot I posted firstly. Is it possible that the reflection capture probes doesn’t overlap correctly?

Have you tried using square reflection captures? Also, what is the roughness value of the wood?

Yes, there is no difference, I think the main problem is the screen space reflection. The roughness value is around 0.2-0.3 (I am using lerp to control the contrast between the white and the black values of the roughness texture).

It looks to me based on the shots you have provided that all you’re getting is screen space reflections. Can you give a closer screen of the counter area? Also make sure that the lighting is finished building before taking the shot.

I lowered the roughness intensity so you can see more clearly what is going on the reflections.


7b3a8bc221a69c2cfcec50124b62ef7fe09ad3ef.jpeg

That is strange. The counter mesh is double sided, but does the wooden floor extend through or beyond it?

The floor extend through, so the counter and the walls are on the floor without any gaps.

Try cutting the floor off where the counters begin then, that may resolve the issue.

Hmm, its the same thing, there is no difference.

edit:
It looks like there is some culling thing happening, is it possible that SSR have some distance volume or something like that? Also does the correctness of the reflections depends on the reflection capture probes?

Screen space reflections are independent of reflection capture actors as far as I’m aware. Have you tried disabling SSR entirely through post processing? I’m not sure what else to suggest. Hopefully someone more well versed in this area can assist.

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.

@SE_JonF: No problems mate, thanks for your time anyway. :slight_smile:

@mariomguy Thank you for the very useful information and for the time writing it, but the thing is that SSR is enabled in my project. Thats why its so strange that the reflections go through objects that are double sided.
da8f4e366f4d99a7277dc1714be55b489cca4688.jpeg

Are reflections broken like that when you play as well?

@NasteX - Wish I could help more. =) I’ll be following the thread, looking forward to seeing a solution to this.

@Jacky Sorry for the late answer, yes I did try this and its the same thing, no difference.
@SE_JonF :slight_smile:

Does anyone got a solution to that reflection problem. The problem is still there in version 4.24. This problem destroys the realistic reflection look.

I hope that anyone could help to fix this problem, thanks.

Use the planar reflection actor. :slight_smile:

@NasteX - The problem is still there. When I tilt the camera / look up or down, then the reflection goes through my walls / meshes.