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
2016-09-30Depsgraph: Report proper error when modifier fails to create relation linkSergey Sharybin
2016-09-26Fix export image generated by export UV layoutSergey Sharybin
Was only happening with new dependency graph. The issue here is that scene's depsgraph layers will be 0 unless it was ever visible. Worked around by checking for 0 layer in the update_tagged of new depsgraph. This currently kind of following logic of visible_layers, but is weak. Committing so studio is unlocked here, will re-evaluate this layer.
2016-09-15Depsgraph: Avoid some false-positive time dependencies of scripted driversSergey Sharybin
This was quite weak to consider all scripted expression to be time-dependent. Current solution is somewhat better but still crappy. Not sure how can we make it really nice.
2016-09-06Revert "Depsgraph: Prioritize evaluation of the new scheduled nodes"Sergey Sharybin
This reverts commit 9444cd56db1a4e43d03fa8c735cd893b2e74b913. This commit caused some flickering in the bones when swapping IK to Fk. While it's unclear why such change caused any regressions, let's revert it to unlock the studio.
2016-08-26Depsgraph: Report number of objects to which update as flishedSergey Sharybin
This is an easiest way in the new depsgraph to get an idea how much objects were handled on update.
2016-08-25Depsgraph: Prioritize evaluation of the new scheduled nodesSergey Sharybin
The idea here is again to finish objects evaluation as soon as possible. Seems to be giving another 3% speedup in the barber scenes.
2016-08-25Depsgraph: Merge some traversal back onSergey Sharybin
After previous commit there is no longer measurable difference in speed and doing all stuff in one go is preferrable here anyway.
2016-08-25Depsgrpah: Use deque for the flush queueSergey Sharybin
The idea of the change is to avoid queue growing too long and handle all the operations as quick as possible. Gives about 3% speedup on one of the barber shots here.
2016-08-16Fix depsgraph to compute more accurate links for collision & force.Alexander Gavrilov
Current implementation more or less indiscriminately links physics objects to colliders and forces, ignoring precise details of layer checks and collider groups. The new depsgraph seemed to lack some such links at all. The relevant code in modifiers suffers from a lot of duplication. Different physics simulations use independent implementations of collision and similar things, which results in a lot of variance: * Cloth collides with objects on same or visible layer with dupli. * Softbody collides with objects on same layer without dupli. * Non-hair particles collide on same layer with dupli. * Smoke uses same code as cloth, but needs different modifier. * Dynamic paint "collides" with brushes on any layer without dupli. Force fields with absorption also imply dependency on colliders: * For most systems, colliders are selected from same layer as field. * For non-hair particles, it uses the same exact set as the particles. As a special quirk, smoke ignores smoke flow force fields; on the other hand dependency on such field implies dependency on the smoke domain. This introduces two utility functions each for old and new depsgraph that are flexible enough to handle all these variations, and uses them to handle particles, cloth, smoke, softbody and dynpaint. One thing to watch out for is that depsgraph code shouldn't rely on any properties that don't cause a graph rebuild when changed. This was violated in the original code that was building force field links, while taking zero field weights into account. This change may cause new dependency cycles in cases where necessary dependencies were missing, but may also remove cycles in situations where unnecessary links were previously created. It's also now possible to solve some cycles by switching to explicit groups, since they are now properly taken into account for dependencies. Differential Revision: https://developer.blender.org/D2141
2016-08-08Fix ID types DAG update tagging.Kévin Dietrich
The first character of the ID type was used to tag IDs for updates which is weak since different IDs can have the same first character (for example meshes, materials and metaballs), causing unnecessary updates of unrelated IDs. Now we use a unique index per ID type to tag for updates, unifying IDs arrays indexing along the way. Reviewers: sergey, mont29 Differential Revision: https://developer.blender.org/D2139
2016-08-06Basic Alembic supportKévin Dietrich
All in all, this patch adds an Alembic importer, an Alembic exporter, and a new CacheFile data block which, for now, wraps around an Alembic archive. This data block is made available through a new modifier ("Mesh Sequence Cache") as well as a new constraint ("Transform Cache") to somewhat properly support respectively geometric and transformation data streaming from alembic caches. A more in-depth documentation is to be found on the wiki, as well as a guide to compile alembic: https://wiki.blender.org/index.php/ User:Kevindietrich/AlembicBasicIo. Many thanks to everyone involved in this little project, and huge shout out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the custom builds and compile fixes. Reviewers: sergey, campbellbarton, mont29 Reviewed By: sergey, campbellbarton, mont29 Differential Revision: https://developer.blender.org/D2060
2016-07-26Depsgraph: Use proper check whether ID is an objectSergey Sharybin
Fixes bug which resulted in making it so layers from all layers are getting updated. Reported by Juan Pablo Bouza.
2016-07-26Depsgraph: Use proper unsigned int bitfield for layers flagsSergey Sharybin
2016-07-13Fix T48734: Driver not updating when using Single From Driver within same objectSergey Sharybin
2016-07-13Depsgraph: Make proxy behavior closer to old depsgraphSergey Sharybin
Fixes possible missing update of proxy_from pointer before using it in relations builder.
2016-07-13Revert "Depsgraph: Russian electric tape bodge to have multiple proxies work"Sergey Sharybin
This reverts commit 47d0d9cca4d0c3ccbdc368e97fc24652379fd368. Reverting the commit. Not only it did not solve all the cases of proxy popping, but also broke real cases with single proxy involved.
2016-07-13Depsgraph: Accumulate object layers from all basesSergey Sharybin
This solves bug when same object is instanced from multiple bases.
2016-07-11Depsgraph: Fix shape key nodes trying to be added multiple timesSergey Sharybin
2016-07-02Cleanup: comment blocksCampbell Barton
2016-06-23Fix T48658: Cycles render & render preview corrupts particlesCampbell Barton
Replaces `G.is_rendering` with `use_render_params` argument. This is needed for Cycles, which attempts to restore render-preview settings from particles, after it gets its own particle data, but fails to restore because `G.is_rendering` was being checked in psys_cache_paths (and other places).
2016-06-21Fix for string buffer overflow in DepsNode identifiers.Lukas Tönne
Layer flags can go up to 2^n-1 for n layers, requiring *at least* 9 chars + 1 terminator for 20 layers.
2016-06-18Cleanup: style, whitespace, doxy filepathsCampbell Barton
2016-06-08Depsgraph: Avoid redundant connection from IK solver to chainSergey Sharybin
Could give barely measurable speedup on a complex rigs.
2016-06-08Depsgraph: Remove unused codeSergey Sharybin
Became obsolete after recent changes.
2016-06-08Depsgraph: Optimize flush update when there's few objects and fewzillions of ↵Sergey Sharybin
bones Avoid annoying checks form inside operations loop, gives few percent speedup in files like army_of_blenrigs.
2016-06-06Depsgraph: Russian electric tape bodge to have multiple proxies workSergey Sharybin
Makes behavior of proxy_from backlink working similar to the old dependency graph. it's nasty, but needed here in the studio to get proxies fixes ASAP.
2016-06-01Depsgraph: Fix missing updates when modifying armatureSergey Sharybin
2016-05-30Depsgraph: Small optimization to update flushingSergey Sharybin
Gives about 5% speedup in scene with lots of nodes (army_of_clones.blend)
2016-05-30Depsgraph: Fix compilation with new depsgraph disabledSergey Sharybin
2016-05-30Depsgraph: Fix wrong layers flush form children to parentSergey Sharybin
It was possible to have issues in cases when several child dependencies goes to IDs with different layers. In this case order of flushing was not really well defined, which could lead to cases when indirect dependency via invisible object wouldn't work. Need some sort of barrier to prevent scheduling of parent nodes for until all children are done, but that's becoming quite nasty thing to implement. Added a temp field to component for now. maybe it's not so crazy actually and we might use it for evaluation as well, so we wouldn't flush updates to components which does not affect visible stuff.
2016-05-28Add missing includeCampbell Barton
2016-05-27Depsgraph: Accidentally removed one line too muchSergey Sharybin
2016-05-27Depsgraph: Cleanup and code simplificationSergey Sharybin
This is mainly a maintenance commit which was aimed to make work with this module more pleasant and solve such issues as: - Annoyance with looong files, which had craftload in them - Usage of STL for the data structures we've got in BLI - Possible symbol conflicts - Not real clear layout of what is located where So in this commit the following changes are done: - STL is prohibited, it's not really predictable on various compilers, with our BLI algorithms we can predict things much better. There are still few usages of std::vector, but that we'll be solving later once we've got similar thing in BLI. - Simplify foreach loops, avoid using const_iterator all over the place. - New directory layout, which is hopefully easier to follow. - Some files were split, some of them will be split soon. The idea of this is to split huge functions into own files with good documentation and everything. - Removed stuff which was planned for use in the future but was never finished, tested or anything. Let's wipe it out for now, and bring back once we really start using it, so it'll be more clear if it solves our needs. - All the internal routines were moved to DEG namespace to separate them better from rest of blender. Some places now annoyingly using DEG::foo, but that we can olve by moving some utility functions inside of the namespace. While working on this we've found some hotspot in updates flush, so now playback of blenrig is few percent faster (something like 96fps with previous master and around 99-100fps after this change). Not saying it's something final, there is still room for cleanup and API simplification, but those might happen as a regular development now without doing any global changes.
2016-05-25Depsgraph: Simplify some loops using foreach()Sergey Sharybin
2016-05-25Depsgraph: Solve wrong datamask calculated by depsgraphSergey Sharybin
This is a weak concept, but nice t support it for now, so we can enable new depsgraph by default earlier.
2016-05-17Fix C++11 build issues on OS X, remove references to outdated libs.Brecht Van Lommel
2016-05-17Fix T48434: Missing meta support in new depsgraphSergey Sharybin
2016-05-12Fix depsgraph tagging during the relations build pass.Lukas Tönne
Followup commit to 18e5e2fa1ac26ccbbd0cc8b486a5d92be6888021. Needs the same treatment in the second pass when ID tags are reset again.
2016-05-11Fix for node tree ID tagging in new depsgraph.Lukas Tönne
Nested node trees are not handled in BKE_main_id_tag_all.
2016-05-10Depsgraph: Use some more threading when tagging and finalizing evaluationSergey Sharybin
Also don't reset values there which were re-set on the next evaluation anyway.
2016-05-10Depsgraph: For big graphs update pending parents in threadsSergey Sharybin
Gives additional speedup from ~88 to ~91 fps with a test rig.
2016-05-10Depsgraph: Comment evaluation priority out for nowSergey Sharybin
It uses some additional compute power and the evaluation priority is not even used. This brings fps 88.2 with blenrig_for_debugging.blend on this desktop.
2016-05-10Depsgraph: Avoid multipel editors update per same IDSergey Sharybin
Simple thing, and apparently fps goes up to 80 with the demo file from jpbouza. Not sure why at this point fps is so much higher than the old dependency graph here now. And it's definitely something what others should verify as well.
2016-05-10Depsgraph: Don't leave active thread if there's only one children nodeSergey Sharybin
This reduces stress on the task scheduler and avoids some unwanted overhead caused by all the threading business in the cases when there's only one children node. We try to immediately switch to it's evaluation now, keeping active thread up and running. This bumps FPS from 58 to 64 on the blenrig test file from jpbouza.
2016-05-10Task scheduler: Add thread-aware task push routinesSergey Sharybin
This commit implements new function BLI_task_pool_push_from_thread() who's main goal is to have less parasitic load on the CPU bu avoiding memory allocations as much as possible, making taks pushing cheaper. This function expects thread ID, which must be 0 for the thread from which pool is created from (and from which wait_work() is called) and for other threads it mush be the ID which was sent to the thread working function. This reduces allocations quite a bit in the new dependency graph, hopefully gaining some visible speedup on a fewzillion core machines (on my own machine can only see benefit in profiler, which shows significant reduce of time wasted in the memory allocation).
2016-05-09Cleanup: header, styleCampbell Barton
2016-05-09Depsgraph: Store node input/output links in a vector rather than in setSergey Sharybin
Set is much slower to iterate through (due to cache misses and such) and the only advantage of using set is faster removal of link. However, we are iterating links much much more often than removing them, and even when we are removing links we don't really need to remove link from nodes which it connects -- we don't support partial depsgraph updates, so removing links from nodes on destruction is a waste of time. If we ever want to support partial updates we can have dedicated function to remove link from nodes it connects. This gives a surprising increase of fps from 42 to 56 with test file from Mr. J.P.Bouza (blenrig_for_debugging.blend). Surprising because old DEG is actually slower here (52 fps). Didn't see any regressions (and don't see why they will happen), so let's ask our riggers and animators to perform further speed tests ;)
2016-05-09Depsgraph: Avoid having per-node lock when scheduling childrenSergey Sharybin
Use atomic operations instead, should in theory improve timing of scheduling. However, probably not so visible yet because actual task scheduling still have some locks and memory allocations. Baby steps, what would i say.
2016-04-28Depsgraph optimization: Don't schedule tasks for empty "NOOP" nodes.Lukas Tönne
Currently a lot of the nodes in the new dependency graph are empty placeholders for organizational purposes. These nodes would, however, still be assigned a task which gets scheduled and takes up some time for worker threads to pop from the queue and run. This can be avoided by skipping these nodes during depsgraph scheduling, and scheduling their childrent right away. Gives a few percent speedup in BlenRig.
2016-04-28Fix for O(N^2) runtime tagging in the new depsgraph.Lukas Tönne
Some of the tagging functions would be called for every operation, and then in turn tag their ID nodes with all their operations again. With extensive rigs we get ID nodes with a lot (10,000+) operation nodes, which leads to millions of unnecessary tagging calls.