Substrate reflection of the rect light gets blurry with light scaling on one axis

Good day everyone.

The issue is that whenever I stretch my RectLight on one axis its reflection turns into a sad, blurry puddle instead of the crisp line it should be.

It happens only in Substrate, and if a light gets elongated on one axis only. If it is stays relatively square it seems to be ok. But that’s obviously not great.

As you can see on the screenshot below, with old pipeline it is as crisp as it should be.

Is there any way to work around it? Just a plane with emissive material reflects as a crisp edge, but, there is no specular on the object, so it is not really a light that I need.

Engine version is 5.7

And this is how it looks in 5.3. Just a chrome ball. roughness = 0, F0 = 1. diffuse = 0,0,0

Really wish it is some issue on my side :frowning:

Probably a bug then

@SebHillaire @Charles

Hi,

If that is clear coat, it might be normal new behavior depending on layers roughness.

Is the material only default lit with roughness = 0? Getting screenshot of the material root node and details panel would help.

Hello Sebastien,

Thank you for reply. Unfortunately, it is not clear coat related. Please find the chrome ball demo. It happens in both blendable or adaptive gbuffers. My setup is Nvidia 3090, latest drivers, AMD CPU, win11. Just in case it is something of use.

FYI, I have checked and 5.4 has sharp edges and 5.5 no longer has. Not sure why for now.

And this is not related to Substrate: it happens without Substrate too.

Oh my, right, seems I did not do a thorough test, excuse me for that.

Now the issue is even bigger, this is a show-stopper for most of the product vis.

Thank you for the effort, Sebastien @SebHillaire

1 Like

Ok so it comes from a fix we did to avoid other smooth specular from rect light to have and nan/float imprecision at edges. It was particularly visible for such long and thin stretched rect lights.

The fix is good and we are keeping it to avoid those artefact inherent to the area light evaluation code. We could not find any better solution and changing the threshold changes the bug to happen differently for more extremely stretched rect light. No threshold fits it all. So if one wants long thin rect light with sharp edges, the recommended approach is to cut it in smaller rect lights.

I have clarified that threshold usage in a CL that is not public yet.

Thanks

2 Likes

Hello Sebastien,

Thank you very much for taking time and looking into it.

Would you be so kind as to point me to which threshold it is? Edit: Nevermind, I have figured it out.

Maybe I will make a fork for myself and play with that to find my sweetspot. Right now what I am getting is unacceptable for my usecases.

I actually tried stack lights as per you suggestion, a few days ago, but there are all kinds of problems, performance for one. Also overlapping specular happen sometimes(despite them beign positioned edge-to-edge), or gaps in specular due to approximation.