Blender Git Commit Log

Git Commits -> Revision b2c6b6a

August 31, 2013, 11:01 (GMT)
Pass EvaluationContext to object update routines

Main purpose of this change is to get rid of legacy
G.is_rendering check to distinguish whether update
happens for viewport or for render purposes.

Currently EvaluationContext structure only contains
single field, which indicates whether update happens
for viewport or render, but in the future it might
be extended by all the stuff needed for duplis and
friends.

This commit also gets rid of derived mesh creation
fro modifier stack for operand objects (like second
operand for boolean). This was only confusing and
violated threaded update actually. Now modifier stack
assumes all the dependencies are met and derived
meshes for operand objects might be just used.

This requires some changes to renderer as well,
so now there's also a derivedRender stored in object
structure. It also solves old TODO when boolean
will use preview setting for it's operand subsurf
level.

There's still the whole bunch of TODOs:
- Duplis might have some regressions when rendering.

- External render engines are to be take care about
(there might be some regressions for them as well,
because they're for sure not aware of derivedRender).

- Viewport required DAG_on_visible_update when changing
current screen to keep all DMs up-to-date. The same
happens when changing the scene, so perhaps this is
correct thing to have anyway.

- Render database is doing some tricks to make sure
derivedRender for invisible objects but which are
needed for other objects are properly calculated.

It uses some recursion and might end up with some
crashes if having dependency cycles.

This is to be changed to non-recursive algorithm
which would be aware of cycles as well. API might
have some cleanup as well.

- Ideally, derivedRender shall be calculated in threads
(same as what's happening in scene evaluation).

- Currently only meshes are being changed. Other types
of objects are not expected to change any behavior.

Commit Details:

Full Hash: b2c6b6a8ce8a12fe1433f86dc1f2c0c2925d4fa2
SVN Revision: 59690
Parent Commit: 85c4c99
Lines Changed: +598, -199

43 Modified Paths:

/source/blender/blenkernel/BKE_anim.h (+4, -2) (Diff)
/source/blender/blenkernel/BKE_depsgraph.h (+11, -4) (Diff)
/source/blender/blenkernel/BKE_DerivedMesh.h (+3, -0) (Diff)
/source/blender/blenkernel/BKE_group.h (+2, -1) (Diff)
/source/blender/blenkernel/BKE_object.h (+5, -2) (Diff)
/source/blender/blenkernel/BKE_scene.h (+16, -4) (Diff)
/source/blender/blenkernel/intern/anim.c (+44, -26) (Diff)
/source/blender/blenkernel/intern/depsgraph.c (+78, -22) (Diff)
/source/blender/blenkernel/intern/DerivedMesh.c (+29, -4) (Diff)
/source/blender/blenkernel/intern/dynamicpaint.c (+4, -1) (Diff)
/source/blender/blenkernel/intern/group.c (+3, -3) (Diff)
/source/blender/blenkernel/intern/object.c (+66, -28) (Diff)
/source/blender/blenkernel/intern/pointcache.c (+8, -4) (Diff)
/source/blender/blenkernel/intern/scene.c (+45, -25) (Diff)
/source/blender/blenkernel/intern/sequencer.c (+22, -6) (Diff)
/source/blender/blenkernel/intern/shrinkwrap.c (+1, -0) (Diff)
/source/blender/blenkernel/intern/smoke.c (+4, -1) (Diff)
/source/blender/blenloader/intern/readfile.c (+1, -0) (Diff)
/source/blender/collada/AnimationExporter.cpp (+1, -1) (Diff)
/source/blender/editors/mesh/editmesh_extrude.c (+4, -1) (Diff)
/source/blender/editors/mesh/editmesh_utils.c (+4, -1) (Diff)
/source/blender/editors/object/object_add.c (+1, -1) (Diff)
/source/blender/editors/render/render_internal.c (+36, -1) (Diff)
/source/blender/editors/render/render_opengl.c (+4, -4) (Diff)
/source/blender/editors/screen/screen_edit.c (+14, -1) (Diff)
/source/blender/editors/sound/sound_ops.c (+2, -2) (Diff)
/source/blender/editors/space_view3d/view3d_draw.c (+2, -2) (Diff)
/source/blender/editors/space_view3d/view3d_view.c (+2, -2) (Diff)
/source/blender/editors/transform/transform_conversions.c (+6, -2) (Diff)
/source/blender/editors/transform/transform_snap.c (+7, -3) (Diff)
/source/blender/gpu/intern/gpu_material.c (+1, -1) (Diff)
/source/blender/makesdna/DNA_object_types.h (+1, -1) (Diff)
/source/blender/makesrna/intern/rna_object_api.c (+5, -3) (Diff)
/source/blender/makesrna/intern/rna_scene_api.c (+7, -2) (Diff)
/source/blender/modifiers/intern/MOD_array.c (+7, -5) (Diff)
/source/blender/modifiers/intern/MOD_boolean.c (+3, -21) (Diff)
/source/blender/modifiers/intern/MOD_util.c (+15, -0) (Diff)
/source/blender/modifiers/intern/MOD_util.h (+1, -0) (Diff)
/source/blender/render/intern/source/convertblender.c (+121, -6) (Diff)
/source/blender/render/intern/source/external_engine.c (+1, -1) (Diff)
/source/blender/render/intern/source/pipeline.c (+2, -2) (Diff)
/source/blender/windowmanager/intern/wm_event_system.c (+3, -1) (Diff)
/source/blender/windowmanager/intern/wm_operators.c (+2, -2) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021