I am having trouble understanding the purpose of the recent change to the texture alpha mode setting as specified in the recent meeting notes:
- Image texture alpha modes have been changed. The new Channel Packed mode can be used for channel packing as commonly used by game engines, where the RGB and Alpha channels contain different images that should not affect each other. The new None replaces the Use Alpha option. ( Brecht Van Lommel )
As it stands now, “Straight” and “Premultiplied” are useless…
- “Straight” means premultiplied:
- Mess up the color very slightly (more in eevee) if not using external textures with cycles.
- If alpha socket is used, then it is un-premultiplied.
- “Premultiplied” means premultiplied-ish:
- Mess up the color if not using external textures with cycles.
- If alpha socket is used, then it is un-premultiplied.
- “Channel Packed” is what “Straight” should be:
- What straight was for eevee before this change
- Except packed textures on cycles it is what “Premultiplied” should be.
- “None” actually works correctly! Yay…
Behold:
Here is the texture used:
None of this makes any sense to me. Why add another alpha mode when all you really need are two: straight and premultiplied? Blender already seems to know if the texture has an alpha channel or not, so ignore the alpha mode if there isn’t one, and use straight (the real kind) as the default when there is.
Secondly, for “Straight” and “Premultiplied”: Why change the output of the color socket on the image texture node based on the connected/use state of the alpha socket? It’s confusing as hell and should not happen at all (this is why we have the alpha mode setting in the first place). Connecting the alpha socket causes the color to be un-premultiplied (via division) causing a loss of precision at lower values and black to stay black. This can cause all sorts of artifacts for things that are not pure black and white masks.
What is the reasoning behind all this?