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
2019-01-31Depsgraph: Comb code to a better state all overSergey Sharybin
Some summary of changes: - Don't use DEG prefix for types and enumerator values: the code is already inside DEG namespace. - Put code where it locally belongs to: avoid having one single header file with all sort of definitions in it. - Take advantage of modern C++11 enabled by default.
2018-12-10Fix T58932: Impossible to influence the particle systemSergey Sharybin
2018-12-07Depsgraph: Remove duplicated sets of recalc/update flagsSergey Sharybin
There were at least three copies of those: - OB_RECALC* family of flags, which are rudiment of an old dependency graph system. - PSYS_RECALC* which were used by old dependency graph system as a separate set since the graph itself did not handle particle systems. - DEG_TAG_* which was used to tag IDs. Now there is a single set, which defines what can be tagged and queried for an update. It also has some aggregate flags to make queries simpler. Lets once and for all solve the madness of those flags, stick to a single set, which will not overlap with anything or require any extra conversion. Technically, shouldn't be measurable user difference, but some of the agregate flags for few dependency graph components did change. Fixes T58632: Particle don't update rotation settings
2018-11-14Depsgraph: Fix missing point cache reset when physics changesSergey Sharybin
Among all the lines moved around, the general idea is quite simple. Actually, there are two ideas implemented there. First one, is when object itself is tagged for update, we tag its point cache component for evaluation, which makes it so point cache is properly reset. We do it implicitly because otherwise we'll need to go everywhere and add explicit tag in almost all the properties. Second thing is, we link all collider and force fields to a point cache component using special type of link. This type of link only allows flush if change is caused by a user update. This way reset does not happen when change is caused due to animation, but will properly happen when user causes indirect change to the objects which are part of physics simulation.
2018-11-08Fix T57689: world nodes / texture not updating for Eevee.Brecht Van Lommel
Only do GPU material updates through depsgraph evaluation now. This was already happening for material, just missing for the world.
2018-11-02Fix T57316: material preview icons not updating.Brecht Van Lommel
The editors update callback was getting the COW datablock, it should be the original where the preview icons are stored.
2018-09-07Depsgraph: Cleanup, namingSergey Sharybin
If something is a list of data, it is to be called list, and data is to be called data. No need to call list a data and data a weird two letter abbreviation. Clarity is our friend!
2018-09-03Depsgraph: Use more meaningful name for flags storageSergey Sharybin
2018-07-10DrawData: Change drawdata to a generic struct shared accross ID typesClément Foucault
This makes tagging much more generic and make the world updates more in line with the new tagging system (Depsgraph).
2018-07-04Depsgraph: Log entry operations which are directly modified and taggedSergey Sharybin
2018-06-12Depsgraph: Add debug option to invalidate data tagged for updateSergey Sharybin
See comment for INVALIDATE_ON_FLUSH.
2018-05-30Fix missing Cycles 3D viewport updates when editing materials, lamps.Brecht Van Lommel
This introduces a new depsgraph API for getting updated datablocks, rather than getting it from bpy.data. * depsgraph.ids_updated gives a list of all datablocks in the depsgraph which have been updated. * depsgraph.id_type_updated('TYPE') is true if any datablock of the given type has been added, removed or modified. More API updates are coming to properly handle multiple depsgraphs and finer update granularity, but this should make Cycles work again.
2018-05-02Depsgraph: Make all print messages to respect per-depsgraph debug flagsSergey Sharybin
2018-04-25Depsgraph: Preserve CoW ID recalc flagsSergey Sharybin
Previously they would have been replaced with flag from original datablock, which is not what we want.
2018-04-23Merge branch 'master' into blender2.8Sergey Sharybin
2018-04-23Depsgraph: Add relation flag to avoid flush across itSergey Sharybin
This way we can avoid re-evaluation of certain parts of datablock when something unrelated has changed.
2018-04-18Make depsgraph tag for auto-override IDs it updates.Bastien Montagne
This will reduce amount of needless auto-override checks, at least when not touching anything related to overriding IDs...
2018-04-12Depsgraph: Move CoW tag to ID datablock tagSergey Sharybin
Unless there is an external action from an user, there should not be need in re-copying original datablock to a copied one. This brings performance up from 5fps to 11fps with Spring runcycle (performance in master is 14fps).
2018-04-12Depsgraph: Introduce ID recalc flag for COW componentSergey Sharybin
Currently unused, but will become handy to check whether ID needs to have COW update to be run.
2018-02-22Merge branch 'master' into blender2.8Sergey Sharybin
2018-02-15Merge branch 'master' into blender2.8Sergey Sharybin
2018-02-15Cleanup: use '_len' instead of '_size' w/ BLI APICampbell Barton
- When returning the number of items in a collection use BLI_*_len() - Keep _size() for size in bytes. - Keep _count() for data structures that don't store length (hint this isn't a simple getter). See P611 to apply instead of manually resolving conflicts.
2018-01-29Fix T53598: OpenGL Render Animation does not update shadowsSergey Sharybin
General idea of the fix: skip the whole draw manager callback madness which was used to tag object's engine specific data as dirty. Use generic recalc flag in ObjectEngineData structure instead. This gives us the following benefits; - Sovles mentioned bug report. - Avoids whole interface lookup for opened viewports for EVERY changed ID. - Fixes missing updates when viewport is temporarily invisible. Reviewers: dfelinto, fclem Differential Revision: https://developer.blender.org/D3028
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.
2018-01-11Merge branch 'master' into blender2.8Sergey Sharybin
2018-01-11Depsgraph: Make eval initialization more friendly for threadingSergey Sharybin
Helps in cases of not very complex scenes and lots of system threads available. A bit hard to measure change on it's own, it works best with the upcoming changes and gives measurable improvements.
2018-01-10Merge branch 'master' into blender2.8Sergey Sharybin
2018-01-10Task scheduler: Use const qualifier in callbacks for parallel rangeSergey Sharybin
2018-01-10Task scheduler: Use restrict pointer qualifierSergey Sharybin
Those pointers are never to be aliased, so let's be explicit about this and hope compiler does save some CPU ticks.
2018-01-09Merge branch 'master' into blender2.8Sergey Sharybin
2018-01-09Task scheduler: Use single parallel range function with more flexible functionSergey Sharybin
Now all the fine-tuning is happening using parallel range settings structure, which avoid passing long lists of arguments, allows extend fine-tuning further, avoid having lots of various functions which basically does the same thing.
2018-01-09Task scheduler: Get rid of extended version of parallel range callbackSergey Sharybin
Wrap all arguments into TLS type of argument. Avoids some branching and also makes it easier to extend things in the future.
2017-12-20Merge branch 'master' into blender2.8Sergey Sharybin
2017-12-20Depsgraph: Move ID node to own fileSergey Sharybin
2017-12-19Depsgraph: Rework tagging and flushing routinesSergey Sharybin
The goal is: have id->recalc flags set to components which got changed. To make it possible for render engines to check on a more granular basis what changed in the object. For example, is it a transform which changed or is it just some ID property changed which has nothing to do with rendering. The tricky part is: we don't want duplicated logic in tagging and flushing. In order to avoid this duplication, we store ID recalc flag in the component node type information. That type information could easily be accessed by both tagging and flushing routines. Remaining part of the changes are related on changing the way how tagging works. The new idea here is to have utility function which maps update tag to a component. This way we can easily set ID recalc flags right away. Without any duplication of ID recalc flags set in multiple flag handler functions. With all this being said, there should be no user measurable difference for now, it's a gigantic basement for some upcoming work and fixes.
2017-12-18Depsgraph: Synchronize flushing with 2.8 branchSergey Sharybin
Not only this helps merges form master to the branch, but also: - Allows us to production-check changes as soon as possible. - Avoids some unnecessary editors update about ID changes. - Adds small optimization on queue size by always keeping one of the pointers outside of the queue.
2017-12-15Depsgraph: Add named constant with number of node typesSergey Sharybin
2017-12-15Depsgraph: Fix assignment to wrong flagsSergey Sharybin
2017-12-15Merge branch 'master' into blender2.8Sergey Sharybin
2017-12-15Move ID recalc flags into dedicated field in IDSergey Sharybin
Currently this is a no-visible-changes change, but the idea is to use this dedicated flag to tell which exact components of ID changed, make it more granular than just OBJECT and OBJECT_DATA. Allow setting this field based on what components new dependency graph flushed on evaluation.
2017-12-14Depsgraph: Cleanup, use more explicit way to fill in a structureSergey Sharybin
The possible issue with just listing arguments is that it might not be clear what particular value is used for. For example, is it a scene itself, or is it a parent scene? Not as if it's not very clear now, but better be explicit for the future, and me reading code in 10 years.
2017-12-13Depsgraph: Move data update tag to object->data itselfSergey Sharybin
2017-12-02Fix MSVC compilation, there is no 'Designated initializers' in C++!Bastien Montagne
Looks like gcc is at the very least missing a warning here!
2017-12-01Depsgraph: Call editors update after everything was flushedSergey Sharybin
This way we can inform editors about all edits at once. Currently this is not used, but in the next commits we will inform editors about what exactly has changed.
2017-12-01Depsgraph: Separate loop for ID node flags clearSergey Sharybin
This ends up in less number of memory writes, which should have positive effect on performance.
2017-12-01Depsgraph: Cleanup, simplify evaluation flush functionSergey Sharybin
Also avoid once queue push for cases when current operation has multiple outgoing relations.
2017-12-01Depsgraph: Move away from setting old deprecated object recalc flagsSergey Sharybin
Those shouldn't be used anywhere for real now.
2017-11-29Depsgraph: Fix assert failureSergey Sharybin
2017-11-29Depsgraph: Remove object-specific flag which was storing update tagSergey Sharybin
There were following issues: - This was used in a similar way of DEG's ID update callback. No reason to have yet-another-way of informing editors/engines about changes. Better to keep regular update mechanism usable and fast for those needs. - It wasn't granular at all, and granularity in flags is something what we need to support anyway, even for existing ID update. - There is no reason to have it per-object. Depsgraph operates on IDs. - It wasn't clear when and who clears the flag, and was possible to run into conflicts.
2017-11-28Depsgraph: Wrap context used for editors update callback into a structureSergey Sharybin
This way we can extend it much easier.