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
2021-09-03Depsgraph: skip parentbone relation if bone prop is emptyPhilipp Oeser
Clearing the Parent Bone field in relations would result in something like this: ``` add_relation(Bone Parent) - Could not find op_from (ComponentKey(OBArmature, BONE)) add_relation(Bone Parent) - Failed, but op_to (ComponentKey(OBEmpty, TRANSFORM)) was ok ERROR (bke.object): /source/blender/blenkernel/intern\object.c:3330 ob_parbone: Object Empty with Bone parent: bone doesn't exist ``` Now skip creation of a depsgraph relation if the Parent Bone field is empty (since this would be invalid anyways). ref. T91101 Maniphest Tasks: T91101 Differential Revision: https://developer.blender.org/D12389
2021-08-31Fix T88433: no greaspencil depsgraph evaluation with certain driversPhilipp Oeser
When the same stroke was used as a driver variable, this could make this stroke already tagged as built in the course of building driver variables (via `build_gpencil`), but then important stuff from `build_object_data_geometry_datablock` could be missed later on (because both of these funtions use `checkIsBuiltAndTag`). Most importantly, setting up operations such as GEOMETRY_EVAL would be skipped entirely. `build_object_data_geometry_datablock` seems to cover greasepencil just fine (does the same as `build_gpencil` and more). Proposed solution is to remove `build_gpencil` entirely. In `build_id` it would then also call `build_object_data_geometry_datablock` for `ID_GD` IDs. Now the covered types that _call_ `build_object_data_geometry_datablock` match exactly to what is covered _inside_ `build_object_data_geometry_datablock`. Think this "duplication" of functionality was just overseen in rB66da2f537ae8 [`build_gpencil` existed long before and said commit made greasepencil a real object with geometry and such]. thx @JacquesLucke for additional input! Maniphest Tasks: T88433 Differential Revision: https://developer.blender.org/D12324
2021-08-26Cleanup: use C style comments for descriptive textCampbell Barton
2021-08-25Cleanup and remove SEQ_ALL_BEGIN macroSebastian Parborg
We now use a for_each function with callback to iterate through all sequences in the scene. This has the benefit that we now only loop over the sequences in the scene once. Before we would loop over them twice and allocate memory to store temporary data. The allocation of temporary data lead to unintentional memory leaks if the code used returns to exit out of the iteration loop. The new for_each callback method doesn't allocate any temporary data and only iterates though all sequences once. Reviewed By: Richard Antalik, Bastien Montagne Differential Revision: http://developer.blender.org/D12278
2021-08-19Cycles: experimental integration of Alembic procedural in viewport renderingKévin Dietrich
This patch exposes the Cycles Alembic Procedural through the MeshSequenceCache modifier in order to use and test it from Blender. To enable it, one has to switch the render feature set to experimental and activate the Procedural in the modifier. An Alembic Procedural is then created for each CacheFile from Blender set to use the Procedural, and each Blender object having a MeshSequenceCache modifier is added to list of objects of the right procedural. The procedural's parameters derive from the CacheFile's properties which are already exposed in the UI through the modifier, although more Cycles specific options might be added in the future. As there is currently no cache controls and since we load all the data at the beginning of the render session, the procedural is only available during viewport renders at the moment. When an Alembic procedural is rendered, data from the archive are not read on the Blender side. If a Cycles render is not active and the CacheFile is set to use the Cycles Procedural, bounding boxes are used to display the objects in the scene as a signal that the objects are not processed by Blender anymore. This is standard in other DCCs. However this does not reduce the memory usage from Blender as the Alembic data was already loaded either during an import or during a .blend file read. This is mostly a hack to test the Cycles Alembic procedural until we have a better Blender side mechanism for letting renderers load their own geometry, which will be based on import and export settings on Collections (T68933). Ref T79174, D3089 Reviewed By: brecht, sybren Maniphest Tasks: T79174 Differential Revision: https://developer.blender.org/D10197
2021-08-06Fix T90476: intermittent wrong generated texture coordinates with modifiersBrecht Van Lommel
This caused Cycles texture_space_mesh_modifier and panorama_dicing tests to randomly fail. The issue was introduced with D11377, due to a missing dependency. Now ensure we first copy the texture space parameters, and only then use or recompute then. In general it seems like this dependency should have already been there, since parameter evaluation includes animation and drivers, and geometry evaluation may depend on that (even if you would not typically animate e.g. an autosmooth angle). Thanks Campbell for tracking this one down.
2021-08-05Cleanup: comment blocks & spellingCampbell Barton
2021-08-05Cleanup: remove redundant parenthesisCampbell Barton
2021-08-04Cleanup: rename restrict to hide/visibility in Object, Collection, MaskLayerBrecht Van Lommel
This makes the internal naming consistent with the public API. And also gives us a visibility_flag rather than restrictflag that can be extended with more flags.
2021-07-20Cleanup: reserve C++ comments for disabled codeCampbell Barton
Use C comments for plain text.
2021-07-19Revert "Depsgraph: Implement 'ID_RECALC_GEOMETRY_DEFORM'"Germano Cavalcante
This reverts commits bfa3dc91b75407b063f2ac991b176d98c050f92d, 52b94049f2a71a74f52247f83657cf3a5c8712b4, ae379714e4f1eca74f5f77532a6e959f29445236, a770faa811ee62837eb540b0bd83ca0770f16663, 4ed029fc02b022cb5ff28ed3ce70992c450d2be5, 101a493ab556c6597ac91fba204059be67b35990 and 62a2faa7ef39130446716d7a06215cd1df1eb2ac. And fixes T89955. Changing the dependency graph is a can of worms and the result is a kind of unpredictable. A different solution will be planned.
2021-07-19Fix T89941: No path`s bevel update, when I change bevel profile curveGermano Cavalcante
Update was skipping the batch cache.
2021-07-16Fix T89875: False dependency cycle on particle systemsGermano Cavalcante
`POINT_CACHE_RESET` pointed to `GEOMETRY_EVAL_INIT` while `GEOMETRY_EVAL_INIT` pointed to `POINT_CACHE_RESET`. Now `POINT_CACHE_RESET` points to the same nodes pointed to by `GEOMETRY_EVAL_INIT` thus avoiding the dependency cycle.
2021-07-15Cleanup: replace BLI_assert(!"text") with BLI_assert_msg(0, "text")Campbell Barton
This shows the text as part of the assertion message.
2021-07-14Fix T89734: incorrect dependency cycle with id property on modifierJacques Lucke
Differential Revision: https://developer.blender.org/D11851
2021-07-13Depsgraph: Implement 'ID_RECALC_GEOMETRY_DEFORM'Germano Cavalcante
During a mesh transformation in edit mode (Move, Rotate...), only part of the batch cache needs to be updated. This commit allows only update only the drawn batches seen in `BKE_object_data_eval_batch_cache_deform_tag` if the new `ID_RECALC_GEOMETRY_DEFORM` flag is used. This new flag is used in the transforms operation for edit-mesh and results in 1.6x overall speedup in heavy subdiv cube. Differential Revision: https://developer.blender.org/D11599
2021-07-07Fix T89397: animation in geometry nodes modifier does not updateJacques Lucke
The geometry nodes modifier uses id properties for the inputs to node groups. That is because the set of properties changes depending on which geometry node group is selected. The animation was not updated correctly because the `ANIMATION_EVAL` depsgraph node was not evaluated, because nothing depended on it in the depsgraph. This patch makes sure that the proper link to the geometry component is inserted. Differential Revision: https://developer.blender.org/D11831
2021-07-07Cleanup: spelling in commentsCampbell Barton
2021-07-03Cleanup: consistent use of tags: NOTE/TODO/FIXME/XXXCampbell Barton
Also use doxy style function reference `#` prefix chars when referencing identifiers.
2021-06-24Depsgraph: support flushing parameters without a full COW updateCampbell Barton
Avoid computationally expensive copying operations when only some settings have been modified. This is done by adding support for updating parameters without tagging for copy-on-write. Currently only mesh data blocks are supported, other data-blocks can be added individually. This prepares for changing values such as edit-mesh auto-smooth angle in edit-mode without duplicating all mesh-data. The benefit will only be seen when the user interface no longer tags all ID's for copy on write updates. ID_RECALC_GEOMETRY_ALL_MODES has been added to support situations where non edit-mode geometry is modified in edit-mode. While this isn't something user are likely to do, Python scripts may change the underlying mesh. Reviewed By: sergey Ref D11377
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-23Fix (studio reported) crash on Undo in some cases.Bastien Montagne
Would crash when adding or removing a collection directly to the master collection of a scene. Consequence of change to handle depsgraph-controlled evaluation of some IDs (like excluded collections which do not get evaluated and do not get a COW anymore). See rBcf4258673755 and D10907. Note that this mostly demonstrates once again how weak and flacky our handling of embedded IDs still remains, with some part of the code handling them as independent IDs, some as fully local/private data, some as a mix of both... and lots and lots of custom handling code and corner cases that are a bottomless pit of issues. Also quiet incredible that this was not reported already, luckily this original change did not make it to 2.93 release.
2021-06-22Fix T89196: Depsgraph use-after-free after scene switching undoSergey Sharybin
Delay depsgraph visibility update tagging until it is known that graph relations are up to date, and until it is known that the graph is actually needed to be evaluated. Differential Revision: https://developer.blender.org/D11660
2021-06-22Cleanup: Use more clear visibility tag function nameSergey Sharybin
No functional changes. Just makes it clear this is not an immediate update, and will make an upcoming change more localized.
2021-06-18Armature: add B-Bone Y scale channel and extra flag fields to DNA.Alexander Gavrilov
In addition to the base bone transformation itself, B-Bones have controls that affect transformation of its segments. For rotation the features are quite complete, allowing to both reorient the Bezier handles via properties, and to control them using custom handle bones. However for scaling there are two deficiencies. First, there are only X and Y scale factors (actually X and Z), while lengthwise all segments have the same scaling. The ease option merely affects the shape of the curve, and does not cause actual scaling. Second, scaling can only be controlled via properties, thus requiring up to 6 drivers per joint between B-Bones to transfer scaling factors from the handle bone. This is very inefficient. Finally, the Z channels are confusingly called Y. This commit adds a B-Bone Y Scale channel and extra B-Bone flag fields to DNA with appropriate versioning (including for F-Curves and drivers) in preparation to addressing these limitations. Functionality is not changed, so the new fields are not used until the following commits. Differential Revision: https://developer.blender.org/D9870
2021-05-25Cleanup: spellingCampbell Barton
2021-05-21Cleanup: use nullptrJacques Lucke
2021-05-21Fix T85752: Collection Instance Crash when instancing collections with ↵Bastien Montagne
disabled subcollections Root of the issue was actually hidden deep in depsgraph itself: it would not properly update all of its COW IDs using a datablock when depsgraph decides to evaluate or un-evaluate it. This would lead to evaluated IDs pointing to either: - orig IDs when there was an evaluated version of those (annoying bug, but not a crashing one). - old address of previously evaluated IDs that no longer exists in the depsgraph (causing the crash from the report e.g.). This commit adds an extra step at the end of nodes building, that goes over all of already existing IDs in the depsgraph to check whether they do one of the two things above, and tag them for COW update if so. NOTE: This only affects depsgraph (re-)building, not its evaluation. This remains consistent with the fact that operations that may change the depsgraph content (like Collection exclusion etc.) need to trigger a rebuild. NOTE: Performances: Worst case scenarii, like (un-)excluding a whole character collection in a production file, lead to 5% to 10% extra processing time in depsgraph building. Most of it comming from extra COW processing (in depsgraph's update in `build_step_finalize`), the detection loop itself only accounts for 1% to 2% of the whole building time. Maniphest Tasks: T85752 Differential Revision: https://developer.blender.org/D10907
2021-05-12Nodes: add boilerplate for texture and material socketsJacques Lucke
The sockets are not exposed in any nodes yet. They work similar to the Object/Collection sockets, which also just reference a data block. This is part of D11222.
2021-04-30Cleanup: rename BKE_pose_channels_hash_{make => ensure}Campbell Barton
Use the term `ensure` since it makes it clear the data is not manipulated if it already exists.
2021-04-26Fix: crash after recent commitJacques Lucke
This was a mistake in rBb67fe05d4bea2d3c9efbd127e9d9dc3a897e89e6.
2021-04-26Depsgraph: support depending on collection geometryJacques Lucke
This fixes T87666 and T83252. The boolean modifier and geometry nodes can depend on the geometry of an entire collection. Before, the modifiers had to manually create relations to all the objects in the collection. This worked for the most part, but was cumbersome and did not solve all issues. For example, the modifiers were not properly updated when objects were added/removed from the referenced collection. This commit introduces the concept of "collection geometry" in the depsgraph. The geometry of a collection depends on the transforms and geometry of all the objects in it. The boolean modifier and geometry nodes can now just depend on the collection geometry instead of creating all the dependencies themselves. Differential Revision: https://developer.blender.org/D11053
2021-04-08Cleanup: enable modernize-use-equals-default checkJacques Lucke
This removes a lot of unnecessary code that is generated by the compiler automatically. In very few cases, a defaulted destructor in a .cc file is still necessary, because of forward declarations in the header. I removed some defaulted virtual destructors, because they are not necessary, when the parent class has a virtual destructor already. Defaulted constructors are only necessary when there is another constructor, but the class should still be default constructible. Differential Revision: https://developer.blender.org/D10911
2021-03-30Cleanup: Typo in comment.Bastien Montagne
2021-03-16Grease Pencil: Add LineArt modifierYimingWu
This adds the LineArt grease pencil modifier. It takes objects or collections as input and generates various grease pencil lines from these objects with the help of the active scene camera. For example it can generate contour lines, intersection lines and crease lines to name a few. This is really useful as artists can then use 3D meshes to automatically generate grease pencil lines for characters, enviroments or other visualization purposes. These lines can then be baked and edited as regular grease pencil lines. Reviewed By: Sebastian Parborg, Antonio Vazquez, Matias Mendiola Differential Revision: http://developer.blender.org/D8758
2021-02-06UI: Fix Typos in Comments and Docsluzpaz
Approximately 91 spelling corrections, almost all in comments. Differential Revision: https://developer.blender.org/D10288 Reviewed by Harley Acheson
2021-02-05Depsgraph: Remove no-op evaluation functionSergey Sharybin
Make the SHADING_PARAMETERS operation on node tree a real no-op. The function used as a callback was only doing a debug print. The issue with this function was that an original ID was passed as an argument. This is a violation of design, and if anything it should be left up to the implementation to check whether depsgraph is active. There are no functional changes for users in the interface. The only difference is that the debug print will no longer happen.
2021-02-05Cleanup: Use lambda instead of function bindSergey Sharybin
More detailed explanation why it is a preferred way of coding nowadays can be found at https://clang.llvm.org/extra/clang-tidy/checks/modernize-avoid-bind.html Resolves modernize-avoid-bind Clang-Tidy warning. Differential Revision: https://developer.blender.org/D10320
2021-01-29Merge branch 'blender-v2.92-release'Brecht Van Lommel
2021-01-29Depsgraph: Remove redundant copy-on-write operationsSergey Sharybin
This change removes copy-on-write operations from ID nodes which do not need copy-on-write. Should be no functional changes, as before the copy-on-write operation would do nothing for those nodes anyway.
2021-01-29Fix T83411: Crash when using a workspace/layout data path in a driverSergey Sharybin
Building IDs which are not covered by copy-on-write process was not implemented, which was causing parameters block not present, and, hence causing crashes in areas which expected parameters to present. First part of this change is related on making it so Copy-on-Write is optional for ID nodes in the dependency graph. Second part is related on using a generic builder for all ID types which were not covered by Copy-on-Write before. The final part is related on making it so build_id() is properly handling ParticleSettings and Grease Pencil Data. Before they were not covered there at all, and they need special handling because they do have own build functions. Not sure it worth trying to split those parts, as they are related to each other and are not really possible to be tested standalone. Open for a second opinion though. Possible nut-tightening is to re-organize build_id() function so that every branch does return and have an assert at the end, so that missing ID type in the switch statement is easier to spot even when using compilers which do not report missing switch cases. As for question "why not use default" the answer is: to make it more explicit and clear what is a decision when adding new ID types. We do not want to quietly fall-back to a non-copy-on-write case for a newly added ID types. Differential Revision: https://developer.blender.org/D10075
2021-01-29Merge branch 'blender-v2.92-release'Philipp Oeser
2021-01-29Fix T85139: Force field texture missing depsgraph relationPhilipp Oeser
If a force field was of type "Texture", any changes of that texture (e.g. its type - as reported in T85139 - or also its properties) were not properly updating rigid bodies and particle systems. Now ensure that texture is actually in the depsgraph and set up relation accordingly. Also fixes T75198. Maniphest Tasks: T85139 Differential Revision: https://developer.blender.org/D10234
2021-01-29Merge remote-tracking branch 'origin/blender-v2.92-release'Dalai Felinto
2021-01-28Revert "Depsgraph: Remove redundant copy-on-write operations"Brecht Van Lommel
This reverts commit 76fd41e9db19dd2a33fae0e690f76792b13d49ed. This should have been reverted along with 0f95f51361d73fbd8ba8d80b3b65da930dcf3b20, since this change by itself is causing crashes when the depsgraph accesses a non-existent copy-on-write component. Ref T84717
2021-01-27Merge branch 'blender-v2.92-release'Sergey Sharybin
2021-01-27Fix T84717: Missing viewport update after shading changesSergey Sharybin
Revert "Fix T83411: Crash when using a workspace/layout data path in a driver" The fix for the crash exposed design violation in the viewport shading updates, which is for some reason relying on dependency graph tag of interface data. The viewport module did not respond to the issue in 2 weeks, and the architect considered missing update for multiple users a more serious issue than a crash in a very specific case. This reverts commit 0f95f51361d73fbd8ba8d80b3b65da930dcf3b20.
2021-01-22Cleanup: correct last spelling cleanupCampbell Barton
2021-01-22Cleanup: spelling, remove outdated/invalid commentsCampbell Barton
2021-01-18Fix T84250: Eevee world/material parameter animation not updating the viewportPhilipp Oeser
The WORLD_UPDATE operation (needed to free the gpu material) was already defined in DepsgraphNodeBuilder::build_world, but corresponding relation was only set up for changes in the nodetree, not for changes in the world/material itself in DepsgraphRelationBuilder::build_world. Direct changes to these surface properties in the UI were updating properly through RNA property update callbacks, but these are not called from the animation system. So now add these relations in the depsgraph. Not 100% sure this is the right place for this (since e.g. eevee engine seems to handle e.g. animated light paramters just fine through EEVEE_cache_populate / eevee_light_setup, but properly freeing gpu materials wont happen for worlds in e.g eevee_id_world_update and also not for materials) Maniphest Tasks: T84250 Differential Revision: https://developer.blender.org/D9959