Note: This is an archived version of the Blender Developer Wiki (archived 2024). The current developer documentation is available on developer.blender.org/docs.

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

  • Curves: Remove option to disable selection rB00b3f863
  • Geometry Nodes: Avoid mesh copy in some cases rB4ae0da1b
  • Geometry Nodes: Reduce socket logging overhead rB3176b113
  • UI: Use vector instead of linked list for block button groups rB1eb90ee5
  • UI: Use vector instead of linked lists for context store rB7d7e90ca
  • Nodes: Rewrite group creation operator rBfa3ca9af


Fixes

  • Fix: Set position node doesn't tag mesh normals dirty rB5fe297df
  • Fix T103301: Active and default color attributes lost in many operations rBc2a8d8b1
  • Fix T103136: Cannot activate viewer node in group rBf613614f
  • Fix T103307: Crash reading particle hair key.co rB9f575ece
  • Fix T103520: Incorrect selection in paint mode operators rB31f22426
  • Fix T103452: Active & default color attributes reset on modifier apply rB7911954b
  • Fix T103463: Repeat last crashes in node editor rB6b9825e6
  • Fix: Wrong const iterator type for blender::Vector rBd59f6ffd
  • Fix: Assert failure in mirror modifier rB6383ed99
  • Fix: Debug build failure after recent variable name change rB81935098
  • Fix: Crash when grouping frame node but not its children rBd0348bcb


Tests

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


Cleanup

  • Cleanup: Simplify node clipboard, use Vector instead of ListBase rBc8741a3c
  • Cleanup: Move context.c to C++ rBf0ac5e8a
  • Cleanup: Use simpler vector for dragged node links rB5dcce585
  • Cleanup: Improve documentation in Curves DNA header rB87594726
  • Cleanup: Rename flag for node socket link status rB47b9ed24
  • Cleanup: Use indices in curve to mesh, decrease variable scope rBf891ddd9
  • Cleanup: Use inline function for node socket visibility rB887105c4
  • Cleanup: Simplify node duplicate operator rB688086e0
  • Cleanup: Clang tidy rB2652029f
  • Cleanup: Remove unused modifier and BMesh includes rBb492dc35
  • Cleanup: Use const parameters for node poll functions rB8c6fe608
  • Cleanup: Use const arguments for node interface socket functions rB8fe14997
  • Cleanup: Simplify arguments to deselect all nodes function rB8bbf8237
  • Nodes: Add non-const access to cached group output node pointer rB908c5392
  • Nodes: Make more node and socket declaration fields public rBc744d545
  • Nodes: Make socket declaration member variables public rBd7dad425
  • Cleanup: Grammar in comments rBc9b06505


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 rB6514bb05
  • Nodes: Allow skipping node attachment after dragging rBae886596
  • Geometry Nodes: Add error message when applying modifier with no mesh rBb1494bce
  • UI: Use vector instead of linked lists for context store rB7d7e90ca
  • UI: Use vector instead of linked list for block button groups rB1eb90ee5
  • Refactor: Replace old Mesh edge split implementation rB75ad8da1


Fixes

  • Fix T103225: Line Art modifier skips loose edges rBe0fbeb6e
  • Fix T103321: NodeSocket.node is None in Node.copy callback rB50c7eb14
  • Fix T103143: Cycles can lose default color attribute rB9fd834fb
  • Fix T103052: Box trim does not create face sets attribute rB29f34277
  • Fix T103186: Missing anonymous attribute reference rBeae1be54
  • Fix T103136: Cannot activate viewer node in group rBf613614f
  • Fix T103195: Initialize face sets from bevel weights broken rB8ee020d1
  • Fix T103051: Changed behavior when removing a material slot rBbdd34f4f
  • Fix: Wrong const iterator type for blender::Vector rBd59f6ffd
  • Fix: Crash after mesh color attribute name commit rB9e94135f
  • Fix: Uninitialized variable in mesh primitive refactor rBa63a4117


Tests

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


Cleanup

  • Cleanup: Move context.c to C++ rBf0ac5e8a
  • Cleanup: Return early in node link operator, remove useless comments rB4352ac05
  • Cleanup: Slightly refactor cancelling link drag operator rB4254810e
  • Cleanup: Move mesh modifier apply function to editors module rBbd04e80c
  • Cleanup: Various improvements to modifier apply operator rB970f4c2f
  • Cleanup: Remove redundant information from node link drag struct rBc9288ab4
  • Cleanup: Remove cryptic "PET" acronym rB4ee2504e
  • Cleanup: Remove unnecessary node link flag rBa43e4988
  • Cleanup: Remove ifdef'd node transform code rB57090a4b
  • Cleanup: Remove duplicate UV islands header rBd77a6849
  • Cleanup: Remove runtime node flag, various node transform cleanups rBe41abf9e
  • Cleanup: Use LISTBASE_FOREACH macro rB9437abdb
  • Cleanup: Use const variables in node drawing rBae7ef8bc
  • Cleanup: Reduce indentation when setting node active rBa55163c8
  • Cleanup: Use standard node function names and namespace rBc725a53e
  • Cleanup: Add a bit more detail to curves offsets comment rB42def768
  • Cleanup: Remove disabled code rB23b776e5
  • Cleanup: Move two modifier files to C++ rBab1c36ad


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 rB9e9ebcdd
  • Mesh: Avoid storing redundant pointer in corner normal calculation rB9338ab1d
  • Geometry Nodes: Support original index layer in split edges node rB46993958
  • Geometry Nodes: Support original indices in extrude node rBd17db1d1
  • Nodes: Improve search weights for mix node sockets rB01fb8a55
  • Geometry Nodes: Improve switch node search for booleans rB570acac7
  • Geometry Nodes: Improve search weight for named attribute exists socket rB62434a9d
  • OBJ: Avoid retrieving mesh arrays, improve const correctness rBa5f9f7e2


Fixes

  • Fix T102940: "Mask by Color" sculpt tool crash rB995f7570
  • Fix T103015: Line art crash after recent refactor rBc85ca5e3
  • Fix: Assert failure when joining nodes with frame rB18a91ece
  • Fix: Uninitialized variable in mesh primitive refactor rBa63a4117


Cleanup

  • Cleanup: Add accessor for node index rB178eb5ba
  • Cleanup: Organize and comment bNode struct rB2efdbeb5
  • Cleanup: Use Span instead of MutableSpan for normals array rB2bb47e03
  • Cleanup: Comment formatting in normal calculation rB40bc5aa7
  • Cleanup: Remove unnecessary MLoop argument rBf06d7c98
  • Cleanup: Remove unnecessary indentation in cone primitive rBc1d41050
  • Cleanup: Reduce use of redundant local variables in normal calculation rB0485baaf
  • Cleanup: Reduce indentation in mesh operator rB34722fa8
  • Cleanup: Reduce indentation in corner normal calculation rBba523bd0
  • Cleanup: Split sharp edge tagging from face corner normal calculation rB0a561981
  • Cleanup: Avoid double negative in face corner normal calculation rBa92f2931
  • Cleanup: Various improvements to old mesh edge split code rB3d00ac29
  • Cleanup: Const correctness for node find functions rB2ce6ac46
  • Cleanup: Simplify naming in UV sphere primitive rBa459018a
  • Cleanup: Rename adjacent mesh loop accessors rB8c11c044
  • Cleanup: Make mesh primitive topology building more parallel rBff324ab7
  • Cleanup: Use topology cache of group output node rBfc5f7a1e
  • Cleanup: Use array in face corner normals calculation rB9a7fa1b3
  • Cleanup: Return early in mix node link-drag-search rBb20e89f6
  • Cleanup: Tweak variable name in extrude node rBd5bcc1ef
  • Cleanup: Resolve unused variable warnings in modifier rBb000fc30
  • D16732: Cleanup: Replace old Mesh edge split implementation


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

  • Nodes: Use persistent integer to identify to nodes rB90ea1b76
  • Dual Mesh: Avoid transferring position attribute twice rB5758d114
  • Subdiv: Avoid repeatedly accessing mesh arrays rB653e3e26
  • Multires: Avoid retriving mesh arrays for every element rBbaba5d22
  • Mesh: Avoid retrieving edge and loop arrays repeatedly rBbcabd04e
  • Line Art: Use local spans for mesh arrays rB0940719b


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 rBbbb38958
  • Fix: Various mishandling of node identifiers and vector rBab4926bc
  • Fix: Node Editor: Hide compoitor-specific menu items rBce16fa0f
  • Fix: Reversed attribute is_internal RNA property rB99dc90ac
  • Fix: Mishandled creases in Cycles adaptive subdivision rB1bacd09a
  • Fix T102861: Store named attribute warning with empty geometry rBb7d27ce9
  • Fix: Node sorting broken after node identifier commit rB587b213f
  • Fix T102895: Grammar in apply scale operator rBe78cd275
  • Fix: Assert in subdivide curves node after span slicing change rB3cebc589
  • Fix T102772: Propagate edge creases in subdivision surface modifier rB745851e2
  • Fix T102804: Click & Drag on toggles no longer possible rB6fdddae2
  • Fix T102827: 3D View header layout broken after C++ conversion rB01a38c2b


Cleanup

  • Cleanup: Use Span to iterate over nodes instead of ListBase rB5b8e2ebd
  • Cleanup: Use spans and lambdas for mesh normal calculation rB7e7c6bc4
  • Cleanup: Use new node identifiers when copying tree rB4d5e8b7c
  • Cleanup: Remove "done" variable from node runtime rB2155bdd5
  • Cleanup: Remove node tree runtime fields rB7cdcb768
  • Cleanup: Remove useless comments in node.cc rB31b3b07a
  • Cleanup: Remove unused node socket cache handling rBdb172809
  • Cleanup: Move dual mesh topology map to blenkernel rBd96859c5
  • Cleanup: Remove unnecessary list clearing in node tree reading rBb768a2bf
  • Cleanup: Remove unnecessary use of deprecated DNA define rB0b13e7ce
  • Cleanup: Remove unnecessary BMesh unique pointer in OBJ code rB507b7240
  • Cleanup: Remove unused mesh array variables and arguments rB70041ced
  • Cleanup: Correct comment in hash description rBb78b6e3c
  • Cleanup: Grammar in BMesh mesh conversion comment rB1c263414
  • Cleanup: Unused variable, RNA description warning rB7151c2dc
  • Cleanup: Use spans for voxel remesh mesh data rB6e26d064
  • Cleanup: Pass spans by value in cone mesh primitive rB7a9fce28


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 rB3f5dfbf6
  • BLI: Remove clamping from span slicing rBa5e7657c
  • BLI: Follow up and fix recent span slicing change rB58408987
  • Nodes: Remove "level" building pass on update rBbe174542
  • Nodes: Use topology cache for node exec node list rBb3910374
  • Geometry Nodes: Add "Exists" output to Named Attribute input node rB0d3a33e4
  • Geometry Nodes: Parallelize bounds compuation in points to volume rB772696a1
  • D16567: Nodes: Avoid updating topology cache when changing properties


Tests

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


Fixes

  • Fix T102522: Geometry nodes boolean doesent respect material index rBb53c4fa8
  • Fix T102700: Viewer node missing check for empty geometry component rB41ae2c64
  • Fix T102420: Outdated mesh edge crease API used in FBX import rBA946b62d
  • Fix T102670: Crash after deleting attribute in edit mode rB461cb550
  • Fix T102752: Missing default radius when joining point clouds rB680a0fb2
  • Fix: Assert, invisible instances with mixed instancing types rB0e6d893d
  • Fix: Use after free when removing attribute rB3f294a37
  • Fix: Missing caches in curves bounds evaluation rB38cf48f6
  • Fix: Hide "Squeeze Value" node from node search rBed8fee16


Cleanup

  • Cleanup: Use array_utils to copy evaluated field array rB14d0b57b
  • Cleanup: Remove unused math min max utility rB8e535ee9
  • Cleanup: Move poly normal calculation to mesh_normals.cc rBc1eeb38f
  • Cleanup: Use const arguments for custom normals rB8990983b
  • Cleanup: Group deprecated mesh DNA fields, improve comments rB4a0e19e6
  • Cleanup: Decrease variable scope, change names in BMesh layer handling rB41f58fad
  • Cleanup: Remove .blend1 files committed mistakenly rBL63106
  • Cleanup: Remove unnecessary includes rB248ee627
  • Cleanup: Avoid using macros to refer to theme global variables rBed6e1381
  • Cleanup: Move interface_intern.hh to C++ rB4ecc7cf1
  • Cleanup: Move interface eyedroppers directory to C++ rBe47c75aa
  • Cleanup: Move interface_handlers.c to C++ rB136ea84d
  • Cleanup: Move six more interface files to C++ rB162f0dcb
  • Cleanup: Move four interface files to C++ rBafd16c48


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 rBe8f40106
  • Mesh: Move loose edge flag to a separate cache rB1ea169d9
  • Mesh: Use shared cache for derived triangulation rB511ac66d
  • Mesh: Avoid calculating normals when building BVH tree rB276d7f7c
  • Mesh: Don't tag normals and triangluation dirty when translating rB1aa851e9
  • Sculpt: Avoid retrieving vertices attribute when flushing positions rB1677ddb7
  • Sculpt: Remove some normal calculation with deformed sculpting rBbf0180d2
  • Nodes: Replace implementation of select next/prev type operator rB984edb2c
  • Nodes: Simplify view panning when selecting node rB97e0cc41
  • Curves: Add descriptions for normal mode RNA enum rB1c0cd504
  • UI: Simplify description for geometry node socket rBb3b00be3
  • 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 rBdb94d030
  • Fix T102611: Unable to change file output node sockets from python rBc0f33814
  • Fix: Crash when writing mesh after previous commit rB05f93b58
  • Fix T102365: Wireframe skips edges after recent cleanup rB145839aa
  • Fix: Crash when deleting node rBab819517
  • Fix: Missing bounding box dirty tag when clearing mesh geometry rB9a09adb7
  • Fix: Build error on MSVC with mismatched struct/class keywords rB192cd76b
  • Fix: Missing clearing of mesh triangulation data rB801451c4
  • Fix T102537: Curve subdivide mishandles single point curves rBf7e0317b


Cleanup

  • Cleanup: Simplify freeing and clearing mesh runtime data rBe412fe17
  • Cleanup: Use C++ BitVector instead of BLI_bitmap for BVH utils rB1aaf4ce0
  • Cleanup: Reduce indentation and variable scope in BVH utils rBcc12d2a5
  • Cleanup: Allow using C++ features in BMesh header functions rB6192695a
  • Cleanup: Resolve unused variable warning in draw module rBe3ee9139
  • Cleanup: BVH utils: Remove print, use spans instead of pointers rB6873aabf
  • Cleanup: Improve comment about copying mesh shared caches rB12d7994a
  • Cleanup: Move bmesh_iterators.c to C++ rB28dc3b0b
  • Cleanup: Remove unused node operator property rB012895e8
  • Cleanup: Remove unused boolean in node select function rB47c92bf8
  • Cleanup: Split UV sample geometry node into two functions rB21adf2ec
  • Cleanup: Sort includes in mesh header rBc83e33b6
  • Cleanup: Remove unnecessary clearing of mesh runtime data rBc8c14d16
  • Cleanup: Remove unnecessary dirty normal tags rB90fb1cc4
  • Cleanup: Remove DerivedMesh use in UV unwrapping rBb2d9716b
  • Cleanup: Remove unnecessary using keyword and namespace rB8fa69daf
  • Cleanup: Remove unused node clipboard type handling rBc4815498
  • Cleanup: Remove unnecessary mesh normals debugging function rB25b35153
  • Cleanup: Use simpler check for Bezier curves rBf5128f21
  • Cleanup: Slightly improve mesh normals and runtime comments rB6cf4999e
  • Cleanup: Improve curves comments rB845a3573
  • Cleanup: Don't set mesh normals directly for metaballs rB89ca2982


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 rBd80d7b8f


Fixes

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


Cleanup

  • Cleanup: Simplify handling of loop to poly map in normal calculation rB1a851616
  • Cleanup: Clarify and deduplicate attribute convert implementation rB34f46467
  • Cleanup: Miscellaneous cleanups to trim curves node rB73950624
  • Cleanup: Remove unnecessary node type registraction functions rB4ec5a8cb
  • Cleanup: Decrease variable scope in mesh loop normal calculation rB78bfb747
  • Cleanup: Disable mesh normal debug time printing rBdc513a0a
  • Cleanup: Remove unnecessary struct keywords rBd0522d4e
  • Cleanup: Make loop normal calculation function static rB7c519aa5
  • Cleanup: Use spans for loop normal calculation input data rBd9e5a3e6
  • Cleanup: Use simpler timers for mesh normals debug timing rBd63ada60
  • Cleanup: Rename curves sculpt selection variable rB03ccf371
  • Cleanup: Improve curves sculpt code section names rBa304dfdb
  • Cleanup: Use string argument for attribute API function rBca1642cd
  • Cleanup: Move lineart_cpu.c to C++ rB3eb2bc2c
  • Cleanup: Move sculpt.c to C++ rB598bb906
  • Cleanup: Move mesh_remap.c to C++ rB5fe146e5
  • Cleanup: Move cloth.c to C++ rB115cf5ef
  • D16487: Cleanup: Remove DerivedMesh use in UV unwrapping


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

  • Nodes: Add node group assets in add menu rBcf985180
  • Geometry Nodes: Add index and value inputs to sample curve node rB5f7ca546
  • OBJ Export: Remove edge recalculation rB455d195d, rBL63090
  • Nodes: Improve socket node lookup performance rBc39eb09a
  • Geometry Nodes: Use attribute API in deform curves on surface node rB6a3af76f
  • D16388: Mesh: Mapping performance experiment (WIP)


Fixes

  • Fix: Missing initialization curves bounds in set origin operator rBa8865f34
  • Fix: Broken debug build after recent cleanup commit rB6ef67782
  • Fix: Crash adding rest positions to empty mesh rB0fc958a1


Cleanup

  • Cleanup: Nodes: Use const arguments, avoid recursive iteration rB3852094b
  • Cleanup: Mesh: Remove redundant edge render flag rB10131a6f
  • Cleanup: Use Vector in group input/output node update functions rBc6725dc5
  • Cleanup: Remove unused node function rB8b29d6cd
  • Cleanup: Remove unnecessary node type registraction functions rB4ec5a8cb
  • Cleanup: OBJ: Simplify access to loose edges rB23dafa4a
  • Cleanup: Move legacy mesh conversions to proper file rB4a313b82
  • Cleanup: Move function to legacy mesh conversion file rB5060f26f
  • Cleanup: Remove redundant assignment of loose edge flag rBe673f3ba
  • Cleanup: Use mesh API functions rB4b200b49


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 rBda4bd24c
  • Geometry Nodes: Use common utility for copying attribute data rBa803dbe7
  • Sculpt: Remove face sets from default cube rBe8291f45


Fixes

  • Fix T101926: Curves: Remove type-specific attributes when deleting rBd046c8c9
  • Fix: USD & Alembic importers might not initialize material indices rB97f4e076
  • Fix T101883: Issue applying modifier to mesh with shape keys rBbe32882e
  • Fix: Geometry Nodes: Memory leak when deleting instances rBc14b1137
  • Fix: Sample nearest surface node crash with empty mesh rB91ecf47b
  • Fix T101872: Curves sculpt deform node crash with changed curve count rB85875455
  • Fix T101882: Division by zero in mesh topology nodes rB161aa5e0
  • Fix T101871: Realize instances node can skip material indices rB728451f0, rBL63063


Cleanup

  • Cleanup: Remove unused grease pencil / RNA includes rB1a11353d
  • Cleanup: Move versioning_defaults.c to C++ rB23ea72f0


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 rBb3e6a288
  • Cycles: Use 0.01m as default point cloud radius rBa6db2c22
  • Nodes: Add "Legacy" to legacy node UI names, skip in search rBa1bc05b2
  • Curves: Multithread position vertex buffer extraction rB98aa7276
  • Mesh: Move runtime data out of DNA rBc34c6d3e
  • Draw: Add missing TBB define to draw module rB6c4210b9
  • Build: Add TBB define to BMesh module rB1703a8fb
  • 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 rB6f190c66
  • Fix T101711: Curve to points node sometimes skips initializing radius rB0d25169d
  • Fix T101746: Node copy and paste changes multi-input socket order rB6c4b72b1
  • Fix T101773: Mirror Vertex Weights operator broken rBa35d5378
  • Fix: Missing part of previous BMesh bug fix rB2111fab8
  • Fix: Crash updating draw cache of original curves data rBafd30e5e
  • Fix: Curves sculpt adding resets attribute values rB1fbd300a
  • D16224: Sculpt: Standardize face set undo steps, optimize memory usage


Cleanup

  • Cleanup: Simplify node insert after drag code rB0f608724
  • Cleanup: Remove macro usage in vertex group mirror operator rB7e478650
  • Cleanup: Reduce variable scope in vertex group mirror operator rBe38377d6
  • Cleanup: Use std::mutex for mesh runtime mutexes rBc67e5628
  • Cleanup: Use const vertex pointer argument rBaa5ce2fc
  • Cleanup: Convert two nodes files to C++ rB89bd261d
  • Cleanup: Move draw_cache_impl_volume.c to C++ rB7636fc06
  • Cleanup: Small changes to curves draw cache rBe8eed82b
  • Cleanup: Decrease variable scope in UI region popup code rB605f8725
  • Cleanup: Use correct blenkernel namespace for mesh functions rBa481eb55
  • Cleanup: Remove link drag search operations for socket templates rBf5e6d4e4
  • Cleanup: Reduce indentation in node attach operator rB37d83f00
  • Cleanup: Comment formatting in BMesh operator rBa80b1adc
  • Cleanup: Remove unused spreadsheet geometry cache item rB37461b8b


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 rBd2f0cb67
  • Geometry Nodes: Change order of outputs in topology nodes rB248def7e
  • Geometry Nodes: Rename Control Point Neighbors Node rBc3b6e372
  • Geometry Nodes: Add soft min for points node radius input rBf9a10e7e
  • UI: Avoid unnecessary label in set curve normal node rB9f8b0b83
  • 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 rB81025104
  • Fix T101424: Empty group node added to node add search rBf63179cc
  • Fix: Properly free non-trivial node editor runtime type rB65c8c836
  • Fix: Use after free in geometry node group logger rB46c40d7f
  • Fix: Crash when reininitializing empty generic array rBfbbd7f0d
  • Fix: Incorrect field status in offset point in curve node rB99cbaced
  • Fix: File menu broken after recent commit rBa096248d
  • Fix: Crash versioning transfer node with animation data rBd981418c
  • Fix T101610: UV Sphere missing from geometry nodes menu rB424df9ea
  • Fix: Bump subversion after forward compatibility breakage rB31e89ee5
  • Fix: UI: Warning for description with period at end rBbc006666
  • D16187: Boolean: Avoid transferring empty material slots


Cleanup

  • Cleanup: replace UNUSED macro with commented args in C++ code rB97746129
  • Cleanup: Fix outdated mesh data comments rB577a79b4
  • Cleanup: Avoid inconsistent naming in mesh topology API rBb04b87b3
  • Cleanup: Use helper function for previous mesh loop rBa716e696
  • Cleanup: Clang tidy rB548a2cbe
  • Cleanup: Remove unnecessary MOD_nodes.h includes rB14de5771
  • Cleanup: Remove unused includes rB6be8c6b3
  • Cleanup: Fix sign conversion warning in BMesh log rBd42f8823
  • Cleanup: Move eight modifier files to C++ rB406a98af
  • Cleanup: Move subdiv_ccg.c to C++ rB79b1e267
  • Cleanup: Move editmesh_undo.c to C++ rB349091ce
  • Cleanup: Move shrinkwrap.c to C++ rBd4f77c22
  • Cleanup: Move subdiv_modifier.c to C++ rBeae3fa87
  • Cleanup: Move multires.c to C++ rB0f224cee


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 rB482d431b
  • Nodes: Use plain menus for geometry nodes add menu rB837144b4
  • Geometry Nodes: Miscellaneous changes in control point neighbors node rBc15a7615
  • Mesh: Add C++ implementaiton of topology mappings rB25533dbe
  • D16105: Geometry Nodes: Add index input to Edge Vertices node


Fixes

  • Fix: Incorrect handling for crease layers rB57ea827b
  • Fix: Viewer node overlay alpha broken on NVidia GPUs rBc007e84e
  • Scew Modifier: Remove eager normal calculation rBdcd90912
  • Fix T101348: Sculpt smooth brush artifacts with hidden faces rBf2bad0e4
  • Fix T101118, T101471: Crash with bevel weight in solidify modifier rB3059c099
  • Fix T101398: Transfer Attribute node still defined in menu rB0084b863
  • Fix: Assert in legacy mesh conversion rBaa58f58e
  • Fix: Order of node mixins in custom nodes python template rB912a1e28


Cleanup

  • Cleanup: Deduplicate logic in CustomData access functions rBff353842
  • Cleanup: Use variable and const for sculpt mesh vertex to poly maps rBb6ee599d
  • Cleanup: Use signed integers for mesh vertex indices rB2f0c40c7
  • Cleanup: Unused variable warning with path guiding turned off rBb145cc9d
  • Cleanup: Remove unused BMesh function rB57620af3
  • Cleanup: Remove more unused CustomData API functions rBa4ff106c
  • Cleanup: Typo in forward declaration rBa790873d
  • Cleanup: Naming in edge vertices node rBc938447e
  • Cleanup: Move draw_manager_data.cc to C++ rB42eda155
  • Cleanup: Move files that use mesh runtime data to C++ rB1c1dc5f8, rBe0a261c6
  • Cleanup: Move object_update.c to C++ rB7db79fee
  • Cleanup: Move modifier.c to C++ rB0ff485b6
  • Cleanup: Move three modifier files to C++ rB15e6673c


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

  • Nodes: Add node group assets to search menus rBbdb57541
  • Geometry Nodes: Split transfer attribute node rBdedc679e
  • Mesh: Move selection flags to generic attributes rB12becbf0, rBL63036
  • Mesh: Move edge crease out of MEdge rBa8a45428, rBL63035
  • Mesh: Move sculpt face sets to a generic attribute rB060a5341, rBL63034
  • Mesh: Use cached looptris in draw cache extraction rB0d7d8c73
  • Curves: Use early out when apapting domain of single valuerB535f50e5
  • Geometry Nodes: Add Self Object Node rBdd5131bd
  • Attributes: Allow calling "finish" on empty accessors rB91dd29fd
  • Attributes: Correct implementation of typed "write_only" method rB600c069e
  • D16029: Geometry Nodes: Mesh topology access nodes
  • D15973: Nodes: Use plain menus for geometry nodes add menu
  • D16057: Curves: Support boolean attribute selection type, other simplifications
  • D16056: Curves Sculpt: Comb brush performance tests (WIP)


Fixes

  • Fix: Invalid CustomData type map created for legacy mesh conversion rB1b46d57f
  • Fix T101249: Node groups don't show in node search rB7e980f2b
  • Fix: Assert calculating mesh triangulation rB2438f76d
  • Fix: Missing DNA rename for recent mesh refactor rB2d8eadac, rBL63037
  • Fix: Crash with empty vertex group in mask modifier rBd12f0d3f
  • Fix: BMesh to Mesh conversion does not create all necessary layers rB01ed0869
  • Mesh: Avoid uninitialized values when converting BMesh to Mesh rBa82e5210
  • Fix: Use correct node group for add node search rB77dcfac8
  • Fix: Add missing drag link search item for store named attribute node rBe9344d32
  • Fix T101262: Crash in spreadsheet selection filter with empty domain rB20dc8393
  • Fix T101208: Missing original index handling in extrude node rB90999a06
  • Fix T101188: Fluid modifier doesn't work rB6f15141f
  • 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

  • Cleanup: Remove unused data transfer function rBce63fea0
  • Cleanup: Grammar fix in lazy function rB35375380
  • Cleanup: Improve comment for curve component legacy curves rBbe863506
  • Cleanup: Improve consistency when nodes run without OpenVDB rB1b4cf3af
  • Cleanup: Remove BKE_ prefix for local functions rBcbbed904
  • Cleanup: Miscellaneous cleanup in distribute points in volume node rBc1f622e6
  • Cleanup: Use const arguments for node group poll function rB3676d6b8
  • Cleanup: Move versioning_300.c to C++ rB862de918
  • Cleanup: Move mesh_mapping.c to C++ rB3d5e0c8b


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 460fe4a10c
  • Geometry: Avoid unnecessary initialization when resizing data arrays 9088a1f476
  • Sculpt: Make storing mask and face set layers optional b5f7af31d6
  • Sculpt: Separate hide status from face sets, use generic attribute ee23f0f3fb
  • Sculpt: Improve performance when initializing face sets 9c35a5a524
  • Curves: Port Curve to Points node to the new data-block 7536abbe16
  • Curves: Remove CurveEval and old Spline types ecf3435362
  • Attributes: Validate some builtin attributes for untrusted inputs 8934f00ac5
  • Sculpt: Respect hiding when creating face sets from loose parts a231637fae
  • Curves: Don't allow resolutions less than 1 641bbc820f
  • Curves/PointCloud: Avoid quadratic cost for retrieving positions eb3a561a7f
  • Nodes: Avoid unnecessary sorting when selecting or moving nodes 400151833d
  • Attributes: Add function to retrieve span without adding attribute e37f3388b1
  • BLI: Add utility functions to generic spans 225b5a3491
  • Mesh: Fix quadratic cost for accessing normals with RNA 390320a151
  • D15982: Mesh: Move positions to a generic attribute
  • D15973: Nodes: Use plain menus for geometry nodes add menu (WIP)


Fixes

  • Fix: Mesh SoA format conversion skips versioning 818c9e524d
  • Fix: Missing updates for multires sculpting 8fdaf2bddc
  • Fix: Node edge pan and remove on cancel doesn't work ea474dda62
  • Fix T101025: Cycles motion blur crash with changing point cloud size 21ed3b3258
  • Fix T101027: Sculpt tools don't respect visibility after recent commit 8442b0ffc1
  • Fix: Multires crash after recent face set refactor 5bad311f4c
  • Fix T101013: Reordering materials broken with only one assigned ad245f1970
  • Fix: Crash after recent attributes commit 4f284873d0
  • Fix T101031: Crash with Initialize Face Sets operator 92a92fdca5
  • Fix: Geometry nodes crash with undefined node 4cea4f4c5f
  • Fix: Merging mesh and non-empty BMesh creates "flag" attributes 0945ae338b
  • Fix: Build error after previous cleanup commit 530f203e27
  • Fix: Resolve deprecation warning when copying polygon struct 08a8de739d


Cleanup

  • Cleanup: Fix grammar in IndexRange header a45b408422
  • Cleanup: Remove unused member variable in lazy function graph 3d93525069
  • Cleanup: Rename attribute required functions d5df23d758
  • Cleanup: Remove unused argument from modifier data mask callback 6d4d74172b
  • Cleanup: Use attribute API for curves functions 50913d719c
  • Sculpt: Move sculpt_face_set.c to C++ c8b9ede4b1
  • Cleanup: Comment formatting 8f6a07bc75
  • Cleanup: Make format e22198b8d1
  • Cleanup: Add missing licence headers 643e94c032


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 05952aa94d
  • Mesh: Avoid saving redundant generic material index attribute 352d55b1c8
  • Mesh: Move bevel weight out of MVert and MEdge 291c313f80
  • Subdiv: Avoid quadratic runtime for loose edges 12c235a1c5
  • 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 0a32f6b76a
  • Fix: link drag search feature only works for geometry nodes groups e5a7470638
  • Fix T100974: Remesh operators reset mesh properties 1f4dc51d09
  • Fix: Restore fix for empty attributes after recent commit ced56dbc53
  • Fix: Spreadsheet row filters unimplemented for boolean type 9f50bd20eb
  • Fix T100841: Creating a frame node with shortcut doesn't sort nodes ff17131109
  • Fix T100760: No color attribute initialization when created by brush 2636f6fdee
  • Fix: Integer type in linear probing strategy ff7bba8dad
  • 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 21f2bacad9
  • Cleanup: Remove unused DerivedMesh functions ebc385de5f
  • Cleanup: Use C++ methods to retrieve attribute accessors d593497421
  • Cleanup: Remove unused face customdata for merging meshes 17f37b43f1
  • Cleanup: Remove unnecessary node sorting, rename variables 6830ba12a8
  • Cleanup: Avoid using runtime node flag, use topology cache 545fb528d5
  • Cleanup: Remove unused update custom data pointers in attribute API 3484c6d4f1
  • Cleanup: Tweak naming for recently added mesh accessors be038b844c
  • Cleanup: Remove redundant vertex duplication in extrude node b9727dae82
  • Cleanup: Use more specific function for deselecting all nodes 2d38768f89
  • Cleanup: Move select all nodes code to operator 1d24586a90
  • Cleanup: Remove unused function 1fcc673230
  • Cleanup: Fix unused variable warnings 63cfc8f9f6
  • Cleanup: Unused variable, compiler warning 258d385857
  • 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 25237d2625
  • Mesh: Move material indices to a generic attribute f1c0249f34
  • Sculpt: Avoid creating mask and face set when remeshing 71b660571a
  • Mesh: Remove unnecessary copy in modifier stack 70f1711324
  • Mesh: Avoid redundant custom data layer initialization cccc6d6905
  • Curves: Avoid unnecessarily initializing new positions layer d94a11ed79
  • Cleanup: Use C++ attribute API bcd671e565
  • Attributes: Avoid unnecessarily initializing new attributes 4c91c24bc7
  • Geometry Nodes: Use separate field context for each geometry type 82a46ea6f8
  • Nodes: Use existing nodes span cache 58c650a44c
  • 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

  • Fix: Broken build with OpenVDB turned off dff15bb5bf
  • Fix T99253: Missing face center dots with deform modifier cage option 3306b4a86b
  • Fix T100767: Geometry nodes viewer node placed incorrectly 831ed297d0
  • Fix: Alphabetical order in duplicate data preferences panel 002f339aed
  • Fix: Ensure topology cache exists when drawing nodes 21e235afc3
  • Fix T100768: Reverse curves skips handles of middle Bezier points 28d8076a2e, rBL63020
  • Fix: Incorrect vertex group layer "construct" callback 3249853ebe
  • Fix: Use of deprecated field in legacy MFace conversion 6ee3431914
  • Fix: Build error in Cycles with OpenVDB turned off 9806672e86
  • Fix: Potential name clash when adding rest position attribute d9c48d94e4
  • Fix build error after recent Metal GPU commit 0a85288462
  • Fix build error from missing include 934b9277be
  • Fix: Build error on windows 6f52a118a0
  • D15841: Fix: Resolve deprecation warning when copying polygon struct


Cleanup

  • Cleanup: Replace recursive quadratic node link mute operation b978c1bc65
  • Cleanup: Deduplicate node link intersection test b60850d395
  • Cleanup: Remove misleading std::string reference binding 5ae3fa50e2
  • Cleanup: Refactor node add reroute operator 56193eccf6
  • Cleanup: Use new node topology cache for sorting multi input sockets aa08545a01
  • Cleanup: Clarify multi-socket input sorting 0ff920b777
  • Cleanup: Use const for node data in compositor 91d9f46aec
  • Cleanup: Split node link draw culling to separate function 8d1e5334ec
  • Cleanup: Use const for custom data layers 6577d2df8c
  • Cleanup: Use references and const in node editor cd10fb4826
  • Cleanup: Avoid using node socket location df40440d22
  • Cleanup: Use C++ vector types in node editor 86e7aaead2
  • Cleanup: use more standard variable name for node sockets 2d72fc0586
  • Cleanup: Further split of node link Bezier calculation function 40d815dff6
  • Cleanup: Remove redundant addition of attribute 0331a8c67c
  • Cleanup: Deduplicate node link points evaluation functions b903b74944
  • Cleanup: Use separate variables for node socket locations 4a4044ad9b
  • Cleanup: Remove unused point cloud function 7bfabc6444
  • Cleanup: Remove unnecessary struct keyword usage in node editor 4068880ffc
  • Cleanup: Avoid using geometry component unnecessarily b5bc086864
  • Cleanup: Return early 0348bc88e4, a736ca33ab, ab6702a40f
  • Cleanup: Remove unused struct 0fb699b212
  • Cleanup: Remove duplicate declaration in GPU capabilities af4e62a020
  • Cleanup: Use standard variable name for curve points 3090edfecf
  • D15857: Cleanup: Simplify BKE_mesh_nomain_to_mesh


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 2480b55f21
  • Metaball: Evaluate metaball objects as mesh components eaa87101cd
  • Curves: Avoid creating types array when unnecessary 67f3259c54
  • CustomData: Add function to get name of default layer cc9c4e2744
  • 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

  • Fix T100494: Broken sculpt hide status undo/redo a6056b870b
  • Fix: Write hide status attributes for undo steps e36ced1dce
  • Fix T100482: Face Set visibility reset after saving 35c601269b
  • Fix: Node editor context path for curves objects 92493a5fa7
  • Fix T99661: Use after free converting edit mode curve object to mesh 90b7c3d05e
  • Fix: Compiler warning in macro after recent C++ conversion 31279d522b
  • Fix: Incorrect access of mesh hide layers 64f0c25a46
  • Fix: Broken mesh hide status RNA accessors 344919240c
  • Fix: Use of uninitialized variable in recent commit 2fc7e15164
  • Fix T100308: Removing scene time node does not update relations bdb85bdd98


Cleanup

  • Cleanup: Deduplicate RNA mesh element index retrieval f593a560d3
  • Cleanup: Slightly improve virtual array implementation consistency e0414070d9
  • Cleanup: Remove redundant use of evaluated non-mesh objects 27f2ff6b5b
  • Cleanup: Fix const correctness in CustomData set name function aaea263be4
  • Cleanup: Move view layer array utils from macros to functions 413c399ab8
  • Curve: Simplify legacy curve conversion to mesh 90e027e594
  • Cleanup: Move bmesh_query_uv.c to C++ 6bea434c41
  • Cleanup: Move paint.c to C++ 486d27d32a
  • Cleanup: Move subdiv_mesh.c to C++ 0a84cc691d
  • Cleanup: Move draw_cache_impl_pointcloud.c to C++ 4ab6baefb1, 1e8e70a90c
  • Cleanup: Move mball.c to C++ edd6d301c7
  • Cleanup: Move object_vgroup.c to C++ 407f11c55f
  • Cleanup: Move view3d_select.c to C++ db054b447d
  • Cleanup: Miscellaneous improvements to pointcloud draw cache c15a63d21e
  • Cleanup: Fix typo in comment fc26e3fe19
  • Cleanup: Add function for creating object dupli with separate data 1d68318e97
  • Cleanup: Add comments about deprecated flags 39bad22008
  • Cleanup: Fix outdated comments referring to DispList 6718afdc8a
  • Cleanup: Avoid using invalid attribute domain b649fc13ed
  • Cleanup: Remove unused object batch cache API function f8b1483566
  • Cleanup: Use utility to write palette color list 59aef1d717
  • Cleanup: Remove unused function a73cc81646
  • Cleanup: Fix outdated comment 9a67aac8d7
  • D15667: Cleanup: Remove outdated function for tagging batch caches dirty


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 43918ec28d
  • Nodes: Disable link drag search for deprecated nodes bae2ce0695
  • Nodes: Remove node after link drag search cancel 1dc503b33a
  • D15617: Attributes: Clarify and improve custom data initialization


Fixes

  • Fix T96810: Invalid sculpt normals after some operations efe0e2b183
  • Fix T100143: RNA path information of Curves datablock incorrect 74f983738a
  • Fix T100168: Sculpt positions undo not working after recent commit 06b6c004f5
  • Fix: Incorrect field node deduplication for shortest path nodes 344c53561a
  • Fix: Missing translation in deform curves on surface node 800c7dbf41
  • Fix: Use evaluated materials in OBJ exporter d3eef4d22a
  • Fix: Typo in geometry node tooltip 9b924b2a23
  • Fix: Crash on instance on points node with empty mesh 0844781961
  • Fix: Store named attribute node incorrect link drag search d730940fdb
  • Fix: Build error after recent commit 5b8143287b
  • Fix: Avoid OBJ importer assert seting normals on mesh with no faces 1cc11e32e4
  • Fix: Warning from incorrect use of macro 42f9430a3a


Cleanup

  • Cleanup: Remove unused sculpt and vertex color operators 44aa9e40ff, Ad0fa5bc86, rBL62990
  • Cleanup: Remove unused function ce352e6d00
  • Cleanup: Const in headers, standardize variable names bf8b56a69e
  • Cleanup: Remove outdated code for mesh normals 5b8c07dc50
  • Cleanup: Simplify functions for adding and removing color attributes c5b361335a
  • Cleanup: Spelling, remove double negative 359aca8d4c
  • Cleanup: Simplify arguments to sculpt draw functions 2ba2efc296
  • Cleanup: simplify function for adding node to editor 2c00889d3e
  • Cleanup: Reduce indentation fd0c27944f
  • Cleanup: Remove outdated comment 4c340f9bd4
  • Cleanup: Remove incorrect comment fca7cb0101
  • Cleanup: Use generic utility to retrieve attributes to transfer 9d7aac6d66
  • Cleanup: Remove unused function 646207c9af
  • Cleanup: Simplify const cast in virtual array construction a48e5c53a5
  • Cleanup: Use const arguments in definition, add helper variable 81d75affb1
  • Cleanup: Fix doxygen section for custom data type a5a60d0f4f
  • D15634: Cleanup: Make UV draw extraction more generic (WIP)


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 1998269b10
  • Geometry Nodes: Rename "Field on Domain" to "Interpolate Domain" ea4b1d027d
  • Curves: Avoid virtual function overhead when finding selected curves ff048f5d27
  • Curves: Bring back parallel copying of curve and point attributes 55fb2abc81
  • Curves: Unify poll functions, add message with no surface 00a3533429
  • Nodes: Allow using escape key to exit node resizing f14f81e5ac
  • Geometry Nodes: Hide value button for field at index node 5aba7f9774
  • Geometry Nodes: Implement link drag search for two nodes b75d0c7e7a
  • 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 6ca602dd9f
  • Fix: Grammar mistake in info message 1adeae56e6
  • Fix: Fix attribute writer debug warnings in terminal f76a2c0d18
  • Fix: Assert in resample curve node with single point curve 739136caca
  • D15581: Fix T96810: Invalid sculpt normals after some operations
  • D15548: Curves: Validate data when writing to some builtin attributes


Cleanup

  • Cleanup: Move five interface files to C++ 599a7ddf17
  • Cleanup: Move interface_region_tooltip.c and header to C++ 3c5620aabd
  • Cleanup: Remove mesh edge "tmp tag" 17567c235a
  • Cleanup: Use new IDProperty creation API for geometry ndoes modifier cf61be6190
  • Cleanup: Remove unused node "add and link node" operator 543ea41569
  • Cleanup: Use const context argument for UIList callbacks 72d8a40a3d
  • Cleanup: Nodes: Store node group idname in tree type 3d91a853b2
  • Cleanup: Clang tidy aa7734c9da
  • Cleanup: Move wm_dragdrop.c to C++ 38e270ae30
  • Cleanup: Move mesh_tessellate.c to C++ faa0c7aa6f
  • Cleanup: Use LISTBASE_FOREACH macro 5c2fff306e
  • Cleanup: Make BKE_idprop.h self sufficient 4757a5ad33


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 7808ee9bd7
  • Curves: Port fillet node to the new data-block 2551cf9087
  • Spreadsheet: Implement selection filter for curves sculpt mode 396b7a6ec8
  • Attributes: Use new API for C-API functions 31365c6b9e
  • Curves: Remove use of CurveEval in sculpt brushes 215f805ce6
  • Geometry Nodes: Port sample curves node to new data-block 6bcda04d1f
  • RNA: Don't allocate empty char pointer properties 35b4e3a350
  • Point Cloud: Remove redundant custom data pointers 410a6efb74
  • Curves: Remove redundant custom data pointers e9f82d3dc7
  • Geometry Nodes: Copy parameters when copying a curves data-block 6a1ab4747b
  • Curves: Hide snapping menu in curves sculpt mode 87ae10a050
  • 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 c94c0d988a
  • Fix T99878: Deleting curves or points removes anonymous attributes eb281e4b24
  • Fix T99873: Use evaluated vertex groups in armature modifier 80b2fc59d1
  • Fix T99835: Incorrect title case for two node names 35843ddcd8
  • Fix T99873: Store named attribute node cannot write to vertex groups c40971d79a
  • Fix T99884: Crash when converting to old curve type aa1ffc093c
  • Fix T99854: Crash converting legacy NURBS curves to new type ada6012518


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

  • Cleanup: Use r_ prefix for boolean return parameters 98395e0bdf
  • Cleanups: Small changes to armature deform 7a4a6ccad7
  • Cleanup: Rename length parameterization interpolation function 63be57307e, 4ba6bac2f1
  • Cleanup: Remove debug print in test 95ab16004d
  • Cleanup: Access attributes with new API instead of geometry components c3b9a4e001
  • Cleanup: Use generic utility for copying compressed attribute 40ffb94ab4
  • Cleanup: Remove unnecessary handling of normals for fluid colliders d34f8ac3d9
  • Cleanup: Combine geometry null checks in if statements 5d6e4822d8
  • Cleanup: Remove compile option for curves object 597955d0a8
  • Cleanup: Add comment for geometry nodes lazyness 3370c1a8a7
  • Cleanup: Remove unused function fe108d85b4


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 e3ef56ef91
  • Curves: Port subdivide node to the new data-block 9435ee8c65
  • UI: Adjust and fix shader node descriptions 2a60b979cc
  • Curves: Move type conversion to the geometry module 7688f0ace7
  • BLI: Use simpler sliced generic virtual arrays when possible 6e879c3998
  • Geometry Nodes: Use alphabetical order for UV nodes in add menu 322abb2e4b
  • Curves: Expose function to calculate vector handles dccdc6213e
  • D15408: Geometry Nodes: Copy parameters when copying a curves data-block
  • D15393: Spreadsheet: Implement selection filter for curves sculpt mode


Fixes

  • Fix T99191: Boolean modifier creates invalid material indices 5723bf926d, a2d59b2dac
  • Fix: Spreadsheet does not display original curves data f0ac55f519
  • Fix T99464: Curves sculpt add 3D brush symmetry broken fae68ec651
  • Fix T99284: Undefined values output from UV nodes faac25fefe


Cleanup

  • Cleanup: Move mesh legacy conversion to a separate file c4b32f1b29
  • Cleanup: Use generic index mask utility a91f9c2c01
  • Cleanup: Use C++ style of avoiding unused variable warnings 85ef8e1945
  • Cleanup: Use std::move for geometry set 59e1009f10
  • Cleanup: Improve variable name 5c3dc52536
  • Cleanup: Correct comment with spreadsheet enum type ed7dc4282c
  • Cleanup: Remove redundant filtering of legacy normal attribute 9a4927031d
  • Cleanup: Remove unused variable bc2121147f, 52fa0c4251
  • Cleanup: Remove unused function af6f3a4020


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 0ea282f746
  • Curves: Avoid initializing offsets when first allocated 276e419671
  • Curves: Adjust "for each curve by type" utility 4206b30275
  • 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 151fc2fcd8
  • Fix T99309: Duplicate elements deletes instance attributes 95055af668
  • Fix: Flush mode to evaluated object when exiting curves sculpt mode 1c61db5346
  • Fix: Incorrectly sized curves created in set conversion node 7e55ff15b0
  • Fix: Build error with unity builds off after recent cleanup 69ee9ca90e
  • Fix: Correct attribute names in resample curves code c15ae2e87b
  • Fix: Use distance unit for points node radius input 2d18dd9309


Cleanup

  • Cleanup: Rename curve segment count function f4a9a3767e
  • Cleanup: Simplify logic building in length parameterization d0e3388848
  • Cleanup: Avoid assigning constructed VArray to reference a69e5c2348
  • Cleanup: Add assert for unsupported legacy curve type 6161ce6e5d
  • Cleanup: Remove unnecessary includes from geometry nodes header df8d96ab66
  • Cleanup: Remove outdated comments bd7b181e10
  • Cleanup: Clang tidy, unused variable warning 95964444c6
  • Cleanup: Add assert for customdata realloc size 32e9c9802e
  • Cleanup: Remove duplicate include 982d6589a8


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

  • Geometry Nodes: Field on Domain Node ba1e97f1c6 rBL62961
  • Curves: Skip CurveEval in legacy curve conversion 5606942c63
  • Curves: Port string to curves node to the new data-block a646a4b47e
  • Geometry Nodes: Speed up Separate color node in RGB mode 0473462241
  • Geometry Nodes: Optimize selection for virtual array input 3e5a4d1412
  • Mesh: Add an explicit "positions changed" function 54182e4925


Fixes

  • Fix T98975: Broken vertex paint mode operators 2eba15d3e8
  • Fix T98960: Baking to active color attribute uses wrong layer d901f8b75b
  • Fix T98956: Crash removing some builtin attributes cebc5531e9
  • Fix T98949: Deleting vertex group in geometry nodes affects others 12bde317f4
  • Fix: Incorrect dirty normal tag after mesh translation fca94c5e0d
  • Fix: Remove broken vertex paint "fast update" check 6dde88c536z
  • Fix: Memory leak writing to builtin attribute with wrong type 785931fc3c


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 rB58a67e6f
  • Attributes: Add null check in color attribute duplicate operator rB0f06de80
  • D15205: Refactor: Extract color attributes as generic attributes


Fixes

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


Cleanup

  • Cleanup: Remove unused argument, unnecessary struct keyword rBac4836af
  • Cleanup: Remove unnecessary switch statement rB8a3ff496
  • Cleanup: Always store attribute name in attribute request rB3c2a2a6c
  • Cleanup: Simplify syntax in curves draw cache file rB18def163
  • Cleanup: Remove redundant doxygen section rB96764c3a
  • Cleanup: Miscellaneous improvements to draw attribute extraction rBb83f33ff
  • Cleanup: Use more specific includes for grease pencil modifiers rB10850f0d
  • Cleanup: Variable name style in STL importer rB28f4fc66
  • Cleanup: Snake case for variable name rB25f18e6c
  • Cleanup: Fix const correctness of attribute search function rBf5e7221f
  • 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 rB9e393fc2
  • Curves: Port delete geometry node to the new curves type rB8a6cbcf3
  • Attributes: Use names instead of layers for some functions rB6eea5f70
  • CustomData: Add function to free a named layer rB7974d2bf
  • D15169: Mesh: Simplify access of active/default color attribute (WIP)


Fixes

  • Fix: Incorrect curves and pointcloud bounding boxes rBfe4e6464
  • Fix: Incorrect logic in attribute search functionrBd39e0f96
  • Fix: Heap buffer overflow in new curves set type node rB17971b8a
  • Fix: Crash in selection paint brush with empty curves rB32ee2ffc
  • Fix: Missing include rBaebca2bd


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 rBa1830859
  • Curves: Port bounding box node to the new curves type rB8589f605
  • Geometry Nodes: Use fields for delete geometry inversion rBc4e11122
  • Mesh: Only check dirty normals flag of current domain rBa5190dce
  • Attributes: Hide internal UI attributes and disallow procedural access rB4669178f
  • Curves: Add surface UV map name property rB12722bd3
  • Curves: Avoid optimization to avoid storing selection for now rBe9eae1b8
  • 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 rB0a2a8d70
  • Curves: Fix overallocation for curve attributes when deleting curves rB93a68f2a
  • Fix T98403: Crash applying modifiers on non-mesh objects rB18a17d42
  • Fix T98546: Crash with multires bake and zero levels rB96a47af4
  • Fix: Build error after merge from release branch rB91c44920
  • Fix T98556: Crash with extrude node in edit mode rB2d9c5f3d
  • D15118: Fix: Realloc copies too much from previous allocation


Cleanup

  • Cleanup: Move remaining mesh draw code to C++ rB176d7bcc
  • Cleanup: Move wm_event_system.c to C++ rB545d4698
  • Cleanup: Move lib_override.c to C++ rBa746cef8
  • Cleanup: Move attribute.c to C++ rBb24e091c
  • Cleanup: Simplify dependencies for GMP math header rB3060b988
  • Cleanup: Comments and formatting in mesh extract headers rBe37eebf1
  • Cleanup: Remove unused BKE_spline.hh includes rBc7e4c430
  • Cleanup: Improve const correctness of ID functions rBa40b6111
  • Cleanup: Move attribute domain count out of enum rBa5d9b344
  • Cleanup: Use shorter variable name rB4e3ce048
  • Cleanup: Use const for retrieved custom data layers rBdb5ffdd1
  • Cleanup: Use const, make format rB6572ad86
  • Cleanup: Simplify curves toolbar drawing logic rB545b9ddc
  • Cleanup: Split large block of versioning code to separate function rB4a72b64c
  • Cleanup: Use const pointers rB10488d54
  • Cleanup: Clang tidy rB3f937685
  • Cleanup: Remove unnecessary struct keywords rB23f8fc38
  • Cleanup: Remove outdated comment rBca593917
  • Cleanup: Tweak geometry component comments rB16746e8e
  • D15077: Cleanup: Remove unused sculpt vertex color functions and operators


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 rB96f20ddc: 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 rBAbcb71ee: UI: Update deep grey community theme
  • Committed rBA0c532fe: 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 rBcea37b31
  • Curves: Use only current brush location for delete brush rBf8239cc9
  • D14934: Curves: Add float selection in sculpt mode


Bug Fixes

  • Fix T96810: Bitmap race condition in PBVH normal calculation rBb8bd20d7
  • Fix T98237: Double free with curve object conversion to mesh rBc88de159
  • Fix T98266: Crash with empty mesh boolean node rBd4cdae29
  • Fix: Node editor "Group" panel displays for embedded node trees rB00af3e94
  • Fix: Copy and paste error in curves RNA rB200e63b0
  • 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 rBa4382bad
  • Curves: Add disabled message for add empty hair operator rB2a2e47b2
  • Refactor: Move resample curves code to the geometry module rBe0e95f78
  • BLI: Avoid invoking tbb for small parallel_reduce calls rBc2737913
  • 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 rB74a5fb73
  • Fix T98056: Screw modifier crash with normal calculation and merging rBcb5b33a6
  • Fix: Crash with empty curves add interpolate points rB6599d2f0
  • Fix: Hide empty panel in curves sculpt mode tool settings rB2f799f89
  • Fix: Missing curves type count cache update in add brush rBb38cd1bc
  • Fix T97853: Crash with edit mode X-ray and subdivision rB686abf18


Cleanup

  • Cleanup: Simplify loop syntax, decrease variable scope rBe46a3894
  • Cleanup: Remove includes from DerivedMesh header rB7b091fbb
  • Cleanup: Move three mesh editors files to C++ rB1c70402c, rB7fc2804f
  • Cleanup: Simplify loop syntax, make function static rB84a76415
  • Cleanup: Clang tidy rB024f3ddf
  • Cleanup: Fix range loop construct warning rBc5b67975
  • Cleanup: Use single quotes for Python enum string rBb765ea52
  • Cleanup: Move mesh primitive cube to the geometry module rBa74a2677
  • Cleanup: Return early rBb4682554
  • Cleanup: Remove incorrect statement after recent refactor rB892562b7


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 rB16011e34
  • Curves: Use copied original data for invalid NURBS curves rB2d80f814
  • Geometry Nodes: Improve performance of mesh to points node rB6513ce25
  • Curves: Add method to find indices for curve type in a selection rB9ee9dd25
  • 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 rBf80e4f00
  • Fix T97831: Curve to mesh node can create invalid wire mesh rB302584bd
  • Fix T97718: Crash using "Text on Curve" rBaf2740ab
  • Fix: Handle default better in curves type count cache rB477066ad
  • Cleanup: Avoid asan overflow warning for RNG seed rB0f2cc50f
  • D14855: Fix T97853: Crash with edit mode X-ray and subdivision


Cleanup

  • Cleanup: Remove unnecessary logic for resample curves node rB060c5a7f
  • Cleanup: Rename field input class name rBb4fa74e8
  • Cleanup: Move color attribute enums to be reusable rB11d075f0
  • Refactor: Use boolean array for curves delete brush rB9fb98735
  • Cleanup: Further clarification and renaming of curve field inputs rB622c4e49
  • Cleanup: Move curve length field input to blenkernel rBbe0417d6
  • Cleanup: Add comment about mininum curve length rBb4fb2a69
  • Cleanup: Adjust variable names, miscellaneous changes rB48c0738d


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 f431be224f
  • Curves: Support applying geometry nodes modifier 96bdd65e74
  • Mesh: Make vertex normal property read-only 891268aa82
  • Geometry Nodes: Add default attribute name to field inputs/outputs 0ad73bb965
  • Geometry Nodes: Move named attribute nodes out of experimental 3e7ee3f3bc
  • Geometry Nodes: Add "Named" to "Remove Attribute" node name 2fd8fa8f84
  • 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 c9c95201d0
  • Fix T97595: Modifier attribute output broken for vertex groups 96834a7bac
  • Fix T93546: Fill curve node ignores last point of non-cylic curves 5b1ec08f04
  • Fix T97151: Curve vertex parenting crash with dependency cycle 8095875dff
  • Fix T93899: Incorrect decorator buttons for geometry nodes vector/colors 3d9f0280ff1b 3d9f0280ff
  • Fix: Correctly copy and update curve type counts cache 98ad294d17
  • Fix: Incorrect implicit enum conversion 8e1b16534d
  • Fix: Incorrect conversion from C bitfield syntax 2d7957727c
  • 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 1f270cf99b
  • Cleanup: Remove redundant vertex normal dirty tags 3b4b2bcb13
  • Cleanup: Move anonymous attribute removal to geometry component 3b4b2bcb13
  • Cleanup: Use bool, remove unnecessary struct keywords 9a8669ac81
  • Geometry Nodes: Avoid parallel_for_each with a single geometry e9334c5df8
  • Cleanup: Remove disabled optimization code b60f3fe6ad
  • Cleanup: Reword comment, rename variables 8399375098
  • Cleanup: Improve const correctness of shape key functions b1b153b88c
  • Cleanup: Fix compiler warnings 099120e54a


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 6a3c3c77b3
  • Refactor: Move mesh face dot tag out of MVert 8c25889bb6
  • Nodes: Remove unnecessary RNA pointer creation ef2b8c1c3a
  • 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

  • Fix T96498: Modifiers affect multiple curve objects a7c65ef4cb, rBL62890
  • Fix: Memory leak writing to builtin attribute from modifier 65e4c91bec
  • Fix: Build error on macOS after previous commit e96623c19b
  • Fix: Assert failure with certain screw modifier settings fe43c17083
  • Fix: Use alphabetical order in geometry nodes add menu 74b9c351b9
  • Fix: Incorrect info message in set material node d813ee55fd
  • Fix: Assert when sculpting empty curves 5a06996722


Cleanup

  • Curves: Further split of curves draw code from particles 5b87862ddc
  • Cleanup: Don't recalculate normals in versioning code 9ec94c3882
  • Cleanup: Remove unused variables, adjust comments 7f726b48ac
  • Cleanup: Clang tidy, unused variable warnings ff6098345a
  • Cleanup: Rename CD_MLOOPCOL to CD_PROP_BYTE_COLOR 03ec505fa5
  • Cleanup: Clang tidy 98fc998c70
  • Cleanup: Remove redundant types from custom data masks 7cb6fb0183
  • Cleanup: Move object_modifier.c to C++ 95cce6f6b0
  • Cleanup: Remove incorrect comment 314b27850c


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 7484f274dc
  • Edit Mesh: Parallelize bounds calculation with deform modifiers 0ba061c3bc
  • Curves: Avoid duplicating evaluated positions with all poly curves 5a98e38275
  • Refactor: Evaluate surface objects as mesh components edcbf741df
  • UI: Improve wording for some USD export descriptions 65194f47b0
  • 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 dc5ae10692
  • Fix T97363: Duplicate elements node doesn't tag loose edges 089e701191
  • Fix: Apply tilt in curves data-block normals calculation 47d961a4b1
  • Fix: BMesh Python API errors after vertex_normals addition 77db370cb6
  • Fix: Incorrect custom data maxlayers in rare files baae87ce86
  • Fix: Use after free when removing attribute on instances 05715eaea1
  • Fix: Assert evaluating single point Bezier curve 94495049a8
  • Fix: Use consistent type for nurbs order attribute a8ee279aa9
  • Fix: Curves: Add missing builtin attribute definition 078aa677b6
  • Fix: Assert when curve has no evaluated points 359b6baf32
  • Fix: Missing translation in node socket inspection 810f33d434


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 ceed37fc5c
  • Curves: Add initial sampling utility, use for snake hook brush eb40b231f9
  • Curves: Port legacy curve viewport drawing to the new data-block b84255f590
  • Curves: Hair to Curves rename in Cycles/EEVEE UI 8b04308953
  • Geometry Nodes: Parallelize mesh line node 8f344b530a
  • Refactor: Evaluate surface objects as mesh components edcbf741df
  • 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 502d16e667
  • Fix: Curve parameter node broken for Bezier curves after refactor 74db0f3d5f
  • Fix: Missing virtual destructor on virtual class 6aaae44473
  • Fix: Assert fails when evaluating single point Bezier curve 1d86d61782
  • Fix T96838: Missing translations in link drag search e7f4aa8f0c
  • Fix T96999: RNA mesh transform does not mark normals dirty 9c962b2e2b
  • D14561: Fix T96498: Curve object modifier affects all curves


Cleanup

  • Cleanup: Return early in metaball tessellation code 46c54b12b0
  • Cleanup: Define new curves normal mode in DNA 87a3bf3356
  • Curves: Name mutable data retrieval functions explicitly 8551e89068
  • Cleanup: Pass const arguments to object snapping 7a5e663843
  • Cleanup: Simplify if statements, clang tidy bb7e3c2b56
  • Cleanup: Move interface.c to C++ 432ad4c632
  • Cleanup: Remove unused function 9eb4cb956b


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 3ecdfd0938
  • Geometry Nodes: Port set handle nodes to new data-block 00ba51d37b
  • Curves: Add length cache, length paramerterize utility 72d25fa41d
  • Curves: Port resample node to the new data-block 60a6fbf5b5
  • Curves: Port parameter node to the new data-block f4f89a76a8
  • Curves: Port length node to the new data-block 62334c6ee4
  • Geometry Nodes: Remove soft min from extrude node scale 4a93c4bf1d
  • Curves: Port curves total length node to the new data-block 400ea40dca
  • Curves: Support set origin and apply transform operators 933d56d9e9
  • Curves: Inline some simple methods f6baba695c
  • D14483: Use a vector instead of a linked list for object instances (WIP)


Bug Fixes

  • Fix T97001: Grease pencil array modifier relative offset broken 637fe6f5ff
  • Fix: Assert with set origin operation and single active object a567bef5cc
  • Fix: Remove special case from curve segment size function 87e9451d66
  • Fix: Failing curves test after recent commit e26c89cd76
  • Fix: incorrect assert in new code ac9ddf54a0


Cleanup

  • Cleanup: Remove interface region files to C++ 4537eb0c3b
  • Cleanup: Move interface View2D files to C++ be699936af
  • Cleanup: Remove object bounding box function 69c07adb51
  • Cleanup: Remove unused boundbox flag 11c6d4e88e
  • Cleanup: Use const for bounding boxes where possible f688e3cc31, 5387d33e5f
  • Cleanup: Move geometry set fields to a separate header 5c80543c43
  • Cleanup: Curves draw cache renaming, use references 8466fd4bd1
  • Cleanup: Avoid storing pointers for attribute search callback 762d3a48e8
  • Cleanup: Move scene.c to C++ fc288d3970
  • Cleanup: Move transform_snap_object.c to C++ 037f789111
  • Cleanup: Move two grease pencil files to C++ 27424b758a
  • Cleanup: Remove legacy dupli system from point cloud object 1f6c2507f8
  • Cleanup: Use float3 type 59c3194f8e
  • Cleanup: Remove unnecessary namespace specification 41ee5382f6
  • Cleanup: Use const mesh arguments c9f54cd644


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 d3a1e9cbb9
  • Geometry Nodes: Improve performance writing to vertex groups 610ec34c1f
  • Curves: Add a utility to count curves of each type c0016d85b2
  • Curves: Bezier and general interpolate to evaluated utility cea51c1bb5
  • Curves: Tweak evaluated offset functions 797a1356ca
  • BLI: Add utility for tracking average and min runtime 7ef3a1a6e6
  • BLI: Adjust interpolation to support integers, other tweaks 378022c797
  • UI: Use title case for labels f92e3b39f1
  • 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

  • Fix T96308: Mesh to BMesh conversion doesn't calculate vertex normals 64cd927519
  • Fix T96294: Crash and error with shape key normal calculation b0aaf6ff4a
  • Fix T96401: Broken multires baked normals result 3a8a7d93f9
  • Fix T96494: Array modifier with caps crash on curve objects 923b28aab8
  • Fix: Small fixes for NURBS evaluation 8ed4638960
  • Fix: Missing "Hair" to "Curves" rename 067d0d4466
  • Fix: Build error with flag usage and strict warnings fb3a0a34b4


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

  • Curves: Initial evaluation for curves data-block 8538c69921
  • Geometry Nodes: Remove legacy node code 943b919fe8, rBL62854
  • Geometry Nodes: Add named attribute nodes behind experimental flag d4e46c13cc
  • Curves: Port duplicate elements node to new data-block 663bd38ed6
  • Curves: Port handle type selection node to new data-block 578c2f117a
  • Curves: Port Bezier Segment node to the new data-block 389807624d
  • Curves: Port transform node to new data-block 5d7f4f2cab
  • Curves: Port fill curve node to the new data-block b2cb99d3fd
  • Curves: Port reverse curves node to the new data-block 298d8a7b4a
  • Curves: Port handle type selection node to new data-block 578c2f117a
  • Curves: Port convex hull node to new data-block d4bd9f6a27
  • Curves: Port count spline length output to new data-block 379bd6d50c
  • D14382: BLI: Add length parameterization utility


Bug Fixes

  • Fix: Curves last evaluated segment is empty 8146c996eb
  • Fix: Build error from missing build dependencies 263c5b33d6
  • Fix: Update icons for hair to curves rename 9af791f873
  • Fix: Build error after curve evaluation commit 7a4af7a01b
  • Fix: Compiler error on windows and mac 22de21bef1


Cleanup

  • Cleanup: Miscellaneous improvements to duplicate geometry node 6d97a5f93c
  • Cleanup: Move object_transform.c to C++ 356073c13e
  • Cleanup: Reorganize duplicate elements file ee2d39b3a7
  • Cleanup: Remove unnecessary namespace specification 2564d152d6
  • Cleanup: Remove unnecessary namespace usage, use const d2726e4626
  • Cleanup: Rename "spline" variables to "curve" 0835996cc9
  • Cleanup: Remove unused includes 7bdba5f1e0
  • Cleanup: Further removal for legacy geometry nodes 213d00607e
  • Cleanup: Clang tidy cc98b40f87


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 6c6f591f90
  • Curves: Port mesh to curve node to new data-block 901a03725e
  • Curve: Store NURBS basis cache as a single vector 25b4e41875
  • Curve: Remove temporary buffer during NURBS evaluation 29dc6fb1c1
  • UI: Use property split in curves surface panel f19582ebf4
  • D14284: Curves: Initial evaluation for curves data-block (WIP)


Bug Fixes

  • Fix: Deleting vertex group attribute can change original mesh 5c86f0369c
  • Fix T96146: Subdivide curve node uninitialized dangling handles 521d4190a0
  • Fix: Assert in set spline type node after recent commit dbd9472ef5
  • Fix T95843: Invalid mesh runtime data after sculpt undo c77597cd0e
  • Fix T93573: Curve evaluated mesh selected in edit mode 2b3367cdf8
  • Fix: Handle handles reset when realizing with other curve types edcb2ad7b3
  • Fix: Use "construct" instead of "assign" for uninitialized memory 115ff08fdb
  • Fix: Curves cyclic access function duplicates attribute c238728105
  • Fix: Add missing break 24c543d4af
  • 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

  • Cleanup: Reduce duplication in realize instances code 338fe9e2b5
  • Cleanup: Simplify NURBS basis cache arguments 3c8182409c
  • Cleanup: Remove unnecessary NURBS optimization 34a61ceeaa
  • Cleanup: Simplify/deduplicate curves built-in attribute access f379943734
  • Cleanup: Use new enum for NURBS curve knots modes db7c4d7a1c
  • Cleanup: Use helper variable, const argument 4ec1c8bc9c
  • Cleanup: Use helper variable 28434dab0c
  • Cleanup: Rename geometry set "curve" to "curves" b8f1ae5c38
  • Cleanup: Correct comment 90c3147e05
  • Cleanup: Clang tidy d09695b4dd


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 9ec12c26f1
  • Geometry Nodes: Port most curve primitives to new data-block 444d57d440
  • Curves: Move curves primitive to object add code f98d74c80d
  • Curves: Port set resolution node to the new data-block ddf956fb58
  • BLI: Add functions to IndexRange to mirror Span d793d18413
  • D14247: Curves: Port realize instances node to the new data-block


Bug Fixes

  • Fix T96164: Crash with curve domain attributes 295d5c6ef5
  • Fix T96152: Crash realizing curve instances 887ccb8537
  • Fix T93573: Remove outline from instances in edit mode 216a215ba5
  • Fix: BLI math clamp doesn't work 2600806c2e
  • Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32
  • Fix: Don't tag curves component cache dirty for radius 94a4dddb1b
  • Fix: Use correct default in Curves to CurveEval conversion 9ebb65323e
  • Fix: Only possible to create one 8 bit integer attribute 1a8db5b717
  • Fix: Incorrect assert in curves code 4f2f3114b7
  • D14229: Fix T93573: Curve evaluated mesh selected in edit mode


Cleanup

  • Cleanup: Mesh normal calculation comments and logic ac3f4db719
  • Cleanup: Rename set handle type node internally to match UI 3c175caaa3
  • Cleanup: Unused variable warnings 1763ffa0be
  • Cleanup: Use bool instead of int 611157057b
  • Cleanup: Rename geometry set "curve" functions to "curves" 245722866d
  • Cleanup: Move mesh_validate.c to C++ 579f42ae52
  • Cleanup: Move object_add.c to C++ 4c407f20a6


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 4c66bd5da2
  • Curves: Use simpler "set" behavior for handle position attributes f8fe0e831e


Bug Fixes

  • Fix T95839: Data race when lazily creating mesh normal layers 59343ee162
  • Fix T93873: Wrong limits for color socket exposed to modifier be6bcaa8c1
  • Fix: Clear mesh runtime cache when adding elements 353fe610ed
  • Fix T95987: Data transfer modifier custom normals crash 398538b914
  • Fix T95952: Uninitialized value used in Bezier Segment node dbef66c32f
  • Fix T95919: Apply Pose as Rest Pose Operator crashes 284cef473f
  • Fix: Build error in debug build a81cc5cbcb
  • Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32
  • Fix: Errors in previous cleanup commit 06bc20f61a
  • Fix: Attempt to fix build error on windows 7518adc5bb
  • Fix: Crash switching between sculpt and edit mode 7b37d980b9
  • Fix: Only possible to create one 8 bit integer attribute 1a8db5b717
  • Fix: Incorrect assert in curves code 4f2f3114b7


Cleanup

  • Cleanup: Mesh normal calculation comments and logic ac3f4db719
  • Cleanup: Use function to check if normals are dirty b7171d1b82
  • Cleanup: Use new enum for CurveEval handle types 5b4732f81c
  • Cleanup: Use new curves type enum for CurveEval f3ef0763b4
  • Cleanup: Remove unused mesh dirty flags ad3ee84f4e
  • Cleanup: Use curves wrapper dde5cc6670
  • Cleanup: Simplify operating on multiple geometry components c23ee6d7b4
  • Curves: Add methods to retrieve range for points or curves 1361c6e604
  • Cleanup: Typo in comment f4d80ecdfd


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 399168f3c1
  • BLI: Generalize short algorithm for finding bounds 5b73017ddb
  • Mesh: Avoid creating incorrect original index layers 1850a0b2ab
  • Cleanup: Use functions for accessing mesh normal dirty state 969c4a45ce
  • Nodes: Update dependency graph when removing some nodes 734c6a4405
  • D14145: Geometry Nodes: Begin conversion to new curves (WIP)


Bug Fixes

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


Cleanup

  • BLI: Change dependencies in vector math files a9f023e226
  • Cleanup: Pass const Scene to mesh evaluation 7773393d35
  • Cleanup: Deduplicate functions for creating attributes 8c96ee8903
  • Cleanup: Remove unused argument to mesh tessellation ef0e21f0ae
  • Cleanup: Use C++ math functions ad1f8a50b0
  • Cleanup: Rename original curve object type enum ad1f8a50b0
  • Cleanup: Rename file used for calculating mesh edges 3ed3ee253b
  • Cleanup: Clang tidy 7d5f6c330f


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" fe1816f67f
  • Refactor: Move PBVH update tag out of MVert 7682d7de04
  • 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

  • Fix T95458: Line art ignores curve objects with no evaluated mesh 88ff5e5fb9
  • Fix T95573: Incorrect bounding box of evaluated curve b76918717d
  • Fix T95620: Crash When Entering Edit Mode on a Curve d1202bd641
  • Fix: Incorrect size used for reading curves data 516781da80
  • Fix: Missing changes in recent "Curves" rename 40e8b9775d
  • Fix: Complete curves renaming missed in previous commit 2887df119c


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 f59767ff97
  • Attributes: Infrastructure for generic 8-bit integer data type e7912dfa19
  • Geometry Nodes: Remove object transform dependency in some cases c9b578eac8
  • D14007: Curves: Rename "Hair" types, variables, and functions to "Curves"


Bug Fixes

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


Cleanup

  • Cleanup: Remove unused "init" node tree flag 66e9ee1a2f
  • Cleanup: Grammar in comments and tooltips f79c8e25f1
  • Cleanup: Add comment about unsed custom data type 3e0ffe5a39
  • Cleanup: Return early, use switch, rename function 2053fc849e
  • Cleanup: Add file names back to node header af426c8508
  • Cleanup: Clang tidy, use braces 28656293c6
  • Cleanup: Add missing breaks in previous commit bff83ecee5
  • Cleanup: Use C++ types 03e580c98c
  • Cleanup: Add back comment removed in recent commit c4f159cfcd


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 A81fc6b060: 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 ec1b0c2014
  • Geometry Nodes: Port weld modifier to the merge by distance node 0ec94d5359
  • Geometry Nodes: Add or improve various socket descriptions cab1f1d9a2
  • Nodes: Improve link-drag search support for boolean math node a18bd403bf
  • Mesh: Add versioning in 3.0 for vertex normal refactor add07576a0
  • UI: Use property split in new operator popup cb09485ff2


Bug Fixes

  • Fix T94476: Threading/performance issue with curve to points node 03b57d3973
  • Fix T95202: Curve to mesh node inconsistent edge vertex order 89dbad9085
  • Fix T95212: Mirror modifier normals crash 834b966b41
  • Fix: Complete transfer attribute input renaming 279a73e429
  • 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

  • Cleanup: Remove mesh vertex "temp tag" flag 90a23dec46
  • Cleanup: Remove unused DerivedMesh functions 23775f3914
  • Cleanup: Remove unused DerivedMesh normal handling 14427f5aaa
  • Cleanup: Remove unused DerivedMesh flag 79032a8513
  • Cleanup: Remove unused "_ex" version of function 57f6aa4d83
  • Cleanup: Remove modifier type hair callback a58592885c
  • Cleanup: Correct location of node function declarations 2bf519d211
  • Cleanup: Remove useless comments c1b5cea63a
  • Cleanup: Clang tidy d7ac659e02
  • Cleanup: Remove unused variable 3e2591c83e
  • D13946: Cleanup: Move mesh extract files to C++


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 5a0c5912a4
  • 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 52b2769b9c: 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

  • Geometry Nodes: Extrude Mesh Node 95981c9876
  • Mesh RNA API: Expose contiguous normal arrays b7fe27314b
  • Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661
  • Geometry Nodes: Set Handle Type Node: Left and right by default 8c1ddee10c
  • BLI: Add index_range method to VectorSet 44ca984dc7


Bug Fixes

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


Cleanup

  • Cleanup: Improvements to mesh to bmesh conversion 5c4a5fd40d
  • Cleanup: Move bmesh_mesh_convert.c to C++ b7878a4d45
  • Cleanup: Use references, const variables 1f026a3db9
  • Cleanup: Move node editor files to proper namespace 902a103f80
  • Cleanup: Make node editor functions private 977baeaa26
  • Cleanup: Grammar: its self vs. itself 46475b8e11
  • Cleanup: Use references, LISTBASE_FOREACH macro 221ff895d9
  • Cleanup: Remove unused node editor toolbar file 09ecb089a5
  • Cleanup: Remove incorrect comment 9b4c017031
  • Cleanup: Resolve unused variable warning, make function static 14d261d23a
  • D13878: Cleanup: Remove mesh vertex "temp tag" flag
  • D13869: Cleanup: Correct location of node function declarations


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 cfa53e0fbe
  • Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661
  • Spreadsheet: Add mesh topology information with a debug value 922ae55a16
  • Nodes: Support link-drag search with compare node outputs 9fe704800e
  • D13839: Mesh RNA API: Expose contiguous normal arrays


Bug Fixes

  • Fix T94624: Object as font instances don't work 97c2c39916
  • Fix T94852: Geometry Proximity crash when unsuccessful 6e926e9b56
  • Fix: Incorrect logic in mesh validation for removing layers 0c5ccae79d


Cleanup

  • Cleanup: Remove unused "active ID" node flag 37b336a8af
  • Geometry Nodes: Move normal field input to be usable elsewhere f4af21038d
  • Cleanup: Remove unused subdiv functions b7a27efd78
  • Cleanup: Clang tidy 1bd0a87384
  • Docs: Add comments to node socket struct header a4a95c8d36


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 458be2ecc4
  • BLI: Add slice method to MutableSpan 9793bc30ce
  • 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 c6069c439c
  • Fix: Link drag search error with random value node from color socket f7c0287278
  • Fix T94594: Incorrect spreadsheet data set region type in old files 1b9e103a30
  • D13768: Fix T94624: Object as font instances don't work


Cleanup

  • Cleanup: Remove unused code from BKE_node.h 34e84d0ee8
  • Cleanup: Use forward declaration of struct in header 5ba5678e00
  • Cleanup: Spelling/grammar in comments c0fb8ea8f3
  • Cleanup: Clang tidy 675d3cdd69
  • D13770: Cleanup: Remove unused "active ID" node flag


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 6d7dbdbb44
  • Geometry Nodes: Support instances in the delete geometry node a94d80716e
  • D13709: Geometry Nodes: Extrude Mesh Node


Bug Fixes

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


Cleanup

  • Cleanup: Remove unused node tree "local sync" functions c34ea3323a
  • Cleanup: Remove unused DerivedMesh functions 5e8b42bf86
  • Cleanup: Return early, organize variable declarations 1464eff375


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.