I suspect pre-multiplied (on black) precedent we still see really has to do with two things
- Easier to share a single RGB image online
- PRE-webgames - Affter Effects blend modes like ‘overlay’ and ‘screen’ so black video/textures are fine
- TGA and TiFF formats had been the go to for a while
- PNGs are relatively new (year > 2002) due to Flash games explosive adoption rate and the fact that Photoshop never made an RGBA png and never has done a good job of it…
which is why SuperPNG is basically essential for me
but how did all this happens? how things develop - technical and historical - I will do my best to succinctly and thoroughly detail how i believe all this has happened which means it is also going to be verbose and long
because of expectations teams adopted for blend modes
Additive is often
Blend SrcAlpha, One
alpha fades the texture but additive since blending means _Tinting texture *= (0,0,0) is identical in function,
details
alpha channels is now a waste of memory and use/data becomes redundant
(32bit RGBA + PVRTC 4BPP = bad artifacts; yes places still use PVRTC 4BPP)
Then you have Alpha blending
Blend SrcAlpha OneMinusSrcAlpha
RGB is going to be RGB *= Alpha ‘darkening’ your color and yields undesirable dark halo; When you attempt to use a 24bit texture that looked fine Additive it won’t look right in Alpha blending…
to re-address how to standardize texture authoring…which is why i made the fits all solution for Unity users outlined in the link details
Unity extended function to utilize Photoshop’s native PNG compression so artists can author simply with transparency and the file works for both additive and alpha… (even though I completely misunderstood the OP issue with regard to doing it in substance)
contextual opinions based on experiences where things differ UNity vs UE perhaps
Black ‘flattened’ VFX texture is standard for me in projects because RGBA Pre-multiplication blending supersedes use of alpha/additive blend modes
- Pre-mult performs both
- eliminates two shaders → 1 which intrinsically means draw call savings
- functional against bright backgrounds
I never desire [Source] * SrcAlpha I find it it’s redundant frankly
When using files in software like Maya/Unity you are shown 24bit RGB thumbnails — due to Photoshops native PNG format (insert rant) transparent pixels (for compression sake) are ceilinged 1,1,1,1 (white)
checking these files often shows White bounding box / ‘artifacts’ from runline compression in the thumbnails
such a nuisance that making PNGs on black became a standard at mobile studios
it was semi-recent ‘alpha’ = greyscale was added so you can convert textures in Unity and get a more comprehensive project layout
obviously helpful for flexibility and for teams to see objects in project
BUT
All this takes a backset to the sheer experience the artist/team has when it comes to working with textures in shaders
the only reason I would use a pre-multiplied (on black) texture for ‘reason’ when not using premult blend modes is
- restrict textures to 24bit for memory savings (PVRTC 4bpp is better quality)
- and because the project ONLY uses Additive blend mode
there are also artistic expectations / contrasting opinion. many expect Color should be *=Alpha so that sliding ‘transparency’ produces a fade no matter what
this is the difference between additive being
Blend SrcAlpha, One
vs
Blend One, One
It is My opinion Blend One One IS technically ‘additive’
these textures should not have an alpha to save memory, that would be the point. a 24bit RGB on black texture functions identically since LERP RGB → (0,0,0) ostensibly IS transparent . So there is no need to have 33% more texture memory, gain more artifacts with hardware compressions nor even use transparency/Alpha functions & data