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
2020-07-03Cleanup: Editors/Sculpt/Paint, 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/editors/sculpt_paint` module. No functional changes.
2020-06-30Cleanup: unused argumentsCampbell Barton
2020-06-29Remove Threaded Sculpt optionPablo Dobarro
Threaded Sculpt is now always enabled by default. If it causes performance problems compared single threaded sculpt it should be considered a bug. Reviewed By: sergey Maniphest Tasks: T77638 Differential Revision: https://developer.blender.org/D7960
2020-06-23Sculpt Vertex Colors: Initial implementationPablo Dobarro
Sculpt Vertex Colors is a painting system that runs inside sculpt mode, reusing all its tools and optimizations. This provides much better performance, easier to maintain code and more advanced features (new brush engine, filters, symmetry options, masks and face sets compatibility...). This is also the initial step for future features like vertex painting in Multires and brushes that can sculpt and paint at the same time. This commit includes: - SCULPT_UNDO_COLOR for undo support in sculpt mode - SCULPT_UPDATE_COLOR and PBVH flags and rendering - Sculpt Color API functions - Sculpt capability for sculpt tools (only enabled in the Paint Brush for now) - Rendering support in workbench (default to Sculpt Vertex Colors except in Vertex Paint) - Conversion operator between MPropCol (Sculpt Vertex Colors) and MLoopCol (Vertex Paint) - Remesher reprojection in the Voxel Remehser - Paint Brush and Smear Brush with color smoothing in alt-smooth mode - Parameters for the new brush engine (density, opacity, flow, wet paint mixing, tip scale) implemented in Sculpt Vertex Colors - Color Filter - Color picker (uses S shortcut, replaces smooth) - Color selector in the top bar Reviewed By: brecht Maniphest Tasks: T72866 Differential Revision: https://developer.blender.org/D5975
2020-05-28Cleanup: spellingCampbell Barton
2020-05-20Cleanup: remove legacy mmap memory allocation for 32 bitBrecht Van Lommel
This helped to go beyond the 4GB limit, but is no longer relevant for 64 bit.
2020-05-18Merge branch 'blender-v2.83-release'Bastien Montagne
2020-05-18Fix part of T76544: dyntopo sculpt undo stack memory leakBrecht Van Lommel
2020-05-14Merge branch 'blender-v2.83-release'Campbell Barton
2020-05-14Fix sculpt/paint missing undo-step limitingCampbell Barton
2020-05-11Merge branch 'blender-v2.83-release'Sergey Sharybin
2020-05-11Fix T76512: Sculpt mode: crash when applying baseSergey Sharybin
Differential Revision: https://developer.blender.org/D7663
2020-05-09Cleanup: double-spaces in commentsCampbell Barton
2020-05-05Merge branch 'blender-v2.83-release'Pablo Dobarro
2020-05-05Fix T75743: Implement restore for brushes that modify their own dataPablo Dobarro
This implements the restore function for Draw Face Sets and Layer, which don't affect coordinates or masks directly. This is needed for the anchored and dot brush strokes. Layer frees the current displacement and a new one is created on each stroke sample. Draw Face Sets copies the data back from the first undo node to the mesh datalayer. Also fixes T75727 Reviewed By: jbakker Maniphest Tasks: T75727 Differential Revision: https://developer.blender.org/D7442
2020-04-30Task: Use TBB as Task SchedulerBrecht Van Lommel
This patch enables TBB as the default task scheduler. TBB stands for Threading Building Blocks and is developed by Intel. The library contains several threading patters. This patch maps blenders BLI_task_* function to their counterpart. After this patch we can add more patterns. A promising one is TBB:graph that can be used for depsgraph, draw manager and compositor. Performance changes depends on the actual hardware. It was tested on different hardwares from laptops to workstations and we didn't detected any downgrade of the performance. * Linux Xeon E5-2699 v4 got FPS boost from 12 to 17 using Spring's 04_010_A.anim.blend. * AMD Ryzen Threadripper 2990WX 32-Core Animation playback goes from 9.5-10.5 FPS to 13.0-14.0 FPS on Agent 327 , 10_03_B.anim.blend. Reviewed By: brecht, sergey Differential Revision: https://developer.blender.org/D7475
2020-04-14Sculpt: New Layer BrushPablo Dobarro
The Layer brush was in Blender before 2.81, when the sculpt API was introduced. It had a huge amount of bugs and glitches which made it almost unusable for anything but the most trivial cases. Also, it needed some hacks in the code just to support the persistent base. The brush was completely rewritten using the Sculpt API. It fulfills the same use case as the old one, but it has: - All previous artifacts fixed - Simpler code - Persistent base now works with multires thanks to the sculpt API - Small cursor widget to preview the layer height - More controllable and smoother strength and deformation - More correct masking support - More predictable invert support. When using persistent base, the brush invert mode resets to layer height 0, instead of jumping from +1 to -1. The brush can still be inverted in the brush direction property. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7147
2020-04-14Sculpt: Implement undo of Apply Base during sculpt sessionSergey Sharybin
The idea is to push both base mesh geometry and PBVH coordinates so it is possible to undo everything without loosing data which was not flushed from sculpt session to base mesh. It is possible do memory optimization to avoid push custom data layers which are not touched by operator, but before doing that better to ensure this is a correct and working approach. Differential Revision: https://developer.blender.org/D7381
2020-04-06Cleanup: spellingCampbell Barton
2020-04-04Cleanup: Move Detail Operators and Dyntopo to their own filesPablo Dobarro
2020-04-03Fix T74205: crash cancelling transfrom operation in sculpt modeAsad-ullah Khan
Differential Revision: https://developer.blender.org/D7018
2020-04-02Sculpt Undo: Allow Geometry undo step to be non-exclusiveSergey Sharybin
Before this change it was not possible to have base geometry and grid coordinates to be stored in the same undo step. Differential Revision: https://developer.blender.org/D7298
2020-04-02Sculpt: Give a brief explanation of undo stackSergey Sharybin
Should make it a bit more clear overview of what is going on in this module. While some of the details might still be missing, having some sort of top-level overview is better than nothing. Differential Revision: https://developer.blender.org/D7300
2020-04-02Sculpt Undo: Fix multires undo for interleaved nodesSergey Sharybin
Made it so grids array is properly allocated when first node in the undo list does not contain grid data. Differential Revision: https://developer.blender.org/D7299
2020-04-01Sculpt Undo: Refactor Geometry undo nodesSergey Sharybin
Made it so there is a single UNDO node in the list which has both original and modified mesh state. Makes it easier to achieve "interleaved" undo nodes stored in the undo step (as opposite of either storing geometry or other data). Should be no functional changes, just preparing for an upcoming work to support undo of operation like Apply Base. Differential Revision: https://developer.blender.org/D7290
2020-04-01Multires: Initial Face Sets supportPablo Dobarro
This implements the Sculpt Mode API functions needed for Face Sets and visibility management for PBVH_GRIDS. No major changes were needed in the operators and the sculpt mode code. This implementation stores the face sets in the base mesh, so faces created in higher subdivision levels can't be modified individually. Also, we are not checking for multiple face sets per vertex (that can be added in the future), so relax tools don't work yet. The rest of the features (paint, undo, visibility operators..) work as expected. Reviewed By: brecht Differential Revision: https://developer.blender.org/D7168
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-06Cleanup: Use the SCULPT_ prefix in all sculpt_intern functionsPablo Dobarro
2020-03-05Sculpt Face SetsPablo Dobarro
Face Sets are the new system to control the visibility state of the mesh in sculpt and paint modes. They are designed to work in modes where brushes are the primary way of interaction and they provide much more control when working with meshes with complex shapes and overlapping surfaces. This initial commit includes: - Sculpt Face Sets data structures and PBVH rendering. - Face Set overlay and opacity controls. - Sculpt Undo support. - Remesher reprojection support. The visibility state of the mesh is also preserved when remeshing. - Automasking and Mesh filter support. - Mask expand operator mode to expand Face Sets (Shift + W) and flood fill areas by connectivity (press Ctrl while expanding). - Sculpt Mode Face Sets and Visibility API. - Sculpt Face Sets creation and visibility management operators. - Operator to randomize the Face Sets colors. - Draw Face Sets brush tool to create and edit the Face Sets. Drawing on the mesh creates a new Face Set. Pressing Ctrl before drawing modifies the Face Set under the brush at the beginning of the stroke. - Updated keymap and menu to work with Face Sets from Sculpt Mode (H to toggle visibility, Alt + H to show all, Shit + H to hide). - Pie menu on the W key with Face common Sets operations. Know limitations: - Multires support. The Face Sets and Visibility API needs to be implemented for Multires. Reviewed By: jbakker, #user_interface, Severin Differential Revision: https://developer.blender.org/D6070
2020-03-01Fix T73707: Missing mesh normals update on sculpt undoPablo Dobarro
When sculpting on multi user data normals needs to be recalculated to avoid artifacts. I refactored that line to make it more readable. Reviewed By: brecht Maniphest Tasks: T73707 Differential Revision: https://developer.blender.org/D6957
2020-02-25Fix T72721: Add visibility flags updates to the PBVHPablo Dobarro
Currently, there its a function that sets manually the fully_hidden flag of the nodes from the visibility operators in paint_hide.c. The undo code was not updating the flag, so the visibility state of the nodes was incorrect after preforming undo operations. This sometimes was drawing fully hidden nodes with empty buffers, causing artifacts in the geometry. I added a function to mark nodes which visibility state changed (similar as we are updating the mask flags and the nodes bounding boxes). This way, the tools, operators and undo code don't have to update the visibility flags, making everything much simpler to understand and maintain. I did not remove the flag update code from the current visibility operators in this patch, but after reimplementing them (and all the new ones) in the new visibility system, all visibility updates should be done using this method and the BKE_pbvh_node_fully_hidden_set function should be removed. Reviewed By: jbakker Maniphest Tasks: T72721 Differential Revision: https://developer.blender.org/D6767
2020-02-11Cleanup: Sculpt/Paint, use correct types and iterator variable declarationPablo Dobarro
Reviewed By: brecht Differential Revision: https://developer.blender.org/D6788
2020-02-11Cleanup: Sculpt, Comment formattingPablo Dobarro
Reviewed By: brecht Differential Revision: https://developer.blender.org/D6792
2020-01-20Cleanup: remove redundant functionBrecht Van Lommel
2020-01-20Fix T73129: sculpt mode slow on mesh with fake userBrecht Van Lommel
We can't use the fast path when the mesh is used by mulitple objects and so slower sculpting is expected then. But fake users should not affect this. This also fixes the same type of error in a few other areas.
2020-01-06Fix T72700: Missing flush vert visibility on sculpt undoPablo Dobarro
This was caused by a missing call to BKE_mesh_flush_hidden_from_verts() when a SCULP_UNDO_HIDDEN undo step is processed. Reviewed By: jbakker Maniphest Tasks: T72700 Differential Revision: https://developer.blender.org/D6488
2019-11-18Fix wrong name for QuadriFlow undo stepCampbell Barton
2019-11-07Fix T69822: Switching sculpt objects breaks undoCampbell Barton
This introduces object mode tagging for data which hasn't yet been written back to the ID data. Now when selecting other sculpt objects, the original objects data is flushed back to the ID before writing a memfile undo step.
2019-10-31Fix T70866: Missing PBVH updates after mask undoPablo Dobarro
With the latest changes, the PBVH needs extra flags each time the mask is modified to keep the internal fully_masked and fully_unmasked node flags updated. Reviewed By: jbakker Maniphest Tasks: T70866 Differential Revision: https://developer.blender.org/D6088
2019-10-10Sculpt: use TBB instead of BLI_task for multithreadingBrecht Van Lommel
This solves performance issues on some computers where there is significant threading overhead. Rather than doing the complicated work of optimizing our own task scheduler, use TBB which appears to work well. The downside is that we have another thread pool, but it is already there when using OpenVDB voxel remesh. For future releases we can switch to using TBB to replace our task scheduler implementation entirely, and use the same thread pool for BLI_task, Cycles, Mantaflow, etc. Differential Revision: https://developer.blender.org/D6030
2019-10-07Cleanup: rename some sculpt variables for clarityBrecht Van Lommel
2019-10-07Sculpt: Update only modified grids on multires undoPablo Dobarro
This makes multires undo much faster and fixes the viewport lag after and undo operation. Reviewed By: brecht Differential Revision: https://developer.blender.org/D5994
2019-10-03Fix T66312: Undo does not restore normals correctly in sculpt modePablo Dobarro
Reviewed By: brecht Maniphest Tasks: T66312 Differential Revision: https://developer.blender.org/D5895
2019-09-29Cleanup: move sculpt parallel range threading test into functionBrecht Van Lommel
Easier to experiment with different settings this way.
2019-09-21Cleanup: unused headers in editorsCampbell Barton
2019-09-11Sculpt: Transform toolPablo Dobarro
The sculpt mode transform tool applies the sculpt pivot transformation to all vertices, taking XYZ symmetry into account. This commit also includes an operator to set the pivot point initial position. Reviewed By: brecht Differential Revision: https://developer.blender.org/D5717
2019-08-21Cleanup: vertex coordinate access, naming & minor changesCampbell Barton
This also splits vertex access and allocation so it's possible to copy coordinates into an existing array without allocating it.
2019-08-14OpenVDB: Voxel RemesherPablo Dobarro
The voxel remesher introduces a new workflow for sculpting without any of the limitations of Dyntopo (no geometry errors or performance penalty when blocking shapes). It is also useful for simulations and 3D printing. This commit includes: - Voxel remesh operator, voxel size mesh property and general remesh flags. - Paint mask reprojection. - Geometry undo/redo for sculpt mode. This should support remesh operations as well as future tools that modify the topology of the sculpt in a single step, like trimming tools or mesh insert brushes. - UI changes in the sculpt topbar and the mesh properties pannel. Reviewed By: brecht Differential Revision: https://developer.blender.org/D5407
2019-08-02Fix T67670: Sculpt doesn't mark the file as modifiedCampbell Barton
Was also an issue for texture & paint curve.
2019-07-31Refactor access to dependency graphSergey Sharybin
This change ensures that operators which needs access to evaluated data first makes sure there is a dependency graph. Other accesses to the dependency graph made it more explicit about whether they just need a valid dependency graph pointer or whether they expect the graph to be already evaluated. This replaces OPTYPE_USE_EVAL_DATA which is now removed. Some general rules about usage of accessors: - Drawing is expected to happen from a fully evaluated dependency graph. There is now a function to access it, which will in the future control that dependency graph is actually evaluated. This check is not yet done because there are some things to be taken care about first: for example, post-update hooks might leave scene in a state where something is still tagged for update. - All operators which needs to access evaluated state must use CTX_data_ensure_evaluated_depsgraph(). This function replaces OPTYPE_USE_EVAL_DATA. The call is generally to be done in the very beginning of the operator, prior other logic (unless this is some comprehensive operator which might or might not need access to an evaluated state). This call is never to be used from a loop. If some utility function requires evaluated state of dependency graph the graph is to be passed as an explicit argument. This way it is clear that no evaluation happens in a loop or something like this. - All cases which needs to know dependency graph pointer, but which doesn't want to actually evaluate it can use old-style function CTX_data_depsgraph_pointer(), assuming that underlying code will ensure dependency graph is evaluated prior to accessing it. - The new functions are replacing OPTYPE_USE_EVAL_DATA, so now it is explicit and local about where dependency graph is being ensured. This commit also contains some fixes of wrong usage of evaluation functions on original objects. Ideally should be split out, but in reality with all the APIs being renamed is quite tricky. Fixes T67454: Blender crash on rapid undo and select Speculation here is that sometimes undo and selection operators are sometimes handled in the same event loop iteration, which leaves non-evaluated dependency graph. Fixes T67973: Crash on Fix Deforms operator Fixes T67902: Crash when undo a loop cut Reviewers: brecht Reviewed By: brecht Subscribers: lichtwerk Maniphest Tasks: T67454 Differential Revision: https://developer.blender.org/D5343