Open cjxgm opened 5 years ago
This is probably due to the limitations of screenspace reflections. If the ray gets occluded or off-screen it cannot gather any information which results in missing reflections.
This is definitely not the limitations of screen space reflections, but the limitations of the particular implementation (conetracing?) of godot.
For example, in Blender Eevee, SSR is correct:
I've done some fiddling and hopefully this can be of some use:
When you progressively increase roughness, notice how a faint blur starts to appear around the objects (around 4 or 5 it becomes noticeable). It's almost as if roughness works BUT the non-rough version is being drawn below the rough one.
Even to achieve this effect though, you need to have another object (or have "max steps" high enough so the sky gets reflected) behind it to work. Otherwise, it is completely sharp on the edges.
You can also pitch the camera down, and once you get to just barely on top of reflective surface...:
Here as well, in alternating artifact lines you can see how the red cube's reflection is being blurred out
Basically, if you have an object behind it and you're at a low angle, it almost works (except for the very faint outline you can still see in the rightmost picture here and still relatively pronounced shape).
Just some things I observed and am hoping can be useful!
.zip of all the pics ssr_roughness.zip
It's the same artifacts as in my issue, and since you said the video is gone, I will close it in favor of this one!
Another thing I wanted to note is that, as visible in the images(first image roughness=0.01, second image roughness=0.3), with increased roughness the reflections loose color. At higher roughness values the reflections can become totally unusable.
@adriansnetlis Please open a separate issue for this, as this appears to be unrelated to the issue reported in the first post.
But I do believe they're at least related since both are issues with SSR wrongly handling roughness.
Can anyone still reproduce this bug in Godot 3.2.3 or any later release?
If yes, please ensure that an up-to-date Minimal Reproduction Project (MRP) is included in this report (a MRP is a zipped Godot project with the minimal elements necessary to reliably trigger the bug). You can upload ZIP files in an issue comment with a drag and drop.
Still reproducible in 3.2.3
You could apply a post process blur to the screen space reflection before applying it. I've used a change like that in a project and some custom builds, but it's kind of hacky and not really physically accurate (but it was good enough for me). I'll probably put it up as a patch or something but I don't know if that's a good solution for the actual engine source code.
Maybe someone else has some fancy (not quick'n'dirty'hacky) post process blur ideas?
Godot version: 3.1 beta1
OS/device including version: Windows, Linux
Issue description:
As shown in the image, the ground has a roughness of 0 (left) and 0.3 (right) with SSR enabled. Details inside objects get blurred when roughness is large (as shown in green circles) as expected, but object edges does not get blurred (as shown in red circles).
Blurred object edges are expected.
Steps to reproduce: Enable SSR in default_env, add a ground mesh, add a spatial material with metalness set to 1 and roughness set to non-zero. Add any mesh to be reflected.