New Reflections Effect Blew My Mind! (Got one issue with them, though)
-WildCat-
Cape Town, South Africa Join Date: 2008-07-19 Member: 64664Members, Reinforced - Shadow
Having previously seen Max's tweet regarding Screen Space Reflections, I was excited to find out whether they would find there way into NS2. When I watched the Gorgeous Release Trailer, I was convinced that I was looking at Screen Space Reflections at 1:32 because they appeared to be changing based on the perspective of the moving camera.
Once Steam had finished updating NS2, I eagerly started up a local game on Descent to have a look around at the delicious new level design and, in particular, the reflections effect. This was approximately my train of thought as I began looking around:
"Oh, look at these glorious Screen Space Reflections. Ahh, what a joy! ... Hmm, wait a sec. These are not behaving quite like I'd expect... How is it reflecting stuff that's not being rendered on the screen already? And what's with the curious distortion in places? These look like cube maps... but they're moving around! WHAT SORCERY IS THIS?!?"
Upon further inspection, I got a sense of how they work. On large areas of the floor, it looks like the reflections are rendered on a sphere under the ground (although I realize it's probably not that simple).
My mind was blown by the genius of this implementation and I'm truly astonished at how effective it is. I've never seen a cube map implementation like this in any other game, which surprises me because this is just so much better than the regular way of doing cube maps. The infinity far away perspective of typical implementations is quite horrid, in my opinion.
I have, however, come across a problem with the reflections effect. On my computer, the cube maps don't appear to be rendered with the same level of quality as was shown in the Gorgeous Release Trailer. Below are some comparison screenshots. On the left, is a screenshot from the HD version of the trailer and, on the right, is my in-game screenshot.
It seems like the cube maps are either being generated at a lower resolution or they are not being anti-aliased properly. Here are a couple more example screenshots:
It would be great to get a solution to this issue so that I can get image quality like in the trailer. Here are my systems specs:
Keep up the awesome work, UWE!
Once Steam had finished updating NS2, I eagerly started up a local game on Descent to have a look around at the delicious new level design and, in particular, the reflections effect. This was approximately my train of thought as I began looking around:
"Oh, look at these glorious Screen Space Reflections. Ahh, what a joy! ... Hmm, wait a sec. These are not behaving quite like I'd expect... How is it reflecting stuff that's not being rendered on the screen already? And what's with the curious distortion in places? These look like cube maps... but they're moving around! WHAT SORCERY IS THIS?!?"
Upon further inspection, I got a sense of how they work. On large areas of the floor, it looks like the reflections are rendered on a sphere under the ground (although I realize it's probably not that simple).
My mind was blown by the genius of this implementation and I'm truly astonished at how effective it is. I've never seen a cube map implementation like this in any other game, which surprises me because this is just so much better than the regular way of doing cube maps. The infinity far away perspective of typical implementations is quite horrid, in my opinion.
I have, however, come across a problem with the reflections effect. On my computer, the cube maps don't appear to be rendered with the same level of quality as was shown in the Gorgeous Release Trailer. Below are some comparison screenshots. On the left, is a screenshot from the HD version of the trailer and, on the right, is my in-game screenshot.
It seems like the cube maps are either being generated at a lower resolution or they are not being anti-aliased properly. Here are a couple more example screenshots:
It would be great to get a solution to this issue so that I can get image quality like in the trailer. Here are my systems specs:
- MSI Big Bang MPower Z77 Motherboard
- Intel Core i7-3770K @ 4.5GHz
- Corsair Dominator Platinum 8GB DDR3 1866Mhz RAM
- nVidia Geforce GTX 690
- nVidia driver version 314.07
- Windows 7 Professional 64-bit
- In NS2: 1920 x 1080 @ 120 Hz fullscreen, v-sync off, all graphics settings maxed
Keep up the awesome work, UWE!
Comments
As far as the checkerboard patter of squares that was mentioned by other posters in this thread, that is a known issue. The problem there is related to the normal map compression. We had done an experiment with not compressing the normal maps as much, and it smoothed that square artifacting out quite a bit, however it really increased the memory requirements a lot, with the much larger normal map sizes. Texture streaming should theoretically allow us to reduce the amount of compression, however, so we'll probably try out some more experiments to see if we can live with the higher quality normal maps.
Yup. Definitely on High. These are my current settings:
I tested it out with Texture Quality on Low but it didn't appear to make any difference to the reflections. I also tried with and without Texture Streaming but that didn't have any effect. I haven't changed the setting for Decal Lifetime from its default value (yet) but I don't imagine that would be related.
thats right RICH is better for performance on my pc
GTX680
i5 3870
about 5 frames increase in certain situations
some of you who are having performance issues in certain infested areas should try to change it to rich, i was playing a comp game the other day in viel and i had poor performance when i had infestation set to minimal, but when i play it on rich not bad at all
I think that a great deal of what makes the reflections look so good in Descent is clever placement and configuration of the reflection_probe entities. It seems to me like the Max Distance property should be set so that the reflections appear to line up with as many of the walls and detailed objects as possible.
In the case of my screenshot of Pilot Drill, there are about 3 reflections overlapping each other and they don't appear to line up with anything. Additionally, the surface itself is quite grungy and doesn't look like it should have such a mirror-like reflection. And, of course, it also doesn't help that the cube maps look so blocky.
So, aside from the issue I posted about in my OP, it looks like some of the other maps could use some tender loving care with regards to the reflection_probe placement and configuration.
Oh, by the way, please also have a look at my other graphics-related thread in the Ideas and Suggestions area.
specs:
nvidia 670
intel i7 2600k
16gb ram
asus mobo
I currently have the 306.97 driver but ill get the latest 314.07 and see if it helps.
Apart from that, the Decent map and Gorgeous update is beyond fantastic.
All settings are maxed by the way, and i have double checked.
It's nice to know someone noticed that I put alot of effort into trying to create realistic looking reflections, still knowing that it wasnt possible in all cases, but if you can pick out what reflections should be prominent, coming from any angle that a person should be expected to see the room at, you can get some quite surprisingly good results. The goal for using the reflection probes should not be "fill the reflection probe to the extents of the room", but to aim for keeping single probes from A. not creating conflicting reflections of the same thing, and B. making sure that probes are placed at probable viewpoints that the player will usually be coming from.
awesome effect, but doesnt work somehow could you take a look at my post maybe you got an idea
https://dl.dropbox.com/u/386361/RenderDeferred.fx
I just overwrote my renderDeferred.fx after just about giving up and it fixed everything.
Did not do anything to my game. Reflections still look the same as above.
I think I see a game of minecraft going on there in the bottom section. What is this new sorcery?
Thanks for testing this out. That helps eliminate one variable.
However, I haven't done enough testing to know if this file fixes the gameplay on the first map load, and then fails on the second map load, in which case, ns_veil just merely happened to be the next map.
I do know, that the gorgeous update basically killed my gameplay, and that im sure im not the only one out there. I have an AMD APU. NS2 worked perfectly till this.
All settings maxed out. Latest Drivers (EDIT: Almost... Oops! Updating drivers now). Windows 8 Pro.
Am I correct in saying that it's been in the works since mid-2011 and was previously called ns2_lockdown? I ask because I came across one of your old threads about ns2_descent. Based on what I saw from the screenshots, it looked totally different back then. I'd be interested to hear about the history of ns2_descent some time.
I can confirm what others have already indicated: This replacement file doesn't do anything for the reflection quality. I even tried deleting the cache so that the shaders would recompile and it didn't help. (Dunno if doing that would actually make a difference but I thought I'd test it anyway.)
Could you post a screenshot from the same perspective as my initial screenshot so that we can compare?
Sweet! Looking forward to it.
Here are some screenshots comparing build 240 with 241:
And now a comparison between the screenshot of the Gorgeous Trailer and build 241:
Much better! Thanks!
Earlier today, I came up with a concept for a method to potentially filter out artifacts in the reflections caused by bright sources of light that are far away from a reflection_probe entity and also well outside the boundary set by it's "Maximum Distance" parameter. But before I get into the details, here are a couple of screenshots that show what sort of artifacts I'm talking about:
I refer these as artifacts because they are almost always misaligned. This appears to be caused by the fact that those sources of light are far beyond the imaginary sphere created by the reflection_probe and controlled by its Max Distance property. To filter these parts of the reflection out, I propose one of the following potential solutions:
- While generating the cube maps, render a thick black fog that starts just after the Max Distance and quickly fades to opaque.
- While generating the cube maps, generate an alpha channel for the cube maps based on the depth (distance) of each pixel.
Because reflections are blended with the environment additively, black areas appear invisible. By rendering a black fog that hides distant objects, you can filter those objects out of the reflection.The idea that uses the alpha channel is basically the same concept as the one that uses the fog except that it has the added potential of being able to also filter out objects that are too close to the reflection_probe center, although this is likely to be less useful.
A couple of parameters could be added to the reflection_probe to allow map authors to control this system. Assuming we're using the black fog method, they'd be something like this:
- Fog Begin - Distance at which the black fog is fully transparent. (Value should be somewhat greater than Max Distance for best results.)
- Fog End - Distance at which black fog is fully opaque. (Set to 0 to disable fog.)
What do you think, @Max?