Blender Git Loki
Git Commits -> Revision b2c6b6a
Revision b2c6b6a by Sergey Sharybin (soc-2013-depsgraph_mt) 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)
/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)