I have probably done some beginners mistake but I have hard time finding my way out of it.
I have a water surface and environment with trees around it. I have put planar reflection capture on top of the water plane, and it works nicely, but unfortunately, when I move my camera around, I have screen space reflections showing atop of the planar reflections, so I am getting ugly double reflections that are very obvious when I am moving my camera around. The planar ones stick in place and have good parallax, but the screen space ones slide around the water like crazy.
How do I make planar reflections override screen space ones? I still do want to have SSR for the rest of my scene, but on that water surface, I want planar reflections to take completely over, instead of being mixed together with SSR.
I have created a video of the issue in hopes it will increase the odds that someone will help me out here. Basically, I want to prevent SSR from showing over Planar reflections. The only way I found is to globally disable screen space reflections in global postprocess volume, but I still want to have screen space reflections for the rest of the objects in my scene.
It’s a little hard to tell by the video… If you turn off SSR (r.ssr.quality = 0), does the effect go away?
Are you sure you have the “global clip plane” setting turned on in the project settings?
Yes, as I wrote, if I turn off SSR globally, either using the string you’ve posted or using global postprocessing volume, the issue goes away. The global clip plane is indeed enabled.
My point is that I don’t want to see SSR reflections over reflections captured by planar reflection capture objects, because having double reflections does not make sense. At the same time, I do not want to get rid of SSR completely, I just don’t want to see it on the objects that use planar reflection capture probe instead.
We don’t have that problem at all. Try to reconfigure normal fade and distance fade from planar reflection actor so that planar reflection is 100% affecting that water. For me that does not look like SSR but sphere capture reflections.
Can’t you just make a Post Process volume just around the pool area that has 0 SSR, then switch to the global post process with moderate SSR once you’re out of the pool area?
I guess I could, but it would be a ridiculous workaround. Let’s say I would have multiple planar reflections and have a postprocess volume to manage for each single of them, and having to adjust size and placement of postprocess volume every time I edit size and placement of my planar reflection capture.
If I did the workaround, I would still not learn where the error is coming from. Instead, I could adapt a bad habit of using a complicated workaround which would hamper my productivity for all the future projects.
Yes, that’s one way to go about it. But it won’t always be water. I will often need planar reflections on opaque materials. Transparent ones come with significant performance hit.
It’s not as much about finding a workaround. I need to know what the root issue is so that I can learn from it and avoid it next time.
Strangely enough, if I open older 4.16 project, I don’t have this problem. If I create a new project from scratch in 4.18 or 4.19, I am getting this problem every single time I am dumbfounded.
Root issue is probably blending order of different reflection methods. I think it should go like this: Reflection captures -> SSR -> Planar reflection. But if there has been some change that make SSR be last in order this might be issue. We only use planar reflection for transparent water mesh so I haven’t seen any problems.
Well here’s a thing. The video below shows exactly the same setup with exactly the same UE4 version, just an older project that was migrated. And it works correctly!
I am really losing my mind here. I tried to go as far back as 4.16, but every single time I create a project from scratch, I get that problem, regardless of UE4 version. At the same time, for some reason I just can not figure out, it works the way it should in this older scene.
I am moments away from bashing by head against the wall until I die…
What’s even more headache inducing is that even if I create a new Level in this old project where it works, it does not work anymore in that new level… ugh…
For reflection order to work correctly, you need to make sure to have some background sphere around your level. If you are reflecting just nothing or just atmospheric fog, then it will not work. There needs to be some physical geometry.
The thing here is that I did not have any sphere mesh with inverted normals at my hand, so I used the one with normals outside, and made the unlit material Two Sided. It turns out even having a sky sphere with normals outside and Two Sided material does not count as a proper skybox. So even when you think you have a sky sphere, reflection probes don’t think so.
This is just such a poor design I am speechless…
On top of that, this excludes the possibility of using for example just atmospheric fog as sort of Physical Sky model to light your scene…