User:HooglyBoogly/Reports/2023/
All Reports
January 16 - January 22
This week I worked on various fixes, performance improvements, smaller new features, code review, and updating some existing patches. I also moved 50 files to C++, in preparation for another mesh data structure refactor. This time I'd like to replace MPoly
with offset indices like we did for curves. There's no need to store the size of a polygon when it can be calculated from the next offset integer in the array. Storing the size is like caching the result of a subtraction, which doesn't really make sense. Jacques also added a nice abstraction for that this week, the OffsetIndices
class, which I used in more places.
I still have two high priority bugs to look into, but I was able to close a few this week.
Changes / Features
- Nodes: Use dynamic declarations for group nodes rB70260960
- Geometry Nodes: Use checkbox for exposed boolean sockets rB2ea47e0d
- Geometry Nodes: Rename Interpolate Domain and Field at Index nodes rB4961e5f9
- Geometry Nodes: Rename node and socket for "Group ID" convention rB203ab983
- Curves: Add RNA access to evaluated normals per control point rB241d87e9
- Geometry Nodes: Add warning to set material node with no faces rB400f0229
- Geometry Nodes: Adjust modifier UI to put field toggles on the right rB68625431
- Geometry Nodes: Prefer evaluate at index value input in search rB9179362e
- Performance
- Curves: Avoid building evaluated point offsets for poly curves rB8d63293c
- Geometry Nodes: Parallelize flip faces node rB4cfa4f75
- Geometry Nodes: Parallelize mesh and curve edit hint transformation rBe0e6afb7
- Curves: Avoid adding curve type attribute when setting default rB647a7da1
- Curves: Avoid reallocations when evaluating NURBS curves rBdfd63bf1
- Curves: Deduplicate and parallelize point to curve map creation rB6c4e3a9e
- Curves: Remove attribute retrieval, deduplicate evaluation logic rB30111961
- Curves: Avoid reallocations when evaluating curve in trim node rBe12498e4
- Geometry Nodes: Avoid creating cyclic attribute when redundant rBbaf69b06
Fixes
- Fix: Avoid node reevaluations for selection and parenting rBd76a0e98
- Mesh: Skip conversion from legacy data if reading new format rB6d12d43a
- Fix T103704: Particle hair doesn't fall back to active UV rB45372489
- Fix T103911: Custom property edit gets wrong existing default rB2a41e082
- Fix T103911: Editing boolean custom property UI data resets value rB50105b29
- Fix T103937: Applying modifier resets shape keys rB873794b1
- Fix T103632: Single point trim samples curve end point incorrectly rBc55767b3
- Revert "Fix: don't set default value for unused socket in geometry nodes" rB7241ab6e
- Fix: Compile error from designated initializers in C++ rBd3ea9316
- D17014: Fix T100957: Dyntopo shows false positive data loss warnings
Tests
- Tests: Update curve to mesh tests to fix (untested) difference rBL63181
- Geometry Nodes: Add test for trim curves last single point rBL63174
Cleanup
- Cleanup: Use OffsetIndices class in more cases rB38a45e46
- Cleanup: Use OffsetIndices abstraction in duplicate elements node rB76673e5f
- Cleanup: Use utility function for copying curve domain data rB9233b609
- Cleanup: Use elif in custom property edit operator, reduce whitespace rB0e89d243
- Cleanup: Curves selection boolean to float comparison rB7df5d7c7
- Cleanup: Rename curves utility function rB7db00d4e
- Cleanup: Add documentation to curve legacy conversion functions rBa219507d
- Cleanup: Fix incorrect comments in mesh extrude node rBdf545612
- Cleanup: Remove unnecessary includes in geometry set header rBd42d4e33
- Cleanup: Remove unused/redundant includes from curves/pointcloud draw rB83f92188
- Cleanup: Remove unnecessary curves RNA verification disabling rB85ea74ad
- Cleanup: Remove unused attribute API function rB190d66b5
- Cleanup: Fix unused variable warning in merge by distance rBe7af2503
- C++ Conversions
- Cleanup: Move three modifier related files to C++ rB0b17d171
- Cleanup: Move versioning_290.c to C++ rB3d6fd290
- Cleanup: Move six mesh-related files to C++ rBf2bb044f
- Cleanup: Move multires files to C++ rBc07fdad0
- Cleanup: Move four sculpt/paint files to C++ rB60ea01aa
- Cleanup: Move sculpt_dyntopo.c to C++ rB6f6cc269
- Cleanup: Move several modifiers files to C++ rB79053a6f
- Cleanup: Move remaining subdiv/subsurf files to C++ rBbbc35fef
Review
Requested changes, accepted
D16642: Geometry Nodes: New Interpolate Curves node.Requested changes
D15715: Nodes: Add subtype selection to socket editingRequested changes, accepted
D16979: Curves: Add initial undo systemRequested changes, accepted
D16848: Animation: Add Select Linked Vertices to Weight Paint ModeRequested changes, accepted
D17063: Curves: Add initial transform supportAccepted
D17025: Curves: Add OffsetIndices abstraction.Accepted, committed
D17003: Fix T103632: Single point trim should sample curve end point correctlyAccepted, committed
D16846: Geometry Node: Geometry socket supported types tooltip without computingAccepted
D16998: Add more direct access to the UVMap associated bool layers in pythonAccepted
D17047: Curves: Edit mode selection operatorsCommented
D16414: Sculpt: Stroke Texture MappingAccepted
D16735: Geometry Node: Gather link searche: Ability to move values to the top using a new linkAccepted
D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributesAccepted
D17012: UI: Fix alignment of custom properties edit & remove buttonsCommented
D17045: Fix: Compare node: Link drag search: More Then for Color typeCommented
D16977: Fix T103761: creating a color attribute doesn't make it activeAccepted
D16949: Fix T103618: Transform grid bugAccepted
D16843: Cleanup: Use generic in Accumulate Field
Tracker
- Reported T103945: Assert failure in anonymous attribute relations
- Investigated: 26
- Confirmed: 1
- Known Issue: 1
- Duplicate: 4
- Archived: 3
- Resolved: 8
Next Week
I'm hoping I can commit the attribute editing operator, and that making a curves sculpt mode grab brush that doesn't do curve length preservation won't take too long. I'd like to get a patch posted for making sharp face status into a generic attribute.
January 9 - January 13
This week I lanMore of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.ded my change to make positions a generic attribute for meshes, and a similar change for UVs that Martijn has been working on for a while. I also added boolean custom property types for the geometry nodes modifier, moved sharp edge flags to a generic attribute, and made some smaller usability improvements to various geometry nodes things.
Changes / Features
- Mesh: Move positions to a generic attribute rB1af62cb3
- Mesh: Move sharp edge flag to generic attribute rBdd9e1ede
- Refactor: Const correct Custom Data API, prepare for CoW rB3a3d9488
- Custom Properties: Add boolean type rBef68a37e
- Nodes: Avoid small allocations for internal links rB05ddc7da
- Nodes: Improve wording of node operator descriptions rB7bf75231
- Geometry Nodes: Rename Interpolate Domain and Field at Index nodes rB4961e5f9
- Geometry Nodes: Only set soft range for modifier properties rBcb92ff7b
- Modifiers: Only allow geometry nodes for curves and point cloud rB2c910cb7
- D16971: Mesh: Avoid copying positions in object mode modifier stack
Fixes
- Fix T103304: Incorrect handling of edge crease in subdivision node rB0a21a554
- Fix: Curves select all operator name rB046d1a41
- Fix: Failing test after combination of Mesh refactors rBaaaa75f9
Tests
- Geometry Nodes: Add test file for T103304 subsurf node crease failure rBL63172
Cleanup
- Cleanup: Use const when accessing custom data layers rBdc99c09d
- Cleanup: Remove redundant mesh data mask handling rB32812c2c
- Cleanup: Use std::swap instead of macro in C++ code rB08b2d040
- Cleanup: BLI Vector comment formatting, grammar rBf5179830
- Cleanup: Move particle.c to C++ rB3b476d02
- Cleanup: Clang format rB13450c2d
Review
Accepted, committed
D14365: Mesh: Move UV layers to generic attributesAccepted
D16752: 3D Texturing: Replace pointers with indexes in pbvh_uv_islandsAccepted, committed
D16997: Fix T103850: Avoid using components that can contain null pointerRequested changes
D16743: Geometry Nodes: Add selection and depth field to realize instancesCommented
D16980: Mesh: Support computing custom/loop normals lazily (WIP).Accepted
D16898: Fix T103564: creating a color attribute doesn't make it activeAccepted
D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributesAccepted, committed
D16749: Cleanup: replace "UV's" by "UVs"Requested changes
D16979: Curves: Add initial undo systemCommented
D16551: RNA: Use C++ for sequencer propertiesAccepted
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeAccepted
D16939: Fix T103679: Add missing operators in object context menu for point cloud and curvesCommented
D16977: Fix T103761: creating a color attribute doesn't make it activeCommented
D16949: Fix T103618: Transform grid bug
Tracker
- Investigated: 12
- Confirmed: 1
- Needs Information: 1
- Duplicate: 1More of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.
- Archived: 4
- Resolved: 2
Next Week
More of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.
January 2 - January 6
This week I worked on various performance improvements, made some progress on some mesh and node refactors, and did a bit of bug fixing and code review work.

Changes / Features
- Node Editor: Paste nodes on mouse position rB7355d64f
- Object: Support converting curves object to mesh rB2752a884
- Curves: Support boolean attribute selection type, simplifications rBc26616b2
- Point Cloud: Support set origin and apply scale operators rBadb4dd91
- UI: Skip expensive view button searching when drawing rB8b1edff6
- Geometry Nodes: Multithread transforming instances and point clouds rB0efb79fb
- Geometry Nodes: Parallelize reading and writing vertex groups rB224d26fd
- Geometry Nodes: Parallelize deleting vertex group rB58f1e628
- Node Editor: Avoid allocations for socket tooltip button arguments rB13ad68d1
- Node Editor: Use the topology cache more when drawing node tree rB0c30873d
Fixes
- Fix T103624: Last node is skipped for cursor and link picking rB20b2d6fc
- Fix: Crash when grouping frame node but not its children rBd0348bcb
- Fix: Set active color attribute copy & paste mistake rB4ae8c52a
- Fix: Build error on windows from mismatched forward declaration rBe9cb96d1
- Fix: Interface handlers crash after recent commit rB80639a93
Cleanup
- Cleanup: Use const variables in node tree drawing rBe550d8c8
- Cleanup: Simplify node editor socket picking rBe091291b
- Nodes: Remove runtime socket location from struct rB87fd798a
- Cleanup: Remove unused code in node editor rB03abc386
- Cleanup: Comment formatting in node editor rB1d636f5e
Review
Requested changes, accepted
D16858: Geometry Nodes: Deterministic anonymous attribute lifetimes.Commented
D16848: Animation: Add Select Linked Vertices to Weight Paint ModeAccepted, committed
D16892: Fix: sort link indices in multi input sockets incorrectAccepted, committed
D16926: Fix T103663: Fill single selected material not by falseAccepted, committed
D16929: EEVEE: Improved animation playback performance in EEVEE for materials using Mix nodes.Accepted
D16898: Fix T103564: creating a color attribute doesn't make it active
Tracker
- Investigated: 5
- Confirmed: 1
- Resolved: 3
Next Week
Next week I'll try to finally commit/finish the group node declaration refactor and merge it into the simulation branch.