Image Texture Node multiplies Color with Alpha

Hi there,

I noticed about a year ago that when you have Alpha in an image it multiplies the Color values with it so you end up with darker RGB where the image was transparent.

This is quite odd behavior and I am wondering if it wouldn’t be better to leave it up to the user to multiply it if that is what’s necessary for some reason.

Unfortunately there is no good way to undo it… I found out you can invert alpha, add 0.5 and then multiply with that and it’s almost the same, but you lose colors significantly where alpha was darker.

Since I started using Unreal (and also GPU rendering) I was trying to minimize memory costs by all means and storing data in the alpha channel is a great way to reduce vRAM so it would be great if it’s more possible.

AFAIK this is not how it usually is, Unreal treats alpha as a completely separate channel that can be used for something else entirely.

Texture without Alpha:

Exactly the same Texture with Random per Element stored in Alpha:

Alpha itself:

Here is the workaround I mentioned above, can’t go unnoticed how mangled color dark alpha values are:

detail of “less extreme dark values” notice the color compression (gif like)


See here, we plan to fix it so non-color data can avoid this:
https://developer.blender.org/T53672

For cases where alpha is actually alpha, it must be multiplied for correct results.

Slight issue here is that Unreal Engine uses Normal Map DXT5 (BC5 on DX11) compression for normal maps which doesn’t allow for alpha channel at all so it only makes sense to put something into the Diffuse texture’s Alpha channel if the point is to use the same 2 textures for both softwares.

But from what I understand the Non-Color data only means that the image is loaded with gamma 1 so if we run it through gamma node set to 2.2 the result is almost exactly the same (Non-Color -> Gamma 2.2 comes out tiny tiny tiny tiny bit more saturated)