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
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-01Cleanup: remove duplicate vertex normal array in SculptSessionCampbell Barton
From investigating T95185, it's important the normal returned by SCULPT_vertex_normal_get always match the PBVH normal array. Since this is always initialized in the PBVH, there is no advantage in storing the normal array in two places, it only adds the possibility that changes in the future causing different meshes normals to be used. Split out from D13975.
2022-01-22Fix T94967: Sculpt mode crashes with missing normalsHans Goudey
From an error in rBcfa53e0fbeed, the vertex normals in `SculptSession` seem to be used, but in the case when no "pbvh" is used, the value of the pointer is never assigned. Normals were not generally dirty before this "ensure" function with regular sculpting operations, so this addition shouldn't have any cost. Differential Revision: https://developer.blender.org/D13854
2021-12-07Cleanup: move public doc-strings into headers for 'blenkernel'Campbell Barton
- Added space below non doc-string comments to make it clear these aren't comments for the symbols directly below them. - Use doxy sections for some headers. - Minor improvements to doc-strings. Ref T92709
2021-11-29Refactor BKE_bpath module.Bastien Montagne
The main goal of this refactor is to make BPath module use `IDTypeInfo`, and move each ID-specific part of the `foreach_path` looper into their own IDTypeInfo struct, using a new `foreach_path` callback. Additionally, following improvements/cleanups are included: * Attempt to get better, more consistent namings. ** In particular, move from `path_visitor` to more standard `foreach_path`. * Update and extend documentation. ** API doc was moved to header, according to recent discussions on this topic. * Remove `BKE_bpath_relocate_visitor` from API, this is specific callback that belongs in `lib_id.c` user code. NOTE: This commit is expected to be 100% non-behavioral-change. This implies that several potential further changes were only noted as comments (like using a more generic solution for `lib_id_library_local_paths`, addressing inconsistencies like path of packed libraries always being skipped, regardless of the `BKE_BPATH_FOREACH_PATH_SKIP_PACKED` `eBPathForeachFlag` flag value, etc.). NOTE: basic unittests were added to master already in rBdcc500e5a265093bc9cc. Reviewed By: brecht Differential Revision: https://developer.blender.org/D13381
2021-11-24Cleanup: `IDTypeInfo` new `asset_type_info` member.Bastien Montagne
Two issues addressed here: I) `asset_type_info` is sub-data, not a callback. Therefore, move it before the callbacks in the `IDTypeInfo` struct. II) More important, initialize this new attribute in *ALL* `IDTypeInfo` instances. No member of this struct should ever be left implicitely uninitilazed, ever. Aftermath of rBa84f1c02d251.
2021-08-19Cleanup: Blendwrite: Move code deciding if an ID should be written out of ID ↵Bastien Montagne
callbacks. This was not really useful, and added estra useless steps in case and ID should not actually be written. Further more, it prevented clearing the usercount on write, which can be cause a false positive 'chanhged' detection in undo/redo case.
2021-07-23Cleanup: code comments punctuation / spacingCampbell 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-03-24Cleanup: use new BLI_assert_unreachable macroCampbell Barton
2021-03-09Fix T86422: Expand crashing with EEVEE enabledPablo Dobarro
Using EEVEE (as well as some other actions like saving the file or tweaking mesh parameters) can cause a PBVH rebuild. The different sculpt tools can store PBVH nodes or other related data in their caches, so this data becomes invalid if the PBVH rebuilds during evaluation. This ensures that the PBVH does not rebuild while the cache of Expand is being used, like it already happens for brushes and filters. Reviewed By: JacquesLucke Maniphest Tasks: T86422 Differential Revision: https://developer.blender.org/D10675
2021-03-02Sculpt: Expand OperatorPablo Dobarro
Expand is a new operator for Sculpt Mode which is intended to be the main tool for masking, Face Set editing, interacting with the filters and pattern creation. The fundamentals of the tool are similar to the previous sculpt.mask_expand operator. It shares the same default shortcuts and functionality, making the previous operator obsolete. The shortcuts to execute the operator are: - Shift + A: Expand mask - Shift + Alt + A: Expand mask by normals - Shift + W: Expand Face Set - Shift + Alt + W: Resize current Face Set The main changes compared to the previous sculpt.mask_expand operator are: - Modal keymap, all operator options can be changed in real time while the operator is running. - Supports creating Mask, Face Sets and Sculpt Vertex Colors. - Much better code, new features can be easily integrated. Limitations: - All Mask operations are supported for Sculpt Vertex colors, but not exposed by default as their support is still experimental. - Dyntopo does not support any Face Set or Sculpt Vertex Colors. functionality (they are not implemented in general for Dyntopo). - Multires does not support any feature related to geodesic distances. - Multires does not support vertex colors. - Multires does not support recursions. - In Multires, Face Sets snaping does not initialize all current enabled Face Sets when toggling snapping. - In Multires, Face Sets are created at base mesh level (works by this by design, like any other tool). - Unlike the previous mask_expand operator, this one does not blur the mask by default after finishing Expand as that does not fit the new design. The mask can still be blurred by using the mask filter manually. Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10455
2021-02-25Refactor: IDTypeInfo: Add `owner_get` to get owner of embedded IDs.Bastien Montagne
This concerns currently only collections (`master_collection` of scenes) and root node trees. It removes the matching type-specific helpers (`BKE_collection_master_scene_search` and `BKE_node_tree_find_owner_ID`). No functional change expected here. NOTE: Current implementation of `owner_get` is far from optimal, we could probably do it better, see {T69169}. NOTE: While it could also have it, shapekeys IDTypeInfo was left out of this change for now. Mainly because it sould not be used currently, and we ultimately want to demote shape keys from ID status anyway.
2021-02-09Cleanup: comments, replace 'undoes' with 'undo-steps'Campbell Barton
2021-02-09Cleanup: spellingCampbell Barton
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-03Merge branch 'blender-v2.92-release'Pablo Dobarro
2021-02-03Fix memory leak in boundary brush preview dataPablo Dobarro
The edge preview data of the boundary needs to be freed with the boundary data created for the brush. Also, all data for the ScultpSession preview that is used to render the cursor needs to be freed with the ##SculptSession##. Found by Jacques Lucke Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10173
2021-01-22LibOverride: Add an 'post apply' callback to IDTypeInfo.Bastien Montagne
Currently this is needed to properly tag PointCache's for info update (fixes an issue reported in T82503). Suspect we may need this in more cases in the future though, RNA assign/update processes are not always 100% enough to deal with complicated corner cases.
2021-01-06Fix T84202: Sculpt lasso mask crash after remesh.Bastien Montagne
'Caused'/revealed by rBd29a720c45e5: Operators that fully re-create the mesh would previously rely on `sculpt_update_object` called from update code to get required sculpt-specific data layers re-added to the new mesh. Now instead put all code adding data to orig mesh for sculpt purpose into a new util function (`BKE_sculpt_ensure_orig_mesh_data`), and call that function when entering sculpt mode, and from voxel remesher code. This is contonuing effort to more clearly separate orig data from evaluated data handling/usage in sculpt code. TODO: there are likely other code paths that would need to call that new function? Reviewers: @sergey, @pablodp606 Subscribers:
2020-12-23Fix T84002: Sculpt: Masking operations crash if multires is in play.Bastien Montagne
This fixes the main issue there (essentially a followup to rB90e12e823ff0: Fix T81854: crash when undoing switch between sculpt and edit mode). We basically remove more (hopefully all the remaining!) modifications of orig mesh from `sculpt_update_object`, as those done here will not be immediately available in the evaluated data (that specific bug happened because masking data was added to orig mesh there, but not flushed to depsgraph evaluated one). This also goes towards a better separation between handling of evaluated data and orig one. Note that modification of orig mesh data can still happen, e.g. values in some cdlayers, but at least all pointers should now be valid in the evaluated mesh. There are still some issues, e.g. we now get an assert/crash in `multires_reshape_assign_final_coords_from_ccg` when undoing out of the Sculpt mode, presumably because subdiv_ccg data remains unchanged then (and hence still has the `has_mask` flag set), while actual mesh data do not have that cdlayer anymore... This commit also cleans up/simplifies some code, `ED_object_sculptmode_enter_ex` was (indirectly) calling `BKE_sculpt_face_sets_ensure_from_base_mesh_visibility` twice e.g.
2020-11-06Refactor: move Paint lib linking to blenkernelJacques Lucke
Ref T76372.
2020-11-06Refactor: move Paint .blend I/O to blenkernelJacques Lucke
Ref T76372.
2020-11-03Fix T71759: Sculpt/Vertex/Weight Paint Brush Size Gets Undone After Undoing ↵Bastien Montagne
a Stroke. Add code preserving scene's toolsettings accross undo. IDPointers are dealt with special care, we try to keep existing ones for some (like brushes) when possible. Note that this covers ToolSettings, Brushes and Palettes currently. I'm not especially happy about how this new code mixes with existing 'foreach_id' one, in particular in scene. But cannot think of a better, more generic way to do it currently. Maniphest Tasks: T71759 Differential Revision: https://developer.blender.org/D9311
2020-11-03Add a callback to `IDTypeInfo` to allow preservation of some data accross ↵Bastien Montagne
memfile undos This is essentially adding that new callback, and using it only for already existing Scene's 3DCursor. Note that the place where this is called has been moved again, after all have been lib-linked, such that those callbacks may also work on ID pointers. Maniphest Tasks: T71759 Differential Revision: https://developer.blender.org/D9237
2020-10-27Fix T81854: crash when undoing switch between sculpt and edit mode.Bastien Montagne
The logic of `BKE_sculpt_update_object_for_edit` was not correct. such low-level functions should typically never preform depsgraph evaluation themselves, they should be able to rely on getting a fully evaluated depsgraph and just get needed data from there. Supporting that required fixing other broken code higher in the callstack, namely: * `ED_object_sculptmode_enter_ex` was freeing evaluated data, for no valid reason it would seem. * `sculpt_undosys_step_decode` was ensuring an evaluated depsgraph **before** calling `ED_object_mode_generic_exit`, which would invalidate a lot of evaluated data. Note that it is fairly difficult to track down all code paths leading to `BKE_sculpt_update_object_for_edit`, so there may be still cases where this gets called with improperly evaluated depsgraph. Reviewed By: sergey Maniphest Tasks: T81854 Differential Revision: https://developer.blender.org/D9270
2020-10-19Spelling: Then Versus ThanHarley Acheson
Corrects incorrect usages of the words 'then' and 'than'. Differential Revision: https://developer.blender.org/D9246 Reviewed by Campbell Barton
2020-10-15Sculpt: Use mpoly flags to sync Face Sets visibilityPablo Dobarro
Previously, all Face Set visibility logic was using mvert flags directly to store the visibility state on the vertices while sculpting. As Face Sets are a poly attribute, it is much simpler to use mpoly flags and let BKE_mesh_flush_hidden_from_polys handle the vertex visibility, even for Multires. Now all operators that update the Face Set visibility state will always copy the visibility to the mesh (using poly flags) and the grids, all using the same code. This should fix a lot of visibility glitches and bugs like the following: - Sculpt visibility reset when changing multires levels. - Multires visibility not updating in edit mode. - Single face visibible when surrounded by visibile face set, even when the face set was hidden. Reviewed By: sergey Differential Revision: https://developer.blender.org/D9175
2020-10-08Cleanup/refactor: `BKE_libblock_alloc` -> `BKE_id_new` in ID creation code.Bastien Montagne
Better use higher-level code from common ID management when possible. Helps to de-duplicate logic, and reduces outside usages of more 'dangerous' functions. Note that we could get rid of many of those `BKE_<id_type>_add` functions now, but on the other hand several of those take extra parameters and perform additional actions, so think we can keep them all for now as 'non-standard ID specific creation functions'.
2020-10-07Refactor: remove `BKE_<id_type>_copy` functions.Bastien Montagne
Those were only shallow wrappers around `BKE_id_copy`, barely used (even fully unused in some cases), and we want to get rid of those ID-specific helpers for the common ID management tasks. Also prevents weird custom behaviors (like `BKE_object_copy`, who was the only basic ID copy function to reset user count of the new copy to zero). Part of 71219.
2020-10-07Refactor `BKE_id_copy` to return the new ID pointer.Bastien Montagne
No reasons to keep the new ID pointer as parameter here. Part of T71219.
2020-10-07IDTypeInfo: add flag to indicate that ID has no animation dataJacques Lucke
This is part of T75724. Reviewers: mont29 Differential Revision: https://developer.blender.org/D9134
2020-09-30Cleanup: spellingCampbell Barton
2020-09-29Sculpt: Preserve Mesh visibility from edit mode using the Face SetsPablo Dobarro
Before this change, when users switch from edit mode to sculpt mode, the entire mesh would be visible. Even if in the edit mesh mode part of it was set to invisible. With this change the visibility is preserved, by creating a separate face set for the visible and invisible parts of the mesh and setting their initial visibility. Implementation details: This adds a function to initialize a new Face Set datalayer taking the current mesh visibility into account which is stored in the ME_HIDE flag of the vertices. Reviewed By: sergey Differential Revision: https://developer.blender.org/D8901
2020-09-18Sculpt: Render Mask and Face Sets with modifiers activePablo Dobarro
This removes the limitation of the sculpt overlays not being visible with modifiers active. Reviewed By: fclem Maniphest Tasks: T68900 Differential Revision: https://developer.blender.org/D8673
2020-09-18Cleanup: change enum usage so types are explicitly listedCampbell Barton
Structure switch statements so new missing items cause warnings.
2020-09-18Fix T80771: Avoid changing the visibility of loose geometry when entering ↵Pablo Dobarro
Sculpt Mode When entering scultp mode the visibility from the Face Sets is copied to the base mesh. This steps was considering that if a vertex belongs to a face with a visibible Face Set ID, it should be visible. As loose geometry may not have any faces, those vertex were set to hidden. Now this function check if a vertex visibility should be modified by the face sets (by checking the loops), avoiding modifying the visibility of loose geometry unintentionally. Reviewed By: sergey Maniphest Tasks: T80771 Differential Revision: https://developer.blender.org/D8899
2020-09-10Refactor: move PaintCurve/Palette .blend I/O to IDTypeInfo callbacksJacques Lucke
2020-09-09Fix uvsculpt null pointer reference in paint.cSebastian Parborg
ASAN reported null pointer access when going into edit mode on the default cube. Check in uvculpt has been initialized before trying to use it.
2020-08-28IDTypeInfo: add .blend file io callbacksJacques Lucke
This is part of T76372. It adds the `blend_write`, `blend_read_data`, `blend_read_lib` and `blend_read_expand` which correspond to the various steps when reading and writing .blend files. Having these callbacks allows us to decentralize the blenloader code a lot more. This has the affect that code related to any specific ID type is less scattered. Reviewers: mont29 Differential Revision: https://developer.blender.org/D8670
2020-08-18Cleanup: Fix strict compiler warningSergey Sharybin
2020-08-18Multires: Base Mesh SculptingPablo Dobarro
This adds an option to the Multires modifier to sculpt directly on the base mesh while previewing the displacement of a higher subdivisions level. What this does it considering Multires as a regular modifier without exposing the grid displacement to sculpt mode. This allows to see the propagation happening in real time, which enables to use complex tools like Cloth or Pose in much higher resolutions and without surface noise and artifacts. Reviewed By: sergey, Severin Differential Revision: https://developer.blender.org/D8555
2020-08-07Cleanup: Blenkernel, Clang-Tidy else-after-return fixesSybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule in the `source/blender/blenkernel` module. No functional changes.
2020-08-06Sculpt: Cloth Brush/Filter CollisionsPablo Dobarro
This implements collisions in the solver of the cloth brush/filter. It uses the scene colliders as a regular physics simulation. There are still some parameters (friction, distance to the surface...) that can be exposed as properties in later patches. Thanks to Sebastian Parborg for helping me with the implementation. Reviewed By: sergey, zeddb Differential Revision: https://developer.blender.org/D8019
2020-08-05Merge branch 'blender-v2.90-release'Pablo Dobarro
2020-08-05Fix T78665: Face Set visibility reverted when chaning Multires LevelsPablo Dobarro
Face Sets where only set and updated on the PBVH after starting a sculpt tool. In order to preserve the visibility they store when changing levels, they need to be updated and sync also on PBVH creation Reviewed By: sergey Maniphest Tasks: T78665 Differential Revision: https://developer.blender.org/D8225
2020-07-28Cleanup: remove redundant return statementJacques Lucke
This was found by clang-tidy.
2020-07-27Fix T79074: Mesh Topology info not being updated after changesPablo Dobarro
All these data arrays are created for a specific topology, so they should be freed and updated when the PBVH rebuilds. Previously, this was only happening when freeing the SculptSession, but it also needs to happen in BKE_sculpt_update_object_before_eval to avoid reusing out of date data. Reviewed By: sergey Maniphest Tasks: T79074 Differential Revision: https://developer.blender.org/D8357
2020-07-27Fix T78242: Crash when using a Sculpt color tools that needs connectivity ↵Pablo Dobarro
for the first time When there is no color layer available, BKE_sculpt_update_object_for_edit creates a new one and tags the mesh with ID_RECLAC_GEOMETRY, so this layer is inmediatly available when the tool starts. This also deletes the PBVH and when it is created again in BKE_sculpt_update_object_after_eval, the pmap is not initialized, making the tool crash. This moves the color layer creation to a separate function outside BKE_sculpt_update_object_for_edit, which now runs after the color layer is available, so it won't need to update again and the pmap will still be available when the tool is used. Reviewed By: sergey Maniphest Tasks: T78242 Differential Revision: https://developer.blender.org/D8135