Issue was caused by Blender Internal changing LIB_DOIT flag
for scene when it gets updated for new frame. This leads into
conflict with flag used for tagging scenes fr render,
For now made it so nodes are being tagged instead of scene.
Only none node from those who're sharing the scene will be
tagged. And rendering scenes for node tree now checks for
node flag instead of scene's datablock one.
Ideally this tag would be replaced with scenes stored in an
array, but then it's not so clear how to check which node
to update.
Update tagging was happening only after full triangle was handled.
Now made it so images are updating once in 0.5sec, progress bar
will still update only after the whole triangle is done.
Code was rather confusing, get_object_orco was only
checking for orco in cache for some objects and was
actually allocating orco for other objects.
Now made it so get_object_orco always only checks
the cache and only call set_object_orco if there's
no orco for it yet.
Replaces ThreadedWorker and is gonna to be used
for threaded object update in the future and
some more upcoming changes.
But in general, it's to be used for any task
based subsystem in Blender.
Originally written by Brecht, with some fixes
and tweaks by self.
It allows effects such as baking vertex dirt maps to textures.
Also vertex based painting painting may be faster in the future,
so this is useful to have.
Thanks to Sergey for the review!
With mblur the render function was setting scene frame for each blur sample and calling DAG update, but not after the last sample is finished, leaving the scene in the wrong frame.
Added support for derivative map baking, which
is accessable as a dedicated baker type. Works
pretty much the same as displacement map baker,
but gives you derivative map.
In fact, inernally this baker is just a filter
which applies on the result of displacement map.
Both regular and multires baking are supported.
Patch by Morten Mikkelsen and self.
This makes more sense to have no displacement if baking
non-normalized displacement map or have mid-level displacement
(which is likely be close to no displacement as well) when
baking normalized displacement.
In any way it's better than using default black color.
rendering, in case some script wants to set it in the render_pre callback. In
case of decoupled 3d view layers or local view it will still override this
though.
here is not efficient for such cases, a ray depth can give up to 2^depth rays due
to the ray splitting in two at each depth. A proper solution requires a better
algorithm, for now I've ensured that you can at least cancel such renders. The
overhead from the extra test_break is negligible.
Lattice deformation used to store some runtime data
inside of lattice datablock itself. It's something
which is REALLY bad. Ideally DNA shouldn't contain
and runtime data.
For now solved it in a way that initialization of
lattice deform will create a structure which contains
lattice object for which deformation is calculating
and that runtime data which used to be stored in
lattice datablock itself.
It works really fine for mesh deform modifier, but
there's still runtime data stored in particle system
DNA, It didn't look something easy to be solved, so
leaving this as-is for now.
--
svn merge -r58277:58278 -r58795:58796 ^/branches/soc-2013-depsgraph_mt
This is because render info's current frame is either happens in
conversion stage (when using Render Layers node) or in sequencer's
rendering (which you don't usually have).
Now made it so when only compositor is used, proper current frame
is being set to re->i stats structure.
* Render Passes are now available for Subsurface Scattering (Direct, Indirect and Color pass).
This is part of my GSoC project, SVN merge of r58587, r58828 and r58835.