Reflection Improvement

Hey everybody,

I am trying to get the reflection in my scene to look a bit better.
(The lower part for example - the floor area) Right now it looks a bit “low quality” but I am not sure why.

I am using a texture on the mesh,
playing around with the roughness/normals didn’t help.

I am using SphereReflectionCapture, As well as screenspace reflections via PostProcessVolume.
My project settings for Reflections resolution is 1024.

Any other tips that can improve that artifacts ?

Thanks in advance!

You can try going to the Project Settings > Rendering > Optimizations > GBuffer Format, select “High Precision Normals”.

In the viewport, open the console with ~ or go to Output Log, and type “ssr” to change the following cvars:

r.ssr.experimentaldenoiser 1
r.ssr.quality 4
r.ssr.temporal 1

More options to enable are in the mesh editor for all the meshes involved. So, right-click a mesh, select Edit, and open the LOD0 options > Build Settings at right. Put in a check in “Use High Precision Tangent Basis” and “Use Full Precision UVs”. Increase Min Lightmap Resolution to 256 at least. and under General Settings further down…set Lightmap Resolution to the Min (from above) or higher.

Does the reflective floor material have surface imperfections, or waviness or anything to it? Or is it entirely flat and completely smooth?

The mesh is a flat polygon,
I am getting the same results when using a completely blank material as well, with just a small roughness set to it:

reflections

The rest of the settings you mentioned were already the ones you suggested.

The command line:
r.ssr.experimentaldenoiser 1
r.ssr.quality 4
r.ssr.temporal 1

Did improve the result, but introduced a lot of animated-noise of sorts to the scene

Are you in UE5 or 4.26 / 4.27? It could also be the floor mesh is not unwrapped correctly for such a simple material. Is ray tracing on for anything (meshes, project, post process volume, etc)?

It’s 4.26

No Raytracing, just screenspace + postprocessing

Here is the UV:

so it’s open on one end of the box? Is the UV for the stacked meshes that are glowing reddish orange? The UV islands are quite close together, and for SS reflections it could be a problem. How about lights mobility? Static / stationary / dynamic for skylight and directional, and any others? Try increasing lightmap resolution, and distance field shadow resolution via mesh editor, if it’s enabled in the project.

Yes it’s basically a 3D room of sorts, for the floor/wall/roof reflections.
The artifacts show up even with a clean material without any textures.
It is an automatic wrap from Cinema 4D. Can that cause all those artifacts?

The “lights” on the reflections come from material-emissions, not actual lights. No skylight.

The problem gets much more apparent when I add an emitting object in the center), it creates also some flickering, like this example:

Or with another scene like this one:

It’s probably because you don’t have a skylight or directional light in the scene. It is using only the emissive lighting, which doesn’t calculate accurate enough reflections for emissive alone. In the least, place a skylight in the scene, set it to static or dynamic (not stationary), and click recapture in its settings. Change its color to black to maintain darkness inside the ‘room’. Here’s a breakdown of skylight settings to try:

Intensity: 1
Mobility: Static or Dynamic
Cubemap Resolution: minimum of 512
Sky Distance Threshold: 1
Cast Shadows: Disabled
Disable all Ray Tracing settings in it, and the Translucent / Transmission / Volumetric settings.

Rebuild light if it’s set at static, and build reflection captures (located under Build dropdown in viewport toolbar). If it’s dynamic, build lighting once and not again upon more changes.

Another thing is I’m thinking the mesh used to create a dark room for all the other stuff is one-sided, which could result in bad reflections and loss of color / light data for the emissive. This is because the actual surface is not completely formed or rendered in 3D space on the inside walls of it. If it’s two-sided, then you may need to set the normals correctly to get proper reflections inside of it. What file format is it in via Cinema4D? You need to ensure proper export and import options to use meshes in Unreal from external applications, obviously, and it’s not always obvious what exactly works.

This situation is so strange.

I tried the skylight with the exact settings you suggested - no luck.
I tried inverting the normals in C4D for the room - still nothing - same result as before.

Also a directional light didn’t change the flickering situation.
Tried boosting the lightmap resolution for the mesh - no change.

i’m out of ideas haha

Thank you so much for the help though !

There’s something else. It’s called lightmap mixing. Read this excerpt from the docs on reflections, and try disabling the “Reduce Lightmap Mixing on Smooth Surfaces” option in the Project Settings. I was wrong also, the lights should be set to stationary because it provides the best indirect specular and lighting data for reflections using capture spheres. Unreal Engine isn’t all too easy for some things. Sorry if it seems I’m misleading you with potential solutions. It’s often a trial & error process, but trying from a basis of knowing what’s involved / how it works.j

The link to the doc page:

May have to scroll down a bit to get to it after clicking.

Still no change sadly, Maybe it’s just some bug?
The only thing that worked so far is the noise reduction commandline, but the noise is a bit tricky especially in fullscreen.

So I will just stick with how things looks a the moment.

Thanks again!

For high quality mirror reflections your only options are planar reflections and raytraced reflections. Reflection captures don’t have correct parallax, and screenspace reflections are generally somewhat grainy and can’t reflect anything offscreen.

Yeah that’s the vibe I’m getting. Not too grainy, but it looks like some “stripes artifacts” of sorts.
Is there a way to do a cheap reflection without raytracing that will not result in those stripes? doesn’t have to be super high-quality…

Go super oldschool and create an inverted copy of the room. Otherwise the answer is no.

I see - then stripes it is!
Interestingly enough, with other scenes I am not getting those artifacts, some yes some not…seems almost random.

Sometimes also a material on the room helps, sometimes makes it worse…

But that’s the price of realtime I guess - in this case, maybe UE5 will be better at this.

Are you doing a cinematic sequence, or a still render?

It’s an .exe tool for live rendering - so it’s not a file export

Did you get it working?

I came across the docs on reflections, and it was saying a directional and/or skylight is required to get the reflection environment active. What I was thinking was that the reflections of emissive materials are not getting completely rendered, like it’s not able to figure out the depth entirely within the reflection for some reason…so it’s ending up in a noisy result. It’s one of the causes of other rendering issues, such as certain translucency situations and sphere reflection captures having distortions. The projection of the reflection is not fully calculating the lighting and reflections, or not calculating correctly because it’s unable to project the proper depth with no aliasing artifacts.

It’s more likely there aren’t enough vertex on the floor mesh…

I tried now the same mesh with a lot more subdivisions, but no change - I guess it’s just the mirror quality you get with screenspace reflections and a flat surface.

Thank you for the idea