Texture Display Bug: Alpha is multiplied with color channels

I am aware that this has been talked about before (Link), but it’s too big of an issue to just let it slide:

In any of the Color Space modes used with colored textures the color channels of a texture are multiplied with the alpha channel when displayed in the viewport:

I’m sure we can all agree that with the node setup shown here the viewport material (right) should look exactly like the isolated color channels in the image editor (left). However, for some reason the alpha channel (center) is needlessly multiplied on top of it.

Only when using the Color spaces “Raw” or “Non-Color” do we get the correct result:

As far as I can tell, this is a bug and not a design decision. It makes texture painting with alpha textures impossible, among other issues. Should I file a new bug report for this?
Or do I just not understand how textures work?

1 Like

You can use the new Channel Packed option on images to avoid this.

But note that for correct mipmaps and texture filtering, alpha must in fact be multiplied. This is what is done by Cycles and other renders, and now by Eevee as well now that it’s handling of alpha was unified with Cycles.

1 Like

And that was implemented just a few hours after I opened this thread. What a coincidence.
The new “Channel Packed” mode actually does solve the issue.

EDIT: It does not solve the issue as expected.

It’s possible to create correct alpha setups without it, people have been doing it with Cycles for years. The reason it’s not enabled by default is because it gives wrong texture interpolation.

Interesting. I’ll just have to accept that then. I guess there are people out there who like fiddling with nodes. At least there’s a simpler solution now for folks like me.

Coming from a game development background, I was just expecting Eevee to behave somewhat like a game engine regarding the way that images are treated. After all that’s how it was advertized. I guess “Channel Packed” is as close as I’ll ever get to that. Good enough. :+1: Thank you for your help.

All you have to do is plug the output of the image texture node in the principled BSDF sockets, that’s it.

So, after some testing I realized that Channel Packed was not giving me correct results either.
Until I tried using my texture with two separate image nodes:

So, I need to use the texture like this AND have Channel Packed activated in order for my texture to be displayed correctly in Eevee. It is, to my knowledge, the one and only way.

Just… why is this multi-step workaround even necessary, and why doesn’t this note setup…
… with Straight alpha give the exact same result?

A small update for those who are experiencing the same issue:
This has now been reported and acknowledged as a high priority bug, and is currently getting fixed.