Movies support for Cycles
authorSergey Sharybin <sergey.vfx@gmail.com>
Wed, 16 Jan 2013 17:07:25 +0000 (17:07 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 16 Jan 2013 17:07:25 +0000 (17:07 +0000)
commitb01233b07fbf06ba5139d4565c6148f65ab921e9
treeb7ffc32198307c1364f41b8f0368026a16af88ed
parentf55a9eb3d4e12e5667e16b9f4dd2c2ec88a792f6
Movies support for Cycles

This adds support of movie textures for Cycles rendering.

Uses the same builtin images routines as packed/generated images,
but with some extra non-rna hookups from blender_session side.

Basically, it's not so clear how to give access to video frames
via C++ RNA -- it'll require exposing ImBuf to API, doing some
threading locks and so. Ended up adding two more functions which
are actually bad level call, but don't consider it's so much bad
-- we have few bad calls already, which are actually related.

Changed a bit how builtin images names are passing to image
manager. Now it's not just an ID datablock name, but also a frame
number concatenated via '@' character, which makes itpossible to
easily know frame number to be used for movie images, without
adding extra descriptors to image manager.

Decoding of builtin name is a bit slower now, but it should be
still nothing in comparison with rendering complexity.

Also exposed image user's frame_current to python API, which
is needed to get absolute frame number of movie from node's
image user.

P.S. Generated/packed images are also using bad level call but
only does it to make things more clear here.  Either all images
are using C++ RNA here or no images does. That's the most clear
for now.
intern/cycles/blender/blender_session.cpp
intern/cycles/blender/blender_session.h
intern/cycles/blender/blender_shader.cpp
intern/cycles/blender/blender_util.h
source/blender/blenkernel/BKE_image.h
source/blender/blenkernel/intern/image.c
source/blender/makesrna/intern/rna_image.c