Recorder - Case 1423485 - Premultiplied Alpha Bug - PNG and EXR

Hi Guys

Unity 2021.2.1f1+ HDRP 12.1+ with Raytracing (WITH TAA instead of DLSS):
Makes no difference if it’s TAA or DLSS

This looks like a bug to me related to pre multiply alpha issue. PNG and EXR results in same issue. You get jaggy alpha edges

I’m rendering out PNG with alpha. I have a Physcial Based Sky as my environment, and on my cam I’ve set the background to pure black color.

However, my image sequence have LOADS of shimmer/flickering around the outer edges of the CG elements, where the sky touches my cg elements. That same outer edges also appear to have no anti-aliasing. The cg itself is fine and with practically 0 flicker and practically perfect anti-aliasing

Here’s a portion of the render at 200%:
7645183--953011--upload_2021-11-10_21-31-46.png

and with the alpha:
7645183--953014--upload_2021-11-10_21-32-17.png

This is from the EXR, but PNG gives same result. You can clearly see the jaggy edges.

I also tried in Resolve/Fusion, and it looks the same.

In resolve with staright alpha:
7646998--953281--upload_2021-11-11_10-9-17.png

In resolve with premultiplied alpha:
7646998--953284--upload_2021-11-11_10-10-0.png

Clearly there’s an issue

@vladala could you take a look for me please

I’ve also tried various AA options, all with same jaggy alpha edge result
DLSS
TAA - Medium
No AA

All the same on alpha edges (of course “inside” the cg parts, the AA is different based on the AA I choose, but on the background alpha edges, its still a mess)

Investigating some more, and I wonder perhaps if this could help troubleshoot thigns:

Here I have a custom pass volume, white assigned. Injection point: “BEFORE Post Process”
(things seem fine and I could probably output this and use it as my alpha, but then I have to run the output twice, and over 8000 frames, that could take some time.
7650700--953926--upload_2021-11-12_15-48-7.png

Next up, same as above, but injection point: “AFTER Post Process”

Looking at those 2 shots, it feels to me its the wrong way around. I would expect the smoother, correct one to be the AFTER Post process, but from these screenshots, it seems its the wrong way around.

Hello,

Thanks for all the infos we are taking a look at it.

1 Like

Thanks @antoinecharton , looking forward to your findings

I have logged a bug for it we will see what we can do. We found issues with it without Raytracing as well. For your problem I don’t have a way around until we fix it other than the one you already found with AOV. One suggestion you could try is using additive alpha with some tweaking you could have similar outputs as premultiplied. It’s a way around but until then it might do the trick for you.

Let me know if you find anything else :).

1 Like

Any light at the end of the tunnel on this issue @antoinecharton ?
Could you maybe give us the bug number so I can check when it is fixed…

Guys, any news on this please or bug number that I can track?

@antoinecharton @vladala @cguertin
@unitybru

Hello my mistake. Here it is.

1 Like

Thanks @antoinecharton

Any idea if work has begun on attempting to fix it yet?

Not yet. We are gonna do a pass on graphic bugs soon and this one is in the list. Just to be completely transparent if the problem is not in the recorder package it might be a bit longer to solve.
The issue tracker is directly linked to our jira so as soon as someone starts looking at it it will be updated in progress.

1 Like

Thanks, looking forward to it

Keep up the good work

1 Like

Hello,
Could you try changing the post-processing buffer format to R16G16B16A16 (HDRP asset → Post-processing → Buffer Format). It should at least remove the weird aliasing you see on the alpha map.
Let us know if that solve/improve your issue.

Tried that, didnt help in my case

Could you share the output you had with this setting? I am looking for a difference between what you had and what you got now. It will help us rule out some problems :slight_smile:

Sorry for the late reply @antoinecharton
Here’s my settings:
7863679--998686--upload_2022-2-3_10-56-18.png

And here is the wrong output it produces (PNG file displayed in Photoshop and zoomed 200%):
7863679--998689--upload_2022-2-3_10-57-24.png

For giggles:
7863679--998692--upload_2022-2-3_10-58-58.png

But output still the same:
7863679--998695--upload_2022-2-3_10-59-22.png

But the setting make no difference:
7863679--998698--upload_2022-2-3_11-0-44.png

(carryin on from previous message due to 5 atachment limit per message)
7863688--998701--upload_2022-2-3_11-1-59.png

7863688--998707--upload_2022-2-3_11-3-15.png

Unity 2021.2.2f1 with Raytracing, Recorder 4.0.0-pre.2

Cam settings:

1 Like

Hello,

The team found where the issue was coming from. DLSS doesn’t support alpha channels and the limitation comes from the Nvidia side (their DLSS SDK). Unfortunately we can’t do anything about it.

In your case you could try using TAA Upscale. We checked it and it works correctly with Alpha channel.

Let us know if this works for you. We could add this in the limitations and solutions of the recorder if this does the trick.