The reflection probes are pretty awesome, but I’m curious how to proceed with more complex room shapes.
If you’re walking on a very reflective floor you want to be able to see the sensible reflections on the walls, like if you have floor-to-ceiling lights it looks very odd if the reflection doesn’t align where the wall and floor meet. It seems like normally with box projection reflection probes you can get this pretty close and it looks good but there’s some outstanding hurdles to think about and I’m curious if anyone else is looking at them.
Above using a single probe at the intersection of the hallways has a weird effect on the green lights as the probe box does not align with the walls except at the end extents where the white floor-to-ceiling emission is.
Also the seam between meshes is not consistent, you can see the break point (where they do meet seamlessly) between the floor on the left down the hall.
This one uses two probes, which improves each long hallway a bit and has totally different results but also confuses the meshes even more as they can’t really blend the probes together at the overlap points so it just chooses the nearest probe and makes a really clear, hard seam.
After much experimenting with reflection probes in respect to this very problem – an L shaped room— I realized that it is simply impossible to achieve the effect you want using reflection probes. At the moment, they are meant for use ONLY in relatively rectangular distached rooms. The only way, actually, you could get the effect you’re going for would be to create an L shaped volume for the probe to project on — currently an unsupported feature.
I’m publishing on PC, but this is just an experiment scene. I’m attaching a simplified example that is easier to read.
I don’t know if per pixel probe blending would be a solution or not. I tested with the b13 blending and got different, weird results. I see what its doing but it doesn’t seem to be the fix for this L or + shaped situation. (would be interested to see the internal example for the blending in this situation)
Heres also a gif example (sorry for the potato quality)… The room segments have a small gap between them for clarity, and you can see where the blending has a strange effect. This might be better with longer segments?.
This switches from All Blended / Simple on left, Blended on right / All Simple. Simple yields the correct results, but blending the corner is the feat. Again, maybe it would look better with a longer floor mesh, or even one big, single mesh. http://imgur.com/dir3EU4
I have the same problem here. I wanted to create hallways and then I got the exact same problems like you.
modular working is impossible if you have reflective floors or ceilings in hallways… turning the reflection down or off in the shader makes it look ok … to make all floors and ceilings into one big mesh would fix the seems between the meshes but it is not really a good solution…
it would it make incredible hard to create someting without lots of testing…
and the worst is if you have dark and light parts in you hallways that is what it makes it really stupid to work with.
because if you make to few reflective nodes you have too bright floors and ceilings in the dark ends of the hallway and if you make too much you get these breaks between meshes… blending the reflective nodes together did not really help because I ran around in my testmap with a mirroring sphere and it seems that Unity does only blend the closest 2 cubemaps together via overlaying.(on static models more than 2 I think)… it made it look a little bit better but still these breaks where clearly visible.
last year I had created my own box projected cubemap system for Unity… when I was almost finished Unity came around and showed off there future plans and because of ther solutinon and PBS I scrapped my approach…
If Unity want to improve then they need to take a look at the game “Remember Me”
they just recreate the room with simple points and then they project there cubemap onto it. it looks really good.
In my project I only got the box projection to work. I could not figure out how to project it on a rotated cube or a sphere volume… I found the mathematics for this but when I tryed to write it into a shader it did not work…
I hope the people at Unity will create a solution for these problems since the only Official project they released for unity 5 is this somehow broken demo of Viking Village where the shaders not work and you have a pink floor…
I think now there new shader system was only designed for outdoor levels.
Given that rc2 is already out and the general state of things, I really doubt we’ll see any serious improvement with this until a major dot release after 5.0.
but what should we do then? I am still working at this problem and dont find any good solution exept disabling the reflection in the standard shader for hallways… in closed rooms with a single floor mesh its no problem, the system works. but with more meshes connected its horrible… I mean the rendered light is ok… I wish they could add the ability to set manually the weight of the many cubemaps that are used by meshes so I could better compensate the reflection difference.
We are currently finishing up an indoor demo which uses highly reflective surfaces etc. This shows you how you can create indoor levels with reflection probes that looks really amazing. We will release the project folder very soon. So you can learn from it.
In our experience you can make things look quite amazing with reflection probes and especially the realtime reflection probes with realtime GPU convolution.
The RememberMe demo is interesting, we looked at that when developing it. But ultimately we focused on a solution that is feasable on both high-end mobile and PC hardware. In practice you can get things to look awesome with these techniques.
That said, SSR can definately improve things. Which is why we have in paralell to shipping 5.0 been working on SSR image effects, and we have already gone through some iterations and completed most high level optimization on the algorithm.
In the 5.x series our plan is:
Deferred reflection buffer
SSR which falls back to reflection probes for reflections that are offscreen
In deferred we do per pixel blending of reflection probes in deferred & integrated with SSR. Potentially it makes sense to add support for custom projection volumes there too, but i think it is very likely that SSR is a better solution here.
This combined with realtime reflection probes with GPU convolution that already ships in 5.0 gives you the ability to have completely consistent lighting including offscreen reflections. If you have any animated lighting this is quite important.