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-05-02Fix T97688: Deleting a scene with a scene strip causes the referenced scene ↵Bastien Montagne
to have zero users Relinking code would weirdly enough allow clearing of extra/fake user status on IDs used by affected ID, which would be utterly wrong. Fairly unclear why this was working OK in reported case before rBa71a513def20, could not spot any obvious reason just from reading code... Also, in `libblock_remap_data_update_tags`, only transfer fake user status if `new_id` is not NULL (otherwise that would have removed that falg from `old_id`, without actually transferring it to anything).
2022-05-02Color Attributes: Add initial fill color optionEthan-Hall
This patch adds allows the user to select the initial fill color when adding a new color attribute layer. --- {F13035372} Reviewed By: JulienKaspar, joeedh Differential Revision: https://developer.blender.org/D14743
2022-05-02Blender 3.2 - BetaThomas Dinges
* BLENDER_VERSION_CYCLE set to beta * Update pipeline_config.yaml to point to 3.2 branches and svn tags * Update and uncomment BLENDER_VERSION in download.cmake
2022-05-01Nodes: Fix T90233Lukas Tönne
- Fix default_value initialization of custom node tree interface: This was crashing when adding a custom interface socket to a tree. The node_socket_set_typeinfo function was called too early, creating a default float socket, which then doesn't match the socket type after changing to the custom type. The node_socket_set_typeinfo only allocates and initializes default_value when it isn't already set. That is because the function is used either when creating new sockets or to initialize typeinfo after loading files. So default_value has to be either null or has to be matching the current type already. - Fix RNA flag for string return value of the valid_socket_type callback: String return values of registerable RNA functions need a PROP_THICK_WRAP flag since they don't have a fixed buffer to write into.
2022-04-29Fix T95480: Crash when relocating libraries in some cases.Bastien Montagne
While code deleting old (relocated to new ones) IDs would work fine in typical cases, it would fail badly in others, when e.g. drivers would create 'reversed' dependency from the obdata ID to the object ID. This commit uses a less efficient, but much safer method. It also ensures no relocated old IDs is left over in the file (previous version could easily leave some old IDs from the old library until a full save/reload cycle happened).
2022-04-29Fix (unreported) bad handling of ID usercount increment in remapping code.Bastien Montagne
While this only had minor potential effect, both code incrementing usercount of newly remapped IDs were wrong. Original one would by-pass any 'ensured user' handling, newer one would systematically make the ID directly linked... `id_us_plus_no_lib` is to be used here.
2022-04-29BKE_lib_remap: add comment note about some remapping options.Bastien Montagne
Fact that those options are only used in a specific case, and that the same behavior is ensured in a different part of the code in other cases, is fairly confusing and unfortunate... At least document it.
2022-04-29NLA: Key influence when pushing down to NLASybren A. Stüvel
When pushing down an Action onto an NLA track, set the new Strip's influence to the Action's influence. This is done by setting a key due to the way the NLA Strip influence works (it's either animated, or ignored). Reviewed By: sybren, RiggingDojo Differential Revision: https://developer.blender.org/D14719
2022-04-29Fix: Incorrect custom data maxlayers in rare filesHans Goudey
For a single day in 2015 between rBff3d535bc2a6309 and rB945f32e66d6ada, custom data structs could be written with an incorrect maxlayer field. This means that custom data structs read from those files would think they have more space to add new layers than they actually did, causing a crash if more layers were added. This was found while investigating a crash from D14365 which adds new face corner layers in versioning. The fix is to reset all maxlayer integers to totlayer, which is done when writing files in current Blender anyway. The file tests/render/motion_blur/camera_zoom_blur_perspective.blend has this problem as it was added on 2015-07-21, right between the two commits. Adding three custom data layers in versioning code would crash. The problem was originally found and investigated by Martijn Versteegh (@Baardaap), thanks! Differential Revision: https://developer.blender.org/D14786
2022-04-29Cleanup: missing declaration warnings & spelling in commentsCampbell Barton
2022-04-28Fix T97151: Curve vertex parenting crash with dependency cycleHans Goudey
When the object's position depends on the geometry and the geometry depends on the object's position, we can't count on the object's evaluated geometry to be available. Lattices and mesh objects have equivalent checks in this vertex parenting function. Differential Revision: https://developer.blender.org/D14781
2022-04-28Cleanup: Fix compiler warningsHans Goudey
2022-04-28Fix T97527: multiview camera suffix not working with more than 4 charactersBrecht Van Lommel
Thanks to Germano Cavalcante for finding the solution.
2022-04-28VSE: Add option to limit timeline view heightRichard Antalik
When height is limited, it is defined by space occupied by strips, but at least channels 1 to 7 will be always visible. This allows it to easily overview timeline content by zooming out to maximum extent in Y axis and panning in X axis. More channels can be "created" on demand by moving strip to higher channel. When strip is removed and highest channel becomes empty, view will stay as is until it is moved down. Then new highest point is remembered and it is not possible to pan upwards until strip is moved to higher channel. Limiting takes into account height of scrubbing and markers area as well as scrollers. This means that when zoomed out to maximum extent, no strips are obstructed by fixed UI element. Fixes T57976 Reviewed By: Severin Differential Revision: https://developer.blender.org/D14263
2022-04-28Cleanup: Improve const correctness of shape key functionsHans Goudey
2022-04-28Fix T97679: Retrieving shape key normals modifies verticesHans Goudey
Caused by not using the proper duplicated `MVert` array. Error in b0aaf6ff4a9731e9142d8.
2022-04-28Geometry Nodes: Add default attribute name to field inputs/outputsHans Goudey
Geometry node group inputs and outputs get a new property that controls the attribute name used for that field input/output when assigning the node group to a modifier for the first time. If the default name is assigned to an input, the default "Use attribute name" is true . In order to properly detect when a node group is first assigned, the modifier now clears its properties when clearing the node group. Ref T96707 Differential Revision: https://developer.blender.org/D14761
2022-04-28Blender 3.2 Beta - Subversion bumpThomas Dinges
2022-04-28Cleanup: unbalanced doxy sections, add some sectionsCampbell Barton
2022-04-28Cleanup: formatCampbell Barton
2022-04-28Cleanup: Reword comment, rename variablesHans Goudey
Use "transform" instead of "obmat", because the meshes don't necessarily come from objects.
2022-04-27Fix T97235: PBVH draw cache invalidation bugJoseph Eagar
The PBVH draw cache wasn't being invalidated in all cases. It is now invalidated whenever a PBVH node's draw buffers are freed.
2022-04-27Fix broken obj tests from earlier commitKévin Dietrich
rB08731d70bf66 was not properly checking if subdivision needs to be evaluated on the CPU. Thanks Ray Molenkamp for noticing.
2022-04-27Fix T96327: data transfer crash with GPU subdivisionKévin Dietrich
The crash is caused as the subdivision wrapper does not have loop normals, which are generally computed at the end of the modifier stack evaluation via `mesh_calc_modifier_final_normals`. (Note that they are initially computed, but deleted by the subdivision wrapper creation.) This records in the mesh runtime whether loop normals should have been computed and computes them alongside the subdivision wrapper. Differential Revision: https://developer.blender.org/D14489
2022-04-26UI: Support setting context for buttons without layoutJulian Eisel
It was possible to set context pointers for buttons via the layout, but not for buttons in places where the layout system wasn't used (where buttons are placed manually). This is needed for buttons in the Outliner, see D14653.
2022-04-26Geometry Nodes: refactor array devirtualizationJacques Lucke
Goals: * Better high level control over where devirtualization occurs. There is always a trade-off between performance and compile-time/binary-size. * Simplify using array devirtualization. * Better performance for cases where devirtualization wasn't used before. Many geometry nodes accept fields as inputs. Internally, that means that the execution functions have to accept so called "virtual arrays" as inputs. Those can be e.g. actual arrays, just single values, or lazily computed arrays. Due to these different possible virtual arrays implementations, access to individual elements is slower than it would be if everything was just a normal array (access does through a virtual function call). For more complex execution functions, this overhead does not matter, but for small functions (like a simple addition) it very much does. The virtual function call also prevents the compiler from doing some optimizations (e.g. loop unrolling and inserting simd instructions). The solution is to "devirtualize" the virtual arrays for small functions where the overhead is measurable. Essentially, the function is generated many times with different array types as input. Then there is a run-time dispatch that calls the best implementation. We have been doing devirtualization in e.g. math nodes for a long time already. This patch just generalizes the concept and makes it easier to control. It also makes it easier to investigate the different trade-offs when it comes to devirtualization. Nodes that we've optimized using devirtualization before didn't get a speedup. However, a couple of nodes are using devirtualization now, that didn't before. Those got a 2-4x speedup in common cases. * Map Range * Random Value * Switch * Combine XYZ Differential Revision: https://developer.blender.org/D14628
2022-04-26Geometry Nodes: Avoid parallel_for_each with a single geometryHans Goudey
The large call stack can be slightly annoying, and it's possible that invoking TBB in this case corresponds to some overhead like e1309030603980c6b.
2022-04-26Cleanup: Move anonymous attribute removal to geometry componentHans Goudey
Implementing removal of anonymous attributes with `GeometryComponent` instead of `Mesh` makes it more reusable for other types like curves.
2022-04-26Animation: Sensible frame range for motion pathsColin Marmond
Motion paths can now be initialised to more sensible frame ranges, rather than simply 1-250: - Scene Frame Range - Selected Keyframes - All Keyframes Reviewed By: sybren, looch, dfelinto, pablico Maniphest Tasks: T93047 Differential Revision: https://developer.blender.org/D13687
2022-04-26Cleanup: use boolean arguments and return valuesCampbell Barton
2022-04-26Cleanup: remove NULL check and outdated commentCampbell Barton
2022-04-26Cleanup: names in text functionsCampbell Barton
- Use filepath instead of file. - Use relbase instead of relpath. In both cases the new names are used more frequently throughout exiting functions.
2022-04-26Fix bone "auto-name by axis" failure to clip long namesCampbell Barton
Failure to clip automatic-names meant named could end with a "." for e.g. Error in [0] meant the clipped text was copied then immediately overwritten. [0]: 354e6b9c189bb6cea57577ba3a8e7fb7ca28a796
2022-04-26Cleanup: simplify text copying string operationsCampbell Barton
- De-duplicate txt_new_linen & txt_new_line. - Don't accept NULL as input for txt_new_linen & txt_new_line (callers can pass in an empty string instead). - Avoid duplicate strlen calls in txt_new_linen. - Use memcpy when the length of the string is known in txt_delete_sel & BKE_text_load_ex.
2022-04-26Fix: Correctly copy and update curve type counts cacheHans Goudey
Missing from f431be224fa583743.
2022-04-26Fix T97595: Modifier attribute output broken for vertex groupsHans Goudey
`attribute_try_create` didn't understand that the vertex group attribute already existed because it only looks for names in custom data layers when the domain matches. Using `attribute_exists` unfortunately requires another loop through all attribute names, but that should be optimized separately in the future anyway. Differential Revision: https://developer.blender.org/D14756
2022-04-25Curves: Cache the number of curves of each typeHans Goudey
Remembering the number of curves of every type makes it fast to know whether processing specific to a single curve type has to be done. This information was accessed in quite a few places, so this should be an overall reduction in overhead for the new curves type. The cache is computed eagerly, in other words every time after changing the curve types. In order to reduce verbosity I added helper functions for some common ways to set the types. Differential Revision: https://developer.blender.org/D14732
2022-04-25Cleanup: spelling in commentsCampbell Barton
2022-04-25Cleanup: add missing doxy sections in customdataCampbell Barton
2022-04-24Cleanup: various minor changesCampbell Barton
- Add missing doxy-section for Apply Parent Inverse Operator - Use identity for None comparison in Python. - Remove newline from operator doc-strings. - Use '*' prefix multi-line C comment blocks. - Separate filenames from doc-strings. - Remove break after return.
2022-04-23Bake: add UDIM tile baking supportBrecht Van Lommel
Works for both Cycles and multires bake. Triangles are baked to multiple UDIM images if they span across them, though such UV layouts are generally discouraged as there is no filtering across UDIM tiles. The bake margin currently only works within UDIM tiles. For the extend method this is logical, for the adjacent faces method it may be useful to support copying pixels from other UDIM tiles, though this seems somewhat complicated. Fixes T95190 Ref T72390
2022-04-22Fix T96498: Modifiers affect multiple curve objectsHans Goudey
The original mistake I made in b9febb54a492ac6c938 was thinking that the input curve object data to `BKE_displist_make_curveTypes` was already copied from the original. I think I misread some of its `ID` flags. This commit places the result of curves evaluation in a duplicated curve instead, and copies the edit mode pointers necessary for drawing overlays. `Curve` needs to know not to free those pointers. I still don't have a full understanding of why some of the tactics I've used work and others don't. I've probably tried around 8 different solutions at this point, and this is the best I came up with. The dependency graph seems to have some handling of edit mode pointers that make the edit mode overlays work if the evaluated result is only an empty curve created by the evaluated geometry set. This doesn't work with the current method and I need to set the edit mode pointers at the end of evaluation explicitly. We're constrained by the confusing duality of the old curves system combined with the new design using the evaluated geometry set. Older areas of Blender expect the evaluated `Curve` to be a copy of the original, even if it was replaced by some arbitrary evaluated mesh. Differential Revision: https://developer.blender.org/D14561
2022-04-22Fix Data Transfer Projected Face/Edge Interpolated mode is wrongPhilipp Oeser
Caused by {rBcfa53e0fbeed} Above commit mixed up source and destination meshes causing bad lookups on calculated normals. Now make sure we get normals from our destination mesh to project along. Note this was only reported for Projected Face Interpolated mode, but same was true for Projected Edge Interpolated mode (though that one is a bit weird to test since I think there is generally something wrong with that mode -- with or without rBcfa53e0fbeed). Fixes T97528 Maniphest Tasks: T97528 Differential Revision: https://developer.blender.org/D14726
2022-04-22Fix accessing attribute data in editmodePhilipp Oeser
When in mesh editmode, attributes point to bmesh customdata, the attribute data is empty since custom data is stored per element instead of a single array there (same es UVs etc.). Opposed to e.g. UVs, general attributes were not setting their data length/size to zero in case of editmode though, which could lead to - crash in Outliner Data Api view [that was reported in T95922] - RuntimeError such as the following: ``` RuntimeError: bpy_prop_collection[index]: internal error, valid index 0 given in 8 sized collection, but value not found ``` Now check for mesh editmode in `BKE_id_attribute_data_length` (and return zero in that case). Alternatively, the check could also be done in `rna_Attribute_data_length` only (such as UVs do in `rna_MeshUVLoopLayer_data_length`). Ref D11998 Fixes T95922 Maniphest Tasks: T95922 Differential Revision: https://developer.blender.org/D14714
2022-04-21Cleanup: Remove unused argument to mesh modifier evaluationHans Goudey
2022-04-21Geometry Nodes: better support for byte color attributesJacques Lucke
Since {rBeae36be372a6b16ee3e76eff0485a47da4f3c230} the distinction between float and byte colors is more explicit in the ui. So far, geometry nodes couldn't really deal with byte colors in general. This patch fixes that. There is still only one color socket, which contains float colors. Conversion to and from byte colors is done when read from or writing to attributes. * Support writing to byte color attributes in Store Named Attribute node. * Support converting to/from byte color in attribute conversion operator. * Support propagating byte color attributes. * Add all the implicit conversions from byte colors to the other types. * Display byte colors as integers in spreadsheet. Differential Revision: https://developer.blender.org/D14705
2022-04-21Curves: show sculpt tool settings in panelsJacques Lucke
Ref T97444. Differential Revision: https://developer.blender.org/D14700
2022-04-21Fix Empty "Only Axis Aligned" viewing angle depends on object scalePhilipp Oeser
This was projecting the unnormalized z scale axis onto the plane defined by the view vector. If object scale was very small, this made the empty still visible at viewing angles far from the object axis. Now use the normalized z scale axis to make this work the same at all object scales. Fixes T97004. Maniphest Tasks: T97004 Differential Revision: https://developer.blender.org/D14557
2022-04-21Commit D14179: Revamp Vertex Paint With C++Joseph Eagar
- Verrtex paint mode has been refactored into C++ templates. It now works with both byte and float colors and point & corner attribute domains. - There is a new API for mixing colors (also based on C++ templates). Unlike the existing APIs byte and float colors are interpolated identically. Interpolation does happen in a squared rgb space, this may be changed in the future. - Vertex paint now uses the sculpt undo system. Reviewed By: Brecht Van Lommel. Differential Revision: https://developer.blender.org/D14179 Ref D14179
2022-04-20Cleanup: Remove redundant types from custom data masksHans Goudey
Colors and byte colors are already included in `CD_MASK_PROP_ALL`.