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-09-17Cleanup: formatCampbell Barton
2022-09-17Cleanup: compiler warningsCampbell Barton
2022-09-17Cleanup: spelling, punctuation & repeated words in commentsCampbell Barton
2022-09-16Sculpt: add .sculpt to allow_procedural_attribute_accessJoseph Eagar
Also cleaned up a comment.
2022-09-16Sculpt: Improve performance when initializing face setsHans Goudey
Avoid conversion to `BMesh` for basic topology operations and data access. Instead use a mesh map to retrieve the faces connected to each edge. I observed performance improvements of 5x (600ms to 100ms) to 10x (15s to 1s), with bigger changes for large meshes with more data layers Switching to `std::queue` over Blender's `GSQueue` gave another 25% improvement. Differential Revision: https://developer.blender.org/D15988
2022-09-16Fix: Missing updates for multires sculptingHans Goudey
Caused by ee23f0f3fb58ce56, which removed the update tag when entering sculpt mode, and by b5f7af31d6d474c, which made these layers lazily created, so they weren't always available at the start of a stroke. Now update the evaluated mesh/multires CCG as necessary. Some updates could potentially avoided when switching modes in the future, but for now do it all the time. Fixes T101116 Also fixes a crash when painting multires mask for the first time
2022-09-16Sculpt: New attribute APIJoseph Eagar
New unified attribute API for sculpt code. = Basic Design = The sculpt attribute API can create temporary or permanent attributes (only supported in `PBVH_FACES` mode). Attributes are created via `BKE_sculpt_attribute_ensure.` Attributes can be explicit CustomData attributes or simple array-based pseudo-attributes (this is useful for PBVH_GRIDS and PBVH_BMESH). == `SculptAttributePointers` == There is a structure in `SculptSession` for convenience attribute pointers, `ss->attrs`. Standard attributes should assign these; the attribute API will automatically clear them when the associated attributes are released. For example, the automasking code stores its factor attribute layer in `ss->attrs.automasking_factor`. == Naming == Temporary attributes should use the SCULPT_ATTRIBUTE_NAME macro for naming, it takes an entry in `SculptAttributePointers` and builds a layer name. == `SculptAttribute` == Attributes are referenced by a special `SculptAttribute` structure, which holds all the info needed to look up elements of an attribute at run time. All of these structures live in a preallocated flat array in `SculptSession`, `ss->temp_attributes`. This is extremely important. Since any change to the `CustomData` layout can in principle invalidate every extant `SculptAttribute`, having them all in one block of memory whose location doesn't change allows us to update them transparently. This makes for much simpler code and eliminates bugs. To see why this is tricky to get right, imagine we want to create three attributes in PBVH_BMESH mode and we provide our own `SculptAttribute` structs for the API to fill in. Each new layer will invalidate the `CustomData` block offsets in the prior one, leading to memory corruption. Reviewed by: Brecht Van Lommel Differential Revision: https://developer.blender.org/D15496 Ref D15496
2022-09-16Sculpt: Move sculpt_face_set.c to C++Hans Goudey
2022-09-16Fix 101000: color picker colors drift above 1 for some OCIO configurationsBrecht Van Lommel
Increase threshold to avoid float precision issues.
2022-09-16Fix T101040: Blender Crashes When snap roll a bone in armatureGermano Cavalcante
The modes that don't support individual projection shouldn't support FACE_NEAREST either. Differential Revision: https://developer.blender.org/D15970
2022-09-16Cleanup: formatCampbell Barton
2022-09-16Cleanup: spelling in commentsCampbell Barton
2022-09-16Make File Select dialog update operator's file & path propertiesColin Basnett
When an operator is attached to a file select dialog, the update callback function for the operator's directory, filename and filepath properties will be called as the user navigates through the dialog. This will allow add-on authors to make more interactive import operators. Differential Revision: https://developer.blender.org/D15543
2022-09-16Revert "UI: Use full word for face set operator name, tweak description"Hans Goudey
This reverts commit 15d85c54c3f960814068074bcdff0a5546fa4d5a. Included a separate change/new file by mistake. Sorry for the noise.
2022-09-16UI: Use full word for face set operator name, tweak descriptionHans Goudey
"Init" shouldn't be used in the UI, and avoid repeating the operator name in its description.
2022-09-16Sculpt: Respect hiding when creating face sets from loose partsHans Goudey
Different areas of the mesh can be "loose parts" visually when separated by hidden areas. This is consistent with other areas of sculpt mode that also treat hidden areas differently.
2022-09-16Cleanup: formatCampbell Barton
2022-09-15I18n: disambiguate and extract a few messagesDamien Picard
Disambiguate: - Lower / Upper (case) - Spray (ocean modifier) - Keep Original (clip, grease pencil, object) - Screen [space] (inside some enum items, mostly) - Cast Shadow ("shadow that is cast", not "to cast a shadow") Extract: - Line Art Light Reference Near and Far - Mesh vertex attribute domain: Vertex Reviewed By: mont29 Differential Revision: https://developer.blender.org/D15938
2022-09-15GPencil: Add frame number to Trace operatorAntonio Vazquez
The default trace can only trace an image or a sequence, but it was not possible to trace only selected frames in a sequence. This new parameter allows to define what frame trace. If the value is 0, the trace is done as before. The parameter is not exposed in the UI because this is logic if it is managed by a python API, but it has no sense in the UI. This feature was included after receiving feedback from Studios which need to trace videos only for some frames using custom python scripts.
2022-09-15NLA: draw track bg based on strip's extrapolation typeNate Rupsis
In the NLA, draw the track background based on the strip's extrapolation setting. Previously, this had no visual indicator; "Hold", "Hold Forward", and "Nothing" were visually indistinguishable. Now "Nothing" actually shows nothing, "Hold Forward" shows a dimly colored background from the strip to its right, and "Hold" shows that in both directions. Reviewed By: RiggingDojo, sybren Maniphest Tasks: T97572 Differential Revision: https://developer.blender.org/D14836
2022-09-15Cleanup: spelling in comments, comment blocksCampbell Barton
2022-09-15Fix Unreported: VSE and NLA handle position text is not drawnRichard Antalik
When moving strip, or it's handle, text with frame number near handle should be drawn. This feature was broken by 8d53ead69bb5, because function `UI_view2d_text_cache_add` sets all fields of `v2s->rect` to 0. This case was checked in function `UI_view2d_text_cache_draw`, but it was not quite obvious. This commit reverts 8d53ead69bb5, makes condition for 0 size rectangle more obvious and adds comment for clarity. function `UI_view2d_text_cache_add` is only used in NLA and VSE, and this new condition fits existing use-cases. Status of T97500 is not affected by this change.
2022-09-15UV: rename "Pixel Snap Mode" to "Pixel Round Mode"Chris Blackbourn
Maniphest Tasks: T78391 Differential Revision: https://developer.blender.org/D15952
2022-09-14Cleanup: Make formatHans Goudey
2022-09-14Sculpt: Separate hide status from face sets, use generic attributeHans Goudey
Whether faces are hidden and face sets are orthogonal concepts, but currently sculpt mode stores them together in the face set array. This means that if anything is hidden, there must be face sets, and if there are face sets, we have to keep track of what is hidden. In other words, it adds a bunch of redundant work and state tracking. On the user level it's nice that face sets and hiding are consistent, but we don't need to store them together to accomplish that. This commit uses the `".hide_poly"` attribute from rB2480b55f216c to read and change hiding in sculpt mode. Face sets don't need to be negative anymore, and a bunch of "face set <-> hide status" conversion can be removed. Plus some other benefits: - We don't need to allocate either array quite as much. - The hide status can be read from 1/4 the memory as face sets. - Updates when entering or exiting sculpt mode can be removed. - More opportunities for early-outs when nothing is hidden. - Separating concerns makes sculpt code more obvious. - It will be easier to convert face sets into a generic int attribute. Differential Revision: https://developer.blender.org/D15950
2022-09-14ViewLayer: Lazy sync of scene data.Monique Dewanchand
When a change happens which invalidates view layers the syncing will be postponed until the first usage. This will improve importing or adding many objects in a single operation/script. `BKE_view_layer_need_resync_tag` is used to tag the view layer to be out of sync. Before accessing `BKE_view_layer_active_base_get`, `BKE_view_layer_active_object_get`, `BKE_view_layer_active_collection` or `BKE_view_layer_object_bases` the caller should call `BKE_view_layer_synced_ensure`. Having two functions ensures that partial syncing could be added as smaller patches in the future. Tagging a view layer out of sync could be replaced with a partial sync. Eventually the number of full resyncs could be reduced. After all tagging has been replaced with partial syncs the ensure_sync could be phased out. This patch has been added to discuss the details and consequences of the current approach. For clarity the call to BKE_view_layer_ensure_sync is placed close to the getters. In the future this could be placed in more strategical places to reduce the number of calls or improve performance. Finding those strategical places isn't that clear. When multiple operations are grouped in a single script you might want to always check for resync. Some areas found that can be improved. This list isn't complete. These areas aren't addressed by this patch as these changes would be hard to detect to the reviewer. The idea is to add changes to these areas as a separate patch. It might be that the initial commit would reduce performance compared to master, but will be fixed by the additional patches. **Object duplication** During object duplication the syncing is temporarily disabled. With this patch this isn't useful as when disabled the view_layer is accessed to locate bases. This can be improved by first locating the source bases, then duplicate and sync and locate the new bases. Will be solved in a separate patch for clarity reasons ({D15886}). **Object add** `BKE_object_add` not only adds a new object, but also selects and activates the new base. This requires the view_layer to be resynced. Some callers reverse the selection and activation (See `get_new_constraint_target`). We should make the selection and activation optional. This would make it possible to add multiple objects without having to resync per object. **Postpone Activate Base** Setting the basact is done in many locations. They follow a rule as after an action find the base and set the basact. Finding the base could require a resync. The idea is to store in the view_layer the object which base will be set in the basact during the next sync, reducing the times resyncing needs to happen. Reviewed By: mont29 Maniphest Tasks: T73411 Differential Revision: https://developer.blender.org/D15885
2022-09-14Adding `const Scene*` parameter in many areas.Monique Dewanchand
Related to {D15885} that requires scene parameter to be added in many places. To speed up the review process the adding of the scene parameter was added in a separate patch. Reviewed By: mont29 Maniphest Tasks: T73411 Differential Revision: https://developer.blender.org/D15930
2022-09-14Curves: Improve sculpting performance by reducing allocationsHans Goudey
The snake hook and grow/shrink brushes need some arrays for input to the length paramterization code. These were allocated and freed for every curve. Instead, use a local buffer for each task execution. Differential Revision: https://developer.blender.org/D15964
2022-09-14Fix T49814: Collada Import Ignores Vertex NormalsMyron Carey
We now import and apply custom normals using a similar strategy to the STL importer. We store custom normal data for each loop as we read each MPoly and then apply it to the mesh after `BKE_mesh_calc_edges()` is called. The new behavior is optional and may be disabled in the Collada import UI. When disabled, we use the old behavior of only using normals to determine whether or not to smooth shade an MPoly. ---- Patch as requested in {T49814}. The Collada import UI now has an additional checkbox, similar to the glTF and FBX import UIs: {F13428264} Here is a test Collada file with a simple test cube with flipped custom normals: {F13428260} {F13428282} And a sphere where the two halves are disconnected geometry, but has custom normals that make the halves appear to be connected: {F13436363} {F13436368} I've tested it on a number of my own meshes, and the custom normals appear to be imported correctly. I'm not too sure about how I've plumbed the option down, though, or whether this is the most proper way to apply custom normals. Reviewed By: gaiaclary Differential Revision: https://developer.blender.org/D15804
2022-09-14Fix T100959: Memory leak when moving node with AltGermano Cavalcante
The memory leak happens because `ED_node_link_insert` (called after the transform operation) overwrites the pre-existing `snode->runtime->iofsd`, losing the reference without freeing the memory. So to "move" the reference from `snode->runtime->iofsd` to `op->customdata`, so that each operator works with its own data. Reviewed By: Severin Differential Revision: https://developer.blender.org/D15948
2022-09-13Fix T100980: Missing deg update when duplicating a geometry nodetree in node ↵Bastien Montagne
editor. Tagging depsgraph for relation rebuild does not replace tagging IDs for update.
2022-09-13Fix T101027: Sculpt tools don't respect visibility after recent commitHans Goudey
Caused by b5f7af31d6d4, which exposed the fact that the PBVH wasn't retrieving the updated hide status attributes if they were allocated in sculpt mode. Previously the attributes were always allocated when entering sculpt mode.
2022-09-13NLA: Remove Edited Action tab from NLA panelNate Rupsis
Removes the "Edited Action" tab for selected Action strips in the NLA editor. It is still available in the Action editor, where it is actually suitable/usable. Having it in the NLA got in the way of the actual NLA strip properties. Reviewed By: sybren, RiggingDojo Differential Revision: https://developer.blender.org/D14964
2022-09-13Fix: set ipo/easing in dope ignores hidden channelsWayde Moss
Animators were not able to set channel interpolation or easing type for channels visible in the dopesheet but hidden in the graph editor. Bug seemed to be due to typo. No official report, but there was a RCS on this https://blender.community/c/rightclickselect/yWgbbc/ Reviewed By: sybren, RiggingDojo Differential Revision: https://developer.blender.org/D10228
2022-09-13Fix T101031: Crash with Initialize Face Sets operatorHans Goudey
2022-09-13obj: implement support for PBR .mtl extensionsAras Pranckevicius
Implement import & export support for "PBR extensions" in .mtl files (T101029, also fixes T86736). Newly supported parameters: - Roughness (Pr, map_Pr) - Metallic (Pm, map_Pm) - Sheen (Ps, map_Ps) - Clearcoat thickness (Pc) and roughness (Pcr) - Anisotropy (aniso) and rotation (anisor) - Transmittance (Tf / Kt) Exporter has an option to enable these additional PBR parameters export; defaults to off since not all software understands that. Exporter UI tweaked and all material-related options were put into their own separate box. Added/extended test files in Subversion repository for test coverage.
2022-09-13Geometry Nodes: new evaluation systemJacques Lucke
This refactors the geometry nodes evaluation system. No changes for the user are expected. At a high level the goals are: * Support using geometry nodes outside of the geometry nodes modifier. * Support using the evaluator infrastructure for other purposes like field evaluation. * Support more nodes, especially when many of them are disabled behind switch nodes. * Support doing preprocessing on node groups. For more details see T98492. There are fairly detailed comments in the code, but here is a high level overview for how it works now: * There is a new "lazy-function" system. It is similar in spirit to the multi-function system but with different goals. Instead of optimizing throughput for highly parallelizable work, this system is designed to compute only the data that is actually necessary. What data is necessary can be determined dynamically during evaluation. Many lazy-functions can be composed in a graph to form a new lazy-function, which can again be used in a graph etc. * Each geometry node group is converted into a lazy-function graph prior to evaluation. To evaluate geometry nodes, one then just has to evaluate that graph. Node groups are no longer inlined into their parents. Next steps for the evaluation system is to reduce the use of threads in some situations to avoid overhead. Many small node groups don't benefit from multi-threading at all. This is much easier to do now because not everything has to be inlined in one huge node tree anymore. Differential Revision: https://developer.blender.org/D15914
2022-09-13Cleanup: spelling in commentsCampbell Barton
2022-09-13Nodes: Avoid unnecessary sorting when selecting or moving nodesHans Goudey
Previously the nodes were sorted wven when there was no change. This is a fixed version of e3ef6a6660032ca18, which was reverted by dc937c5aee4532.
2022-09-13NLA: actionclip_add now fails on invoke if no NLA track is selectedColin Basnett
This makes the NLA_OT_actionclip_add operation (Shift+A while mousing over the NLA strips area) fail on invocation if no tracks are active. This stops the annoyance of using the Shift+A menu to select an action to add, but only getting the error after you select an action. Differential Revision: https://developer.blender.org/D15737
2022-09-13Fix: Node edge pan and remove on cancel doesn't workHans Goudey
Caused by 4a71765f9a41 which used an operator that didn't have the properties it expected.
2022-09-13Fix: Multires crash after recent face set refactorHans Goudey
Missing null check when retrieving face sets for multires automasking. Caused by b5f7af31d6d474c3b455b.
2022-09-12USD IO: fixed compiler warningsMichael Kowalski
2022-09-12Fix T100886: error saving side-by-side stereo EXR image of depth passBrecht Van Lommel
The stereo saving code that combines two image buffers into one did not work correctly when the number of channels is not equal to 4.
2022-09-12Sculpt: Fix T100608: SCULPT_UNDO_FACE_SETS broken for redoJoseph Eagar
Always swap values when restoring sculpt undo data.
2022-09-12When these features aren't used, there is no sense in storing theHans Goudey
corresponding data layers and using their values for computations. Avoiding that should increase performance in many operations that would otherwise have to read, write, or propagate these values. It also means decreased memory usage-- not just for sculpt mode but for any mesh that was in sculpt mode. Previously the mask, face set, and hide status layers were *always* allocated by sculpt mode. Here are a few basic tests when masking and face sets are not used: | Test | Before | After | | Subsurf Modifier | 148 ms | 126 ms | | Sculpt Overlay Extraction | 24 ms every redraw | 0 ms | | Memory usage | 252 MB | 236 MB | I wouldn't expect any difference when they are used though. The code changes are mostly just making sculpt features safe for when the layers aren't stored, and some changes to the conversion to and from the hide layers. Use of the ".hide_poly" attribute replaces testing whether face sets are negative in many places. Differential Revision: https://developer.blender.org/D15937
2022-09-12Fix T100016: Memory leak in USD importer.Michael Kowalski
These changes were implemented by Sonny Campbell. Fixed the first issue by freeing the operator customdata when the import is cancelled. Fixed the second issue by using a character array instead of allocating new memory for the prim_path_mask. Differential Revision: https://developer.blender.org/D15781
2022-09-12UI: Cleanup/Fixes of some UI messages.Bastien Montagne
2022-09-12Fix T100999: GPencil Copy paste stroke(s) does not respect autokeyingAntonio Vazquez
The operator was not checking the status of the Autokey button.
2022-09-12Fix T100851: Sync markers does not work for numinputPhilipp Oeser
special_aftertrans_update would always use TransInfo values (not the values_final -- we need the final values to follow numinput, snapping, etc). Maniphest Tasks: T100851 Differential Revision: https://developer.blender.org/D15893