I'm experimenting with PBR materials and want to make a matte dirt material. However, even with the roughness set to 1.0, there are some perfect reflections of bright objects at some angles. These reflections aren't diffuse, but look as if the roughness were set to 0.0. In fact, changing the roughness of my dirt material only changes how much the sky contributes and blurs the reflection of the pillar (within the boundary of where that reflection would appear if roughness = 1.0, hence not really making them diffuse as there's still a hard boundary between that reflection and the sky.

How do I achieve a realistic matter material? Also, I'm using Godot 4.0 beta 1. I am using Intel integrated graphics which has caused me problems in the past, but those were solved by updating my drivers which I have done. Thanks for your help!

Here is how I have SSR set up in my World Environment:

So in physically based rendering at a sufficiently steep angle of reflectance even the roughest materials become virtually perfect reflectors. This is called the fresnel reflectance.

It's not that the micro surface isn't still scattering some of the light bouncing off of it, but virtually all the light that does reach the viewer will be from direct reflection while the light that bounces off elsewhere will never reach the viewer at an energy level that would be noticeable.

That is, at a strong angle the reflection off of a rough micro surface won't be very blurry but it should still be dimmer.

https://marmoset.co/posts/basic-theory-of-physically-based-rendering/

In computer graphics the word Fresnel refers to differing reflectivity that occurs at different angles. Specifically, light that lands on a surface at a grazing angle will be much more likely to reflect than that which hits a surface dead-on. This means that objects rendered with a proper Fresnel effect will appear to have brighter reflections near the edges. Most of us have been familiar with this for a while now, and its presence in computer graphics is not new. However, PBR shaders have made popular a few important corrections in the evaluation of Fresnel’s equations.


The above descriptions of reflection and diffusion both depend on the orientation of the surface. On a large scale, this is supplied by the shape of the mesh being rendered, which may also make use of a normal map to describe smaller details. With this information any rendering system can go to town, rendering diffusion and reflection quite well.

However, there is one big piece still missing. Most real-world surfaces have very small imperfections: tiny grooves, cracks, and lumps too little for the eye to see, and much too small to represent in a normal map of any sane resolution. Despite being invisible to the naked eye, these microscopic features nonetheless affect the diffusion and reflection of light.


And it is with the above knowledge that we come to a realization, a big one actually: microsurface gloss directly affects the apparent brightness of reflections.

In case of godot and SSR however I'm not sure if microsurface is taken into account for SSR reflection.

    Megalomaniak
    Thank you for explaining, I had a feeling it might have been something like that. Godot's system still seems inaccurate, though. It looks like Godot sadly doesn't take roughness into account, which is disappointing, as I was excited for Vulkan in Godot 4.0. :///

    Mind you if the default material doesn't satisfy your needs you could make a custom shader either via shaderlanguage or visual shadergraph.

    It works better with a texture for roughness, but SSR is a hack and not totally accurate.

    It's working fine for me. I think you just need a proper PBR texture.

    SSR with roughness at 0.2:

    SSR with roughness at 0.8:

    With roughness at 1.0 you can't even see the reflection.

      a month later

      cybereality I'm pretty sure that's what I did though. I have textures for albedo and normal, and it didn't matter if I used a roughness texture or a uniform roughness value. What do you mean by proper PBR material? Is there anything I should do differently?

        stuck_in_a_maze Your normal map itself might be too noisy/micro-detailed and thus effectively canceling out some of the effect the roughness might have?