diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2020-06-07 12:33:48 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2020-06-07 12:33:48 -0400 |
commit | 8036bcdf007ef4c3e8b39778a2a202ba0b22edec (patch) | |
tree | 980c4e9f592a79bf5d295d2cf8a7df9c5bcc8f35 /src/SMAPI/Framework/ContentManagers | |
parent | 868eefb9a7d30c194a4d3e2b95565cebdcf053be (diff) | |
download | SMAPI-8036bcdf007ef4c3e8b39778a2a202ba0b22edec.tar.gz SMAPI-8036bcdf007ef4c3e8b39778a2a202ba0b22edec.tar.bz2 SMAPI-8036bcdf007ef4c3e8b39778a2a202ba0b22edec.zip |
improve premultiplication performance
Diffstat (limited to 'src/SMAPI/Framework/ContentManagers')
-rw-r--r-- | src/SMAPI/Framework/ContentManagers/ModContentManager.cs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs index fda80a83..cfda55b9 100644 --- a/src/SMAPI/Framework/ContentManagers/ModContentManager.cs +++ b/src/SMAPI/Framework/ContentManagers/ModContentManager.cs @@ -246,10 +246,11 @@ namespace StardewModdingAPI.Framework.ContentManagers texture.GetData(data); for (int i = 0; i < data.Length; i++) { - if (data[i].A == byte.MinValue || data[i].A == byte.MaxValue) + var pixel = data[i]; + if (pixel.A == byte.MinValue || pixel.A == byte.MaxValue) continue; // no need to change fully transparent/opaque pixels - data[i] = Color.FromNonPremultiplied(data[i].ToVector4()); + data[i] = new Color(pixel.R * pixel.A / byte.MaxValue, pixel.G * pixel.A / byte.MaxValue, pixel.B * pixel.A / byte.MaxValue, pixel.A); // slower version: Color.FromNonPremultiplied(data[i].ToVector4()) } texture.SetData(data); |