User:HooglyBoogly/Reports/2022/

All Reports

December 19 - January 1

Since I didn't work full time the past two weeks I combined them into one report. I mainly spent time fixing bugs, doing code review, and working on some existing refactors. I also made some progress on using node declarations for group nodes though, which is a prerequisite for the simulation branch.

I made one new design task about converting files to C++: T103343.

Changes / Features


Fixes

  • Fix: Set position node doesn't tag mesh normals dirty rB5fe297df4872
  • Fix T103301: Active and default color attributes lost in many operations rBc2a8d8b18ddb
  • Fix T103136: Cannot activate viewer node in group rBf613614fcebf
  • Fix T103307: Crash reading particle hair key.co rB9f575ece39e8
  • Fix T103520: Incorrect selection in paint mode operators rB31f224269159
  • Fix T103452: Active & default color attributes reset on modifier apply rB7911954b403e
  • Fix T103463: Repeat last crashes in node editor rB6b9825e6f792
  • Fix: Wrong const iterator type for blender::Vector rBd59f6ffdcb4a
  • Fix: Assert failure in mirror modifier rB6383ed9956cc
  • Fix: Debug build failure after recent variable name change rB81935098f185
  • Fix: Crash when grouping frame node but not its children rBd0348bcb8a56


Tests

  • Geometry Nodes: Add test for mesh set position normals dirty tagging rBL63159
  • Tests: Remove random shuffling from modifiers test rB7907803694c5
  • Tests: Print when mesh test starts, to help debugging crashes rB99fcfdd9fb91


Cleanup


Review

  • Accepted D14365: Mesh: Move UV layers to generic attributes
  • Requested changes D16792: New C++ ply importer/exporter WIP
  • Accepted D16828: Cleanup: remove 'UNUSED' macro definition in C++
  • Requested changes D16755: Mesh: replace 'BKE_mesh_merge_verts' algorithm
  • Commented D16414: Sculpt: Stroke Texture Mapping
  • Accepted, committed D16864: Fix T103453: Don't allow call Attribute Convert operator in edit mode
  • Accepted, committed D16867: Cleanup: delete boolean templates from Blur Attribute node
  • Accepted, committed D16854: Fix T103011: custom data layers aren't copied when using Boolean
  • Accepted D16625: BLI: Refactor matrix types & functions to use templates
  • Commented D16837: Fix T103354: Author extents on UsdGeomMesh
  • Commented D16735: Geometry Node: Gather link searche: Ability to move values to the top using a new link
  • Requested changes D16244: Node Editor: Controlled node link swapping
  • Accepted D16884: Geometry Nodes: Skip logging socket values for invisible node trees.
  • Accepted D16846: Geometry Node: Geometry socket supported types tooltip without computing
  • Commented D16848: Animation: Add Select Linked Vertices to Weight Paint Mode
  • Accepted, committed D16840: Fix T103370: missing UI context members
  • Requested changes D16843: Cleanup: Use generic in Accumulate Field
  • Accepted D16855: Fix uninitialized ColorSceneLinear4f occuring in certain situations.
  • Commented D16227: Geometry Nodes: Select Linked Node
  • Accepted D16847: Fix T103394: default/active color status lost after remeshing
  • Accepted D16808: Geometry Nodes: SDF Volume Sphere
  • Commented D16791: Fix T101766: Curves sculptmode: orbit around selection / view selected
  • Closed D16842: Curves sculptmode: hide select menu when selection is not used
  • Closed D16725: WIP: EXPERIMENT: Use dynamic declaration as socket update function
  • Closed D16331: Fix T102027: Add set origin support for pointcloud objects


Tracker

  • Investigated: 41
  • Confirmed: 1
  • Resolved: 12
  • Known Issue: 2
  • Archived: 12
  • Duplicate: 3


Next Week

Next week I'd like to commit some refactors and continue working on various 3.5 features.

December 12 - December 18

This week I worked more on the backend of group nodes and group input/output nodes, getting them to use the node declarations system and making the creation of new links more explicit. That's a bit of an involved refactor, so it's taking longer than I hoped. I think it's important that the simulation nodes aren't the first place to use that system though.

I committed a few refactors for meshes, including storing active attributes in a more solid way and replacing the old edge split implementation.

After Erik asked about a more specific plan for implementing volume features, I made a task describing how I would go about implementing it: T103248.


Changes / Features

  • Mesh: Store active & default color attributes with strings rB6514bb05ea5a
  • Nodes: Allow skipping node attachment after dragging rBae886596a0f1
  • Geometry Nodes: Add error message when applying modifier with no mesh rBb1494bcea7b6
  • UI: Use vector instead of linked lists for context store rB7d7e90ca6859
  • UI: Use vector instead of linked list for block button groups rB1eb90ee519c4
  • Refactor: Replace old Mesh edge split implementation rB75ad8da1ea67


Fixes


Tests

  • Cycles: Add a test for mesh default color attribute rBL63150
  • Geometry Nodes: Update icosphere test file for recent UV map change rBL63156


Cleanup


Review

  • Requested changes D16744: Support for export curves on alembic
  • Accepted D16281: Curves editmode: edit points are drawn from evaluated curves
  • Accepted D16738: Geometry nodes: Optimize Set Position node
  • Accepted D16637: Geometry Nodes: Output uv map from primitive nodes as anonymous attributes.
  • Committed D16796: Fix std::optional value() build error on older macOS SDK
  • Accepted D16764: Fix T101765: Curves sculptmode: object origin and 3D cursor are visible
  • Closed D13132: Nodes Editor: Draw lines across the center of the grid
  • Closed D16750: Curves: Fixed Switch Sculpt mode
  • Closed D10951: A Mesh Smooth node, as designed in T86903.


Tracker

  • Investigated: 15
  • Confirmed: 1
  • Resolved: 9
  • Needs Information: 1
  • Archived: 2
  • Duplicate: 1


Next Week

I'll hopefully finish up the refactors to group node declarations, and implement the next feature for edit mode attribute editing, like I had hoped last week.

December 5 - December 11

This was a productive week. Though I didn't make that much progress on simulation, I got the branch back to a working state and made the simplifications we talked about like removing the extra sockets. The implementation should be much more solid now. I'm more confident dealing with it anyway.

I also did a bunch of refactoring to mesh face corners and face corner normals. I ended up with a >20% performance improvement by mistake, just by removing redundant information in allocated memory. Indices are really so much better than pointers! On the way, I ended up implementing "On Cage" editing for the split edges and extrude nodes.

I went over a bunch of patches too, and closed some old abandoned ones. One new design task this week too, about socket naming:

  • T102962: "Face Group" / "Group Index" / "Face Set" concept naming


Changes / Features

  • Mesh: Reduce memory consumption when calculating corner normals rB9e9ebcdd728d
  • Mesh: Avoid storing redundant pointer in corner normal calculation rB9338ab1d625a
  • Geometry Nodes: Support original index layer in split edges node rB46993958fd57
  • Geometry Nodes: Support original indices in extrude node rBd17db1d11aa1
  • Nodes: Improve search weights for mix node sockets rB01fb8a555bdc
  • Geometry Nodes: Improve switch node search for booleans rB570acac79596
  • Geometry Nodes: Improve search weight for named attribute exists socket rB62434a9d2187
  • OBJ: Avoid retrieving mesh arrays, improve const correctness rBa5f9f7e2fc30


Fixes


Cleanup


Review

  • Requested changes D16625: BLI: Refactor matrix types & functions to use templates
  • Requested changes D16545: USD Export - New Curves/Hair Support
  • Accepted, committed D16550: Autofill for Attribute Convert Operators
  • Accepted D16602: Fix T102740: Don't insert the group into itself
  • Accepted, committed D15608: UI: fix several labels and tooltips
  • Accepted, committed D16631: Geometry Node: Change output socket name to Instances: Consistent tooltips
  • Accepted, committed D16644: Geometry Node: Input Image node
  • Accepted, committed D16716: UI: fix more labels and tooltips
  • Accepted, committed D16550: Autofill for Attribute Convert Operators
  • Accepted, committed D16699: Cleanup: Use topology cache of group output node
  • Accepted, committed D16730: Geometry Node: Blur Attribute: Add preferred domain based on Value input
  • Requested changes D16735: Geometry Node: Input Image gather link search
  • Requested changes D16743: Geometry Nodes: Add selection field to realize instances
  • Accepted D16704: Fix T102966: Curves editmode selection drawing not stable / flickering
  • Accepted D16676: Fix: UI: broken texpaintslot/color attributes/attributes name filtering
  • Accepted D16691: Docs: Geometry Node: Sample Index node: Tip for sampling point domain from specific component
  • Accepted D16749: Cleanup: replace "UV's" by "UVs"
  • Accepted D16719: Fix T103001: Width of some compositor nodes is incorrect
  • Accepted D16632: Docs: Geometry Node: Collection Info: Consistent output socket name
  • Commented D16518: BLI_timeit: tabulate benchmark
  • Commented D16471: Geometry Node: Edge Rings node
  • Commented D15479: Geometry Nodes: Add Selections to Curve to Mesh Node
  • Requested changes D13029: Geometry Nodes: Trace Image Node (WIP)
  • Requested changes D9621: Configurable rotation angle increments
  • Requested changes D10198: Migrate Movie Clip Editor to new tool system
  • Closed D8954: Add Bisect Modifier
  • Closed D16435: Geometry Nodes: Group Face by Edge Node
  • Closed D16688: Geometry Node: Dynamic label for Switch node
  • Closed D11791: Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide Node
  • Closed D11907: Geometry Nodes: Remesh Voxel
  • Closed D11905: Geometry Nodes: Remesh Blocks
  • Closed D11575: Geometry Nodes: Solidify Node
  • Closed D11541: Geometry Nodes: Add a minimum distance attribute to the Attribute Proximity Node
  • Closed D9969: Geometry Nodes: Mirror node
  • Closed D9865: UI: Popover triangle alignment tweaks
  • Closed D8943: Boolean Modifier: operand display operators and render/visibility settings
  • Closed D2397: Use prev/next naming for media keys
  • Closed D10755: Fix T86602: Redo Last Panel in the bottom left disappears on left click (regression)


Tracker

  • Investigated: 17
  • Confirmed: 1
  • Resolved: 3
  • Needs Information: 1
  • Archived: 4
  • Duplicate: 1


Next Week

I'd like to get more socket types working with the simulation nodes, make more progress on my mesh refactors, and implement another mesh attribute editing feature.

November 28 - December 4

This week I worked more on simulations and bug fixing and cleanup. For the simulations I added unique integer identifiers to nodes. That involved some more bug fixing and cleanup, in order to do it properly anyway. I've also been working on refactoring mesh corners (MLoop) in the refactor-mesh-corners-generic branch. I'm at 100 uses of MLoop out of the original 1000 at this point. I also committed some cleanups and performance improvements from that branch already.

I one design/todo task to help share some refactoring work with Jacques:

  • T102858: Lazy Face Corner Normal Calculation


Changes / Features


Tests

  • Geometry Nodes: Add scene and node benchmark files rBL63111
  • Geometry Nodes: Add basic performance tests for a few nodes rBL63109


Fixes

  • Fix T99592: Exact Boolean: Skip empty materials, add index-based option rBbbb389589a05
  • Fix: Various mishandling of node identifiers and vector rBab4926bcffee
  • Fix: Node Editor: Hide compoitor-specific menu items rBce16fa0f4c46
  • Fix: Reversed attribute is_internal RNA property rB99dc90accc2e
  • Fix: Mishandled creases in Cycles adaptive subdivision rB1bacd09abb60
  • Fix T102861: Store named attribute warning with empty geometry rBb7d27ce91408
  • Fix: Node sorting broken after node identifier commit rB587b213fe168
  • Fix T102895: Grammar in apply scale operator rBe78cd275657b
  • Fix: Assert in subdivide curves node after span slicing change rB3cebc58936bc
  • Fix T102772: Propagate edge creases in subdivision surface modifier rB745851e26b9f
  • Fix T102804: Click & Drag on toggles no longer possible rB6fdddae2b05a
  • Fix T102827: 3D View header layout broken after C++ conversion rB01a38c2be928


Cleanup


Review

  • Commented D14365: Mesh: Move UV layers to generic attributes
  • Accepted D16653: BLI: Add atomic disjoint set data structure
  • Accepted D13952: Geometry Nodes: Add Smooth Attribute node
  • Requested changes D16625: BLI: Refactor Matrix C++ API to be fully templated
  • Commented D16631: Geometry Node: Change output socket name to Instances: Consistent tooltips
  • Requested changes D16539: Geometry Nodes: Operator to convert input node to group input socket
  • Accepted D16676: Fix: UI: broken texpaintslot/color attributes/attributes name filtering
  • Commented D16633: [WIP] Add initial version of Node Sections to keep sockets more manageable
  • Commented D16602: Fix T102740: Don't insert the group into itself
  • Commented D13029: Geometry Nodes: Trace Image Node (WIP)
  • Commented D16227: Geometry Nodes: Select Linked Node
  • Accepted D16668: Fix T102882: Crash when there are link cycles and a viewer in a node group.
  • Committed D16351: BKE_attribute_math: DefaultMixer: remove asserts for negative weight


Tracker

  • Investigated: 16
  • Confirmed: 1
  • Resolved: 8
  • Archived: 1
  • Duplicate: 3
  • Known Issue: 2


Next Week

I'd like to finish up some smaller patches and start working on attribute editing in edit mode, and work more on simulations.


November 21 - November 27

This week I started working on simulations, worked on bug fixing, and moved the rest of the interface directory to C++.

I got the simulation input and output nodes to a point where they worked in my very basic tests, but it turned out the branch was actually stable enough for people to do some really cool testing, we saw a lot of that this week. It's been motivating, but the next step of the project is harder.


My first test with the simulation branch was a bit boring! Luckily others made some more interesting things.

Changes / Features

  • Geometry Nodes: Modify existing mesh in split edges node rB3f5dfbf68142
  • BLI: Remove clamping from span slicing rBa5e7657ceeb6
  • BLI: Follow up and fix recent span slicing change rB584089879c57
  • Nodes: Remove "level" building pass on update rBbe1745425cad
  • Nodes: Use topology cache for node exec node list rBb3910374242d
  • Geometry Nodes: Add "Exists" output to Named Attribute input node rB0d3a33e45eb3
  • Geometry Nodes: Parallelize bounds compuation in points to volume rB772696a1a589
  • D16567: Nodes: Avoid updating topology cache when changing properties


Tests

  • Tests: Automated geometry nodes benchmark rB3a41e0f611bd
  • Geometry Nodes benchmark: Add split edges test files rBL63107


Fixes

  • Fix T102522: Geometry nodes boolean doesent respect material index rBb53c4fa8daa1
  • Fix T102700: Viewer node missing check for empty geometry component rB41ae2c6438f7
  • Fix T102420: Outdated mesh edge crease API used in FBX import rBA946b62da3f9
  • Fix T102670: Crash after deleting attribute in edit mode rB461cb550cc07
  • Fix T102752: Missing default radius when joining point clouds rB680a0fb23be0
  • Fix: Assert, invisible instances with mixed instancing types rB0e6d893d07f9
  • Fix: Use after free when removing attribute rB3f294a37f575
  • Fix: Missing caches in curves bounds evaluation rB38cf48f62b1a
  • Fix: Hide "Squeeze Value" node from node search rBed8fee16acea


Cleanup


Review

  • Accepted D16612: Nodes: Move node registration to nodes module.
  • Commented D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Commented D16551: RNA: Use C++ for sequencer properties
  • Commented D16586: Cleanup: Pass vec_base types by value in its class methods
  • Accepted, committed D16396: Geometry Nodes: Rename Transform node to Transform Geometry
  • Accepted, committed D16548: Cleanup: Integer types, references in geometry node image texture node
  • Commented D16614: Geometry Node: Smart Scene Time update relations
  • Accepted, committed D16394: Geometry Node: Collection Info: Change output socket name to Instances
  • Commented D16397: Image to Points geometry node
  • Closed D16582: Docs: Sample UV Surface in Mesh page
  • Closed D9949: Geometry Nodes: Yuksel's sample elimination algorithm


Tracker

  • Investigated: 21
  • Confirmed: 1
  • Resolved: 7
  • Archived: 6
  • Known Issue: 1


Next Week

I'll make some progress on simulation and fix some final bugs for 3.4.

November 14 - November 20

This week I looked into performance improvements with mesh caches, looked into some performance improvements in various edge cases of sculpt mode, and did the usual code review and bug fixing.


Changes / Features

  • Geometry: Cache bounds min and max, share between data-blocks rBe8f4010611e7
  • Mesh: Move loose edge flag to a separate cache rB1ea169d90e39
  • Mesh: Use shared cache for derived triangulation rB511ac66dabf1
  • Mesh: Avoid calculating normals when building BVH tree rB276d7f7c1955
  • Mesh: Don't tag normals and triangluation dirty when translating rB1aa851e9395e
  • Sculpt: Avoid retrieving vertices attribute when flushing positions rB1677ddb7eeae
  • Sculpt: Remove some normal calculation with deformed sculpting rBbf0180d2060b
  • Nodes: Replace implementation of select next/prev type operator rB984edb2c4e6a
  • Nodes: Simplify view panning when selecting node rB97e0cc41ca10
  • Curves: Add descriptions for normal mode RNA enum rB1c0cd5047204
  • UI: Simplify description for geometry node socket rBb3b00be34edf
  • D16530: Mesh: Use shared cache for normals


Tests

  • Geometry Nodes: Add test files for split edges update rBL63102


Fixes

  • Fix T102502: Collada import sets incorrect material indices rBdb94d030bca9
  • Fix T102611: Unable to change file output node sockets from python rBc0f33814c13c
  • Fix: Crash when writing mesh after previous commit rB05f93b58d3f9
  • Fix T102365: Wireframe skips edges after recent cleanup rB145839aa42f7
  • Fix: Crash when deleting node rBab819517fc86
  • Fix: Missing bounding box dirty tag when clearing mesh geometry rB9a09adb7aff8
  • Fix: Build error on MSVC with mismatched struct/class keywords rB192cd76b7ca2
  • Fix: Missing clearing of mesh triangulation data rB801451c45958
  • Fix T102537: Curve subdivide mishandles single point curves rBf7e0317b9625


Cleanup


Review

  • Accepted, committed D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split node
  • Accepted, committed D16503: Fixes versioning problem with cyclic bezier NURBS
  • Accepted, committed D16488: Partial Fix T102428: Invertible Bezier curve trim for endpoints within the same segment
  • Accepted, committed D15042: Geometry Node: Image Info
  • Accepted, committed D16316: Nodes: "Exists" boolean for the Named Attribute Input node
  • Commented D15624: (WIP) Geometry Node: Curve Intersections
  • Accepted, committed D16349: Allow pasting nodes between editor types
  • Requested changes D16529: DRW: Recreate method to calculate edges factor
  • Commented D16545: [Work In Progress] USD Export - New Curves/Hair Support
  • Commented D16009: Geometry node: Add a point selection input to Fillet Curve Node
  • Commented D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Commented D16471: Geometry Node: Edge Rings node
  • Requested changes, accepted D16511: Sculpt Mode: Resolve Shift R shortcut conflicts
  • Accepted D16216: UI: Refactor Node Context Menu
  • Accepted D16555: Fix T102520: Positioning of nodes added via search
  • Accepted D16552: Image Info docs page
  • Accepted D16274: USD CI Tests
  • Accepted D16563: Fix T102620: Display dynamic socket label in uiTemplateNodeView
  • Accepted D16224: Sculpt: Standardize face set undo steps, optimize memory usage
  • Accepted D16463: Fix T99125: Curve mapping widget removes all vector points
  • Commented D16456: Geometry Nodes: Add Select Edge Ring Node
  • Commented D16516: Geometry Nodes: Add Tile Count to Image Info Node
  • Commented D16533: Fix T100904: Shader Nodes: Optimize-out inactive mix branches
  • Commented D16548: Cleanup: Geometry Node: Image Texture
  • Commented D16508: Realtime Compositor: Warn about unsupported setups
  • Commented D16396: Geometry Nodes: Rename Transform node to Transform Geometry
  • Requested changes D16441: Cleanup: Migrate UV pack geometry node to updated API.


Tracker

  • Investigated: 13
  • Confirmed: 2
  • Resolved: 6
  • Duplicate: 2


Next Week

Next week I'll finish up some of the patches I worked on this week, and start experimenting with implementing simulation caching.

November 7 - November 13

This week I worked on bug fixing and a bunch of cleanups. I was involved in two new design tasks this week too:

  • T102359: Struct of Arrays Refactor for Mesh Face Corners
  • T102289: Image Texture sampling by int X and Y pixel indices


Changes / Features

  • Geometry Nodes: Add preferred domain to many field inputs rBd80d7b8f70d8


Fixes

  • Fix T100706: Object instances with different geometry type invisible rBe508de041712
  • Fix T102358: Sample curve node all curves factor mode incorrect rBda41f11a290d
  • Fix T102003: Spline parameter length wrong for NURBS rB66dda2b902f0
  • Fix T101972: Crash converting 1 or 2 point NURBS curve to Bezier rBbfc7653490f6, rBL63092
  • Fix: Failing instance visibility test after recent commit rB864af51d6a88
  • Fix T102404: Behavior change in CustomData API rBff7645c5edd2
  • D16451: Fix T102365: Wireframe skips edges after recent cleanup


Cleanup


Review

  • Requested changes D13952: Geometry Nodes: Add Smooth Attribute node
  • Requested changes D15624: (WIP) Geometry Node: Curve Intersections
  • Requested changes D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Accepted, committed D16161: Selection input for curve trim node and behavior corrections
  • Accepted D16419: BLI: New basic CacheMutex.
  • Commented D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split node
  • Accepted D16406: Fix T102318: crash smoothing vertex weights in editmode
  • Requested changes D16441: Cleanup: Migrate UV pack geometry node to updated API.
  • Accepted, committed D15596: Convert Color Attribute operator
  • Accepted D16440: Fix T102385: Set frame node active after joining nodes
  • Accepted D15042: Geometry Node: Image Info
  • Accepted D16479: BLI: Improve CPPType system.
  • Commented D16429: Texture Nodes: Refactor procedural node type
  • Accepted D16472: BLI_disjoint_set: Use template and const
  • Accepted D16417: Geometry Nodes: Improve alignment of exposed properties in the modifier
  • Accepted D16305: Fix T100988: Flickering when using sculpt brush in drag dot mode
  • Accepted D16325: Geometry Node: Raycast correct field dependencies
  • Accepted D16467: Fix: Curves sculptmode: deduplicate checks for being in mode


Tracker

  • Investigated: 28
  • Confirmed: 4
  • Archived: 4
  • Resolved: 7
  • Duplicate: 3
  • Known Issue: 2


Next Week

More work on various cleanups, then starting some larger new feature projects for 3.5, once we decide what they are.


October 31 - November 6

This week we spent most of the time discussing design for the next phases of the geometry nodes project. The workshop was really productive, so hopefully it's helpful when we actually work on these things. The intial notes are here, though they'll end up on devtalk soon. I also did some performance investigation and did some cleanup on the weekend.


One new design task this week:

  • T102285: Group Index input for the fill curve node


Changes / Features


Fixes


Cleanup


Review

  • Requested changes D16009: Geometry node: Add a point selection input to Fillet Curve Node
  • Commented D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split node
  • Requested changes D16349: Allow pasting nodes between editor types
  • Commented D16244: Node Editor: Controlled node link swapping
  • Requested changes D16331: Fix T102027: Add set origin support for pointcloud objects
  • Commented D16316: Nodes: "Exists" boolean for the Named Attribute Input node
  • Commented D16311: Fix T101979: Edge Angle Node returns wrong sign
  • Commented D16397: Image to Points geometry node
  • Requested changes D16325: Geometry Node: Raycast correct field dependencies
  • Commented D16274: USD CI Tests
  • Committed D15802: Reuse input sockets when creating new node groups
  • Accepted D16386: Fix Curves Smooth modifier appears to be able to act on control points
  • Accepted D16367: Refactor: Rename Object->imat to Object->world_to_object


Tracker

  • Investigated: 9
  • Archived: 3


Next Week

A normal week again. I expect we'll talk about prioritizing the next steps of the project too.


October 17 - October 21

This week I spent time bug fixing, and I looked into updating some of my old patches for refactors. Didn't commit too much work besides bug fixes. Though it was fun to make one sculpt operator 4000x faster and the Blender Binary 173KB smaller. And I made one design task:

  • T101948: Consistent socket name for Collection Info node


Changes / Features

  • Sculpt: Improve performance of face set creation from selection rBda4bd24c3e61
  • Geometry Nodes: Use common utility for copying attribute data rBa803dbe7ed80
  • Sculpt: Remove face sets from default cube rBe8291f4504d3


Fixes

  • Fix T101926: Curves: Remove type-specific attributes when deleting rBd046c8c9d756
  • Fix: USD & Alembic importers might not initialize material indices rB97f4e076c7fc
  • Fix T101883: Issue applying modifier to mesh with shape keys rBbe32882e1c40
  • Fix: Geometry Nodes: Memory leak when deleting instances rBc14b11374647
  • Fix: Sample nearest surface node crash with empty mesh rB91ecf47b2c6b
  • Fix T101872: Curves sculpt deform node crash with changed curve count rB85875455b917
  • Fix T101882: Division by zero in mesh topology nodes rB161aa5e0d039
  • Fix T101871: Realize instances node can skip material indices rB728451f01ad5, rBL63063


Cleanup


Review

  • Requested changes D15624: (WIP) Geometry Node: Curve Intersections
  • Requested changes D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Requested changes D16281: [WIP] Curves editmode: edit points are drawn from evaluated curves
  • Commented D16161: Selection input for curve trim node and behavior corrections
  • Commented D16274: USD CI Tests
  • Accepted D16316: Nodes: "Exists" boolean for the Named Attribute Input node
  • Accepted D16304: Nodes: Restrict Python API on built-in nodes.
  • Commented D16216: UI: Refactor Node Context Menu
  • Accepted D16298: Fix T101922: transforming surface points misses redraw
  • Accepted D16170: Nodes: Link to Output operator


Tracker

  • Reported T101912: Tweaking material property causes assert failure
  • Investigated: 17
  • Duplicate: 2
  • Known Issue: 1
  • Resolved: 6
  • Archived: 2


Next Week

The Blender conference! So, preparing for giving part of a talk about geometry nodes, and lots of other stuff. Hopefully I can find time to commit the add menu patch too, Julian has figured out dynamic menu redrawing in the last week.

October 9 - October 14

This week I worked on some performance improvements: bounding boxes, draw module data extraction, and BMesh to mesh conversion. I also worked a bit more on the node assets menu patch. It seems like rebuilding the menu dynamically won't work without larger changes though, so for now I'll find a simpler solution. I also went over a bunch of older patches.

One new design task this week:


Changes / Features

  • Point Cloud: Support applying modifiers rBb3e6a2888a2d
  • Cycles: Use 0.01m as default point cloud radius rBa6db2c22b11e
  • Nodes: Add "Legacy" to legacy node UI names, skip in search rBa1bc05b200a6
  • Curves: Multithread position vertex buffer extraction rB98aa7276c8e5
  • Mesh: Move runtime data out of DNA rBc34c6d3e25f2
  • Draw: Add missing TBB define to draw module rB6c4210b97bab
  • Build: Add TBB define to BMesh module rB1703a8fb3339
  • D16204: Geometry: Cache bounds min and max, share between data-blocks
  • D16249: BMesh: Multithread BMesh to evaluated Mesh conversion
  • D16230: Nodes: Allow skipping node attachment after dragging


Fixes

  • Fix: Attribute layers can be skipped in Mesh to BMesh conversion rB6f190c669f30
  • Fix T101711: Curve to points node sometimes skips initializing radius rB0d25169dc518
  • Fix T101746: Node copy and paste changes multi-input socket order rB6c4b72b13574
  • Fix T101773: Mirror Vertex Weights operator broken rBa35d5378addf
  • Fix: Missing part of previous BMesh bug fix rB2111fab88a24
  • Fix: Crash updating draw cache of original curves data rBafd30e5e3a77
  • Fix: Curves sculpt adding resets attribute values rB1fbd300adb9a
  • D16224: Sculpt: Standardize face set undo steps, optimize memory usage


Cleanup


Review

  • Requested changes D16208: Nodes: Show nested node-group in the header
  • Requested changes D16009: Geometry node: Add a point selection input to Fillet Curve Node
  • Requested changes D16161: Selection input for curve trim node and behavior corrections
  • Commented D16216: UI: Refactor Node Context Menu
  • Commented D16203: T101705: Don't create a lazy socket for dangling connections
  • Accepted D16228: Nodes: Change Mix node link drag weighting
  • Accepted D16209: Node: Add blend modes to Mix node link drag search
  • Commented D16239: Fix T101746: Create copible links by order in multi socket
  • Requested changes, accepted D16210: Nodes: Duplicate Linked operator + User Preference option for Node Tree
  • Requested changes D15387: BKE: Attribute type name identifier
  • Accepted D16170: Nodes: Link to Output operator
  • Requested changes D16237: Geometry Nodes: Add a selection input to the store named attribute node
  • Requested changes D13734: Geometry Nodes: Add Loose Ends mode to Curve Trim node.
  • Requested changes D13890: Geometry Nodes: Support curve component in attribute proximity and attribute transfer nodes. (WIP)
  • Requested changes D15188: Geometry Nodes: Add Message Node
  • Requested changes D15019: Geometry Nodes: Add Instance Dimensions Input Node
  • Accepted D16153: Fix: Muted curves connect to the Fac socket
  • Requested changes D15522: Geometry Nodes: UV sphere: Change pos calc and parallelize
  • Requested changes D12199: Geometry Nodes: Add Pick mode to Switch node (WIP)
  • Requested changes D12177: Geometry Nodes: Curve Connect Splines Node
  • Requested changes D13298: NURBS surface knot insert operator
  • Requested changes D15715: Nodes: Add subtype selection to socket editing
  • Requested changes D14042: Move solidify code to geometry module
  • Accepted D15956: Hair Curves: make the "surface_uv_map" a searchable dropdown
  • Commented D14935: Add Option To Skip Temporary Layers
  • Commented D16040: UV editor: Improve Ui alignment in overlays panel
  • Closed D15561: Geometry Nodes: Curve to Point Index Node (WIP)
  • Closed D13827: Geometry Nodes: New Face Vertex/Edge node.
  • Closed D11272: Boolean targets can now be any object providing a MESH in GeometrySet
  • Closed D12108: Geometry Nodes: Mesh Inset
  • Closed D11984: Fix unexpected twist and asymmetry in curve using tangent mode
  • Closed D13431: Nodes: Pointer from socket to node for faster lookups
  • Closed D11906: Build lookup table to help parallelize normal accumulation after the deformation process


Tracker

  • Investigated: 16
  • Duplicate: 1
  • Resolved: 5
  • Archived: 2


Next Week

Bug fixing for 3.4, module meeting, finish the node add menu asset integration, more code review.


October 3 - October 9

This week I almost finished adding node assets to the geometry nodes add menu, worked on bug fixes, and spend some extra time working on some performance projects.

I started work on improving bounding box caching (T96968). I'm trying to make the project more manageable by breaking it into smaller steps.

I also made two tasks about mesh naming: the first a general improvement, the second in order to move forward with the "position as a generic attribute" patch.

  • T101689: Improve consistency of mesh face naming
  • T101688: Mesh vertex internal naming (especially position data)


Changes / Features

  • BLI: Unroll vector loops for better performance on GCC rBd2f0cb674572
  • Geometry Nodes: Change order of outputs in topology nodes rB248def7e4806
  • Geometry Nodes: Rename Control Point Neighbors Node rBc3b6e372542f
  • Geometry Nodes: Add soft min for points node radius input rBf9a10e7ed039
  • UI: Avoid unnecessary label in set curve normal node rB9f8b0b83a9c5
  • D16135: Nodes: Add node group assets in add menu
  • D16147: Geometry Nodes: Add curve index and custom value to sample curve node
  • D16204: Geometry: Cache bounds for curves and points, share between data-blocks
  • D16180: Mesh: Move runtime data out of DNA


Fixes

  • Fix T101583: Issues applying modifier to mesh with shape keys rB810251048236
  • Fix T101424: Empty group node added to node add search rBf63179cc9fef
  • Fix: Properly free non-trivial node editor runtime type rB65c8c8367929
  • Fix: Use after free in geometry node group logger rB46c40d7fa1ec
  • Fix: Crash when reininitializing empty generic array rBfbbd7f0d5cc9
  • Fix: Incorrect field status in offset point in curve node rB99cbaced3bfc
  • Fix: File menu broken after recent commit rBa096248d1253
  • Fix: Crash versioning transfer node with animation data rBd981418c8ce0
  • Fix T101610: UV Sphere missing from geometry nodes menu rB424df9ea8712
  • Fix: Bump subversion after forward compatibility breakage rB31e89ee5b9d4
  • Fix: UI: Warning for description with period at end rBbc0066668324
  • D16187: Boolean: Avoid transferring empty material slots


Cleanup


Review

  • Accepted, committed D16054: BKE: Mesh attribute adapt domain improve
  • Accepted, committed D16050: Retains active NURBS curve after point deletion
  • Accepted D16137: Geometry Nodes: Separate Instances from InstancesComponent.
  • Commented D16133: Geometry Nodes: New Relax Face Sets node
  • Commented D16161: Selection input for curve trim node and behavior corrections
  • Accepted D16103: USD Import: Custom Data Update for Colors
  • Accepted D16108: USD Export: Custom Data Update.
  • Accepted D16163: Fix T101628: Correct frame node intersection in add reroute operator
  • Requested changes D15596: Convert Color Attribute operator
  • Accepted D16114: Attribute Node: access geometry node instance attributes.
  • Accepted D16159: I18n: disambiguate New in file menu after previous mistake
  • Accepted D16118: Geometry Nodes: Set Curve Normal
  • Commented D16145: Sculpt: Auto-masking UI improvements
  • Commented D15802: Reuse input sockets when creating new node groups


Tracker

  • Reported T101599: Node group timings aren't displayed for node groups
  • Investigated: 11
  • Duplicate: 1
  • Resolved: 5
  • Archived: 1


Next Week

Hopefully I'll get to the point of committing the node editor add menu asset integration. Other than that, I'd like to make progress on some of the changes with bounding boxes, and I also started some experimental changes to mesh data extraction for drawing that I'd like to finish.

September 26 - October 2

This week I worked more on mesh and curve topology nodes, did a bunch of code review, and did a fair amount of the work for adding node group assets to the geometry nodes add menu.


Changes / Features

  • Geometry Nodes: Curve and mesh topology access nodes rB482d431bb673
  • Nodes: Use plain menus for geometry nodes add menu rB837144b4577f
  • Geometry Nodes: Miscellaneous changes in control point neighbors node rBc15a76152454
  • Mesh: Add C++ implementaiton of topology mappings rB25533dbe219f
  • D16105: Geometry Nodes: Add index input to Edge Vertices node


Fixes


Cleanup


Review

  • Commented D14970: 3D Texturing: Fix seam bleeding.
  • Accepted D15954: Geometry Nodes: Viewport preview.
  • Accepted D13373: Geometry Nodes: Control Point Neighbor Node
  • Commented D16066: Geometry Nodes: Relaxed Catmull-Rom Trim (improvement suggestion)
  • Accepted D16092: Fix T101339: Animation on nodegroups breaks when socket is moved up/down
  • Accepted D16079: Fix T101393: Vertex Crease operator does not create vertex crease layer
  • Requested changes D16108: USD Export: Custom Data Update.
  • Commented D16070: Potential Fix T101378: Missing update with complex node update functions.
  • Accepted D16050: Retains active NURBS curve after point deletion
  • Accepted D11592: Alembic/USD: use geometry sets to import data
  • Accepted D11591: Alembic: import arbitrary attributes
  • Commented D15996: I18n: fix geometry nodes field tooltips
  • Commented D16054: BKE: Mesh attribute adapt domain improve
  • Commented D16103: USD Import: Fixed vertex colors import for Color3f.
  • Accepted, committed D16061: Fix T101361: Check if node is hidden
  • Accepted D16093: Fix missing Outliner updates when adding nodetrees
  • Accepted D15440: Geometry Nodes: New uv map based attribute transfer mode.
  • Accepted D16077: Fix T101341: make nodegroups active input/output non-animatable
  • Abandoned D15313: Fix T99161: Set reroute node active when adding through lasso gesture


Tracker

  • Reported T101443: New geometry nodes viewer overlay makes mesh edit mode overlays invisible
  • Investigated: 11
  • Resolved: 7
  • Archived: 1


Next Week

I'll try to finish getting node group assets in the add menu, and I'll probably work more on the sample curve node, do more code review, and work more on various mesh data refactors.


September 19 - September 25

This week I committed a bunch of changes for 3.4 and did some code review and bug fixing. It was nice to commit some of the mesh refactor patches that have been around for a while. I worked on a few mesh topology access nodes too.

An initial set of topology access nodes for geometry nodes, aimed at 3.4. Since we don't have lists, we have to sort the connected elements in some cases and retrieve a specific index in the sorted values.

I also made these two design tasks:

  • T101313: Add a selection input to the store named attribute node
  • T101312: Splitting the "Object Info" node, access to object original geometry


Changes / Features


Fixes

  • Fix: Invalid CustomData type map created for legacy mesh conversion rB1b46d57f67c7
  • Fix T101249: Node groups don't show in node search rB7e980f2b8cb9
  • Fix: Assert calculating mesh triangulation rB2438f76d6f28
  • Fix: Missing DNA rename for recent mesh refactor rB2d8eadacf9fd, rBL63037
  • Fix: Crash with empty vertex group in mask modifier rBd12f0d3f7032
  • Fix: BMesh to Mesh conversion does not create all necessary layers rB01ed08690a3f
  • Mesh: Avoid uninitialized values when converting BMesh to Mesh rBa82e52102b0f
  • Fix: Use correct node group for add node search rB77dcfac8a38d
  • Fix: Add missing drag link search item for store named attribute node rBe9344d329ffa
  • Fix T101262: Crash in spreadsheet selection filter with empty domain rB20dc8393192f
  • Fix T101208: Missing original index handling in extrude node rB90999a06948a
  • Fix T101188: Fluid modifier doesn't work rB6f15141f2731
  • D16036: Fix T101235: File with no mesh poly or loop layers crashes (option 2)
  • D16035: Fix T101235: File with no mesh poly or loop layers crashes (option 1)


Cleanup


Review

  • Accepted, committed D15375: Geometry Nodes: Distribute Points in Volume
  • Requested changes D15440: Geometry Nodes: New uv map based attribute transfer mode (WIP).
  • Commented D15996: I18n: fix geometry nodes field tooltips
  • Requested changes D11592: Alembic/USD: use geometry sets to import data
  • Requested changes D11591: Alembic: import arbitrary attributes
  • Accepted D16025: Fix T100846: Bump blender file min version for forward compatibility warning
  • Accepted, committed D16013: Nodes: Fix GroupInput and GroupOutput showing in Add Menu
  • Accepted D15976: Geometry Nodes: Lazy threading.
  • Accepted D15802: Reuse input sockets when creating new node groups
  • Accepted D16023: Fix race condition in memory freeing in edit mesh wrapper to mesh
  • Accepted D16021: Curves editmode: show point selection
  • Accepted D16041: Node Editor: Adjust node link curving
  • Commented D16003: Geometry Node: Convert Curve Length Node
  • Commented D15956: Hair Curves: make the "surface_uv_map" a searchable dropdown
  • Commented D16040: UV editor: Improve Ui alignment in overlays panel
  • Commented D15873: Fix T100141: Header Alignment of New Editors


Tracker

  • Investigated: 7
  • Confirmed: 3
  • Resolved: 2
  • Archived: 1


Next Week

I'll look into a bunch of high priority bugs that have come up recently, and work on adding assets to the node add menus.


September 12 - September 18

This week I looked into making sculpt mode hiding more consistent and found a couple other performance improvements there.

The result of splitting the "Transfer Attribute" node into three separate nodes.

I also converted the last curve node to the new data-block. I could finally remove the old curve implementation. 8 months later or so!

source/blender/blenkernel/BKE_geometry_set.hh                   |   40 --
source/blender/blenkernel/BKE_spline.hh                         |  688 -------------------
source/blender/blenkernel/intern/curve_eval.cc                  |  587 -----------------
source/blender/blenkernel/intern/geometry_component_curve.cc    | 1464 -----------------------------------------
source/blender/blenkernel/intern/spline_base.cc                 |  526 ---------------
source/blender/blenkernel/intern/spline_bezier.cc               |  646 ------------------
source/blender/blenkernel/intern/spline_nurbs.cc                |  395 -----------
source/blender/blenkernel/intern/spline_poly.cc                 |   97 ---
12 files changed, 1 insertion(+), 4453 deletions(-)


Changes / Features

  • Curves: Improve sculpting performance by reducing allocations 460fe4a10cccf6
  • Geometry: Avoid unnecessary initialization when resizing data arrays 9088a1f4764f37
  • Sculpt: Make storing mask and face set layers optional b5f7af31d6d474
  • Sculpt: Separate hide status from face sets, use generic attribute ee23f0f3fb58ce
  • Sculpt: Improve performance when initializing face sets 9c35a5a5241b6d
  • Curves: Port Curve to Points node to the new data-block 7536abbe16bd86
  • Curves: Remove CurveEval and old Spline types ecf3435362cf2c
  • Attributes: Validate some builtin attributes for untrusted inputs 8934f00ac5701e
  • Sculpt: Respect hiding when creating face sets from loose parts a231637faeef8f
  • Curves: Don't allow resolutions less than 1 641bbc820f9466
  • Curves/PointCloud: Avoid quadratic cost for retrieving positions eb3a561a7fe0b2
  • Nodes: Avoid unnecessary sorting when selecting or moving nodes 400151833db019
  • Attributes: Add function to retrieve span without adding attribute e37f3388b15635
  • BLI: Add utility functions to generic spans 225b5a3491d959
  • Mesh: Fix quadratic cost for accessing normals with RNA 390320a151e23c
  • D15982: Mesh: Move positions to a generic attribute
  • D15973: Nodes: Use plain menus for geometry nodes add menu (WIP)


Fixes


Cleanup


Review

  • Requested changes D13373: Geometry Nodes: Control Point Neighbor Node
  • Requested changes D15527: Geometry Node: Add Face Corner Info, Face Corner Loop nodes
  • Accepted D15914: Geometry Nodes: New evaluation system.
  • Accepted, committed D15423: Geometry Nodes: New Face Set Boundaries node
  • Accepted, committed D14481: Geometry Nodes: Port the trim curve node to the new data-block
  • Accepted, committed D16002: Fix T101137: Crash with Transform Node
  • Accepted, committed D15786: BLI: Add generic utlity for gathering values with indices
  • Requested changes D15802: Reuse input sockets when creating new node groups
  • Accepted, committed D15997: Curves: Correct and improve Catmull Rom interpolation
  • Requested changes D15793: Fix T100627: Rejection of recursive calculation of frame nodes.
  • Commented D15976: Geometry Nodes: Lazy threading.
  • Commented D11591: Alembic: import arbitrary attributes
  • Commented D11592: Alembic/USD: use geometry sets to import data
  • Commented D15775: Nodes: Add persistent identifier to nodes (WIP).
  • Commented D15956: Hair Curves: make the "surface_uv_map" a searchable dropdown
  • Accepted D15887: UI: Add Mix Node to color section of add node menu
  • Accepted D16006: Fix: Make node position consistent when added through link drag search
  • Accepted D16007: Fix: Prevent clipping of node drop shadow
  • Requested changes D15789: Remove hidden socket links
  • Commented D15715: Nodes: Add subtype selection to socket editing


Tracker

  • Investigated: 17
  • Confirmed: 1
  • Resolved: 3
  • Archived: 1


Next Week

Next week I'll try to finish some of the patches I've created recently, and hopefully commit the node editor assets in search menu patch. I'd also like to make progress on the mesh topology input nodes.


September 5 - September 11

This week I worked more on mesh data structure refactors, cleaning up the node editor, fixing bugs, and code review. I committed one change I've been working on for a couple months, removing custom data pointer usage from Mesh. It was great to finish that. I also committed the bevel weight part of the refactor, and made the same change for edge creases, and started on the MVert -> float3 a bit on the weekend. I also made a bit of progress on the node editor assets project.


Changes / Features

  • Mesh: Remove redundant custom data pointers 05952aa94d33ee
  • Mesh: Avoid saving redundant generic material index attribute 352d55b1c88776
  • Mesh: Move bevel weight out of MVert and MEdge 291c313f80b4cc
  • Subdiv: Avoid quadratic runtime for loose edges 12c235a1c515d4
  • D15909: Geometry Nodes: Split transfer attribute node (WIP)
  • D15937: Sculpt: Make storing mask and face set layers optional
  • D15927: Mesh: Move edge crease out of MEdge


Fixes

  • Fix T100863, T100875: Vertex group reading broken for recent files 0a32f6b76a63dc
  • Fix: link drag search feature only works for geometry nodes groups e5a7470638803f
  • Fix T100974: Remesh operators reset mesh properties 1f4dc51d09af4d
  • Fix: Restore fix for empty attributes after recent commit ced56dbc539652
  • Fix: Spreadsheet row filters unimplemented for boolean type 9f50bd20eb3b5a
  • Fix T100841: Creating a frame node with shortcut doesn't sort nodes ff17131109bb6e
  • Fix T100760: No color attribute initialization when created by brush 2636f6fdeeb725
  • Fix: Integer type in linear probing strategy ff7bba8dad5d09
  • Fix T100903: Unfinished sentence in instance rotation node page rBM9537
  • Geometry Nodes: Avoid relying on rounding in extrude tests rBL63025
  • D15919: Fix: Move mesh legacy conversions to out of reading code


Cleanup

  • Cleanup: Simplify BKE_mesh_nomain_to_mesh 21f2bacad977d3
  • Cleanup: Remove unused DerivedMesh functions ebc385de5f6bc1
  • Cleanup: Use C++ methods to retrieve attribute accessors d5934974219135
  • Cleanup: Remove unused face customdata for merging meshes 17f37b43f1f4aa
  • Cleanup: Remove unnecessary node sorting, rename variables 6830ba12a8591f
  • Cleanup: Avoid using runtime node flag, use topology cache 545fb528d5e10b
  • Cleanup: Remove unused update custom data pointers in attribute API 3484c6d4f11640
  • Cleanup: Tweak naming for recently added mesh accessors be038b844cb53b
  • Cleanup: Remove redundant vertex duplication in extrude node b9727dae829dcd
  • Cleanup: Use more specific function for deselecting all nodes 2d38768f89d12a
  • Cleanup: Move select all nodes code to operator 1d24586a900daa
  • Cleanup: Remove unused function 1fcc673230bf58
  • Cleanup: Fix unused variable warnings 63cfc8f9f6d623
  • Cleanup: Unused variable, compiler warning 258d3858572b58
  • D15939: Cleanup: Port multires baking low-res mesh from DerivedMesh to Mesh (WIP)


Review

  • Commented D15914: Geometry Nodes: New evaluation system
  • Accepted D15878: Fix T100822: Merging objects does not assign materials correctly
  • Accepted D15375: Geometry Nodes: Distribute Points in Volume
  • Accepted D14481: Curves Trim
  • Accepted D15851: Fix T100747: Cannot add "String" attribute to mesh
  • Committed D15920: Fix T100521: Node doesn't belong to frame when added through link drag search
  • Commented D15894: BLI: Add new blender::Pool container
  • Commented D15789: Remove hidden socket links
  • Commented D14759: Custom Colors for Empty Objects
  • Committed D15809: Fix T99141: Crash with edit mode and copy location constraint
  • Accepted D15880: Fix T100796: Wrong tangents on bezier splines with duplicate points and handles.
  • Commented D14006: BLI: New C++ BitVector data structure.


Tracker

  • Investigated: 14
  • Confirmed: 3
  • Resolved: 3
  • Needs Information: 1
  • Known Issue: 1
  • Archived: 1


Next Week

I'll start working on getting assets into the node editor add menu, and do more code review, bug fixing, and mesh refactoring.

August 29 - September 4

This week I worked a bit more on adding assets to the node search menus, worked on the mesh data structure refactors, including some improvements to the way new attributes are initialized (or aren't!). I also did a whole bunch of cleanup to the node editor in various places, and then the usual code review and bug fixing.


Changes / Features

  • Attributes: Improve custom data initialization options 25237d2625078c
  • Mesh: Move material indices to a generic attribute f1c0249f34c417
  • Sculpt: Avoid creating mask and face set when remeshing 71b660571a1fe8
  • Mesh: Remove unnecessary copy in modifier stack 70f1711324e27e
  • Mesh: Avoid redundant custom data layer initialization cccc6d6905be7a
  • Curves: Avoid unnecessarily initializing new positions layer d94a11ed79b3c8
  • Cleanup: Use C++ attribute API bcd671e565cd33
  • Attributes: Avoid unnecessarily initializing new attributes 4c91c24bc7cbe2
  • Geometry Nodes: Use separate field context for each geometry type 82a46ea6f8829f
  • Nodes: Use existing nodes span cache 58c650a44c251a
  • D15874: Nodes: Remove runtime socket location from DNA
  • D15866: Node Editor: Avoid allocations for node socket tooltips
  • D15818: Geometry: Avoid unnecessary initialization when resizing data arrays


Fixes


Cleanup


Review

  • Requested changes D14481: Curves Trim
  • Committed D15739: Fix T98968: Node reroute tool doesn't add to frames
  • Committed D15724: Fix T99576: Guard against empty names when removing attributes
  • Accepted D15036: Nodes UI: Visual tweaks to node links
  • Requested changes D14607: Assets: Implement viewport drag and drop for geometry nodes
  • Commented D15835: Function Node: Hash Value
  • Commented D15837: Geometry Nodes: Add Name output to Object Info node
  • Requested changes D15869: I18n: add a translation context to node sockets
  • Requested changes D15375: Geometry Nodes: Distribute Points in Volume
  • Requested changes D15716: Refresh UV editor window on change in subdiv surface geo node
  • Commented D15817: DRWManager: New implementation.
  • Requested changes D15786: BLI_array_utils::gather()
  • Accepted D15833: Fix T100687: Geometry Attribute Convert crashes in sculpt mode
  • Commented D6414: Shrinkwrap smoothing
  • Abandoned D15853: Fix T100768: Reverse curve does not swap handles for middle point
  • Commented D15843: Cursor Tool: Add location / rotations props and reset button


Tracker

  • Investigated: 13
  • Resolved: 4
  • Known Issue: 1
  • Archived: 3


Next Week

Next week is more of the same basically. Though I hope to make some progress on the T100010.

August 8 - August 28

The past few weeks I've been traveling and haven't been working full-time, so I gathered them all here. The work I've done has mostly been cleanups and refactors, and some code review. The mesh data structure refactors have come a long way though.


Changes / Features

  • Mesh: Move hide flags to generic attributes 2480b55f216c31
  • Metaball: Evaluate metaball objects as mesh components eaa87101cd5a20
  • Curves: Avoid creating types array when unnecessary 67f3259c546579
  • CustomData: Add function to get name of default layer cc9c4e274440e5
  • D15675: Mesh: Move material indices to a generic attribute
  • D15795: Refactor: Move mesh selection flags to generic attributes
  • D14365: Mesh: Move UV layers to generic attributes


Fixes


Cleanup


Review

  • Requested changes D14481: Curves Trim
  • Requested changes D13952: Geometry Nodes: Add Smooth Attribute node
  • Accepted D15491: Nodes: Move NodeTreeRef functionality into node runtime data.
  • Requested changes D15715: Nodes: Add subtype selection to socket editing
  • Commented D15793: Fix T100627: Rejection of recursive calculation of frame nodes.
  • Requested changes D15036: Nodes UI: Visual tweaks to node links
  • Commented D15637: BLI: GArray improve: first, last, index_range, fill
  • Requested changes D15624: (WIP) Geometry Node: Curve Intersections
  • Accepted D14531: Fix T94413: Keep new group input sockets hidden when group input node has hidden sockets
  • Accepted D15731: Fix T100430: Restore bigger node socket snap hitbox
  • Accepted D15705: Fix T100258: Divide spline total length to integer total length of curves
  • Commented D15786: BLI_array_utils::gather()
  • Commented D15722: Cleanup: uvedit_*_select, replace BMEditMesh* with BMesh*
  • Accepted D15724: Fix T99576: Guard against crash due to invalid names in BKE_id_attribute_remove
  • Abandoned D15714: [WIP] Windowmanager: improve duplicate check of notifiers.


Tracker

  • Investigated: 7
  • Confirmed: 2
  • Resolved: 5
  • Archived: 1


Next Week

Determine 3.4 priorities, update patches, code review, and finishing the "assets in search menu" patch.

August 1 - August 7

This week was mostly dedicated to organization: finishing or closing old patches, cleaning up the workboard and old tasks. I also did a fair amount of cleanup commits when working in other areas.

I wrote the manual pages for the new geometry nodes in 3.3: rBM9456, and updated the manual for curves sculpting too.

I also made two design/todo tasks. For the first I think I need to present a more complete proposal to Ton.

  • T100127: New surface data-block
  • T100153: 4.0: Remove mesh sculpt vertex colors and vertex colors API


Changes / Features

  • Geometry Nodes: Speed up reading attribute with different type 43918ec28d1212
  • Nodes: Disable link drag search for deprecated nodes bae2ce069516f7
  • Nodes: Remove node after link drag search cancel 1dc503b33abdb8
  • D15617: Attributes: Clarify and improve custom data initialization


Fixes


Cleanup


Review

  • Requested changes D13952: Geometry Nodes: Add Smooth Attribute node
  • Accepted, Committed D15524: Enhanced extrude tool for NURBS surfaces
  • Requested changes D14481: Curves Trim
  • Requested changes D15596: Convert Color Attribute operator
  • Accepted, Committed D15434: BKE_attribute_math: DefaultMixer empowerment
  • Accepted D13749: Node: Mix node
  • Commented D15589: Mikktspace: Optimized port to C++
  • Commented D15611: Fix T99460: Allow creation new datablocks from evaluated
  • Commented D15476: Adding Playback and Frame Range controls to the Graph Editor, NLA Editor, Dope Sheet, and Video Sequencer


Tracker

  • Reported T100173: Assert when opening sculpting template ("SRDefault.003" in name map but not in Main)
  • Investigated: 15
  • Confirmed: 1
  • Resolved: 3
  • Duplicate: 1
  • Known Issue: 3
  • Archived: 6


Next Week

Probably more of the same. I'll be taking some time off at the end of the week though.

July 25 - July 31

This week I worked on some bug fixing, code review, and did the initial patch for adding node group assets to the node editor. I made a few design tasks as well:

  • T99996: Remove object-linked materials
  • T100010: Splitting the "Attribute Transfer" node
  • T100004: Add an "Exists" boolean to the named attribute input node

One bug that took a while to investigate was a problem with mesh sculpt mode where normals weren't calculated and normalized properly on the boundaries between inconsistently tagged PBVH nodes. The fix ended up being nice in the end though.

The file from T96810 with the artifacts from the improper normals on the boundaries between PBVH nodes where vertices are shared.

Changes / Features

  • Refactor: Extract color attributes as generic attributes 1998269b109f65
  • Geometry Nodes: Rename "Field on Domain" to "Interpolate Domain" ea4b1d027d97cd
  • Curves: Avoid virtual function overhead when finding selected curves ff048f5d27c4b7
  • Curves: Bring back parallel copying of curve and point attributes 55fb2abc814c57
  • Curves: Unify poll functions, add message with no surface 00a3533429133f
  • Nodes: Allow using escape key to exit node resizing f14f81e5ac6561
  • Geometry Nodes: Hide value button for field at index node 5aba7f9774345b
  • Geometry Nodes: Implement link drag search for two nodes b75d0c7e7a402d
  • D15568: Nodes: Add node group assets to search menus
  • D15519: Geometry Nodes: Use separate field contexts for different geometry types
  • D15550: Mesh: Use cached looptris in draw cache extraction
  • D15560: Curves: Avoid creating attribute when unnecessary


Fixes

  • Fix T99761: Curves sculpt mode crash with empty curves 6ca602dd9fa14f
  • Fix: Grammar mistake in info message 1adeae56e61e3c
  • Fix: Fix attribute writer debug warnings in terminal f76a2c0d1895a4
  • Fix: Assert in resample curve node with single point curve 739136caca5cbe
  • D15581: Fix T96810: Invalid sculpt normals after some operations
  • D15548: Curves: Validate data when writing to some builtin attributes


Cleanup


Review

  • Accepted, committed D15414: Add tooltips to the geomerty node add menu
  • Requested changes D15451: Curve sculpting: Collision constraint solver.
  • Commented D15499: BMesh optimization: support directly iterating over mempool chunks
  • Accepted D15274: Geometry Nodes: Shortest Paths nodes
  • Accepted D15536: Curves: Add CurvesGeometry.radii()
  • Commented D15589: Mikktspace: Optimized port to C++
  • Accepted D15395: UI: Scroll sidebar category tabs
  • Accepted D15557: Geometry Nodes: Improve handling of zero-sized attributes.
  • Accepted D15556: Fix: missing evaluated offsets
  • Closed D2576: Allow joining of one area into part of another


Tracker

  • Investigated: 13
  • Resolved: 4
  • Duplicate: 2
  • Archived: 4


Next Week

Next week I'll finish up the changes to get assets into the node editor search menus, and maybe start changes to the menu.

July 18 - July 24

This week I did some refactoring to attributes and custom data access, looked into bugs, started looking into refactoring the add node search.


Changes / Features

  • Geometry Nodes: Improve UV Sphere primive performance 7808ee9bd73d7e
  • Curves: Port fillet node to the new data-block 2551cf908732ba
  • Spreadsheet: Implement selection filter for curves sculpt mode 396b7a6ec8fdcc
  • Attributes: Use new API for C-API functions 31365c6b9e4cd9
  • Curves: Remove use of CurveEval in sculpt brushes 215f805ce6b540
  • Geometry Nodes: Port sample curves node to new data-block 6bcda04d1f1cc3
  • RNA: Don't allocate empty char pointer properties 35b4e3a3501c9c
  • Point Cloud: Remove redundant custom data pointers 410a6efb747f18
  • Curves: Remove redundant custom data pointers e9f82d3dc7eeba
  • Geometry Nodes: Copy parameters when copying a curves data-block 6a1ab4747b7758
  • Curves: Hide snapping menu in curves sculpt mode 87ae10a05047c0
  • D15488: Mesh: Remove redundant custom data pointers (WIP)
  • D15519: Geometry Nodes: Use separate field contexts for different geometry types


Fixes

  • Fix: Removing attributes from UI invalidates caches c94c0d988a5640
  • Fix T99878: Deleting curves or points removes anonymous attributes eb281e4b245f69
  • Fix T99873: Use evaluated vertex groups in armature modifier 80b2fc59d11d58
  • Fix T99835: Incorrect title case for two node names 35843ddcd80e59
  • Fix T99873: Store named attribute node cannot write to vertex groups c40971d79a8878
  • Fix T99884: Crash when converting to old curve type aa1ffc093c4711
  • Fix T99854: Crash converting legacy NURBS curves to new type ada601251889c2


Tests

  • Geometry Nodes: Add test for T99873 rBL62976
  • Geometry Nodes: Add test for sample curves node rBL62977
  • Geometry Nodes: Add tests for fillet curves node rBL62975


Cleanup


Review

  • Requested changes, accepted D15407: Curves: Sculpt on deformed curves.
  • Requested changes, committed D15414: Add tooltips to the geomerty node add menu
  • Requested changes {D13749: Node: Mix node
  • Requested changes D15274: Geometry Nodes: Shortest Paths nodes
  • Requested changes D14481: Curves Trim
  • Accepted D15434: BKE_attribute_math: DefaultMixer empowerment
  • Requested changes D15375: Geometry Nodes: Distribute Points in Volume
  • Commented D15534: Parallelize BMesh lookup table generation (BM_mesh_elem_table_ensure)
  • Commented D15522: Geometry Nodes: UV sphere: Change pos calc and parallelize
  • Commented D15025: Expose Face Sets In Python API
  • Accepted, committed D15431: Fix T99583: Missing update for interpolation option in particle edit mode.
  • Closed D12636: Geometry Nodes: Finish off Distribute Points in Volume
  • Closed D15500: Geometry Nodes: fix Store Named Attribute for vertex groups.


Tracker

  • Investigated: 10
  • Confirmed: 1
  • Resolved: 4
  • Duplicate: 1
  • Known Issue: 1
  • Archived: 1


Next Week

Probably mostly bug fixing, but hopefully making progress on various refactors: the custom data pointer removal, the add menu, and the field contexts.

July 4 - July 10

This week the main focus was moving the new curves object out of experimental. We had to make some compromises to do that in time for 3.3 (realistically there isn't that much we can still fit into that release), but I think the result is still pretty nice. Some other nice things like the refactored attribute API and the curves sculpt mode selection overlay landed this week too. I also joined the sculpt module meeting to talk about operators to store and load masks/selections as attributes.

I looked into adding support for the curves sculpt selection in the spreadsheet filter. It was relatively simple, actually.

Lately I've been focusing on finishing up existing smaller projects. I updated my two current mesh data structure refactors (D14077 and D14685), updated my design about how to deal with volume grids as attributes, sifted through all the char * members in DNA, and did some more cleanup.


Changes / Features

  • Curves: Add sculpt selection overlay e3ef56ef914175
  • Curves: Port subdivide node to the new data-block 9435ee8c65193e
  • UI: Adjust and fix shader node descriptions 2a60b979cca272
  • Curves: Move type conversion to the geometry module 7688f0ace7a6c4
  • BLI: Use simpler sliced generic virtual arrays when possible 6e879c39987cb9
  • Geometry Nodes: Use alphabetical order for UV nodes in add menu 322abb2e4b5ca1
  • Curves: Expose function to calculate vector handles dccdc6213ec6ff
  • D15408: Geometry Nodes: Copy parameters when copying a curves data-block
  • D15393: Spreadsheet: Implement selection filter for curves sculpt mode


Fixes


Cleanup


Review

  • Requested changes, accepted D15280: BKE: New geometry attribute API
  • Commented, accepted D14864: Curves: Deform curves based on surface node.
  • Commented D15378: Functions: More clearly separate fields from multi-functions.
  • Accepted D15405: Curves: use consistent default radius for Cycles, Eevee, Set Curve Radius node
  • Accepted D15402: Hair Curves: The new curves object is now available
  • Commented D15238: Fix T93062: Check for empty name when editing custom property
  • Commented D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute
  • Accepted D15308: Draw: Curve outline drawing in object mode.
  • Accepted, committed D15382: Cleanup: Fix compiler warnings
  • Accepted, committed D15374: Fix: Bke Curve geometry test: Incorrect curve construction
  • Commented D14759: Custom Colors for Empty Objects
  • Commented D9621: Configurable rotation angle increments


Tracker

  • Investigated: 9
  • Confirmed: 2
  • Resolved: 3
  • Duplicate: 1
  • Archived: 1


Next Week

I'm on vacation next week.

June 27 - July 3

This week I worked on code review, bug fixing, and later in the week, worked on removing CurveEval (T95443). I'm almost finished with that project.

I made one design task this week, I'll probably discuss it with the sculpt module next week:

  • T99297: Operators to save curve or point selection as an attribute


Changes / Features

  • Geometry Nodes: Only calculate mesh to volume bounds when necessary 0ea282f7462070
  • Curves: Avoid initializing offsets when first allocated 276e419671b31d
  • Curves: Adjust "for each curve by type" utility 4206b302754797
  • D15334: Curves: Port subdivide node to the new data-block
  • D15342: Curves: Remove use of CurveEval in sculpt brushes
  • D15346: Curves: Port fillet node to the new data-block (WIP)
  • D15326: Curves: Move type conversion to the geometry module


Fixes

  • Fix T99171: Crash in mesh vertices positions RNA update function 151fc2fcd8461a
  • Fix T99309: Duplicate elements deletes instance attributes 95055af668337c
  • Fix: Flush mode to evaluated object when exiting curves sculpt mode 1c61db5346d051
  • Fix: Incorrectly sized curves created in set conversion node 7e55ff15b09407
  • Fix: Build error with unity builds off after recent cleanup 69ee9ca90e36aa
  • Fix: Correct attribute names in resample curves code c15ae2e87b26cf
  • Fix: Use distance unit for points node radius input 2d18dd9309556e


Cleanup


Review

  • Accepted D15134: Curves: Prototypes for various features surrounding the new curves object.
  • Accepted D15348: BLI: Refactor length parameterization.
  • Commented D14481: Curves Trim
  • Accepted D15322: Spreadsheet: display byte colors as scene linear floats
  • Committed D10895: Geometry Nodes: Add Mesh To Volume Node
  • Commented D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.
  • Committed D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Committed D15310: Attributes: Use attribute renaming function for generic mesh layers
  • Requested changes, committed D15337: Fix T99316: Crash when no font is in String to Curves in geometry nodes
  • Commented D15308: Draw: Curve outline drawing in object mode.
  • Accepted D15306: Add "Use Limit Surface" option to subdivision surface geometry node
  • Commented D14163: Weight & Vertex Paint: always respect edit mode hiding on faces.


Tracker

  • Reported T99370: Length parameterization failure case
  • Investigated: 15
  • Confirmed: 2
  • Resolved: 4
  • Duplicate: 1
  • Known Issue: 1


Next Week

Next week we'll be trying to finish up whatever is necessary to turn on the new hair system outside of experimental in master.

June 20 - June 25

This was another shorter week due mostly to traveling and getting a bit sick earlier in the week. Things are basically back to normal though.

I spent a fair amount of the week fixing some bugs that came up in 3.2, mostly around the color attributes changes. I also did some code review and and finished up some older local changes.


Changes / Features


Fixes

  • Fix T98975: Broken vertex paint mode operators 2eba15d3e862fd
  • Fix T98960: Baking to active color attribute uses wrong layer d901f8b75bf831
  • Fix T98956: Crash removing some builtin attributes cebc5531e9445a
  • Fix T98949: Deleting vertex group in geometry nodes affects others 12bde317f4c94d
  • Fix: Incorrect dirty normal tag after mesh translation fca94c5e0d6f8a
  • Fix: Remove broken vertex paint "fast update" check 6dde88c5366be0z
  • Fix: Memory leak writing to builtin attribute with wrong type 785931fc3cdbfb


Cleanup


Review

  • Requested changes D14481: Curves Trim
  • Requested changes D15134: Curves: Prototypes for various features surrounding the new curves object
  • Requested changes D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute
  • Requested changes D11591: Alembic: import arbitrary attributes
  • Accepted D13920: Geometry Nodes: Points Node
  • Accepted D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Requested changes, accepted D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Accepted D15293: BLI: Improve check for common virtual array implementations.
  • Committed D15191: Spreadsheet: Support operations for filtering colors
  • Committed D15103: Fixed selection indication for virtual socket on nodes
  • Accepted D15285: Fix T99130: Spline factor gets messed up if one hair is too short
  • Commented D14733: Color Attribute: Add convert color attribute operation
  • Accepted D15241: Fix T94969: Crash. Volume to mesh with 0 amount of voxels
  • Abandoned D14736: Modification of The node "Extrude Mesh" to include the ability to extrude a Conic shape
  • Abandoned D14846: Geometry Nodes: Include Separate Color optimization from Hans


Tracker

  • Investigated: 14
  • Confirmed: 1
  • Resolved: 5
  • Duplicate: 1
  • Archived: 6


Next Week

I think I'll be able to finish porting almost every node to the new type next week. Maybe some other things will come up though.


June 13 - June 19

This week was a bit light in terms of time, and I didn't accomplish too much. But I did get a fair amount of cleanup done, mostly in attribute extraction in the draw module. I'm happy with that change anyway.

I figured out some of the boilerplate for drawing the sculpt selection for curves, nothing visual yet though.

I also made a design task for a "Field on Domain" building block node: T98943


Changes / Features

  • Attributes: Adjustments to duplicate attribute API function rB58a67e6fb6df
  • Attributes: Add null check in color attribute duplicate operator rB0f06de807249
  • D15205: Refactor: Extract color attributes as generic attributes


Fixes

  • Fix: Don't allow duplicate color attribute operator in edit mode rBc7942c31b2a9


Cleanup

  • Cleanup: Remove unused argument, unnecessary struct keyword rBac4836af6ad9
  • Cleanup: Remove unnecessary switch statement rB8a3ff496a737
  • Cleanup: Always store attribute name in attribute request rB3c2a2a6c9659
  • Cleanup: Simplify syntax in curves draw cache file rB18def163f893
  • Cleanup: Remove redundant doxygen section rB96764c3a1f7d
  • Cleanup: Miscellaneous improvements to draw attribute extraction rBb83f33ffca77
  • Cleanup: Use more specific includes for grease pencil modifiers rB10850f0db93b
  • Cleanup: Variable name style in STL importer rB28f4fc664fbf
  • Cleanup: Snake case for variable name rB25f18e6c4905
  • Cleanup: Fix const correctness of attribute search function rBf5e7221fbdc3
  • D15197: Cleanup: Simplify arguments to sculpt draw functions


Review

  • Accepted D15198: Geometry Nodes: Volume Cube node
  • Requested changes, accepted D13920: Geometry Nodes: Points Node
  • Requested changes, accepted D15151: Geometry Nodes: add 'Intersecting Edges' output for boolean node
  • Requested changes, accepted D15216: Curves: Refactor add brush
  • Requested changes D13952: Geometry Nodes: Add Attribute Smooth
  • Commented D15036: Nodes UI: Visual tweaks to node links
  • Accepted D15191: Spreadsheet: Support operations for filtering colors
  • Commented D15184: Fix T98813: crash with GPU subdiv in edit mode and instance objects
  • Accepted D15217: UI: Custom Properties - Rename properties to remove "Use/Is"


Tracker

  • Investigated: 7
  • Confirmed: 1
  • Resolved: 1
  • Archived: 2


Next Week

Next week I'll be back in the US. Apart from taking some time to get things settled there, I'll be working on basically the same things I suppose, maybe with a bit of "geometry nodes as an operator" sprinkled in. But the main goal is still getting selection drawing figured out.

June 6 - June 10

This was my last week in Amsterdam. I mostly spend time on code review, moving some nodes to the new curves type, and preparing a presentation about the current state of the hair project, which should become a blog post relatively soon. I also did some fixing and cleanup in the attribute C API.


Changes / Features

  • Curves: Port set type node to new data-block rB9e393fc2f125
  • Curves: Port delete geometry node to the new curves type rB8a6cbcf386a1
  • Attributes: Use names instead of layers for some functions rB6eea5f70e3b7
  • CustomData: Add function to free a named layer rB7974d2bff6f3
  • D15169: Mesh: Simplify access of active/default color attribute (WIP)


Fixes


Cleanup


Review

  • Requested changes D15151: Geometry Nodes: add 'New Edges' output for boolean node
  • Commented D15159: OBJ: vertex colors support in importer and exporter
  • Commented D15137: Try to introduce a slider widget for sculpt mesh filter
  • Accepted D15165: Fix T98727: Dynamic Paint does not update normals
  • Requested changes D15019: Geometry Nodes: Add Instance Dimensions Input Node
  • Accepted D15144: Make BKE_id_attribute_rename() generate unique name cross domain
  • Committed D14963: Nodes: Show node description in Node editor
  • Accepted D15131: Geometry Nodes: Instance Rotation Node
  • Accepted D15132: Geometry Nodes: Add Instance Scale Input Node
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D15142: Default "Selected Only" to True When Exporting Objects
  • Abandoned D15008: Adds specific Icons per force to the outliner
  • Accepted D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicates
  • Accepted D15136: Fix for Assert Failure in Duplicate Elements


Tracker

  • Investigated: 8
  • Needs Information: 2
  • Archived: 5


Next Week

Next week I'll be visiting Berlin. I'll also try to make progress on the curves sculpt selection drawing task.

May 30 - June 6

This week was full of lots of code review, cleanup, and bug fixes. We also had a geometry nodes sub-module meeting on Wednesday (meeting notes here), and had design discussions about curves sculpt mode, and some initial discussions about how we should progress with the development of simulations.

I also committed the curves sculpt mode selection patch I've been working on for a bit and worked a bit more on porting nodes to the new curves type.

I was also involved in various design tasks, including one about enum names, more conversation about my mesh SoA refactor, and another about various socket and node names. I also closed the task for the "mesh screw node", and created two tasks:

  • T98533: Writing to 8 bit integer "enum" attributes in geometry nodes
  • T98494: Path animation and the new curves type


Changes / Features

  • Curves: Add soft selection in sculpt mode rBa1830859fa98
  • Curves: Port bounding box node to the new curves type rB8589f60546b3
  • Geometry Nodes: Use fields for delete geometry inversion rBc4e11122c537
  • Mesh: Only check dirty normals flag of current domain rBa5190dce9d08
  • Attributes: Hide internal UI attributes and disallow procedural access rB4669178fc378
  • Curves: Add surface UV map name property rB12722bd35458
  • Curves: Avoid optimization to avoid storing selection for now rBe9eae1b8577b
  • D15129: WM: Speed up processing of duplicate notifiers
  • D15108: Curves: Make preserving length in the comb brush optional
  • D15127: Geometry Nodes: Slightly optimize selection for virtual array input


Fixes

  • Fix: Curves sculpt mode keymaps missing in preferences rB0a2a8d702ad2
  • Curves: Fix overallocation for curve attributes when deleting curves rB93a68f2a9032
  • Fix T98403: Crash applying modifiers on non-mesh objects rB18a17d42911d
  • Fix T98546: Crash with multires bake and zero levels rB96a47af413a8
  • Fix: Build error after merge from release branch rB91c44920dd56
  • Fix T98556: Crash with extrude node in edit mode rB2d9c5f3dcf2e
  • D15118: Fix: Realloc copies too much from previous allocation


Cleanup


Review

  • Requested changes, accepted D14941: Native STL Importer
  • Requested changes D15019: Geometry Nodes: Add Instance Dimensions Input Node
  • Accepted D15103: Fixed selection indication for virtual socket on nodes
  • Accepted D15125: Curves: Use uv coordinates to attach curves to mesh.
  • Commented D14150: Object: Speed up duplication of large selections by doing fewer collection syncs
  • Requested changes D15074: Docs: Add Curve Pen Documentation
  • Accepted D15116: Spreadsheet Editor: Support int 8 attribute
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Committed D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Accepted D15009: Functions: Speedup preparing multi-function parameters.
  • Accepted D14995: Refactor: Add a single place to do everything needed on layer renames
  • Accepted D15084: Fix T98501: Setting node socket default value is very slow.
  • Accepted D15083: Fix T98454: Subdivision doesn't propagate int attributes.
  • Accepted D15071: Fix T98500: Wrong selection in Duplicate Points
  • Committed rB96f20ddc1e84: Geometry Nodes: Don't allow UI attributes as modifier field inputs
  • Accepted D15087: Fix T98520: Sculpt operators can unintentionally clear multires mask
  • Accepted D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicates
  • Abandoned D15008: Adds specific Icons per force to the outliner
  • Commented D15061: Geometry Node: Changing the tab of Input nodes
  • Accepted D15132: Geometry Nodes: Add Instance Scale Input Node
  • Accepted D15136: Fix for Assert Failure in Duplicate Elements
  • Committed D15058: Cleanup: fix source typos (may break API)
  • Committed rBAbcb71eea69a: UI: Update deep grey community theme
  • Committed rBA0c532fe2c88: UI: Update Minimal Dark Community theme
  • Accepted D15033: Nodes: Add separately allocated run-time data for bNodeTree
  • Accepted D15060: Nodes: Add separately allocated runtime data for nodes and sockets
  • Accepted D15089: Fix T98536: geometry nodes wrong selection on duplicate edges
  • Requested changes D14205: Geometry Nodes: Add selection outputs to Curve to Mesh node
  • Accepted D15131: Geometry Nodes: Instance Rotation Node
  • Commented D15037: Refactor: Snap-related. Clarified attribute names and refactored #defines into enums
  • Commented D14823: T97706: Adds operator to duplicate the active color attribute layer


Tracker

  • Investigated: 12
  • Duplicate: 1
  • Confirmed: 1
  • Resolved: 2
  • Archived: 3


Next Week

Next week I'll try to get the selection drawing for curves working as an overlay. Since I don't know how much work that will be I won't plan too much more besides the usual bug fixing and code review.

May 16 - May 22

This week I started by doing a bunch of documentation/manual work from the backlog, mainly for 3.2 features: rBM9284, rBM9285

I also focused on finishing up the selection brush and related tools for curves sculpt mode. It should be mainly ready here: D14934. We also spent time discussing/planning/reviewing render engine support for the curves data-block: T96455.

Other than that, I spent time on bug fixing, plenty of planning, and some miscellaneous work on curves sculpt mode.


Changes / Features

  • Curves: Support pressure in sculpt brushes rBcea37b312763
  • Curves: Use only current brush location for delete brush rBf8239cc9a0ec
  • D14934: Curves: Add float selection in sculpt mode


Bug Fixes

  • Fix T96810: Bitmap race condition in PBVH normal calculation rBb8bd20d7e023
  • Fix T98237: Double free with curve object conversion to mesh rBc88de1594ff3
  • Fix T98266: Crash with empty mesh boolean node rBd4cdae29c107
  • Fix: Node editor "Group" panel displays for embedded node trees rB00af3e9472f3
  • Fix: Copy and paste error in curves RNA rB200e63b0bf72
  • Geometry Nodes: Fix issue with flip_faces test rBL62929
  • D15002: Fix: Sample pressure properly for 3D curves sculpt brushes
  • D14944: Fix T98101: Handle single point curves in delete brush


Cleanup


Review

  • Requested changes D14916: EEVEE/Workbench: support Curves attributes rendering
  • Accepted D14942: Curves: Draw legacy hair particle system as curves object. (WIP)
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D15009: Functions: Speedup preparing multi-function parameters
  • Accepted D14957: Improve check for whether a node tree references an animated Image.
  • Accepted D14998: Fix T98231: missing updates when material output is in group
  • Accepted D14846: Geometry Nodes: Include Separate Color optimization from Hans
  • Accepted D15004: Manual: Rename Max Width in "String to Curves"-node
  • Commented D14993: BLI: Use no_unique_address attribute.


Tracker

  • Investigated: 8
  • Confirmed: 2
  • Resolved: 2
  • Archived: 2


Next Week

Next week is mostly vacation for me, I'm taking the time to explore the Amsterdam area.

May 9 - May 15

This week I did general work in the curves/hair area, especially the sculpt mode. The main thing I finished was some UI changes I did some work adjusting the UI layouts in the brush header and tool settings, but I also mostly finished a patch to add selection and masking (which at this point is mostly missing drawing in the viewport). We also made some progress on that front by solidifying the plan for drawing the old hair particle system with the new curves object.

We also ran into some design difficulties with how to attach curves to the surface mesh, but I think the result of that will end up in a simpler system actually.

The layout doesn't fit in the tool header
We can use specialized popovers for a specific brush type to make the UI more organized.
The start of a tool to paint a selection in sculpt mode, using a design where the selection is painted, rather than the opposite


Changes / Features

  • Curves: Adjust sculpt mode UI layouts rBa4382badb91c
  • Curves: Add disabled message for add empty hair operator rB2a2e47b20c88
  • Refactor: Move resample curves code to the geometry module rBe0e95f789576
  • BLI: Avoid invoking tbb for small parallel_reduce calls rBc2737913dbe7
  • D14934: Curves: Add float selection in sculpt mode
  • D14938: Edit Mesh: Parallelize bounding box calculation in edit mode


Bug Fixes

  • Fix: Spline parameter node broken for Catmull Rom curves rB74a5fb734ab5
  • Fix T98056: Screw modifier crash with normal calculation and merging rBcb5b33a627d9
  • Fix: Crash with empty curves add interpolate points rB6599d2f03b2a
  • Fix: Hide empty panel in curves sculpt mode tool settings rB2f799f893ea7
  • Fix: Missing curves type count cache update in add brush rBb38cd1bcbedc
  • Fix T97853: Crash with edit mode X-ray and subdivision rB686abf185054


Cleanup


Review

  • Accepted D14909: Geometry Nodes: String to Curves rename Max Width
  • Accepted D14823: T97706: Adds operator to duplicate the active color attribute layer
  • Committed D14828: Fix: paint slot material assignment issues
  • Commented D13132: Nodes Editor: Draw lines across the center of the grid
  • Requested changes D14875: Spreadsheet: Support showing enum value strings instead of integers.
  • Requested changes D14733: Color Attribute: Add convert color attribute operation
  • Accepted D14908: Curves: Add operator to convert hair particle system to new curves object.
  • Commented D14935: Add Option To Skip Temporary Layers to BKE_id_attributes_length and CustomData_number_of_layers_typemask
  • Committed D14919: Curves: 'Interpolate Point Count' are missing in 'Brush Settings'.
  • Accepted D14892: Fix T97761: Incorrect mixing of integers.
  • Committed D14891: Fix: compiler warnings due to recent patch


Tracker

  • Investigated: 20
  • Confirmed: 6
  • Resolved: 3
  • Archived: 3
  • Known Issue: 5


Next Week

Hopefully I'll finish up the patch to add selection in curves sculpt mode so that it can be committed and finish up a few of the other pending patches in the curves area. I'd also like to make a bit of tangible progress on the mesh struct of arrays refactor.


May 2 - May 6

This week was filled with planning, work on curves sculpt mode, and some geometry nodes curve development. From looking at the list below, apparently I got to a lot of patch review too.

Changes / Features

  • Curves: Optimize filling all curves with a single type rB16011e34f08e
  • Curves: Use copied original data for invalid NURBS curves rB2d80f814cc24
  • Geometry Nodes: Improve performance of mesh to points node rB6513ce258f73
  • Curves: Add method to find indices for curve type in a selection rB9ee9dd257fae
  • D14870: Curves: Expose resample operator in sculpt mode
  • D14769: Curves: Port set type node to new data-block (WIP)


Bug Fixes

  • Fix T93272: Material index mapping missing for mesh boolean node rBf80e4f0046ed
  • Fix T97831: Curve to mesh node can create invalid wire mesh rB302584bd6eef
  • Fix T97718: Crash using "Text on Curve" rBaf2740abc0b0
  • Fix: Handle default better in curves type count cache rB477066adeee1
  • Cleanup: Avoid asan overflow warning for RNG seed rB0f2cc50fc6b1
  • D14855: Fix T97853: Crash with edit mode X-ray and subdivision


Cleanup


Review

  • Requested changes D14866: UI: Add tool-tips to shader node sockets
  • Accepted D14795: Curves: Support symmetry in curves sculpting brushes.
  • Accepted D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Commented D14877: Curves: Interpolate number of control points for new curves from neighboring curves. (WIP)
  • Committed D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodes.
  • Accepted D14828: Fix: paint slot material assignment issues
  • Accepted D14199: Subdivision node: add input for vertex creases
  • Commented D14858: PoC: Allow shrinkwrap constraint to target curves
  • Accepted D14872: Curves: Convert legacy curves to new curves object
  • Accepted D14724: UI: Add color attribute create to canvas selector
  • Commented D14647: Auto-save improvements.
  • Accepted D14842: Fix T97375: Changing node tree from Python is very slow.
  • Accepted D14857: Curves: Control number of control points in new curves.
  • Requested changes D14733: Add color attributes option to Convert Attributes operation
  • Accepted D14861: Curves: Use old Add > Curve menu for new curves object.
  • Commented D14841: Workaround T81065: Merge UV's when applying modifiers
  • Accepted D14859: Outliner: add icons for nodegroups
  • Accepted D14775: BPY types: add default Geometry Node poll function
  • Accepted D14840: Curves: Add second experimental option for new curves tools.
  • Accepted D14873: UI: Expand the Snap Curves to Surface operator
  • Closed D12936: Geometry Nodes: Add HSVA separate and combine nodes


Tracker

  • Investigated: 9
  • Confirmed: 2
  • Resolved: 3
  • Archived: 1


Next Week

Mostly more of the same. The larger focus is getting the hair/curves system to be usable for the Heist open movie, and also to move it out of experimental.


April 25 - April 29

This week I worked on bug fixing, finishing up the named attribute node changes, and progressed on converting the set spline type node to the new data-block. On Friday and the weekend I prepared to travel to Amsterdam for the next 6/7 weeks.


Changes / Features

  • Curves: Cache the number of curves of each type f431be224fa5
  • Curves: Support applying geometry nodes modifier 96bdd65e740e
  • Mesh: Make vertex normal property read-only 891268aa824f
  • Geometry Nodes: Add default attribute name to field inputs/outputs 0ad73bb9655f
  • Geometry Nodes: Move named attribute nodes out of experimental 3e7ee3f3bcd6
  • Geometry Nodes: Add "Named" to "Remove Attribute" node name 2fd8fa8f8451
  • D14760: Mesh: Add an explicit "positions changed" function
  • D14779: RNA: Don't allocate empty char pointer properties


Bug Fixes

  • Fix T97679: Retrieving shape key normals modifies vertices c9c95201d081
  • Fix T97595: Modifier attribute output broken for vertex groups 96834a7bacff
  • Fix T93546: Fill curve node ignores last point of non-cylic curves 5b1ec08f040a
  • Fix T97151: Curve vertex parenting crash with dependency cycle 8095875dffeb
  • Fix T93899: Incorrect decorator buttons for geometry nodes vector/colors 3d9f0280ff1b 3d9f0280ff1b
  • Fix: Correctly copy and update curve type counts cache 98ad294d1719
  • Fix: Incorrect implicit enum conversion 8e1b16534d40
  • Fix: Incorrect conversion from C bitfield syntax 2d7957727c9b
  • D14788: Fix T93272: Material index mapping missing for mesh boolean node


Tests

  • Geometry Nodes: Add two tests rBL62890
  • Geometry Nodes: Add non-cyclic fill curve test file rBL62895


Cleanup

  • Snap: Use Map and unique_ptr for snap cache 1f270cf99b76
  • Cleanup: Remove redundant vertex normal dirty tags 3b4b2bcb1326
  • Cleanup: Move anonymous attribute removal to geometry component 3b4b2bcb1326
  • Cleanup: Use bool, remove unnecessary struct keywords 9a8669ac81b9
  • Geometry Nodes: Avoid parallel_for_each with a single geometry e9334c5df8b9
  • Cleanup: Remove disabled optimization code b60f3fe6ada2
  • Cleanup: Reword comment, rename variables 8399375098fa
  • Cleanup: Improve const correctness of shape key functions b1b153b88c14
  • Cleanup: Fix compiler warnings 099120e54a8b


Review

  • Requested changes, accepted D14628: Geometry Nodes: Refactor array devirtualization.
  • Requested changes D14733: Add color attributes option to Convert Attributes operation
  • Requested changes D14199: Subdivision node: add input for vertex creases
  • Requested changes D14759: Custom Colors for Empty Objects
  • Accepted D14785: Color Attribute: Add menu QoL improvements
  • Requested changes D14607: Assets: Implement viewport drag and drop for geometry nodes (WIP)
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Accepted D14797: Curves: Support spherical delete brush.
  • Accepted D14748: Curves: Add "Curves" to brush names.
  • Accepted D14750: Geometry Nodes: Improve ui when trying to remove built-in attributes.
  • Accepted D14768: UI: Fix consistency issues with tooltips and icons
  • Accepted D14751: Geometry Nodes: Improve attribute dependency overlay.
  • Accepted, committed D14762: Fix: Socket tooltip display error


Tracker

  • Investigated: 29
  • Confirmed: 3
  • Resolved: 6
  • Needs Information: 2
  • Archived: 7
  • Duplicate: 2


Next Week

Adjust to jetlag and life at the Blender studio, finish up some ongoing changes, probably meetings, etc.


April 18 - April 22

This week I basically did more of the same, and not much new to show for it. I spent some time on the design tasks listed here, particularly the volume one where I made some mockups of how volume grids would interact with fields in geometry nodes.

  • T91668: How to deal with multiple volume grids in a geometry
  • T93905: Unify Image Texture node in geometry and shader nodes
  • T97512: Rename to Remove Named Attribute node
  • T97452: Attribute identification and semantics

Changes / Features

  • Mesh: Avoid unnecessary normal calculation and dirty tags 6a3c3c77b3ebdb
  • Refactor: Move mesh face dot tag out of MVert 8c25889bb67db4
  • Nodes: Remove unnecessary RNA pointer creation ef2b8c1c3afac9
  • D14685: Refactor: Move mesh hide flags to generic data types (WIP)
  • D14730: Curves: Support applying geometry nodes modifier
  • D14732: Curves: Cache the number of curves of each type


Bug Fixes


Cleanup


Review

  • Requested changes D14607: Implement drag n drop for geo nodes
  • Requested changes, committed D14708: Add a few extra BMesh attribute access macros.
  • Accepted D14701: Geometry Nodes: Show used named attributes in modifier.
  • Accepted D14705: Geometry Nodes: Better support for byte colors.
  • Accepted D14745: BLI: Optimize constructing new virtual array.
  • Commented D14179: Revamp Vertex Paint With C++
  • Commented D14709: T89897: Implement hiding data source names spreadsheet
  • Requested changes D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Commented D14469: Fix T95604: Naming inconsistencies in alembic exporter options
  • Committed D14615: Fix T94559: Copying a geometry node group does not copy animation data
  • Accepted D14535: Fix T97002: Preserve multi socket link order
  • Accepted D14700: Curves: Show sculpt tool settings in panels.


Tracker

  • Investigated: 13
  • Confirmed: 3
  • Resolved: 1
  • Archived: 3


Next Week

I'll try to port another node or two to the new curves data-block and look into various other geometry nodes topics.

April 10 - April 17

This week I worked more on porting curve nodes (I spent most of that time on the curve to mesh node). I also did some miscellaneous performance improvements and code review, and spent the last couple days of the week looking into bugs.


Changes / Features

  • Curves: Port curve to mesh node to the new data-block 7484f274dcdc90
  • Edit Mesh: Parallelize bounds calculation with deform modifiers 0ba061c3bc9bf2
  • Curves: Avoid duplicating evaluated positions with all poly curves 5a98e3827559c9
  • Refactor: Evaluate surface objects as mesh components edcbf741df2f6d
  • UI: Improve wording for some USD export descriptions 65194f47b0a387
  • D14621: Geometry Nodes: Port sample curves node to new data-block
  • D14661: Geometry Nodes: Improve performance of mesh to points node


Bug Fixes

  • Fix T96988: Merge by distance node crash with certain input dc5ae10692520e
  • Fix T97363: Duplicate elements node doesn't tag loose edges 089e7011913e35
  • Fix: Apply tilt in curves data-block normals calculation 47d961a4b1c14b
  • Fix: BMesh Python API errors after vertex_normals addition 77db370cb6e032
  • Fix: Incorrect custom data maxlayers in rare files baae87ce86dc
  • Fix: Use after free when removing attribute on instances 05715eaea144b3
  • Fix: Assert evaluating single point Bezier curve 94495049a8ef2b
  • Fix: Use consistent type for nurbs order attribute a8ee279aa903ad
  • Fix: Curves: Add missing builtin attribute definition 078aa677b69216
  • Fix: Assert when curve has no evaluated points 359b6baf325a70
  • Fix: Missing translation in node socket inspection 810f33d434c2


Cleanup


Review

  • Commented D14481: Curves Trim
  • Commented D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.
  • Accepted D14618: Geometry Nodes: Show used named attributes in nodes.
  • Requested changes D13952: Geometry Nodes: New node Attribute Smooth
  • Accepted D14277: Curves: Initial geometry nodes support for curves object.
  • Accepted D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodes
  • Accepted D14643: Fix T95700: Oject Info node does not work with GPU subdivided meshes
  • Requested changes D14802: Geometry Nodes: Show supported types in geo socket tooltip.
  • Accepted D14615: Fix T94559: Copying a geometry node group does not copy animation data
  • Requested changes D10895: T86838 Geometry Nodes: Add Mesh To Volume Node
  • Commented D14335: Curves edit mode: support point selection
  • Accepted D14640: Random value node hints
  • Accepted D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material Properties
  • Commented D11591: Alembic: import arbitrary attributes
  • Accepted D14637: Curves: Fix some issues with operator to convert to particle system.
  • Committed D14622: Adding support for New Curves type in Set Material node
  • Accepted D14616: Curves Sculpting Icons: Snake Hook and Grow updates
  • Accepted D14584: Fix adding certain nodes can cause python errors


Tracker

  • Reported T97310: Tooltips broken after recent BLF commit
  • Investigated: 34
  • Resolved: 7
  • Archived: 7
  • Duplicate: 2
  • Known Issue: 2


Next Week

Exactly the same as last week! I'll port more curve nodes to the new data-block, do more code review, and some continued struct-of-array refactoring for mesh code.

April 4 - April 10

This week I mostly worked more on curves to-dos. I also did a fair amount of code review, and some bug fixing.

Later on I looked into removing some DispList code. Apart from some weirdness with instancing of metaballs that is going pretty well.


Changes / Features

  • Curves: Port tangent and normal calculation to the new data-block ceed37fc5cbb46
  • Curves: Add initial sampling utility, use for snake hook brush eb40b231f9e11d
  • Curves: Port legacy curve viewport drawing to the new data-block b84255f590c07b
  • Curves: Hair to Curves rename in Cycles/EEVEE UI 8b04308953adae
  • Geometry Nodes: Parallelize mesh line node 8f344b530a6ed8
  • Refactor: Evaluate surface objects as mesh components edcbf741df2f6d
  • D14576: Curves: Split curve EEVEE/workbench functions from particle hair
  • D14593: Refactor: Evaluate metaball objects as mesh components
  • D14583: Blend Write: Add option for legacy mesh format


Bug Fixes

  • Fix: Various fixes and cleanups in new curves code 502d16e6678848
  • Fix: Curve parameter node broken for Bezier curves after refactor 74db0f3d5fa18e
  • Fix: Missing virtual destructor on virtual class 6aaae444736199
  • Fix: Assert fails when evaluating single point Bezier curve 1d86d617823b7a
  • Fix T96838: Missing translations in link drag search e7f4aa8f0cb617
  • Fix T96999: RNA mesh transform does not mark normals dirty 9c962b2e2b3d77
  • D14561: Fix T96498: Curve object modifier affects all curves


Cleanup


Review

  • Requested changes D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material Properties
  • Requested changes D14607: Implement drag n drop for geo nodes
  • Requested changes, accepted D12587: Move Sculpt Colors From Experimental
  • Accepted D14515: Curves: Operator to snap curves to surface.
  • Accepted D14585: Functions: Optimize simple generated multi-functions.
  • Accepted D14262: Curves edit mode: show dots for points
  • Accepted D14474: Curves: New Grow/Shrink brush.
  • Accepted D14330: Curves: fix edit mode detection
  • Commented D14608: Updated voxel remesher defaults
  • Committed D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance node
  • Committed D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3D
  • Committed D13558: Fix T86200: Properties editor rearranges columns poorly when very wide
  • Committed D14522: Geometry: fix division by zero in GEO_uv_parametrizer_pack
  • Committed D14577: Set curve resolution in curves_to_curve_eval()
  • Committed D14518: Knife tool: Fix UI alignment in extra settings popover
  • Accepted D14556: Curves: Add menu for new curves object.
  • Accepted D14554: Enable Duplicate Data for curves and point cloud objects.


Tracker

  • Investigated: 9
  • Resolved: 3
  • Archived: 2
  • Duplicate: 1


Next Week

I'll port more curve nodes to the new data-block, do more code review, and maybe some continued struct-of-array refactoring for mesh code.


March 28 - April 3

This week I finished the patches for converting nodes to the new data structure that I started last week.

I spent a lot of time on code review, mainly for the sculpt colors patch and two Alembic import patches, but also for a fair amount of smaller changes.

I also made a design task for improvements to bounding boxes (T96968) that should be relevant to instancing performance improvements (T92963). And another code architecture topic I looked into a bit was curve evaluation on the GPU (T96455). It looks like it's important that GPU evaluation is implemented for performance in the viewport.

Adding attribute search that changes the node's output type and the links properly based on what you click.

Changes / Features

  • Geometry Nodes: Add search to named attribute input node 3ecdfd09386ee7
  • Geometry Nodes: Port set handle nodes to new data-block 00ba51d37bf5b1
  • Curves: Add length cache, length paramerterize utility 72d25fa41d8c57
  • Curves: Port resample node to the new data-block 60a6fbf5b59911
  • Curves: Port parameter node to the new data-block f4f89a76a8f4ca
  • Curves: Port length node to the new data-block 62334c6ee4c967
  • Geometry Nodes: Remove soft min from extrude node scale 4a93c4bf1d3931
  • Curves: Port curves total length node to the new data-block 400ea40dca7a9b
  • Curves: Support set origin and apply transform operators 933d56d9e98d3b
  • Curves: Inline some simple methods f6baba695cc0a7
  • D14483: Use a vector instead of a linked list for object instances (WIP)


Bug Fixes


Cleanup


Review

  • Requested changes D12587: Move Sculpt Colors From Experimental
  • Requested changes, accepted D11592: Alembic/USD: use geometry sets to import data
  • Requested changes, accepted D11591: Alembic: import arbitrary attributes
  • Accepted D14262: Curves edit mode: show dots for points
  • Accepted D14408: Curves: Improve Snake Hook brush.
  • Commented D14507: Assets: Instancing operator option for collection asset dropping
  • Commented D14199: Subdivision node: add input for vertex creases
  • Commented D14474: Curves: New Grow/Shrink brush.
  • Requested changes D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Accepted D14457: UI: Address cosmetic papercuts of the reroute node
  • Accepted D14249: Nodes: Remove hidden links when creating node groups
  • Accepted D13302: UI: Improve visual stability of the dot grid background
  • Commented D14330: Curves: use a flag to detect edit mode
  • Commented D14400: Attributes: show attributes in edit mode n-panel
  • Accepted D14441: Curves: Support converting curves to legacy hair system.
  • Committed D14501: Fix: outliner and button icons alignment
  • Committed D14453: Move uvedit_parametrizer functions to blenlib from uvedit code
  • Accepted D11474: Fix T88785: Avoid value slider clipping through rounded corners
  • Accepted D14458: Geometry Nodes: Don't create new node tree when adding a nodes modifier
  • Accepted D14443: Cleanup: Fix various typos (code and comments)
  • Accepted D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3D
  • Accepted D14469: Fix T95604: Naming inconsistencies in alembic exporter options


Tracker

  • Investigated: 9
  • Resolved: 2
  • Archived: 2


Next Week

I'll have to spend some time solving the current issue with curve object updates (T96498). Beyond that, next week will probably look pretty similar.


March 21 - March 27

This week I spent most of my time working on porting more nodes to the new curve data structure, and on bug fixes. The performance improvements I get when porting nodes are satisfying, and it's really important to make sure we don't have three separate curve types in Blender's code, but I'm getting a bit burnt out working on constant refactoring, so I might take a break from that next.


Changes / Features

  • Geometry Nodes: Multi-thread creation of selection from field d3a1e9cbb92cca
  • Geometry Nodes: Improve performance writing to vertex groups 610ec34c1f7dbd
  • Curves: Add a utility to count curves of each type c0016d85b2a628
  • Curves: Bezier and general interpolate to evaluated utility cea51c1bb500eb
  • Curves: Tweak evaluated offset functions 797a1356caadc8
  • BLI: Add utility for tracking average and min runtime 7ef3a1a6e6e749
  • BLI: Adjust interpolation to support integers, other tweaks 378022c7973db5
  • UI: Use title case for labels f92e3b39f18a3d
  • D14435: Curves: Port resample node to the new data-block
  • D14382: Curves: Add length cache, length paramerterize utility
  • D14463: Curves: Port length node to the new data-block
  • D14464: Geometry Nodes: Port set handle nodes to new data-block
  • D14462: Curves: Port curves total length node to the new data-block


Bug Fixes


Cleanup


Tests

  • Modifiers: Update tests for recent fix to Mesh to BMesh conversion rBL62860
  • Geometry Nodes: Update test file for vertex group writing change rBL62862


Review

  • Requested changes D11591: Alembic: import arbitrary attributes
  • Accepted D14376: Curves: Improve Comb brush
  • Commented D14365: Split off the flag of the MLoopUV struct to 2 bool attrib layers.
  • Accepted D14340: Curves: New Add brush.
  • Committed D14315: Validation message split from nurb_check_valid
  • Commented D9967: Add support for node socket tooltips
  • Accepted D12155: Curves: Curve Pen
  • Requested changes D14469: Fix T95604: Naming inconsistencies in alembic exporter options
  • Committed D14283: Fix unreported: Drag link search doesn't always connect to the socket
  • Commented D14277: Curves: Initial geometry nodes support for curves object (WIP).
  • Commented D14443: Cleanup: Fix various typos (code and comments)
  • Accepted D14409: Fix T96577: Setting curve handles not working correctly with multiple curves.


Tracker

  • Investigated: 10
  • Resolved: 5
  • Archived: 1
  • Known Issue: 1
  • Duplicate: 2


Next Week

Bug fixing and code review (though I guess that goes without saying by now). I'll finish up the node conversions I started last week, but I may start working on updating the drawing code next week.


March 14 - March 20

This week I committed the first curves evaluation and used in a few nodes, and also ported plenty more nodes to the new data structure. Some of the conversions unlocked a lot of performance. I observed a 150x improvement in the duplicate elements node, as a nice example.

I did some miscellaneous code review. Not that much bug fixing though, I'll have to catch up on that next week.

Also, I removed the code for the old legacy geometry nodes from before 3.0. A ~13000 line reduction! That means fewer areas to refactor to the new curves type.


Changes / Features


Bug Fixes


Cleanup


Review

  • Requested changes D14340: Curves: New Add brush
  • Requested changes {Phab|D14389}}: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D14389: Geometry Nodes: Unwrap and Pack Islands Nodes
  • Commented D13522: Eevee: Add support for Nishita sky texture
  • Requested changes, accepted D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance node
  • Requested changes D11591: Alembic: import arbitrary attributes
  • Requested changes D14335: Curves edit mode: support point selection
  • Requested changes D12155: Curves: Curve Pen
  • Requested changes D14330: Curves: add an EditCurves structure
  • Commented D14379: Add Material Index selector to existing Multiple strokes modifier
  • Commented D14262: Curves edit mode: show dots for points
  • Accepted D14299: Fix T96278: Missing update after alpha socket connection.
  • Accepted D14367: BLI: Move CPPType to blenlib.
  • Commented D14344: User Pref: Improve consistency and clarity of names and tooltips


Tracker

  • Investigated: 8
  • Resolved: 1
  • Archived: 3
  • Duplicate: 2


Next Week

Bug fixing, code review, more curves node conversions.


March 7 - March 13

This week I worked more on converting nodes to use the new curve data structure, making progress on curves evaluation, code review.

I also spent some time working on the named attribute nodes, and added some tasks about the changes.

  • T91742: Named Attribute Nodes
    • T96271: Attribute search for named attribute input node
    • T96273: Named attribute modifier panel visualization
    • T96275: Named attribute node group visualization


Changes / Features

  • Curves: Port realize instances node to the new data-block 6c6f591f909a02
  • Curves: Port mesh to curve node to new data-block 901a03725ed581
  • Curve: Store NURBS basis cache as a single vector 25b4e41875bb7c
  • Curve: Remove temporary buffer during NURBS evaluation 29dc6fb1c1db3f
  • UI: Use property split in curves surface panel f19582ebf489c3
  • D14284: Curves: Initial evaluation for curves data-block (WIP)


Bug Fixes

  • Fix: Deleting vertex group attribute can change original mesh 5c86f0369c6fc4
  • Fix T96146: Subdivide curve node uninitialized dangling handles 521d4190a09b11
  • Fix: Assert in set spline type node after recent commit dbd9472ef58174
  • Fix T95843: Invalid mesh runtime data after sculpt undo c77597cd0e15f9
  • Fix T93573: Curve evaluated mesh selected in edit mode 2b3367cdf8694a
  • Fix: Handle handles reset when realizing with other curve types edcb2ad7b3a07f
  • Fix: Use "construct" instead of "assign" for uninitialized memory 115ff08fdb251c
  • Fix: Curves cyclic access function duplicates attribute c238728105272b
  • Fix: Add missing break 24c543d4af599e
  • D14317: Fix T96294: Crash and error with shape key normal calculation


Tests

  • Geometry Nodes: Add test file with many NURBS curves rBL62853
  • Geometry Nodes: Add regression test for recent commit rBL62850
  • Adjust OBJ tests slightly for recent NURBS cleanup rBL62852
  • Curves: Add test for knots generation commit rBL62851


Cleanup


Review

  • Commented D13953: Geometry Nodes: Split Curves
  • Committed D13891: Revision of NURBS knot generation modes
  • Accepted D14315: Validation message split from nurb_check_valid
  • Accepted D14291: Curves: Actually delete curves with Delete brush.
  • Accepted D14241: Curves: Initial comb/shrink/grow brushes.
  • Request changes D14262: Curves edit mode: show dots for points
  • Commented D14323: Geometry Nodes: Add "Is Seam" and "Set Seam" nodes, "seam" attribute
  • Accepted, committed D14279: Geometry Nodes: Tiny optimization to UV Sphere
  • Accepted D14283: Fix unreported: Drag link search doesn't always connect to the socket
  • Commented D14326: Geometry Nodes: Add "Set Sharp" and "Is Sharp" nodes
  • Commented D14277: Curves: Initial geometry nodes support for curves object (WIP).
  • Committed D14172: Implement interpolation for boolean custom data type
  • Commented D12482: Geometry Nodes: Add UV output to Curve to Mesh node
  • Commented D14173: UI: Multi-Window Area Docking
  • Commented D14199: Subdivision node: add input for vertex creases
  • Commented D14281: Geometry Nodes: Add "Capsule" geometry primitive
  • Request changes D11907: Geometry Nodes: Remesh Voxel
  • Accepted D14276: Fix Spline Length node after recent refactor.
  • Commented D14287: Preferences: Convert certain preferences to be row-based.
  • Accepted D14301: Fix T96292: Unable to set active material output using Python.


Tracker

  • Investigated: 9
  • Resolved: 3
  • Confirmed: 2


Next Week

I think I can finish up the position evaluation earlier this week. Then I can either work on the rest of curve evaluation, and porting the rest of the nodes, or help on sculpt/edit modes for curves.


February 28 - March 5

This week I worked more on converting code to use the new curves data-block, and made progress on curves evaluation with the new data-block as well.

I also did a fair amount of bug fixing and investigating for the 3.1 release.

I was visiting family, so I worked a little less than usual.


Changes / Features

  • Geometry Nodes: Begin conversion to new curves 9ec12c26f16ea3
  • Geometry Nodes: Port most curve primitives to new data-block 444d57d4404593
  • Curves: Move curves primitive to object add code f98d74c80de7b1
  • Curves: Port set resolution node to the new data-block ddf956fb5846da
  • BLI: Add functions to IndexRange to mirror Span d793d184137afb
  • D14247: Curves: Port realize instances node to the new data-block


Bug Fixes


Cleanup


Review

  • Requested changes D12155: Curves: Curve Pen
  • Accepted D14223: Search: Take word order into account in string search.
  • Commented D14205: Geometry Nodes: Add selection outputs to Curve to Mesh node
  • Accepted D14207: Curves: Add brush to add curves on surface.
  • Committed D11930: Nodes: Improve readability of selected node links
  • Accepted, committed D14192: UI Papercut: Fix multi input socket outline and highlight
  • Accepted D14225: Fix T95479: Geometry nodes crash with cage display.
  • Commented D12482: Geometry Nodes: Add UV output to Curve to Mesh node
  • Accepted D13891: Revision of NURBS knot generation modes
  • Accepted D14215: BLI: Add scoped-defer utility to add RAII-like behavior to C types.
  • Committed D14129: Dual Mesh: use std::move
  • Accepted D13962: Cleanup: Convert image.c to c++
  • Accepted D14216: Fix T96085: Repeated evaluation of geometry nodes when nothing changed.
  • Commented D14093: Enabled the outliner to use the correct icon for each curve subtype.
  • Closed D14196: Nodes: NodeSocket location exposed to the Python API


Tracker

  • Created: T96138: Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume
  • Investigated: 14
  • Resolved: 3
  • Archived: 1
  • Duplicate: 3


Next Week

More similar work: curves evalaluation, and a bit of code review and bug fixing.


February 21 - February 27

Another very similar week! I worked a bit on the conversion of the curve geometry component, splitting off some initial changes to master.

I did some code review, but not as much as usual, since this curves might end up holding other things up, it's a bit higher priority.

I created and commented on some design tasks:

  • T95965: Mesh Struct of Arrays Refactor
    • T95966: Struct of Arrays Refactor for Mesh Edges
    • T95967: Struct of Arrays Refactor for Mesh Polygons
    • T93602: Convert Mesh vertex data into float3
  • T95940: Remove normalization from original coordinate attribute (CD_ORCO)
  • T95776: How to attach hair to a surface
  • T95845: Use Copy on Write in more places


Changes / Features

  • Curves: Use simpler "set" behavior for postion attribute 4c66bd5da256
  • Curves: Use simpler "set" behavior for handle position attributes f8fe0e831ec1


Bug Fixes

  • Fix T95839: Data race when lazily creating mesh normal layers 59343ee1627f
  • Fix T93873: Wrong limits for color socket exposed to modifier be6bcaa8c13d
  • Fix: Clear mesh runtime cache when adding elements 353fe610ed2d
  • Fix T95987: Data transfer modifier custom normals crash 398538b914a3
  • Fix T95952: Uninitialized value used in Bezier Segment node dbef66c32f72
  • Fix T95919: Apply Pose as Rest Pose Operator crashes 284cef473fed
  • Fix: Build error in debug build a81cc5cbcb6c
  • Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32bd
  • Fix: Errors in previous cleanup commit 06bc20f61a82
  • Fix: Attempt to fix build error on windows 7518adc5bbe2
  • Fix: Crash switching between sculpt and edit mode 7b37d980b97f
  • Fix: Only possible to create one 8 bit integer attribute 1a8db5b71729
  • Fix: Incorrect assert in curves code 4f2f3114b7be


Cleanup


Review

  • Requested changes D12155: Curves: Curve Pen
  • Accepted D13701: Geometry Nodes: Duplicate Elements
  • Accepted D14181: Fix T95985: Crash when assigning a name for an output attribute
  • Accepted D14180: Curves: Initial brush implementations for curves sculpt mode
  • Accepted D14192: UI Papercut: Fix multi input socket outline and highlight
  • Closed D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node.
  • Closed D14155: Fix T93873: Broken UI of color socket input
  • Closed D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node
  • Commented D13906: Geometry Nodes: Mesh Face is Planar Node
  • Commented D14093: Enabled the outliner to use the correct icon for each curve subtype.
  • Closed D14196: Nodes: NodeSocket location exposed to the Python API


Tracker

  • Investigated: 10
  • Resolved: 5
  • Archived: 1


Next Week

More similar work: curves evalaluation, and a bit of code review and bug fixing.


February 14 - February 18

Another very similar week, only a couple things really different from last week. On Friday Jacques and I discovered a threading issue with the new lazy normal calculation that I had to fix: T95839

Part of the work on the curve data structure sent me on a tangent of reworking the newly added C++ templated math operations to add support for basic types like float and int, in addition to the vector types like float3. That's useful for sharing very type-agnostic code.


Changes / Features

  • BLI: Implement templated math functions for basic types 399168f3c13f
  • BLI: Generalize short algorithm for finding bounds 5b73017ddb67
  • Mesh: Avoid creating incorrect original index layers 1850a0b2ab12
  • Cleanup: Use functions for accessing mesh normal dirty state 969c4a45ce09
  • Nodes: Update dependency graph when removing some nodes 734c6a4405f2
  • D14145: Geometry Nodes: Begin conversion to new curves (WIP)


Bug Fixes

  • Fix T95252: Move duplicate node doesn't do edge-panning 33d5ecd5b5e0
  • Fix T95720: Spreadsheet missing volume grid info 1f7f7ca14e50
  • Fix T94495: Split edges node leads to a crash in edit mode 82c3bef7655b
  • Fix: Debug build error with vector type division 48432c1c9282
  • Fix: Build error in debug build cbdd57864049
  • Fix: Memory leak in recently added curves copy function 114cc47b7876
  • D14154:Fix T95839: Data race when lazily creating mesh normal layers


Cleanup


Review

  • Updated D13701: Geometry Nodes: Duplicate Elements
  • Commented D12587: Move Sculpt Colors From Experimental
  • Commented D13891: Revision of NURBS knot generation modes
  • Accepted, committed D14065: Fix T95542: Dual Mesh crashes with some non-manifold vertices
  • Commented D13958: New C++ based wavefront OBJ importer
  • Accepted D11930: Nodes: Improve readability of selected node links
  • Accepted D14107: Curves: Add experimental curves sculpt mode.
  • Commented D14143: Improve Complex Solidify Constraints Solver
  • Commented D13906: Geometry Nodes: Mesh Face is Planar Node
  • Accepted D14136: Curves: add initial edit mode support
  • Accepted, committed D14122 D14122: Fix T87829 and T95331: Issues when nodes too close together
  • Accepted, committed D14124: Fix (unreported): Curve to Mesh: Don't create caps, when the rail curve is cyclic
  • Accepted D14117: Curves: Initial brush system integration for curves sculpt mode.
  • Accepted D14151: UI: Do not include the text stating an enum item is the default
  • Accepted, committed D14142: Fix T93526: Missing tooltip for attribute search button
  • Accepted D14129: Dual Mesh: use std::move


Tests

  • Geometry Nodes: Add regression test files for extrude node rBL62844
  • Geometry Nodes: Add regression test for T95542 rBL62843


Tracker

  • Reported: T95839: Data race when lazily creating mesh normal layers
  • Investigated: 16
  • Resolved: 2
  • Archived: 3
  • Known Issue: 3
  • Needs Information: 1
  • Confirmed: 2
  • Duplicate: 3

Next Week

Similar plan: I'll do a bit more bug fixing for 3.1, work on curves evaluation and the refactor to change nodes to the new data structure, and do code review.


February 7 - February 13

This week I worked more on implementing the curves data-block, lots of miscellaneous code review, some bug fixes, and had some meetings. Two with industry folks about the hair project, and one about the sculpt vertex colors patch. I'm also still making progress on my project of turning mesh vertex data into a regular vector for just positions (T93602).


Changes / Features

  • Curves: Rename "Hair" types, variables, and functions to "Curves" fe1816f67fbc6a
  • Refactor: Move PBVH update tag out of MVert 7682d7de046185
  • D14054: Curves: Further implementation of new curves data structure
  • D14077: Refactor: Move bevel weight out of MVert and MEdge
  • D14053: BLI: Generalize short algorithm for finding bounds


Bug Fixes


Cleanup


Review

  • Commented D12587: Move Sculpt Colors From Experimental
  • Requested changes D13701: Geometry Nodes: Duplicate Elements
  • Accepted D13906: Geometry Nodes: Mesh Face is Planar Node
  • Accepted, committed D13356: UI: Improve node drop shadow
  • Requested changes D13891: Revision of NURBS knot generation modes
  • Accepted D14006: BLI: New C++ BitVector data structure.
  • Accepted D13737: Fix T94415: Nodes: poor selection behavior inside frame nodes
  • Commented D13953: Geometry Nodes: Split Splines
  • Commented D12746: Geometry Nodes: Add Random Spherical Distribution node
  • Commented D13958: New C++ based wavefront OBJ importer
  • Commented D13577: Geometry Nodes: Add Between operations to Compare node
  • Requested changes D14042: Move solidify code to geometry module
  • Accepted D14051: Fix T95612: Missing domain interpolation when setting output attribute.
  • Accepted, committed D14026: Fix T95532: Merge node deletes everything for empty selections
  • Commented D14038: Geometry Component: add access to vertex creases
  • Commented D13749: Node: Mix node
  • Commented D14050: Fix T91840: Don't create invalid links when inserting a node on a link.
  • Commented D11209: [WIP] Reroute node improvements
  • Closed D14046: Bevel modifier limit method based on edge/face smoothness
  • Commented D14062: Fix size_t -> int -> size_t round trip in Cycles
  • Closed D13656: Fix T94334: 3DView View Menu Close Error


Tracker

  • Investigated: 21
  • Resolved: 3
  • Archived: 5
  • Known Issue: 1
  • Confirmed: 5


Next Week

The same as last week's plan: code review and a bit of work for 3.2 targets, continue building the new curves data structure, and bug fixing.


January 31 - February 6

This week I mainly worked on bug fixing, code review, and starting to refactor the new curves data structure.

I also organized a 3.2 targets list for geometry nodes, and created tasks where necessary. There were some design discussions about 2D vector sockets, which I suppose I'll continue next week.

One interesting bug I ran into was T93245, where it turns out that creating over 2047 instances overrides point cloud object's color!


I also abandoned some of my old patches that I don't think are worth pursuing at this point:

  • D9145: Property Search: Use fuzzy string matching
  • D10619: WIP: Curve Profile Presets
  • D12175: Geometry Nodes: Proof of concept lazy conversion to and from BMesh
  • D11773: BLI: Add "is_parallel" function for float3
  • D11596: Geometry Nodes: Curve Deform Node


Changes / Features

  • Curves: Changes to the new curves data-block f59767ff972954
  • Attributes: Infrastructure for generic 8-bit integer data type e7912dfa1959be
  • Geometry Nodes: Remove object transform dependency in some cases c9b578eac8a3c0
  • D14007: Curves: Rename "Hair" types, variables, and functions to "Curves"


Bug Fixes

  • Fix T95334: Crash with no vertex normals in multires bake 2f591adc1a95de
  • Fix T94334: Area close operator crash in 3D view menu b73d3b80fdcb72
  • Fix: Displaying any point cloud in the viewport causes crash 59a8bdd48ce1ea
  • Fix: Missing translations from operator descriptions 7099d5b66129de
  • Fix: Remove incorrect assert in mesh modifier evaluation 0b4cf2984f826d
  • Fix: Incorrect default distance for merge by distance node 0446c9c87564ce
  • Fix build error b127654816a7cb
  • D14018: Mesh: Avoid creating incorrect original index layers
  • D14000: Cleanup: Move PBVH update tag out of MVert


Cleanup


Review

  • Requested changes D13906: Geometry Nodes: Mesh Face is Planar Node
  • Commented D13891: Revision of NURBS knot generation modes
  • Commented D13868: Collections: Functions to calculate bounding box and dimensions
  • Accepted D13975: Fix T95185: Invalid normals after undo in sculpt mode
  • Commented D13919: Geometry Nodes: NURBS Order Input/Set Node
  • Accepted D13983: Fix T95084: Evaluate all output attributes before changing the geometry.
  • Commented D13918: Curve: increase max of order u/v
  • Commented D12035: Geometry Nodes: Add Easing Function Node
  • Requested changes D13952: Geometry Nodes: New node Attribute Smooth
  • Commented D13764: Function Node: Add Integer Math node
  • Commented D13962: Cleanup: Convert image.c to c++
  • Commented D13985: Geometry Nodes: Add a 2D Vector Socket Type (and a couple supporting nodes)
  • Accepted D13936: Nodes: Dynamic node class for Map Range node
  • Commented D14006: BLI: New C++ BitVector data structure (WIP).
  • Accepted D13994: Fix T94435: Remove anonymous attributes when applying modifier.
  • Commented D13954: Fix T95105: Extend range for the frame node's label size
  • Commented D13577: Geometry Nodes: Add Between operations to Compare node
  • Requested changes D14002: Fix :T94815 Drag to add node search prioritizes wrong node type
  • Commented D13773: Fix T94241: Grayed out Front-Face Falloff checkbox in popover
  • Committed A81fc6b060b6cc: UI: Update deep grey community theme
  • Closed D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit mode


Tracker

  • Investigated: 22
  • Resolved: 3
  • Archived: 6
  • Known Issue: 1
  • Confirmed: 3


Next Week

I plan to basically continue the same things, code review for 3.2 targets, continue building the new curves data structure, and bug fixing.


January 24 - January 30

This was a bit of a duller week. I finished up the necessary manual pages for all of the new geometry nodes features in 3.1, and worked on bug fixing. Plus a little bit of code review. There were no daily meetings since Jacques was in Amsterdam.

I committed the merge by distance patches and added tests for them as well as the 29 tests for the extrude node.


Changes / Features

  • Geometry Nodes: Initial merge by distance node ec1b0c2014a8b9
  • Geometry Nodes: Port weld modifier to the merge by distance node 0ec94d5359d732
  • Geometry Nodes: Add or improve various socket descriptions cab1f1d9a2347c
  • Nodes: Improve link-drag search support for boolean math node a18bd403bf3edb
  • Mesh: Add versioning in 3.0 for vertex normal refactor add07576a09018
  • UI: Use property split in new operator popup cb09485ff2bd7a


Bug Fixes

  • Fix T94476: Threading/performance issue with curve to points node 03b57d39731a39
  • Fix T95202: Curve to mesh node inconsistent edge vertex order 89dbad9085df09
  • Fix T95212: Mirror modifier normals crash 834b966b419ca5
  • Fix: Complete transfer attribute input renaming 279a73e429d409
  • D13960: Fix T95334: Crash with no vertex normals in multires bake
  • D13939: Fix T95185: Invalid normals after undo in sculpt mode
  • D13934: Fix T95252: Move duplicate node doesn't do edge-panning


Cleanup


Manual

  • Geometry Nodes: Extrude Mesh Node rBM8896
  • Geometry Nodes: Generalized Compare Node rBM8875
  • Geometry Nodes: 4 Field Inputs for Mesh Topology Data rBM8877
  • Geometry Nodes: Add note about index consistency rBM8876
  • Geometry Nodes: Initial merge by distance node rBM8888
  • Geometry Nodes: Mesh Island Node rBM8880
  • Geometry Nodes: new Scale Elements nodes rBM8891
  • Geometry Nodes: new Geometry to Instance node rBM8878
  • Geometry Nodes: String to Curves Line/Pivot Point rBM8889
  • Geometry Nodes: Accumulate Field Node rBM8882
  • Geometry Nodes: Edge Angle Node rBM8883
  • Geometry Nodes: Domain Size Node rBM8856
  • Geometry Nodes: new Field at Index node rBM8887
  • Geometry Nodes: Edge Neighbors Node rBM8879
  • Geometry Nodes: Support custom instance attributes rBM8855
  • Geometry Nodes: Flip Faces Node rBM8886
  • Attributes: add operator to convert generic attributes to other types rBM8897
  • Attributes: Add links for attribute_add and remove operators rBM8890
  • Geometry Nodes: Link to attribute domains rBM8881
  • Geometry Nodes: Clarify that transfer attribute does not support instances rBM8873
  • Geometry Nodes: Expand the Boolean Math node rBM8874
  • Geometry Nodes: Rename Curve Parameter, Add Index on Spline rBM8872
  • Geometry Nodes: Link to the mesh normals reference rBM8885
  • Geometry Nodes: Selection outputs for Cone and Cylinder rBM8854
  • Add more information to the scene time node rBM8861
  • Geometry Nodes: Propagate attributes in Instances to Points node rBM8858
  • Geometry Nodes: support instance attributes when realizing instances rBM8862
  • Geometry Nodes: propagate attributes in Instance on Points node rBM8860
  • Geometry Nodes: Add Point Count to Spline Length Node rBM8859
  • Geometry Nodes: Relative Handle Position Mode rBM8857
  • Geometry Nodes: Add Outer Points Selection to Star rBM8853
  • Geometry Nodes: Support instances in the delete geometry node rBM8864
  • Geometry Nodes: Add Offset to Handle Position Node rBM8851
  • Geometry Nodes: Improve the description of selection input rBM8847
  • Geometry Nodes: Add Selection Input to Resample Curve Node rBM8848
  • Geometry Nodes: Slightly improve accumulate field example rBM8898
  • Geometry Nodes: Add Length Output to Curve Parameter Node rBM8850
  • Geometry Nodes: Add Selection to Attribute Statistics rBM8863
  • Fix: Correct geometry output name rBM8852
  • Fix: Incorrect socket label rBM8884
  • Fix: Typo rBM8906
  • Fix: Incorrect node screenshot rBM8895


Tests

  • Geometry Nodes: Add regression test files for extrude node rBL62803
  • Tests: Enable new tests for geometry nodes extrude node 5a0c5912a41eac
  • Update tests for curve to mesh edge vertex order change rBL62814
  • Add regression test for point cloud merge by distance node rBL62805


Review

  • Requested changes D13547: Geometry Nodes: Grouped Statistics
  • Requested changes D13936: Nodes: Dynamic nclass for Map Range node
  • Commented D13920: Geometry Nodes: Single Point Node
  • Accepted D13356: UI: Improve node drop shadow
  • Accepted D13747: Assets: Add operator to create preview from active object.
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Accepted D13694: Geometry Nodes: String to Curves Line/Pivot
  • Accepted D13373: Geometry Nodes: Segment Length Node
  • Commented D12587: Move Sculpt Colors From Experimental
  • Committed 52b2769b9c1283: Fix T95169: Assert in weld modifier code
  • Commented D13927: obj: speed up the exporter by multi-threading and avoiding tiny I/O calls
  • Closed D12224: Geometry Nodes: Mesh Extrude
  • Closed D12019: Geometry Nodes: Merge by Distance (Modifier port)


Tracker

  • Investigated: 16
  • Resolved: 4
  • Archived: 4
  • Confirmed: 2
  • Duplicate: 2


Next Week

I'll probably spend a fair amount of time working on bug fixes, and hopefully start refactoring the curves data structure. I also wanted to make a proposal about how to improve caching of object bounding boxes in the code.

January 17 - January 23

This week my main goal was finishing up the extrude node, which I thankfully did finish. I also worked on lots of other relatively random things that came up, including some bug fixes, code review, and cleanup (like usual), and updated the Nodes & Physics module page to fit in with the new organization.

All of the new code should be quite well tested at this point. Many of the tests deal with attribute interpolation, which is probably the more complicated aspect of the node.
I ported the weld modifier to the merge by distance node, hopefully we can get that into 3.1.

Changes / Features


Bug Fixes

  • Fix T94760: Crash building BMesh when opening file 6cd977b903f46e
  • Fix T94967: Sculpt mode crashes with missing normals 68aa35ae74226f
  • Fix: Node link drag search doesn't list shader sockets 5fca280c803b68
  • Fix T95097: Attribute Capture node UI inconsistency 294ab849099828
  • Fix Python API docs build error 9ca1052226d3ee
  • Fix: Incorrect soft max after IDProperty UI data refactor A0574f418a03e2
  • D13887: Fix T93455: Set material node does not use empty slot
  • D13856: Mesh: Add versioning in 3.0 for vertex normal refactor


Cleanup


Tests

  • Geometry Nodes: Add test for mesh flip faces node rBL62794


Review

  • Committed D11664: Accurate NURBS circle and sphere
  • Accepted D13757: Geometry Nodes: New Scale Elements node.
  • Commented D13868: Collections: Functions to calculate bounding box and dimensions
  • Accepted, committed D13809: Flip Mesh Faces Node
  • Accepted D13640: Geometry Nodes: Curve Primitive Arc
  • Accepted D13804: Geometry Nodes: Triangulate Node - Add Selection Input
  • Accepted D13796: Geometry Nodes: Edge Angle Node: Add Signed Angle Output
  • Accepted D13647: USD Preview Surface material export.
  • Accepted D13838: Attributes: Add operator to convert generic attributes to other types
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Requested changes D13373: Geometry Nodes: Segment Length Node
  • Commented D13734: Geometry Nodes: Add Intersection mode to Curve Trim node.
  • Commented D13840: Fix T94038: Curve type objects count double in scene statistics
  • Accepted D13700: Geometry Nodes: New Output for Number of Mesh Islands
  • Commented D13867: Fix Bevel Intersection Continuity
  • Commented D12530: GPencil: Add Scale Thickness to Pivot Point Pie Menu
  • Closed D1863: T39656 Ctrl+Click for Nurbs


Tracker

  • Reported: T94987: Dragged node links are invisible
  • Investigated: 22
  • Resolved: 4
  • Archived: 4
  • Confirmed: 6
  • Duplicate: 5


Next Week

Just bug fixing and work on the manual for all the new 3.1 features. I'll try to get the merge by distance node into 3.1 as well, and on Monday I'll start by moving my extrude node test file to become regression tests.


January 10 - January 14

This week the most exciting thing is that I landed the vertex normal refactor I've been working on. Apart from some issues with an OBJ test that I hadn't tested since it was added, it went well I think, though I do see a couple of bug reports now. I did some performance testing, and it made some observable gains in real files, which was a nice surprise, since I was mostly approaching it from the "understandable code" perspective.

We had some longer meetings talking about patches and other design topics this week. The meeting notes are pretty lengthy here: https://devtalk.blender.org/t/2022-1-10-2022-01-14-geometry-nodes-sub-module-meetings/22405

I spent quite a while reviewing a patch that exposes color painting in sculpt mode (previously "sculpt vertex colors") in master, and had a bit of a discussion about it afterwards.


Changes / Features

  • Refactor: Move normals out of MVert, lazy calculation cfa53e0fbeed71
  • Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661f134
  • Spreadsheet: Add mesh topology information with a debug value 922ae55a16a967
  • Nodes: Support link-drag search with compare node outputs 9fe704800ef128
  • D13839: Mesh RNA API: Expose contiguous normal arrays


Bug Fixes


Cleanup


Tests

  • Geometry Nodes: Add tests for set spline type node rBL62789
  • Tests: Update tests for normal refactor changes rBL62787
  • Tests: Update obj export tests for normals refactor rBL62788


Manual

  • rBM8808: Geometry Nodes: Improve the introduction page


Review

  • Requested changes D12587: Move Sculpt Colors From Experimental
  • Requested changes D13757: Geometry Nodes: New Scale Elements node.
  • Accepted, committed D13546: Set Spline Type node - better conversion from NURBS to Bezier
  • Commented D13550: Nodes: Expand Math and Vector Math functions
  • Requested changes D13796: Geometry Nodes: Edge Angle Node - Add Return Signed Angle Output
  • Requested changes D13764: Function Node: Add Integer Math node
  • Accepted D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean Math
  • Requested changes D13809: Flip Mesh Faces Node
  • Requested changes D13694: Geometry Nodes: String to Curves Line/Pivot
  • Requested changes D13804: Geometry Nodes: Triangulate Node - Add Selection Input
  • Abandoned D12695: Nodes: Expose the node socket location as read-only to the Python API
  • Commented D12035: Geometry Nodes: Add Easing Function Node
  • Commented D13640: Geometry Nodes: Curve Primitive Arc
  • Commented D12792: Geometry Nodes: Add Random value to Object Info node
  • Commented D13303: Start of implementation of new texture margin generation.
  • Commented D13791: BLI: Refactor vector types & functions to use templates
  • Accepted D13800: Fix T94812: Render layer sockets are missing after file load.
  • Accepted D13813: Fix T94837: curve tilt on a 2-point-curve is wrong
  • Accepted D12915: Fix: Build warning with MSVC


Tracker

  • Investigated: 15
  • Resolved: 3
  • Archived: 2
  • Confirmed: 1
  • Duplicate: 2


Next Week

Now that I've had a break and some time to think about it, I'll come back to the "extrude regions" case for the extrude node. Then some code review, and hopefully merge by distance for meshes (looking into porting the weld modifier again).

January 3 - January 9

This week I didn't really finish anything notable. Mostly it was a big time vacuum with lots of work on various branches and discussions about "random" things like GPU acceleration, performance bottlenecks, and patches.

Changes / Features

  • Nodes: Consistent link drag search for math and vector math nodes 458be2ecc4557f
  • BLI: Add slice method to MutableSpan 9793bc30cec959
  • D13721: Attributes: Infrastructure for generic 8-bit integer data type
  • D13735: Spreadsheet: Add mesh topology information hidden with a debug value


Bug Fixes

  • Fix T94581: Incorrect geometry delete behavior with instances c6069c439c8fb2
  • Fix: Link drag search error with random value node from color socket f7c0287278e08d
  • Fix T94594: Incorrect spreadsheet data set region type in old files 1b9e103a308c3b
  • D13768: Fix T94624: Object as font instances don't work


Cleanup


Tests

  • Tests: Replace new geometry nodes test file that fails on macs rBL62782


Manual

  • Geometry Nodes: Node execution time overlay rBM8804
  • Geometry Nodes: Clarify named attribute input from the modifier rBM8805
  • Geometry Nodes: Further clarify named attribute input process rBM8806
  • Fix: Outdated images and text in the node groups page rBM8807


Review

  • Commented D13701: Geometry Nodes: Duplicate Geometry (Cleanup and Testing)
  • Requested changes D13747: Assets: Add operator to create preview from active object
  • Requested changes D13694: Geometry Nodes: String to Curves Line/Pivot
  • Requested changes D13764: Function Node: Add Integer Math node
  • Requested changes D13546: Set Spline Type node - better conversion from NURBS to Bezier
  • Accepted D11664: Accurate NURBS circle and sphere
  • Accepted D13739: UI: Show recently selected items at the top of searches
  • Accepted D13718: Cleanup: Nodes: Convert generic shader node files to c++
  • Commented D13733: Fix crash when removing sockets used by internal link
  • Commented D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit mode
  • Accepted D13736: Fix T94659: Crash when deleting instances.
  • Accepted D13366: Geometry Nodes: Add Mesh Edge Angle Node
  • Commented D9621: Configurable rotation angle increments
  • Commented D13697: Fix T89252: Unable to interact with Stabilize stroke text on click
  • Commented D13693: Geometry Nodes: Rename String To Curves socket


Tracker

  • Reported
    • T94725: Instance on Points attribute transfer issue with pick instance
    • T94672: Workbench shadow shading incorrect results with GPU subdivision
  • Investigated: 16
  • Resolved: 2
  • Archived: 7
  • Confirmed: 2
  • Known Issue: 1
  • Duplicate: 1


Next Week

I want to finish the larger things that I think could actually make it to 3.1: the extrude node, the mesh normals refactor, and the merge by distance node. Beyond that, I'll plan patch review and bug fixing, but I think I'll be realistic and keep it at that.


December 27 - January 3

This was a relatively relaxed week, with not many people around. Besides bug fixing and code review, I mainly worked on a mesh extrude node. I'm almost done with that, and happy with how it's turning out.

The work-in-progress extrude node in individual face mode, showing the transfer of the material index attribute, with the vertex mode on the right.


Changes / Features

  • Point Cloud: Optimize bounding box calculation 6d7dbdbb44f379
  • Geometry Nodes: Support instances in the delete geometry node a94d80716e688a
  • D13709: Geometry Nodes: Extrude Mesh Node


Bug Fixes

  • Fix T94442: Trim curve node can crash with duplicate point 4cbcfd22f5d26e
  • Fix T94454: Python API curve to mesh use after free without depsgraph c0fdf16561034f
  • Fix T94380: Scrolling zooms in spreadsheet data set region 1a721c5dbec928
  • Fix: Issues with attribute comparison in geometry nodes tests 279085e18e6973
  • Fix: Duplicate link search entries for attribute statistic node 955748ab1e35d9
  • Fix T94453: Weld modifier crash after recent cleanup dc0bf9b7027783


Cleanup


Tests

  • Geometry Nodes: Fix issue in mesh to curve test file rBL62776
  • Geometry Nodes: Add tests for the dual mesh node rBL62777
  • Geometry Nodes: Add test for T94453 rBL62778
  • Geometry Nodes: Add test file for accumulate field node rBL62779
  • Geometry Nodes: Update test file to attempt to fix mac buildbot error rBL62781
  • Geometry Nodes: Add mesh island test rBL62780


Review

  • Requested changes, accepted D13366: Geometry Nodes: Add Mesh Edge Angle Node
  • Requested changes, accepted D13680: Nodes: Improve link drag search for Math and Vector Math nodes
  • Accepted D12743: Geometry Nodes: Accumulate Function Node
  • Accepted D13625: Geometry Nodes: Add Integer Mode to Attribute Statistics
  • Requested changes, accepted D13664: Fix T94113: Local view + Geometry Nodes is broken for instances
  • Commented, accepted D13695: Nodes: Add Compare node operations to link drag search menu
  • Accepted D13691: Nodes: Weight drag link search for Math nodes
  • Accepted D13686: Nodes: Cleanup: Remove no op registration functions
  • Accepted D13697: Fix T89252: Unable to interact with Stabilize stroke text on click
  • Accepted D13674: Nodes: Support linking to existing group input from link drag search.
  • Accepted D13673: BLI: Add utility to check if type is any specific type.


Tracker

  • Investigated: 12
  • Resolved: 5
  • Archived: 1
  • Confirmed: 5
  • Duplicate: 2


Next Week

More work on the extrude node, the named attribute nodes, the generalized curve data structures, and possibly some work on the merge by distance node.