User:HooglyBoogly/Reports/2023/

January 23 - February 5
Combined the last two weeks since some unexpected personal stuff came up and I had to travel a bit. Besides a bit of distraction (probably only really did a week of work or so) I still got some things done, though mostly unplanned things and a bit more simple work like refactors and triaging than usual.

I made two new tasks also, two interesting (IMO) performance topics. I've made a fair amount of progress on the first, I'm down to 83 uses of `MPoly` now from over 1000 before. Still a ways from getting the branch to compile though (`refactor-mesh-face-generic` for those curious).
 * : Struct of Arrays Refactor for Mesh Polygons
 * : Decrease SharedCache overhead

Changes / Features
 * Geometry Nodes: Tweak menu location of sample nodes
 * Curves Sculpt: Add report about missing surface for puff brush
 * Performance
 * Curves: Use shared caches for evaluated data
 * BMesh: Parallelize BMesh to evaluated Mesh conversion
 * Geometry Nodes: Skip sorting in topology nodes if possible
 * Geometry Nodes: Optimize start point case of Points of Curve node
 * : Curves: Optimize evaluation of many NURBS curves

Fixes
 * Fix: Incorrect forward-compatible saving of face sets
 * Fix: Compile error after BMesh conversion commit
 * Fix T104168: No active UV when reading auto-save files
 * Fix T104088: Geometry nodes modifier boolean lost on undo
 * Fix: Debug build compile error after recent cleanup commit
 * : Mesh: Simplify BMesh Mesh conversion attribute copying

Cleanup
 * Cleanup: Use offset indices arguments for curves utilities
 * Cleanup: Simplify mesh and point cloud conversion
 * Cleanup: Array types, const, math API in workbench code
 * Cleanup: Quiet unused variable warning in non-debug builds
 * Cleanup: Remove unused image paint function
 * Cleanup: Edit Mesh: Decrease variable scope, use bool instead of int
 * Cleanup: Compiler warnings in new sculpt & workbench
 * Cleanup: Rename pbvh.cc to pbvh_colors.cc
 * C++ Conversions
 * Cleanup: Move PBVH files to C++
 * Cleanup: Move multires reshape header to C++

Review
 * `Commented` : Geometry Nodes: Use face corner normals in Distribute Points on Faces node.
 * `Requested changes` : New C++ based ply importer/exporter
 * `Commented` : Fix T104256: Propagate all required curves attributes on points for move it in point cloud
 * `Accepted` : Nodes: Add modal keymap for Node link drag
 * `Accepted` : Modifiers: Measure execution time and provide Python access.
 * `Commented` : UI: Statistics Overlay Improvements
 * `Requested changes` : Fix T103761: creating a color attribute doesn't make it active
 * `Accepted` : UI: Make uiBut safe for non-trivial construction
 * `Accepted, committed` : Geometry Node: Curve to Points: Fix wrong field supported interface status
 * `Accepted` : Shader Nodes: Use layers from evaluated mesh
 * `Accepted` : BLI: GValueBuffer container
 * `Accepted` : Fix T104296: Crash caused by incorrectly initialized group nodes.
 * `Commented` : Geometry node: Add a point selection input to Fillet Curve Node
 * `Accepted` : Fix T104136: Crash with Mesh to Volume & Simplify
 * `Accepted` : USD IO: Moving to the new Mesh Attributes API for Colors
 * `Accepted` : Fix T104044: keep order of UVMaps on load
 * `Accepted` : Fix T104316: Fix width of headerless panels on overlapping regions
 * `Accepted` : Keep CustomData layers properly sorted
 * `Accepted, committed` : Fix T104071: Mix up in Realise Instances tooltip text

Tracker
 * Investigated: 28
 * Confirmed: 7
 * Archived: 7
 * Resolved: 7

Next Week

I have quite a few high priority reports stacked up so I'll really have to start with those. Then there's some code review I can get to, and the remainder of my most recent to-do list looks like this:
 * Duplicate entries in node search for assets with local ID
 * Grab curves sculpt brush
 * Root ID use in shaders for randomization
 * Field status toggle
 * Subtype editing

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
 * Geometry Nodes: Use checkbox for exposed boolean sockets
 * Geometry Nodes: Rename Interpolate Domain and Field at Index nodes
 * Geometry Nodes: Rename node and socket for "Group ID" convention
 * Curves: Add RNA access to evaluated normals per control point
 * Geometry Nodes: Add warning to set material node with no faces
 * Geometry Nodes: Adjust modifier UI to put field toggles on the right
 * Geometry Nodes: Prefer evaluate at index value input in search
 * Performance
 * Curves: Avoid building evaluated point offsets for poly curves
 * Geometry Nodes: Parallelize flip faces node
 * Geometry Nodes: Parallelize mesh and curve edit hint transformation
 * Curves: Avoid adding curve type attribute when setting default
 * Curves: Avoid reallocations when evaluating NURBS curves
 * Curves: Deduplicate and parallelize point to curve map creation
 * Curves: Remove attribute retrieval, deduplicate evaluation logic
 * Curves: Avoid reallocations when evaluating curve in trim node
 * Geometry Nodes: Avoid creating cyclic attribute when redundant

Fixes
 * Fix: Avoid node reevaluations for selection and parenting
 * Mesh: Skip conversion from legacy data if reading new format
 * Fix T103704: Particle hair doesn't fall back to active UV
 * Fix T103911: Custom property edit gets wrong existing default
 * Fix T103911: Editing boolean custom property UI data resets value
 * Fix T103937: Applying modifier resets shape keys
 * Fix T103632: Single point trim samples curve end point incorrectly
 * Revert "Fix: don't set default value for unused socket in geometry nodes"
 * Fix: Compile error from designated initializers in C++
 * : Fix T100957: Dyntopo shows false positive data loss warnings

Tests
 * Tests: Update curve to mesh tests to fix (untested) difference
 * Geometry Nodes: Add test for trim curves last single point

Cleanup
 * Cleanup: Use OffsetIndices class in more cases
 * Cleanup: Use OffsetIndices abstraction in duplicate elements node
 * Cleanup: Use utility function for copying curve domain data
 * Cleanup: Use elif in custom property edit operator, reduce whitespace
 * Cleanup: Curves selection boolean to float comparison
 * Cleanup: Rename curves utility function
 * Cleanup: Add documentation to curve legacy conversion functions
 * Cleanup: Fix incorrect comments in mesh extrude node
 * Cleanup: Remove unnecessary includes in geometry set header
 * Cleanup: Remove unused/redundant includes from curves/pointcloud draw
 * Cleanup: Remove unnecessary curves RNA verification disabling
 * Cleanup: Remove unused attribute API function
 * Cleanup: Fix unused variable warning in merge by distance
 * C++ Conversions
 * Cleanup: Move three modifier related files to C++
 * Cleanup: Move versioning_290.c to C++
 * Cleanup: Move six mesh-related files to C++
 * Cleanup: Move multires files to C++
 * Cleanup: Move four sculpt/paint files to C++
 * Cleanup: Move sculpt_dyntopo.c to C++
 * Cleanup: Move several modifiers files to C++
 * Cleanup: Move remaining subdiv/subsurf files to C++

Review
 * `Requested changes, accepted` : Geometry Nodes: New Interpolate Curves node.
 * `Requested changes` : Nodes: Add subtype selection to socket editing
 * `Requested changes, accepted` : Curves: Add initial undo system
 * `Requested changes, accepted` : Animation: Add Select Linked Vertices to Weight Paint Mode
 * `Requested changes, accepted` : Curves: Add initial transform support
 * `Accepted` : Curves: Add OffsetIndices abstraction.
 * `Accepted, committed` : Fix T103632: Single point trim should sample curve end point correctly
 * `Accepted, committed` : Geometry Node: Geometry socket supported types tooltip without computing
 * `Accepted` : Add more direct access to the UVMap associated bool layers in python
 * `Accepted` : Curves: Edit mode selection operators
 * `Commented` : Sculpt: Stroke Texture Mapping
 * `Accepted` : Geometry Node: Gather link searche: Ability to move values to the top using a new link
 * `Accepted` : Fix T103400: Transfer Mesh Data Layout broken for color attributes
 * `Accepted` : UI: Fix alignment of custom properties edit & remove buttons
 * `Commented` : Fix: Compare node: Link drag search: More Then for Color type
 * `Commented` : Fix T103761: creating a color attribute doesn't make it active
 * `Accepted` : Fix T103618: Transform grid bug
 * `Accepted` : Cleanup: Use generic in Accumulate Field

Tracker
 * Reported : 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
 * Mesh: Move sharp edge flag to generic attribute
 * Refactor: Const correct Custom Data API, prepare for CoW
 * Custom Properties: Add boolean type
 * Nodes: Avoid small allocations for internal links
 * Nodes: Improve wording of node operator descriptions
 * Geometry Nodes: Rename Interpolate Domain and Field at Index nodes
 * Geometry Nodes: Only set soft range for modifier properties
 * Modifiers: Only allow geometry nodes for curves and point cloud
 * : Mesh: Avoid copying positions in object mode modifier stack

Fixes
 * Fix T103304: Incorrect handling of edge crease in subdivision node
 * Fix: Curves select all operator name
 * Fix: Failing test after combination of Mesh refactors

Tests
 * Geometry Nodes: Add test file for T103304 subsurf node crease failure

Cleanup
 * Cleanup: Use const when accessing custom data layers
 * Cleanup: Remove redundant mesh data mask handling
 * Cleanup: Use std::swap instead of macro in C++ code
 * Cleanup: BLI Vector comment formatting, grammar
 * Cleanup: Move particle.c to C++
 * Cleanup: Clang format

Review
 * `Accepted, committed` : Mesh: Move UV layers to generic attributes
 * `Accepted` : 3D Texturing: Replace pointers with indexes in pbvh_uv_islands
 * `Accepted, committed` : Fix T103850: Avoid using components that can contain null pointer
 * `Requested changes` : Geometry Nodes: Add selection and depth field to realize instances
 * `Commented` : Mesh: Support computing custom/loop normals lazily (WIP).
 * `Accepted` : Fix T103564: creating a color attribute doesn't make it active
 * `Accepted` : Fix T103400: Transfer Mesh Data Layout broken for color attributes
 * `Accepted, committed` : Cleanup: replace "UV's" by "UVs"
 * `Requested changes` : Curves: Add initial undo system
 * `Commented` : RNA: Use C++ for sequencer properties
 * `Accepted` : Geometry Nodes: Add a selection input to the store named attribute node
 * `Accepted` : Fix T103679: Add missing operators in object context menu for point cloud and curves
 * `Commented` : Fix T103761: creating a color attribute doesn't make it active
 * `Commented` : 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
 * Object: Support converting curves object to mesh
 * Curves: Support boolean attribute selection type, simplifications
 * Point Cloud: Support set origin and apply scale operators
 * UI: Skip expensive view button searching when drawing
 * Geometry Nodes: Multithread transforming instances and point clouds
 * Geometry Nodes: Parallelize reading and writing vertex groups
 * Geometry Nodes: Parallelize deleting vertex group
 * Node Editor: Avoid allocations for socket tooltip button arguments
 * Node Editor: Use the topology cache more when drawing node tree

Fixes
 * Fix T103624: Last node is skipped for cursor and link picking
 * Fix: Crash when grouping frame node but not its children
 * Fix: Set active color attribute copy & paste mistake
 * Fix: Build error on windows from mismatched forward declaration
 * Fix: Interface handlers crash after recent commit

Cleanup
 * Cleanup: Use const variables in node tree drawing
 * Cleanup: Simplify node editor socket picking
 * Nodes: Remove runtime socket location from struct
 * Cleanup: Remove unused code in node editor
 * Cleanup: Comment formatting in node editor

Review
 * `Requested changes, accepted` : Geometry Nodes: Deterministic anonymous attribute lifetimes.
 * `Commented` : Animation: Add Select Linked Vertices to Weight Paint Mode
 * `Accepted, committed` : Fix: sort link indices in multi input sockets incorrect
 * `Accepted, committed` : Fix T103663: Fill single selected material not by false
 * `Accepted, committed` : EEVEE: Improved animation playback performance in EEVEE for materials using Mix nodes.
 * `Accepted` : 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.