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 editing
  • Requested changes, accepted D16979: Curves: Add initial undo system
  • Requested changes, accepted D16848: Animation: Add Select Linked Vertices to Weight Paint Mode
  • Requested changes, accepted D17063: Curves: Add initial transform support
  • Accepted D17025: Curves: Add OffsetIndices abstraction.
  • Accepted, committed D17003: Fix T103632: Single point trim should sample curve end point correctly
  • Accepted, committed D16846: Geometry Node: Geometry socket supported types tooltip without computing
  • Accepted D16998: Add more direct access to the UVMap associated bool layers in python
  • Accepted D17047: Curves: Edit mode selection operators
  • Commented D16414: Sculpt: Stroke Texture Mapping
  • Accepted D16735: Geometry Node: Gather link searche: Ability to move values to the top using a new link
  • Accepted D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributes
  • Accepted D17012: UI: Fix alignment of custom properties edit & remove buttons
  • Commented D17045: Fix: Compare node: Link drag search: More Then for Color type
  • Commented D16977: Fix T103761: creating a color attribute doesn't make it active
  • Accepted D16949: Fix T103618: Transform grid bug
  • Accepted 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.

It feels so good to see these conversions finally finished! Looks like I started the process about a year and a half ago. More space in my head now!


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 attributes
  • Accepted D16752: 3D Texturing: Replace pointers with indexes in pbvh_uv_islands
  • Accepted, committed D16997: Fix T103850: Avoid using components that can contain null pointer
  • Requested changes D16743: Geometry Nodes: Add selection and depth field to realize instances
  • Commented D16980: Mesh: Support computing custom/loop normals lazily (WIP).
  • Accepted D16898: Fix T103564: creating a color attribute doesn't make it active
  • Accepted D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributes
  • Accepted, committed D16749: Cleanup: replace "UV's" by "UVs"
  • Requested changes D16979: Curves: Add initial undo system
  • Commented D16551: RNA: Use C++ for sequencer properties
  • Accepted D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Accepted D16939: Fix T103679: Add missing operators in object context menu for point cloud and curves
  • Commented D16977: Fix T103761: creating a color attribute doesn't make it active
  • Commented 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.

As part of the mesh struct of array refactor, I moved the sharp edge flag to a separate boolean attribute. It will be interesting to More of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.see what people can do with this when it can be controlled with geometry nodes!


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 Mode
  • Accepted, committed D16892: Fix: sort link indices in multi input sockets incorrect
  • Accepted, committed D16926: Fix T103663: Fill single selected material not by false
  • Accepted, 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.