[Bf-codereview] Alpha premul pipeline cleanup (issue 7018048)

sergey.vfx at gmail.com sergey.vfx at gmail.com
Fri Dec 28 12:07:19 CET 2012


Reviewers: bf-codereview_blender.org, brechtvl,

Description:
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.


Please review this at https://codereview.appspot.com/7018048/

Affected files:
   intern/opencolorio/fallback_impl.cc
   intern/opencolorio/ocio_impl.cc
   release/scripts/startup/bl_ui/properties_scene.py
   release/scripts/startup/bl_ui/space_sequencer.py
   source/blender/blenkernel/intern/image.c
   source/blender/blenkernel/intern/seqeffects.c
   source/blender/blenkernel/intern/seqmodifier.c
   source/blender/blenkernel/intern/sequencer.c
   source/blender/blenlib/BLI_math_color.h
   source/blender/blenlib/intern/math_color_inline.c
   source/blender/blenloader/intern/readfile.c
   source/blender/blenloader/intern/versioning_legacy.c
   source/blender/editors/render/render_preview.c
   source/blender/editors/space_image/image_buttons.c
   source/blender/gpu/intern/gpu_draw.c
   source/blender/imbuf/IMB_colormanagement.h
   source/blender/imbuf/IMB_imbuf.h
   source/blender/imbuf/IMB_imbuf_types.h
   source/blender/imbuf/intern/IMB_filter.h
   source/blender/imbuf/intern/colormanagement.c
   source/blender/imbuf/intern/divers.c
   source/blender/imbuf/intern/filter.c
   source/blender/imbuf/intern/readimage.c
   source/blender/imbuf/intern/tiff.c
   source/blender/makesdna/DNA_image_types.h
   source/blender/makesdna/DNA_scene_types.h
   source/blender/makesdna/DNA_sequence_types.h
   source/blender/makesrna/intern/rna_image.c
   source/blender/makesrna/intern/rna_scene.c
   source/blender/makesrna/intern/rna_sequencer.c
   source/blender/nodes/composite/node_composite_util.c
   source/blender/nodes/composite/nodes/node_composite_image.c
   source/blender/render/intern/include/render_result.h
   source/blender/render/intern/source/imagetexture.c
   source/blender/render/intern/source/pipeline.c
   source/blender/render/intern/source/render_result.c
   source/blender/render/intern/source/rendercore.c




More information about the Bf-codereview mailing list