diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-16 17:52:38 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-16 17:52:38 +0400 |
commit | 18feb1630d1fbcd3f6e8d71c3a2c5fc44fc9e02b (patch) | |
tree | 41fc7534e528709758e84293a9fdb2bcc559b52d /intern | |
parent | fe4305ef825f5652191d937d1d7ff22f302ddbd0 (diff) |
Fix #34966: cycles packed PNG images were showing alpha fringe, packed images
were not properly premultiplied.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 1f1bb830771..f4f9ec548a4 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -693,6 +693,14 @@ bool BlenderSession::builtin_image_pixels(const string &builtin_name, void *buil } } + /* premultiply, byte images are always straight for blender */ + unsigned char *cp = pixels; + for(int i = 0; i < width * height; i++, cp += channels) { + cp[0] = (cp[0] * cp[3]) >> 8; + cp[1] = (cp[1] * cp[3]) >> 8; + cp[2] = (cp[2] * cp[3]) >> 8; + } + return true; } |