blender/intern
Sergey Sharybin 08cea96ab0 Alpha premul pipeline cleanup
This assumptions are now made:
- Internally float buffers are always linear alpha-premul colors
- Readers should worry about delivering float buffers with that
  assumptions.
- There's an input image setting to say whether it's stored with
  straight/premul alpha on the disk.
- Byte buffers are now assumed have straight alpha, readers should
  deliver straight alpha.

Some implementation details:

- Removed scene's color unpremultiply setting, which was very
  much confusing and was wrong for default settings.
  Now all renderers assumes to deliver premultiplied alpha.

- IMB_buffer_byte_from_float will now linearize alpha when
  converting from buffer.

- Sequencer's effects were changed to assume bytes have got
  straight alpha. Most of effects will work with bytes still,
  however for glow it was more tricky to avoid data loss, so
  there's a commented out glow implementation which converts
  byte buffer to floats first, operates on floats and returns
  bytes back. It's slower and not sure if it should actually
  be used -- who're using glow on alpha anyway?

- Sequencer modifiers should also be working nice with straight
  bytes now.

- GLSL preview will predivide float textures to make nice shading,
  shading with byte textures worked nice (GLSL was assuming straight
  alpha).

- Blender Internal will set alpha=1 to the whole sky. The same
  happens in Cycles and there's no way to avoid this -- sky is
  neither straight nor premul and doesn't fit color pipeline well.

- Straight alpha mode for render result was also eliminated.

- Conversion to correct alpha need to be done before linearizing
  float buffer.

- TIFF will now load and save files with proper alpha mode setting
  in file meta data header.

- Remove Use Alpha from texture mapping and replaced with image
  datablock setting.

  Behaves much more predictable and clear from code point of view
  and solves possible regressions when non-premultiplied images were
  used as textures with ignoring alpha channel.
2012-12-31 13:52:13 +00:00
..
audaspace Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
bsp Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
container Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
cycles Alpha premul pipeline cleanup 2012-12-31 13:52:13 +00:00
dualcon Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
elbeem Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
ffmpeg style cleanup: tabs & whitespace 2012-11-03 15:35:03 +00:00
ghost Revert change from Jens, wrong pointer check in the code. 2012-12-30 10:38:56 +00:00
guardedalloc Ambient occlusion baker from multi-resolution mesh 2012-12-18 17:46:42 +00:00
iksolver Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
itasc Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
locale Add try/catch around i18n locale setter code, just in case... 2012-12-31 12:12:50 +00:00
memutil Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
mikktspace Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
moto Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
opencolorio Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
opennl Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
raskter Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
smoke Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
string Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
utfconv Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00
CMakeLists.txt Replacing gettext i18n backend by boost::locale one. 2012-11-11 16:54:26 +00:00
SConscript Added GPL header to sconscripts! 2012-12-17 08:01:43 +00:00