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
2018-05-02Depsgraph: Allow per-depsgraph debug flagsSergey Sharybin
Currently only affects EVALUATION debug messages, rest are to be supported on per-depsgraph level.
2018-04-23Depsgraph: Make update flags debug print more usefulSergey Sharybin
Will print list of human-readable update flags, not the combined bitfield printed as a number.
2018-04-16Depsgraph: remove EvaluationContext, pass Depsgraph instead.Brecht Van Lommel
The depsgraph was always created within a fixed evaluation context. Passing both risks the depsgraph and evaluation context not matching, and it complicates the Python API where we'd have to expose both which is not so easy to understand. This also removes the global evaluation context in main, which assumed there to be a single active scene and view layer. Differential Revision: https://developer.blender.org/D3152
2018-04-13Depsgraph: don't pass evaluation context to update functions.Brecht Van Lommel
The depsgraph now contains all the state needed to evaluate it. Differential Revision: https://developer.blender.org/D3147
2018-04-13Depsgraph: remove engine type from evaluation context.Brecht Van Lommel
This was only used for viewport rendering, where we can just pass the engine type directly. There is no technical reason why we can't draw the same depsgrpah with different render engines. It also led to some weird things like requiring a render engine for snapping and raycast API functions. Differential Revision: https://developer.blender.org/D3145
2018-04-13Depsgraph: store mode and time in depsgraph, add view layer / scene accessors.Brecht Van Lommel
Scene, view layer and mode are now set in the constructor and never changed. Time is updated on frame changes to indicate which frame is being or has been evaluated last. This is a step towards making EvaluationContext obsolete. Differential Revision: https://developer.blender.org/D3144
2018-04-05Remove workspace object mode, reverts changes w/ 2.8Campbell Barton
This caused too many problems syncing object modes with multiple objects/windows/workspaces, see: D3130 for details.
2018-03-16Merge branch 'master' into blender2.8Sergey Sharybin
2018-03-16Depsgraph: Move evaluation debug prints to depsgraphSergey Sharybin
This way we can easily control format and keep it consistent. And also possibly do other trickery, like coloring addresses!
2018-02-28Point cache: Pass EvaluationContext for all the related functionsDalai Felinto
Now the only missing bit seems to be in Cycles to pass depsgraph to builtin_image_float_pixels(). Ideally we could get evaluation context instead of using depsgraph + settings. But for the other rna EvaluationContext functions this is how we are doing. Reviewers: sergey, brecht Differential Revision: https://developer.blender.org/D3087
2018-02-28Refactor depsgraph/render logic to serve evaluated depsgraph to enginesDalai Felinto
User notes ---------- Compositing, rendering of multi-layers in Eevee should be fully working now. Development notes ----------------- Up until now we were still using the same depsgraph for rendering and viewport evaluation. And we had to go out of our ways to be sure the depsgraphs were updated. Now we iterate over the (to be rendered) view layers and create a depsgraph to each one, fully evaluated and call the render engines (Cycles, Eevee, ...) with this viewlayer/depsgraph/evaluation context. At this time we are not handling data persistency, Depsgraph is created from scratch prior to rendering each frame. So I got rid of most of the partial update calls we had during the render pipeline. Cycles: Brecht Van Lommel did a patch to tackle some of the required Cycles changes but this commit mark these changes as TODOs. Basically Cycles needs to render one layer at a time. Reviewers: sergey, brecht Differential Revision: https://developer.blender.org/D3073
2018-02-06Use eObjectMode for function argumentsCampbell Barton
2018-02-06Object Mode: Add to EvaluationContext & DRWContextStateCampbell Barton
2018-01-16Depsgraph: pass depsgraph to editors update context structSergey Sharybin
This way callbacks will know which depsgraph is being changed, and where evaluated data is coming from.
2017-12-18Depsgraph: Use named typedef for tagSergey Sharybin
2017-12-18Depsgraph: Cleanup, typo in commentSergey Sharybin
2017-12-15Depsgraph: Cleanup, extra whitespaceSergey Sharybin
2017-12-15Depsgraph: Cleanup, use names for particle system tag flagsSergey Sharybin
2017-12-04Depsgraph: Remove unused property based update tagsSergey Sharybin
Those are unused, and not clear whether we will ever support this. Seems to be better having more like "component" tags, would be less magic involved to guess what exactly is to be tagged.
2017-11-30Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-30Depsgraph: More full explanation for previous commitSergey Sharybin
2017-11-28Cleanup, naming of engine type variableSergey Sharybin
2017-11-28Depsgraph: Wrap context used for editors update callback into a structureSergey Sharybin
This way we can extend it much easier.
2017-11-28Depsgraph: Remove workaround for Blender Internal in viewportSergey Sharybin
This commit effectively reverts fix T45702 done in 067fe2719a99. Reasoning: - Blender Internal is being replaced with Eevee, and will be removed entirely rather soon. - All render engines are planned to have own depsgraph, so such threading conflicts should no longer be an issue. - We don't want to spend time on porting workarounds for EOL things to a new design. Less code -- faster the work :) - If such notifications will end up needed for some other cases, we would need to re-implement this a more proper depsgraph tagging/flushing and make it to work with all copy-on-write datablocks and everything.
2017-11-28Depsgraph: Don't call DEG ID update functions directlySergey Sharybin
There might be much more logic involved there, also we might not know proper evaluated CoW pointer there yet. So we leave this to dependency graph to decide what exactly to do here.
2017-11-24Depsgraph: Fix crash when deleting object which is linked both directly and ↵Sergey Sharybin
indirectly
2017-11-24Depsgraph: Use depsgraph to handle edit mode selectionSergey Sharybin
This is crucial bit since batch cache is stored in the evaluated object, meaning we can't tag it's hatch cache dirty from the notifier system. Not easily at least. Better to leave this job to depsgraph, it knows all the copies of data.
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-03Depsgraph: Add utility function to tag ID for update within a specific graphSergey Sharybin
2017-10-24Depsgraph: Remove scene from refresh APISergey Sharybin
Scene is already stored in the graph.
2017-10-24Depsgraph: Cleanup, remove unused function declarationSergey Sharybin
2017-10-24Depsgraph: Switch to explicit graph specification for tag flushSergey Sharybin
2017-10-24Depsgraph: Begin bringing API to pass explicit graphSergey Sharybin
This is a first step towards an updated API where we pass explicit graph rather than a scene. This is because we can no longer deduct which graph to use since it will depend on a context. Will happen in several steps, so bisecting will not be such a pain.
2017-10-24Depsgraph: Cleanup, remove unused functionSergey Sharybin
It's unlikely we will ever want to flush tags on all possible scenes or dependency graphs. It wouldn't be thread safe at a best.
2017-10-24Depsgraph: Cleanup, unused function declarationSergey Sharybin
2017-10-20Depsgraph: Make depsgraph a part of evaluation contextSergey Sharybin
This way evaluation routines will know which exact depsgraph evaluation is happening for. Mainly needed to get evaluation flags associated with ID nodes.
2017-10-18Depsgraph: Make Copy-on-Write a command line optionSergey Sharybin
Before it was a compile time option which was not very easy to use or test. Now the project is getting more mature, so very soon we will be able to call for a public tests of limited features. The copy-on-write (which includes animation, modifiers) is enabled using --enable-copy-on-write command line argument.
2017-10-18Depsgraph: Remove declaration of legace removed functionsSergey Sharybin
2017-10-16Workspace: Move engines to workspace and Properties Editor cleanupDalai Felinto
Engine is not stored in WorkSpaces. That defines the "context" engine, which is used for the entire UI. The engine used for the poll of nodes (add node menu, new nodes when "Use Nodes") is obtained from context. Introduce a ViewRender struct for viewport settings that are defined for workspaces and scene. This struct will be populated with the hand-picked settings that can be defined per workspace as per the 2.8 design. * use_scene_settings * properties editor: workshop + organize context path Use Scene Settings ================== For viewport drawing, Workspaces have an option to use the Scene render settings (F12) instead of the viewport settings. This way users can quickly preview the final render settings, engine and View Layer. This will affect all the editors in that workspace, and it will be clearly indicated in the top-bar. Properties Editor: Add Workspace and organize context path ========================================================== We now have the properties of: Scene, Scene > Layer, Scene > World, Workspace [Scene | Workspace] > Render Layer > Object [Scene | Workspace] > Render Layer > Object > Data (...) Reviewers: Campbell Barton, Julian Eisel Differential Revision: https://developer.blender.org/D2842
2017-09-15Merge branch 'master' into blender2.8Sergey Sharybin
2017-09-15Transform: Enable recursion dependency check for new depsgraphSergey Sharybin
2017-07-26Depsgraph: Add utility function to initialize evaluation context from scene ↵Sergey Sharybin
and layer
2017-07-24Depsgraph: Be consistent about id type variable nameSergey Sharybin
2017-07-21Pass EvaluationContext argument everywhereLuca Rood
Note that some little parts of code have been dissabled because eval_ctx was not available there. This should be resolved once DerivedMesh is replaced.
2017-07-21Depsgraph: Fix missing material update when changing links in node treeSergey Sharybin
2017-07-19Depsgraph: Initial implementation of more granular taggingSergey Sharybin
This commit makes it so that only ID components which correspond to the tag flag are tagged for update (previously the whole ID would have been updated in the most of cases). This allows us to have more granular tag flags and prevent tagging of things we don't want to be tagged.
2017-07-19Depsgraph: Cleanup, remove unused untested functionsSergey Sharybin
2017-07-06Fix T51943: Depsgraph: world update happening eternally on background (set) ↵Sergey Sharybin
scene The issue was caused by updates being flushed for all scenes, while actual update was only called for an active one. Not sure why do we need to flush updates for all scenes, so now we only flush scenes which are updated.
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-08Depsgraph: Avoid over-documentationSergey Sharybin
The comment adds zero information.