Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-12-23Cleanup - Various style/typo fixesJoshua Leung
2017-12-06Merge branch 'master' into blender2.8Sergey Sharybin
2017-12-06Depsgraph: Cleanup, remove unused functionSergey Sharybin
2017-12-06Depsgraph: Leave armature animation relation to build_animation()Sergey Sharybin
Needs some optimization trick to hook pose init function to animation instead of a bone. This is how flush will work anyway.
2017-12-06Depsgraph: Add ability to check whether relation exists before adding itSergey Sharybin
Currently not used, but this is aimed to be used when adding relations from FCurve to property which is being animated.
2017-12-06Depsgraph: Cleanup, line wrappingSergey Sharybin
2017-12-06Depsgraph: Move implementation part of relations header to own fileSergey Sharybin
2017-12-06Depsgraph: Cleanup, split build_animationSergey Sharybin
2017-12-06Depsgraph: Cleanup, split driver builder functionSergey Sharybin
2017-12-06Depsgraph: Cleanup, split build_driver function upSergey Sharybin
2017-12-06Depsgraph: begin use of RNAPathKey instead of re-implemented checks in ↵Sergey Sharybin
driver variables
2017-12-01Groups and collection: initial integrationDalai Felinto
Since we are ditching layers from Blender (2.8) we need a replacement to control groups visibility. This commit introduces collections as the building blocks for groups, allowing users to control visibility as well as overrides for groups. Features ======== * Groups now have collections This way you can change the visibility of a collection inside a group, and add overrides which are part of the group and are prioritized over other overrides. * Outliner Groups can inspect their collections, change visibility, and add/remove members. To change an override of a group collection, you need to select an instance of the group, and then you can choose "group" in the collection properties editor to edit this group active collection instead of the view layer one. * Dupli groups overrides We can now have multiple instances of the same group with an original "override" and different overrides depending on the collection the instanced object is part of. Technical ========= * Layers We use the same api for groups and scene as much as possible. Reviewers: sergey (depsgraph), mont29 (read/write and user count) Differential Revision: https://developer.blender.org/D2892
2017-11-24Depsgraph: Pass base in relations builderSergey Sharybin
2017-11-24Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-24Depsgraph: Use proper return type for find_node methodSergey Sharybin
2017-11-24Depsgraph: Use get_ prefix for function which expect operation to existsSergey Sharybin
2017-11-24Depsgraph: Flush flags from base to object as an evaluation stepSergey Sharybin
Previously it was done during depsgraph iteration, which is not good at all, since after evaluation nobody should really modify how object was evaluated.
2017-11-23Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-23Depsgraph: Cleanup, split build_object() a bitSergey Sharybin
2017-11-23Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-23Depsgraph: Cleanup, always call full `object`Sergey Sharybin
2017-11-23Rename any instance of scene layer or render layer in code with view layerDalai Felinto
The RenderResult struct still has a listbase of RenderLayer, but that's ok since this is strictly for rendering. * Subversion bump (to 2.80.2) * DNA low level doversion (renames) - only for .blend created since 2.80 started Note: We can't use DNA_struct_elem_find or get file version in init_structDNA, so we are manually iterating over the array of the SDNA elements instead. Note 2: This doversion change with renames can be reverted in a few months. But so far it's required for 2.8 files created between October 2016 and now. Reviewers: campbellbarton, sergey Differential Revision: https://developer.blender.org/D2927
2017-11-09Farewell BaseLegacyDalai Felinto
Finally, bases are all using the latest, newest SceneLayer bases.
2017-11-09Depsgraph: Only build collections for current graph scene layerSergey Sharybin
2017-11-09Depsgraph: Make dependency graph to be built from scene layerSergey Sharybin
This is a final step of having proper ownership. Now selecting different layers in the "top bar" will actually do what this is expected to do. Surely, there are still things to be done under the hood, that will happen in a less intrusive way.
2017-11-09Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-09Depsgraph: Remove chains of scene being passed all over in relations builderSergey Sharybin
2017-11-09Depsgraph: Cleanup, remove scene being passed all overSergey Sharybin
Use the state one instead.
2017-11-09Depsgraph: Remove bmain from internal builder APISergey Sharybin
Use the one from state.
2017-11-09Depsgraph: Make bmain part of builder state and remove bmain from public APISergey Sharybin
2017-11-09Depsgraph: Cleanup, use google style for private membersSergey Sharybin
2017-07-19Depsgraph: Add missing expansion od custom bone shapesSergey Sharybin
2017-07-19Depsgraph: Use dependency graph flush routines to update particle settingsSergey Sharybin
Previously tagging particle settings for update will iterate over all objects and all their particle system to see whether something needs an update or not. Now we put ParticleSettings as an ID to the dependency graph, so tagging it for update will nicely flush updates to all dependent particle systems. Current downside of this is that due to limitation of flush routines it will cause some extra particle system re-evaluation when it technically not needed, and what's more annoying currently it will discard point caches more often. However, this is a good and simple demonstration case to improve tagging/flushing system to accommodate for such cases (similar issues happens with CoW and shading components). So let's try to find some generic solution to the problem!
2017-06-19Depsgraph: Initial groundwork for copy-on-write supportSergey Sharybin
< Dependency graph Copy-on-Write > -------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || This is an initial commit of Copy-on-write support added to dependency graph. Main priority for now: get playback (Alt-A) and all operators (selection, transform etc) to work with the new concept of clear separation between evaluated data coming from dependency graph and original data coming from .blend file (and stored in bmain). = How does this work? = The idea is to support Copy-on-Write on the ID level. This means, we duplicate the whole ID before we cann it's evaluaiton function. This is currently done in the following way: - At the depsgraph construction time we create "shallow" copy of the ID datablock, just so we know it's pointer in memory and can use for function bindings. - At the evaluaiton time, the copy of ID get's "expanded" (needs a better name internally, so it does not conflict with expanding datablocks during library linking), which means the content of the datablock is being copied over and all IDs are getting remapped to the copied ones. Currently we do the whole copy, in the future we will support some tricks here to prevent duplicating geometry arrays (verts, edges, loops, faces and polys) when we don't need that. - Evaluation functions are operating on copied datablocks and never touching original datablock. - There are some cases when we need to know non-ID pointers for function bindings. This mainly applies to scene collections and armatures. The idea of dealing with this is to "expand" copy-on-write datablock at the dependency graph build time. This might introduce some slowdown to the dependency graph construction time, but allows us to have minimal changes in the code and avoid any hash look-up from evaluation function (one of the ideas to avoid using pointers as function bindings is to pass name of layer or a bone to the evaluation function and look up actual data based on that name). Currently there is a special function in depsgraph which does such a synchronization, in the future we might want to make it more generic. At some point we need to synchronize copy-on-write version of datablock with the original version. This happens, i.e., when we change active object or change selection. We don't want any actual evaluation of update flush happening for such thins, so now we have a special update tag: DEG_id_tag_update((id, DEG_TAG_COPY_ON_WRITE) - For the render engines we now have special call for the dependency graph to give evaluated datablock for the given original one. This isn't fully ideal but allows to have Cycles viewport render. This is definitely a subject for further investigation / improvement. This call will tag copy-on-write component tagged for update without causing updates to be flushed to any other objects, causing chain reaction of updates. This tag is handy when selection in the scene changes. This basically summarizes ideas underneath this commit. The code should be reasonably documented. Here is a demo of dependency graph with all copy-on-write stuff in it: https://developer.blender.org/F635468 = What to expect to (not) work? = - Only meshes are properly-ish aware of copy-on-write currently, Non-mesh geometry will probably crash or will not work at all. - Armatures will need similar depsgraph built-time expansion of the copied datablock. - There are some extra tags / relations added, to keep things demo-able but which are slowing things down for evaluation. - Edit mode works for until click selection is used (due to the selection code using EditDerivedMesh created ad-hoc). - Lots of tools will lack tagging synchronization of copied datablock for sync with original ID. = How to move forward? = There is some tedious work related on going over all the tools, checking whether they need to work with original or final evaluated object and make the required changes. Additionally, there need synchronization tag done in fair amount of tools and operators as well. For example, currently it's not possible to change render engine without re-opening the file or forcing dependency graph for re-build via python console. There is also now some thoughts required about copying evaluated properties between objects or from collection to a new object. Perhaps easiest way would be to move base flag flush to Object ID node and tag new objects for update instead of doing manual copy. here is some WIP patch which moves such evaluaiton / flush: https://developer.blender.org/F635479 Lots of TODOs in the code, with possible optimization. = How to test? = This is a feature under heavy development, so obviously it is disabled by default. The only reason it goes to 2.8 branch is to avoid possible merge hell. In order to enable this feature use WITH_DEPSGRAPH_COPY_ON_WRITE CMake configuration option.
2017-06-13Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-13Depsgraph: Remove root node conceptSergey Sharybin
Was rather weird and only used for time source. It is simpler to make depsgraph to keep track of time source directly. No need to introduce extra entitites without actual need.
2017-06-12Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-12Depsgraph: Add utility function to get depsgraph from node handleSergey Sharybin
The idea is to use this function for modifiers' updateDepsgraph functions instead of doing direct scene->depsgraph access.
2017-06-12Rename probe to light-probeCampbell Barton
Probe is a real general term, the new name is used often in docs online.
2017-06-09Fix missing updates when changing probe's clippingSergey Sharybin
Probes were completely out of depsgraph, so tagging them could not work at all. For now using some placeholder operations just to ensure order of updates.
2017-06-01Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-01Depsgraph: Remove subgraph nodesSergey Sharybin
Those were never finished nor used. Again, starting from clean state before we go into more complicated details.
2017-06-01Depsgraph: Cleanup, get rid of relation typeSergey Sharybin
It was never actually used apart from being stored at a construciton time. This caused some redundancy and ncertanty about which relation type to use during construciton (often existing types were not close enough to particular use case).
2017-04-05Depsgraph: Remove all layer bit flags related checksSergey Sharybin
These bits became obsolete with the new layer system, so we can simplify some code around them or avoid existing workarounds which were trying to keep things working for them. There are still work needed to be done for on_visible_change to avoid unnecessary updates, but that can also happen later.
2017-04-01Blender 2.8: Hook of layer collections evaluation in DEGSergey Sharybin
This moves selectability/visibility flag flush from some hardcoded places in the code to depsgraph. This way it is possible to simply tag depsgraph to update those flags and rest it'll do on its own. Using depsgraph for such flush is an overkill: those flags are fully static and can not be animated, so it doesn't really make sense to hook only those to depsgraph. However, in the future we will have overrides on collections, which ideally would need to be animatable and drivable and easiest way to support this is to do this on depsgraph level, so it ensures proper order of evaluation for animation and drivers. And it seems logical to do both overrides and flags flush from depsgraph from this point of view. This commit also includes the evaluation of IDProperty for collections, which basically are just another form of override. So once we implement the other kind of overrides the flushing and collection evaluation won't change. Patch by Sergey Sharybin and Dalai Felinto
2017-03-15Merge branch 'master' into blender2.8Sergey Sharybin
2017-03-15Fix T50938: Cache not being reset when changing simulation settings with new ↵Sergey Sharybin
depsgraph The thing i'm really starting to hate is the requirement to specify both operation code and node type. Seems to be duplicated enums without real need for that.
2017-02-07Render Layers and Collections (merge from render-layers)Dalai Felinto
Design Documents ---------------- * https://wiki.blender.org/index.php/Dev:2.8/Source/Layers * https://wiki.blender.org/index.php/Dev:2.8/Source/DataDesignRevised User Commit Log --------------- * New Layer and Collection system to replace render layers and viewport layers. * A layer is a set of collections of objects (and their drawing options) required for specific tasks. * A collection is a set of objects, equivalent of the old layers in Blender. A collection can be shared across multiple layers. * All Scenes have a master collection that all other collections are children of. * New collection "context" tab (in Properties Editor) * New temporary viewport "collections" panel to control per-collection visibility Missing User Features --------------------- * Collection "Filter" Option to add objects based on their names * Collection Manager operators The existing buttons are placeholders * Collection Manager drawing The editor main region is empty * Collection Override * Per-Collection engine settings This will come as a separate commit, as part of the clay-engine branch Dev Commit Log -------------- * New DNA file (DNA_layer_types.h) with the new structs We are replacing Base by a new extended Base while keeping it backward compatible with some legacy settings (i.e., lay, flag_legacy). Renamed all Base to BaseLegacy to make it clear the areas of code that still need to be converted Note: manual changes were required on - deg_builder_nodes.h, rna_object.c, KX_Light.cpp * Unittesting for main syncronization requirements - read, write, add/copy/remove objects, copy scene, collection link/unlinking, context) * New Editor: Collection Manager Based on patch by Julian Eisel This is extracted from the layer-manager branch. With the following changes: - Renamed references of layer manager to collections manager - I doesn't include the editors/space_collections/ draw and util files - The drawing code itself will be implemented separately by Julian * Base / Object: A little note about them. Original Blender code would try to keep them in sync through the code, juggling flags back and forth. This will now be handled by Depsgraph, keeping Object and Bases more separated throughout the non-rendering code. Scene.base is being cleared in doversion, and the old viewport drawing code was poorly converted to use the new bases while the new viewport code doesn't get merged and replace the old one. Python API Changes ------------------ ``` - scene.layers + # no longer exists - scene.objects + scene.scene_layers.active.objects - scene.objects.active + scene.render_layers.active.objects.active - bpy.context.scene.objects.link() + bpy.context.scene_collection.objects.link() - bpy_extras.object_utils.object_data_add(context, obdata, operator=None, use_active_layer=True, name=None) + bpy_extras.object_utils.object_data_add(context, obdata, operator=None, name=None) - bpy.context.object.select + bpy.context.object.select = True + bpy.context.object.select = False + bpy.context.object.select_get() + bpy.context.object.select_set(action='SELECT') + bpy.context.object.select_set(action='DESELECT') -AddObjectHelper.layers + # no longer exists ```
2017-01-26Depsgraph: Remove owner argument from relations builder as wellSergey Sharybin
The idea was to link something to a parent, but the point is: we must not pass owner deep and then have any parent-type-related logic implemented in the "children".
2017-01-25Depsgraph: Do ID tag outside of build_sceneSergey Sharybin
Otherwise it was possible to get ID tags cleared in the middle of DEG construction when there are set scenes used.