Since unity 5.2 the behavior of reflection probes has changed and it’s now impossible to choose which probe affect which object using the “Simple mode” and “anchor override” settings in the object properties. I’ve submitted the case 727234 but the situation hasn’t changed in 5.3.
This is a huge problem for me. The game I’m finishing right now (http://haven-moon.com) relies heavily on reflection probes and a careful object setup to make it work. The ability to choose a specific probe for a specific object is extremely useful to separate room interiors reflections from exterior walls reflections for exemple.
With the new current system it’s very hard if not impossible to have a proper simple reflection probe setup. The results are terrible and reflections uncontrollable.
So, without the anchor override feature in deferred rendering path my project is stuck to Unity 5.1. That’s not very good…
I hope that a solution can be found easily. Thanks in advance.
This limitation is also keeping me from upgrading to 5.2+. A lot of what we do is facility specific interiors in which we can not design around this limitation.
I may have experienced something similar. I was testing out 5.3 and SSR in an arch viz scene I have and I noticed the reflection probes flicker almost like they were turning on/off as I moved through the scene.
I then went back to the 5.2 version of the scene and the problem was still happening.
It’s been a long time since I worked on that scene, but I’m pretty sure it was never like that before. I use separate reflection probes for each room. and if I remember correctly I modeled all the rooms as separate objects. In fact I was experimenting with a lot of different ways of getting the most correct reflections and lighting for each room. I used doors to hide the seam in the lighting/reflections between each room.
I haven’t really worked on that scene since 5.0, but I’ve upgraded all my Unity projects as new versions came along. I’m starting to think that wasn’t very smart.
This may be fixable by changing the reflection probes and modeling the scene in a different way, but it’s kind of annoying as I’ve already spent so much time trying to get my current setup.
Sounds bad. We were testing reflection probes for buildings in 5.0 and 5.1 and we wanted to split walls, roofs etc. into separate meshes (inside and outside parts) and just use different probes (anchor override) for them. That worked quite fine when the mesh edges (hard borders between two different probes) were hidden.
I feel your pain. We are also relying heavily on reflection probes as well in our project. Its nice that the projection box works and has attenuation/ falloff now but not being able to control reflections with the anchor override in areas where we do not need falloff and being able to rely more on the hard input with the anchor override is a huge lack of control. Please fix Unity!
Just want to bump this as well… not being able to override is pretty much making probes unusable for us in most of our environments. Other features like falloff/blending are great but this option is super critical!
All the above is only happening in deferred shading. If you use forward rendering, then it’s still one/two probes per object, with anchor overrides etc. Nothing changed there.
However, if you use deferred, then indeed since 5.2 the probes are also “deferred” (just like lights are), in essence they are “per pixel”. Now, deferred being deferred… it does not know about “objects” anymore when it gets to render the probes. It’s really, really hard to make per-object probe overrides to work, if you also want per-pixel probes to work.
My actual question perhaps is: Why you need per-object probe overrides/anchors? Is that just to work around some problems with per-object probe setups? Or to workaround lack of SSRR effect?
The example of “extremely useful to separate room interiors reflections from exterior walls reflections” sounds like it should not be a problem with 5.2 deferred per-pixel probes, since now they are no longer per-object, but are exactly bound to their shape. So if you have a single object that goes between interior and exterior probe, it will get both.
Sure, but, with complex lighting setups, forward rendering in not an option.
Could it be possible to choose the behavior of the probes then?
In my case, per-object probe is a very critical feature. 3D models are “cut” and separated to exterior and interior parts. Then a corresponding probe is assigned to the corresponding part. The Reflection probe setup stays very simple, it stays controllable and gives great results.
I can’t access them but, can you take a look at the pictures attached to the bug report 727234
They show the limits of the new system.
I’ve also gave a quick try to the new SSRR image effect, but the results were terrible both visually and performance wise.
I’ll try to take some time to convert again my project to newer unity version and show you the results.
In our case its because when in one interior room there may be another room’s reflection probe 2 feet on the other side of a wall that we don’t want to be sampling. Tight interior spaces just don’t work well with the new deferred setup.
Hi Aras, thanks for chiming in here. I made a quick little diagram to hopefully illustrate the problems we’re having, I think it’s basically the same idea as what F-R said above. Blue lines represent reflection probe bounds, black represents walls, and red represents problem areas.
Basically in our case, we have a ton of irregular-shaped areas, which have significant lighting/materiality changes between them. In 5.1, I would almost always use overrides to ensure that probes are assigned the way we want them to be.
Unless I’m missing something here, I can’t find any way to make per-pixel only probes work for our environment. We are using the new SSRR effect (which is pretty cool by the way, love the probe blending functionality) but this isn’t adequate in most situations as reflection probes still account for a good deal of the reflection pass at non-grazing angles.
Potentially being able to toggle a fall back to forward probes (while still in deferred rendering for everything) would be an option, but of course it would be a shame as deferred probes are much cheaper to render. And per-pixel blending is really awesome in some situations, just unfortunately when it doesn’t work, it REALLY doesn’t work.
Ok we’ll discuss what we can do. Wondering how other deferred shading engines solve this (while also allowing SSRR), since my understanding is that many of them are also doing “deferred per-pixel probes”, without a per-object probe assignment possibility.
Now that the probe is deferred - shouldn’t it be possible to plug in a mesh for the shape of the probe that get’s drawn? The capture and box projection would still assume the same bounds of course, but the actual fill of the reflection buffer could have a shape - I guess just like deferred lights work.
Potential probem would be that it’s a bit of a hassle to produce these meshes for all room shapes in the case NVYVE showed, but it’d still be infitely better than the hacky setup in the second picture hehe
Right, so I’m thinking that possible solutions are at least two:
add some option to say “don’t use deferred/per-pixel reflection probes”; essentially getting back to 5.0/5.1 state. That one would have to be a global setting since it cuts deeply into all shaders etc.
add ability to use different mesh than a box for deferred reflection probes. The box projection would still have to be based on the “box”; and possibly the probe fade/blending area too.
UE4 seems to use either boxes or spheres, but while better than just boxes, I don’t see how that helps in more complex cases like what NVYVE shown…
Option 1 would definitely be a great option to include, given quite a few people (including ourselves ) are used to/already deep into using the old forward based workflow. It’s also quite a bit faster to work with then having to make new meshes, assuming the user is ok with the limitations of forward vs deferred. I’m guessing this would break the new SSRR/blending effect though?
Option 2 is sounds pretty interesting; little bit more set-up, but still being able to use deferred probes would be awesome. The actual box projection/blending being based on the mesh’s bounds doesn’t seem like it would be an issue for our case at least. Of the top of my head, this option seems like it would solve most of the issues we’re running into.
In a perfect world it would probably be ideal to provide both options, given that option 1 is more of a quick solution with less bells and whistles, while option 2 is more in depth but potentially quite time consuming. If I had to choose, I’d say prioritizing support for option 1 again as a tick box would probably help out a lot of developers immediately, while potentially working on option 2/sphere shapes as a future patch.
Regarding UE4 spheres- in our particular case, adding spheres wouldn’t fix all of the issues we’re encountering, but would definitely be a great option to help with curved spaces.
Thanks again for the help here. Great to know you guys are looking into this!
Currently I’m doing option 1, and hope to get it into 5.3. The way it works right now, is that if in Graphics Settings you’d pick “no support” for deferred reflections, then in deferred shading it would fallback to per-object probes, the same way as it’s done in forward. And indeed it would not interact very nicely with SSRR, but that very much depends on the scene in question.
We’ll have to think about longer term solutions (adding sphere probes or custom mesh probe shapes etc.), but that indeed sounds like “more thinking/work needed”.