[Bf-blender-cvs] [94ec66c2f28] blender-v3.3-release: Fix T99565: Cycles reading TGA files with alpha different than Blender
Brecht Van Lommel
noreply at git.blender.org
Wed Oct 26 12:00:20 CEST 2022
Commit: 94ec66c2f2859c717789a41cd5b8f0af0d7ec379
Author: Brecht Van Lommel
Date: Mon Oct 17 14:20:42 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB94ec66c2f2859c717789a41cd5b8f0af0d7ec379
Fix T99565: Cycles reading TGA files with alpha different than Blender
Thanks to Lukas for tracking down the cause in OIIO.
===================================================================
M intern/cycles/scene/image_oiio.cpp
===================================================================
diff --git a/intern/cycles/scene/image_oiio.cpp b/intern/cycles/scene/image_oiio.cpp
index 67d73759dd9..ea11e4da628 100644
--- a/intern/cycles/scene/image_oiio.cpp
+++ b/intern/cycles/scene/image_oiio.cpp
@@ -193,8 +193,17 @@ bool OIIOImageLoader::load_pixels(const ImageMetaData &metadata,
return false;
}
- const bool do_associate_alpha = associate_alpha &&
- spec.get_int_attribute("oiio:UnassociatedAlpha", 0);
+ bool do_associate_alpha = false;
+ if (associate_alpha) {
+ do_associate_alpha = spec.get_int_attribute("oiio:UnassociatedAlpha", 0);
+
+ /* Workaround OIIO not detecting TGA file alpha the same as Blender (since #3019).
+ * We want anything not marked as premultiplied alpha to get associated. */
+ if (!do_associate_alpha && spec.alpha_channel != -1 &&
+ strcmp(in->format_name(), "targa") == 0) {
+ do_associate_alpha = spec.get_int_attribute("targa:alpha_type", -1) != 4;
+ }
+ }
switch (metadata.type) {
case IMAGE_DATA_TYPE_BYTE:
More information about the Bf-blender-cvs
mailing list