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 rB00b3f863b8c4
- Geometry Nodes: Avoid mesh copy in some cases rB4ae0da1bbc61
- Geometry Nodes: Reduce socket logging overhead rB3176b113e408
- UI: Use vector instead of linked list for block button groups rB1eb90ee519c4
- UI: Use vector instead of linked lists for context store rB7d7e90ca6859
- Nodes: Rewrite group creation operator rBfa3ca9afdb6f
Fixes
- Fix: Set position node doesn't tag mesh normals dirty rB5fe297df4872
- Fix T103301: Active and default color attributes lost in many operations rBc2a8d8b18ddb
- Fix T103136: Cannot activate viewer node in group rBf613614fcebf
- Fix T103307: Crash reading particle hair key.co rB9f575ece39e8
- Fix T103520: Incorrect selection in paint mode operators rB31f224269159
- Fix T103452: Active & default color attributes reset on modifier apply rB7911954b403e
- Fix T103463: Repeat last crashes in node editor rB6b9825e6f792
- Fix: Wrong const iterator type for blender::Vector rBd59f6ffdcb4a
- Fix: Assert failure in mirror modifier rB6383ed9956cc
- Fix: Debug build failure after recent variable name change rB81935098f185
- Fix: Crash when grouping frame node but not its children rBd0348bcb8a56
Tests
- Geometry Nodes: Add test for mesh set position normals dirty tagging rBL63159
- Tests: Remove random shuffling from modifiers test rB7907803694c5
- Tests: Print when mesh test starts, to help debugging crashes rB99fcfdd9fb91
Cleanup
- Cleanup: Simplify node clipboard, use Vector instead of ListBase rBc8741a3c0336
- Cleanup: Move context.c to C++ rBf0ac5e8aec03
- Cleanup: Use simpler vector for dragged node links rB5dcce5851079
- Cleanup: Improve documentation in Curves DNA header rB87594726abb3
- Cleanup: Rename flag for node socket link status rB47b9ed24090d
- Cleanup: Use indices in curve to mesh, decrease variable scope rBf891ddd98dc4
- Cleanup: Use inline function for node socket visibility rB887105c4c9df
- Cleanup: Simplify node duplicate operator rB688086e01f2d
- Cleanup: Clang tidy rB2652029f3bee
- Cleanup: Remove unused modifier and BMesh includes rBb492dc3579c1
- Cleanup: Use const parameters for node poll functions rB8c6fe60844f2
- Cleanup: Use const arguments for node interface socket functions rB8fe149979664
- Cleanup: Simplify arguments to deselect all nodes function rB8bbf82371621
- Nodes: Add non-const access to cached group output node pointer rB908c539219c3
- Nodes: Make more node and socket declaration fields public rBc744d5453fdc
- Nodes: Make socket declaration member variables public rBd7dad425c0d0
- Cleanup: Grammar in comments rBc9b06505d8d5
Review
Accepted
D14365: Mesh: Move UV layers to generic attributesRequested changes
D16792: New C++ ply importer/exporter WIPAccepted
D16828: Cleanup: remove 'UNUSED' macro definition in C++Requested changes
D16755: Mesh: replace 'BKE_mesh_merge_verts' algorithmCommented
D16414: Sculpt: Stroke Texture MappingAccepted, committed
D16864: Fix T103453: Don't allow call Attribute Convert operator in edit modeAccepted, committed
D16867: Cleanup: delete boolean templates from Blur Attribute nodeAccepted, committed
D16854: Fix T103011: custom data layers aren't copied when using BooleanAccepted
D16625: BLI: Refactor matrix types & functions to use templatesCommented
D16837: Fix T103354: Author extents on UsdGeomMeshCommented
D16735: Geometry Node: Gather link searche: Ability to move values to the top using a new linkRequested changes
D16244: Node Editor: Controlled node link swappingAccepted
D16884: Geometry Nodes: Skip logging socket values for invisible node trees.Accepted
D16846: Geometry Node: Geometry socket supported types tooltip without computingCommented
D16848: Animation: Add Select Linked Vertices to Weight Paint ModeAccepted, committed
D16840: Fix T103370: missing UI context membersRequested changes
D16843: Cleanup: Use generic in Accumulate FieldAccepted
D16855: Fix uninitialized ColorSceneLinear4f occuring in certain situations.Commented
D16227: Geometry Nodes: Select Linked NodeAccepted
D16847: Fix T103394: default/active color status lost after remeshingAccepted
D16808: Geometry Nodes: SDF Volume SphereCommented
D16791: Fix T101766: Curves sculptmode: orbit around selection / view selectedClosed
D16842: Curves sculptmode: hide select menu when selection is not usedClosed
D16725: WIP: EXPERIMENT: Use dynamic declaration as socket update functionClosed
D16331: Fix T102027: Add set origin support for pointcloud objects
Tracker
- Investigated: 41
- Confirmed: 1
- Resolved: 12
- Known Issue: 2
- Archived: 12
- Duplicate: 3
Next Week
Next week I'd like to commit some refactors and continue working on various 3.5 features.
December 12 - December 18
This week I worked more on the backend of group nodes and group input/output nodes, getting them to use the node declarations system and making the creation of new links more explicit. That's a bit of an involved refactor, so it's taking longer than I hoped. I think it's important that the simulation nodes aren't the first place to use that system though.
I committed a few refactors for meshes, including storing active attributes in a more solid way and replacing the old edge split implementation.
After Erik asked about a more specific plan for implementing volume features, I made a task describing how I would go about implementing it: T103248.
Changes / Features
- Mesh: Store active & default color attributes with strings rB6514bb05ea5a
- Nodes: Allow skipping node attachment after dragging rBae886596a0f1
- Geometry Nodes: Add error message when applying modifier with no mesh rBb1494bcea7b6
- UI: Use vector instead of linked lists for context store rB7d7e90ca6859
- UI: Use vector instead of linked list for block button groups rB1eb90ee519c4
- Refactor: Replace old Mesh edge split implementation rB75ad8da1ea67
Fixes
- Fix T103225: Line Art modifier skips loose edges rBe0fbeb6e7ba7
- Fix T103321: NodeSocket.node is None in Node.copy callback rB50c7eb14f455
- Fix T103143: Cycles can lose default color attribute rB9fd834fbb346
- Fix T103052: Box trim does not create face sets attribute rB29f342774ce1
- Fix T103186: Missing anonymous attribute reference rBeae1be548dd5
- Fix T103136: Cannot activate viewer node in group rBf613614fcebf
- Fix T103195: Initialize face sets from bevel weights broken rB8ee020d11fe8
- Fix T103051: Changed behavior when removing a material slot rBbdd34f4fa25c
- Fix: Wrong const iterator type for blender::Vector rBd59f6ffdcb4a
- Fix: Crash after mesh color attribute name commit rB9e94135f1790
- Fix: Uninitialized variable in mesh primitive refactor rBa63a41177dd8
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++ rBf0ac5e8aec03
- Cleanup: Return early in node link operator, remove useless comments rB4352ac0558ab
- Cleanup: Slightly refactor cancelling link drag operator rB4254810e5028
- Cleanup: Move mesh modifier apply function to editors module rBbd04e80c09f0
- Cleanup: Various improvements to modifier apply operator rB970f4c2f9f0e
- Cleanup: Remove redundant information from node link drag struct rBc9288ab41f49
- Cleanup: Remove cryptic "PET" acronym rB4ee2504eff31
- Cleanup: Remove unnecessary node link flag rBa43e4988788a
- Cleanup: Remove ifdef'd node transform code rB57090a4b7228
- Cleanup: Remove duplicate UV islands header rBd77a6849e664
- Cleanup: Remove runtime node flag, various node transform cleanups rBe41abf9e2617
- Cleanup: Use LISTBASE_FOREACH macro rB9437abdbceee
- Cleanup: Use const variables in node drawing rBae7ef8bcc66f
- Cleanup: Reduce indentation when setting node active rBa55163c880c4
- Cleanup: Use standard node function names and namespace rBc725a53e8961
- Cleanup: Add a bit more detail to curves offsets comment rB42def76831e0
- Cleanup: Remove disabled code rB23b776e5b313
- Cleanup: Move two modifier files to C++ rBab1c36ad3f0e
Review
Requested changes
D16744: Support for export curves on alembicAccepted
D16281: Curves editmode: edit points are drawn from evaluated curvesAccepted
D16738: Geometry nodes: Optimize Set Position nodeAccepted
D16637: Geometry Nodes: Output uv map from primitive nodes as anonymous attributes.Committed
D16796: Fix std::optional value() build error on older macOS SDKAccepted
D16764: Fix T101765: Curves sculptmode: object origin and 3D cursor are visibleClosed
D13132: Nodes Editor: Draw lines across the center of the gridClosed
D16750: Curves: Fixed Switch Sculpt modeClosed
D10951: A Mesh Smooth node, as designed in T86903.
Tracker
- Investigated: 15
- Confirmed: 1
- Resolved: 9
- Needs Information: 1
- Archived: 2
- Duplicate: 1
Next Week
I'll hopefully finish up the refactors to group node declarations, and implement the next feature for edit mode attribute editing, like I had hoped last week.
December 5 - December 11
This was a productive week. Though I didn't make that much progress on simulation, I got the branch back to a working state and made the simplifications we talked about like removing the extra sockets. The implementation should be much more solid now. I'm more confident dealing with it anyway.
I also did a bunch of refactoring to mesh face corners and face corner normals. I ended up with a >20% performance improvement by mistake, just by removing redundant information in allocated memory. Indices are really so much better than pointers! On the way, I ended up implementing "On Cage" editing for the split edges and extrude nodes.
I went over a bunch of patches too, and closed some old abandoned ones. One new design task this week too, about socket naming:
- T102962: "Face Group" / "Group Index" / "Face Set" concept naming
Changes / Features
- Mesh: Reduce memory consumption when calculating corner normals rB9e9ebcdd728d
- Mesh: Avoid storing redundant pointer in corner normal calculation rB9338ab1d625a
- Geometry Nodes: Support original index layer in split edges node rB46993958fd57
- Geometry Nodes: Support original indices in extrude node rBd17db1d11aa1
- Nodes: Improve search weights for mix node sockets rB01fb8a555bdc
- Geometry Nodes: Improve switch node search for booleans rB570acac79596
- Geometry Nodes: Improve search weight for named attribute exists socket rB62434a9d2187
- OBJ: Avoid retrieving mesh arrays, improve const correctness rBa5f9f7e2fc30
Fixes
- Fix T102940: "Mask by Color" sculpt tool crash rB995f757049dc
- Fix T103015: Line art crash after recent refactor rBc85ca5e365f8
- Fix: Assert failure when joining nodes with frame rB18a91ecee782
- Fix: Uninitialized variable in mesh primitive refactor rBa63a41177dd8
Cleanup
- Cleanup: Add accessor for node index rB178eb5bac5fb
- Cleanup: Organize and comment bNode struct rB2efdbeb58bd1
- Cleanup: Use Span instead of MutableSpan for normals array rB2bb47e03f780
- Cleanup: Comment formatting in normal calculation rB40bc5aa7e568
- Cleanup: Remove unnecessary MLoop argument rBf06d7c98db8e
- Cleanup: Remove unnecessary indentation in cone primitive rBc1d4105005ac
- Cleanup: Reduce use of redundant local variables in normal calculation rB0485baaf9808
- Cleanup: Reduce indentation in mesh operator rB34722fa8a0d5
- Cleanup: Reduce indentation in corner normal calculation rBba523bd010a8
- Cleanup: Split sharp edge tagging from face corner normal calculation rB0a561981394d
- Cleanup: Avoid double negative in face corner normal calculation rBa92f2931cebb
- Cleanup: Various improvements to old mesh edge split code rB3d00ac2961b8
- Cleanup: Const correctness for node find functions rB2ce6ac462b02
- Cleanup: Simplify naming in UV sphere primitive rBa459018a9916
- Cleanup: Rename adjacent mesh loop accessors rB8c11c0444891
- Cleanup: Make mesh primitive topology building more parallel rBff324ab7161a
- Cleanup: Use topology cache of group output node rBfc5f7a1e2d5e
- Cleanup: Use array in face corner normals calculation rB9a7fa1b3e989
- Cleanup: Return early in mix node link-drag-search rBb20e89f69c4c
- Cleanup: Tweak variable name in extrude node rBd5bcc1ef16bd
- Cleanup: Resolve unused variable warnings in modifier rBb000fc308b96
- D16732: Cleanup: Replace old Mesh edge split implementation
Review
Requested changes
D16625: BLI: Refactor matrix types & functions to use templatesRequested changes
D16545: USD Export - New Curves/Hair SupportAccepted, committed
D16550: Autofill for Attribute Convert OperatorsAccepted
D16602: Fix T102740: Don't insert the group into itselfAccepted, committed
D15608: UI: fix several labels and tooltipsAccepted, committed
D16631: Geometry Node: Change output socket name to Instances: Consistent tooltipsAccepted, committed
D16644: Geometry Node: Input Image nodeAccepted, committed
D16716: UI: fix more labels and tooltipsAccepted, committed
D16550: Autofill for Attribute Convert OperatorsAccepted, committed
D16699: Cleanup: Use topology cache of group output nodeAccepted, committed
D16730: Geometry Node: Blur Attribute: Add preferred domain based on Value inputRequested changes
D16735: Geometry Node: Input Image gather link searchRequested changes
D16743: Geometry Nodes: Add selection field to realize instancesAccepted
D16704: Fix T102966: Curves editmode selection drawing not stable / flickeringAccepted
D16676: Fix: UI: broken texpaintslot/color attributes/attributes name filteringAccepted
D16691: Docs: Geometry Node: Sample Index node: Tip for sampling point domain from specific componentAccepted
D16749: Cleanup: replace "UV's" by "UVs"Accepted
D16719: Fix T103001: Width of some compositor nodes is incorrectAccepted
D16632: Docs: Geometry Node: Collection Info: Consistent output socket nameCommented
D16518: BLI_timeit: tabulate benchmarkCommented
D16471: Geometry Node: Edge Rings nodeCommented
D15479: Geometry Nodes: Add Selections to Curve to Mesh NodeRequested changes
D13029: Geometry Nodes: Trace Image Node (WIP)Requested changes
D9621: Configurable rotation angle incrementsRequested changes
D10198: Migrate Movie Clip Editor to new tool systemClosed
D8954: Add Bisect ModifierClosed
D16435: Geometry Nodes: Group Face by Edge NodeClosed
D16688: Geometry Node: Dynamic label for Switch nodeClosed
D11791: Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide NodeClosed
D11907: Geometry Nodes: Remesh VoxelClosed
D11905: Geometry Nodes: Remesh BlocksClosed
D11575: Geometry Nodes: Solidify NodeClosed
D11541: Geometry Nodes: Add a minimum distance attribute to the Attribute Proximity NodeClosed
D9969: Geometry Nodes: Mirror nodeClosed
D9865: UI: Popover triangle alignment tweaksClosed
D8943: Boolean Modifier: operand display operators and render/visibility settingsClosed
D2397: Use prev/next naming for media keysClosed
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 rB90ea1b76434f
- Dual Mesh: Avoid transferring position attribute twice rB5758d114c1a6
- Subdiv: Avoid repeatedly accessing mesh arrays rB653e3e2689a4
- Multires: Avoid retriving mesh arrays for every element rBbaba5d22141d
- Mesh: Avoid retrieving edge and loop arrays repeatedly rBbcabd04e3242
- Line Art: Use local spans for mesh arrays rB0940719b5ab3
Tests
- Geometry Nodes: Add scene and node benchmark files rBL63111
- Geometry Nodes: Add basic performance tests for a few nodes rBL63109
Fixes
- Fix T99592: Exact Boolean: Skip empty materials, add index-based option rBbbb389589a05
- Fix: Various mishandling of node identifiers and vector rBab4926bcffee
- Fix: Node Editor: Hide compoitor-specific menu items rBce16fa0f4c46
- Fix: Reversed attribute is_internal RNA property rB99dc90accc2e
- Fix: Mishandled creases in Cycles adaptive subdivision rB1bacd09abb60
- Fix T102861: Store named attribute warning with empty geometry rBb7d27ce91408
- Fix: Node sorting broken after node identifier commit rB587b213fe168
- Fix T102895: Grammar in apply scale operator rBe78cd275657b
- Fix: Assert in subdivide curves node after span slicing change rB3cebc58936bc
- Fix T102772: Propagate edge creases in subdivision surface modifier rB745851e26b9f
- Fix T102804: Click & Drag on toggles no longer possible rB6fdddae2b05a
- Fix T102827: 3D View header layout broken after C++ conversion rB01a38c2be928
Cleanup
- Cleanup: Use Span to iterate over nodes instead of ListBase rB5b8e2ebd97bd
- Cleanup: Use spans and lambdas for mesh normal calculation rB7e7c6bc46896
- Cleanup: Use new node identifiers when copying tree rB4d5e8b7caa3c
- Cleanup: Remove "done" variable from node runtime rB2155bdd500fd
- Cleanup: Remove node tree runtime fields rB7cdcb76815bb
- Cleanup: Remove useless comments in node.cc rB31b3b07ad77a
- Cleanup: Remove unused node socket cache handling rBdb1728096ab6
- Cleanup: Move dual mesh topology map to blenkernel rBd96859c5b111
- Cleanup: Remove unnecessary list clearing in node tree reading rBb768a2bf2ffc
- Cleanup: Remove unnecessary use of deprecated DNA define rB0b13e7ce0fd4
- Cleanup: Remove unnecessary BMesh unique pointer in OBJ code rB507b724056dd
- Cleanup: Remove unused mesh array variables and arguments rB70041ced144f
- Cleanup: Correct comment in hash description rBb78b6e3cd71b
- Cleanup: Grammar in BMesh mesh conversion comment rB1c26341464bd
- Cleanup: Unused variable, RNA description warning rB7151c2dc3e1b
- Cleanup: Use spans for voxel remesh mesh data rB6e26d0645ef6
- Cleanup: Pass spans by value in cone mesh primitive rB7a9fce28c03b
Review
Commented
D14365: Mesh: Move UV layers to generic attributesAccepted
D16653: BLI: Add atomic disjoint set data structureAccepted
D13952: Geometry Nodes: Add Smooth Attribute nodeRequested changes
D16625: BLI: Refactor Matrix C++ API to be fully templatedCommented
D16631: Geometry Node: Change output socket name to Instances: Consistent tooltipsRequested changes
D16539: Geometry Nodes: Operator to convert input node to group input socketAccepted
D16676: Fix: UI: broken texpaintslot/color attributes/attributes name filteringCommented
D16633: [WIP] Add initial version of Node Sections to keep sockets more manageableCommented
D16602: Fix T102740: Don't insert the group into itselfCommented
D13029: Geometry Nodes: Trace Image Node (WIP)Commented
D16227: Geometry Nodes: Select Linked NodeAccepted
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.
Changes / Features
- Geometry Nodes: Modify existing mesh in split edges node rB3f5dfbf68142
- BLI: Remove clamping from span slicing rBa5e7657ceeb6
- BLI: Follow up and fix recent span slicing change rB584089879c57
- Nodes: Remove "level" building pass on update rBbe1745425cad
- Nodes: Use topology cache for node exec node list rBb3910374242d
- Geometry Nodes: Add "Exists" output to Named Attribute input node rB0d3a33e45eb3
- Geometry Nodes: Parallelize bounds compuation in points to volume rB772696a1a589
- D16567: Nodes: Avoid updating topology cache when changing properties
Tests
- Tests: Automated geometry nodes benchmark rB3a41e0f611bd
- Geometry Nodes benchmark: Add split edges test files rBL63107
Fixes
- Fix T102522: Geometry nodes boolean doesent respect material index rBb53c4fa8daa1
- Fix T102700: Viewer node missing check for empty geometry component rB41ae2c6438f7
- Fix T102420: Outdated mesh edge crease API used in FBX import rBA946b62da3f9
- Fix T102670: Crash after deleting attribute in edit mode rB461cb550cc07
- Fix T102752: Missing default radius when joining point clouds rB680a0fb23be0
- Fix: Assert, invisible instances with mixed instancing types rB0e6d893d07f9
- Fix: Use after free when removing attribute rB3f294a37f575
- Fix: Missing caches in curves bounds evaluation rB38cf48f62b1a
- Fix: Hide "Squeeze Value" node from node search rBed8fee16acea
Cleanup
- Cleanup: Use array_utils to copy evaluated field array rB14d0b57be7e0
- Cleanup: Remove unused math min max utility rB8e535ee9b437
- Cleanup: Move poly normal calculation to mesh_normals.cc rBc1eeb38f7c82
- Cleanup: Use const arguments for custom normals rB8990983b07c7
- Cleanup: Group deprecated mesh DNA fields, improve comments rB4a0e19e60869
- Cleanup: Decrease variable scope, change names in BMesh layer handling rB41f58fadaef2
- Cleanup: Remove .blend1 files committed mistakenly rBL63106
- Cleanup: Remove unnecessary includes rB248ee6270b27
- Cleanup: Avoid using macros to refer to theme global variables rBed6e1381dc28
- Cleanup: Move interface_intern.hh to C++ rB4ecc7cf14a30
- Cleanup: Move interface eyedroppers directory to C++ rBe47c75aa6e78
- Cleanup: Move interface_handlers.c to C++ rB136ea84d9a37
- Cleanup: Move six more interface files to C++ rB162f0dcb2ff3
- Cleanup: Move four interface files to C++ rBafd16c487d59
Review
Accepted
D16612: Nodes: Move node registration to nodes module.Commented
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeCommented
D16551: RNA: Use C++ for sequencer propertiesCommented
D16586: Cleanup: Pass vec_base types by value in its class methodsAccepted, committed
D16396: Geometry Nodes: Rename Transform node to Transform GeometryAccepted, committed
D16548: Cleanup: Integer types, references in geometry node image texture nodeCommented
D16614: Geometry Node: Smart Scene Time update relationsAccepted, committed
D16394: Geometry Node: Collection Info: Change output socket name to InstancesCommented
D16397: Image to Points geometry nodeClosed
D16582: Docs: Sample UV Surface in Mesh pageClosed
D9949: Geometry Nodes: Yuksel's sample elimination algorithm
Tracker
- Investigated: 21
- Confirmed: 1
- Resolved: 7
- Archived: 6
- Known Issue: 1
Next Week
I'll make some progress on simulation and fix some final bugs for 3.4.
November 14 - November 20
This week I looked into performance improvements with mesh caches, looked into some performance improvements in various edge cases of sculpt mode, and did the usual code review and bug fixing.
Changes / Features
- Geometry: Cache bounds min and max, share between data-blocks rBe8f4010611e7
- Mesh: Move loose edge flag to a separate cache rB1ea169d90e39
- Mesh: Use shared cache for derived triangulation rB511ac66dabf1
- Mesh: Avoid calculating normals when building BVH tree rB276d7f7c1955
- Mesh: Don't tag normals and triangluation dirty when translating rB1aa851e9395e
- Sculpt: Avoid retrieving vertices attribute when flushing positions rB1677ddb7eeae
- Sculpt: Remove some normal calculation with deformed sculpting rBbf0180d2060b
- Nodes: Replace implementation of select next/prev type operator rB984edb2c4e6a
- Nodes: Simplify view panning when selecting node rB97e0cc41ca10
- Curves: Add descriptions for normal mode RNA enum rB1c0cd5047204
- UI: Simplify description for geometry node socket rBb3b00be34edf
- D16530: Mesh: Use shared cache for normals
Tests
- Geometry Nodes: Add test files for split edges update rBL63102
Fixes
- Fix T102502: Collada import sets incorrect material indices rBdb94d030bca9
- Fix T102611: Unable to change file output node sockets from python rBc0f33814c13c
- Fix: Crash when writing mesh after previous commit rB05f93b58d3f9
- Fix T102365: Wireframe skips edges after recent cleanup rB145839aa42f7
- Fix: Crash when deleting node rBab819517fc86
- Fix: Missing bounding box dirty tag when clearing mesh geometry rB9a09adb7aff8
- Fix: Build error on MSVC with mismatched struct/class keywords rB192cd76b7ca2
- Fix: Missing clearing of mesh triangulation data rB801451c45958
- Fix T102537: Curve subdivide mishandles single point curves rBf7e0317b9625
Cleanup
- Cleanup: Simplify freeing and clearing mesh runtime data rBe412fe17986a
- Cleanup: Use C++ BitVector instead of BLI_bitmap for BVH utils rB1aaf4ce0a401
- Cleanup: Reduce indentation and variable scope in BVH utils rBcc12d2a5a0ba
- Cleanup: Allow using C++ features in BMesh header functions rB6192695a9469
- Cleanup: Resolve unused variable warning in draw module rBe3ee9139323b
- Cleanup: BVH utils: Remove print, use spans instead of pointers rB6873aabf93e7
- Cleanup: Improve comment about copying mesh shared caches rB12d7994a4811
- Cleanup: Move bmesh_iterators.c to C++ rB28dc3b0b84ec
- Cleanup: Remove unused node operator property rB012895e8a1e2
- Cleanup: Remove unused boolean in node select function rB47c92bf8de59
- Cleanup: Split UV sample geometry node into two functions rB21adf2ec89ae
- Cleanup: Sort includes in mesh header rBc83e33b6615f
- Cleanup: Remove unnecessary clearing of mesh runtime data rBc8c14d168141
- Cleanup: Remove unnecessary dirty normal tags rB90fb1cc4e69c
- Cleanup: Remove DerivedMesh use in UV unwrapping rBb2d9716b4a17
- Cleanup: Remove unnecessary using keyword and namespace rB8fa69dafdd2e
- Cleanup: Remove unused node clipboard type handling rBc481549870ee
- Cleanup: Remove unnecessary mesh normals debugging function rB25b3515324ab
- Cleanup: Use simpler check for Bezier curves rBf5128f219f3f
- Cleanup: Slightly improve mesh normals and runtime comments rB6cf4999e5008
- Cleanup: Improve curves comments rB845a3573f546
- Cleanup: Don't set mesh normals directly for metaballs rB89ca29821043
Review
Accepted, committed
D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split nodeAccepted, committed
D16503: Fixes versioning problem with cyclic bezier NURBSAccepted, committed
D16488: Partial Fix T102428: Invertible Bezier curve trim for endpoints within the same segmentAccepted, committed
D15042: Geometry Node: Image InfoAccepted, committed
D16316: Nodes: "Exists" boolean for the Named Attribute Input nodeCommented
D15624: (WIP) Geometry Node: Curve IntersectionsAccepted, committed
D16349: Allow pasting nodes between editor typesRequested changes
D16529: DRW: Recreate method to calculate edges factorCommented
D16545: [Work In Progress] USD Export - New Curves/Hair SupportCommented
D16009: Geometry node: Add a point selection input to Fillet Curve NodeCommented
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeCommented
D16471: Geometry Node: Edge Rings nodeRequested changes, accepted
D16511: Sculpt Mode: ResolveShift R
shortcut conflictsAccepted
D16216: UI: Refactor Node Context MenuAccepted
D16555: Fix T102520: Positioning of nodes added via searchAccepted
D16552: Image Info docs pageAccepted
D16274: USD CI TestsAccepted
D16563: Fix T102620: Display dynamic socket label in uiTemplateNodeViewAccepted
D16224: Sculpt: Standardize face set undo steps, optimize memory usageAccepted
D16463: Fix T99125: Curve mapping widget removes all vector pointsCommented
D16456: Geometry Nodes: Add Select Edge Ring NodeCommented
D16516: Geometry Nodes: Add Tile Count to Image Info NodeCommented
D16533: Fix T100904: Shader Nodes: Optimize-out inactive mix branchesCommented
D16548: Cleanup: Geometry Node: Image TextureCommented
D16508: Realtime Compositor: Warn about unsupported setupsCommented
D16396: Geometry Nodes: Rename Transform node to Transform GeometryRequested changes
D16441: Cleanup: Migrate UV pack geometry node to updated API.
Tracker
- Investigated: 13
- Confirmed: 2
- Resolved: 6
- Duplicate: 2
Next Week
Next week I'll finish up some of the patches I worked on this week, and start experimenting with implementing simulation caching.
November 7 - November 13
This week I worked on bug fixing and a bunch of cleanups. I was involved in two new design tasks this week too:
- T102359: Struct of Arrays Refactor for Mesh Face Corners
- T102289: Image Texture sampling by int X and Y pixel indices
Changes / Features
- Geometry Nodes: Add preferred domain to many field inputs rBd80d7b8f70d8
Fixes
- Fix T100706: Object instances with different geometry type invisible rBe508de041712
- Fix T102358: Sample curve node all curves factor mode incorrect rBda41f11a290d
- Fix T102003: Spline parameter length wrong for NURBS rB66dda2b902f0
- Fix T101972: Crash converting 1 or 2 point NURBS curve to Bezier rBbfc7653490f6, rBL63092
- Fix: Failing instance visibility test after recent commit rB864af51d6a88
- Fix T102404: Behavior change in CustomData API rBff7645c5edd2
- D16451: Fix T102365: Wireframe skips edges after recent cleanup
Cleanup
- Cleanup: Simplify handling of loop to poly map in normal calculation rB1a8516163fa9
- Cleanup: Clarify and deduplicate attribute convert implementation rB34f4646786da
- Cleanup: Miscellaneous cleanups to trim curves node rB7395062480a6
- Cleanup: Remove unnecessary node type registraction functions rB4ec5a8cbc233
- Cleanup: Decrease variable scope in mesh loop normal calculation rB78bfb74743e2
- Cleanup: Disable mesh normal debug time printing rBdc513a0af8c0
- Cleanup: Remove unnecessary struct keywords rBd0522d4ef15f
- Cleanup: Make loop normal calculation function static rB7c519aa5d873
- Cleanup: Use spans for loop normal calculation input data rBd9e5a3e6ade0
- Cleanup: Use simpler timers for mesh normals debug timing rBd63ada602d37
- Cleanup: Rename curves sculpt selection variable rB03ccf37162d3
- Cleanup: Improve curves sculpt code section names rBa304dfdb6917
- Cleanup: Use string argument for attribute API function rBca1642cd0c5c
- Cleanup: Move lineart_cpu.c to C++ rB3eb2bc2c3fd1
- Cleanup: Move sculpt.c to C++ rB598bb9065c87
- Cleanup: Move mesh_remap.c to C++ rB5fe146e505d4
- Cleanup: Move cloth.c to C++ rB115cf5ef9885
- D16487: Cleanup: Remove DerivedMesh use in UV unwrapping
Review
Requested changes
D13952: Geometry Nodes: Add Smooth Attribute nodeRequested changes
D15624: (WIP) Geometry Node: Curve IntersectionsRequested changes
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeAccepted, committed
D16161: Selection input for curve trim node and behavior correctionsAccepted
D16419: BLI: New basic CacheMutex.Commented
D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split nodeAccepted
D16406: Fix T102318: crash smoothing vertex weights in editmodeRequested changes
D16441: Cleanup: Migrate UV pack geometry node to updated API.Accepted, committed
D15596: Convert Color Attribute operatorAccepted
D16440: Fix T102385: Set frame node active after joining nodesAccepted
D15042: Geometry Node: Image InfoAccepted
D16479: BLI: Improve CPPType system.Commented
D16429: Texture Nodes: Refactor procedural node typeAccepted
D16472: BLI_disjoint_set: Use template and constAccepted
D16417: Geometry Nodes: Improve alignment of exposed properties in the modifierAccepted
D16305: Fix T100988: Flickering when using sculpt brush in drag dot modeAccepted
D16325: Geometry Node: Raycast correct field dependenciesAccepted
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 rBcf985180551d
- Geometry Nodes: Add index and value inputs to sample curve node rB5f7ca5462d31
- OBJ Export: Remove edge recalculation rB455d195d5504, rBL63090
- Nodes: Improve socket node lookup performance rBc39eb09ae587
- Geometry Nodes: Use attribute API in deform curves on surface node rB6a3af76fbe92
- D16388: Mesh: Mapping performance experiment (WIP)
Fixes
- Fix: Missing initialization curves bounds in set origin operator rBa8865f340254
- Fix: Broken debug build after recent cleanup commit rB6ef677821578
- Fix: Crash adding rest positions to empty mesh rB0fc958a17419
Cleanup
- Cleanup: Nodes: Use const arguments, avoid recursive iteration rB3852094b35ea
- Cleanup: Mesh: Remove redundant edge render flag rB10131a6f6238
- Cleanup: Use Vector in group input/output node update functions rBc6725dc5079d
- Cleanup: Remove unused node function rB8b29d6cd75c9
- Cleanup: Remove unnecessary node type registraction functions rB4ec5a8cbc233
- Cleanup: OBJ: Simplify access to loose edges rB23dafa4ad67d
- Cleanup: Move legacy mesh conversions to proper file rB4a313b82529b
- Cleanup: Move function to legacy mesh conversion file rB5060f26f5009
- Cleanup: Remove redundant assignment of loose edge flag rBe673f3ba2442
- Cleanup: Use mesh API functions rB4b200b491c6b
Review
Requested changes
D16009: Geometry node: Add a point selection input to Fillet Curve NodeCommented
D16399: Geometry Nodes: Use Mesh instead of Bmesh in edge split nodeRequested changes
D16349: Allow pasting nodes between editor typesCommented
D16244: Node Editor: Controlled node link swappingRequested changes
D16331: Fix T102027: Add set origin support for pointcloud objectsCommented
D16316: Nodes: "Exists" boolean for the Named Attribute Input nodeCommented
D16311: Fix T101979: Edge Angle Node returns wrong signCommented
D16397: Image to Points geometry nodeRequested changes
D16325: Geometry Node: Raycast correct field dependenciesCommented
D16274: USD CI TestsCommitted
D15802: Reuse input sockets when creating new node groupsAccepted
D16386: Fix Curves Smooth modifier appears to be able to act on control pointsAccepted
D16367: Refactor: Rename Object->imat to Object->world_to_object
Tracker
- Investigated: 9
- Archived: 3
Next Week
A normal week again. I expect we'll talk about prioritizing the next steps of the project too.
October 17 - October 21
This week I spent time bug fixing, and I looked into updating some of my old patches for refactors. Didn't commit too much work besides bug fixes. Though it was fun to make one sculpt operator 4000x faster and the Blender Binary 173KB smaller. And I made one design task:
- T101948: Consistent socket name for Collection Info node
Changes / Features
- Sculpt: Improve performance of face set creation from selection rBda4bd24c3e61
- Geometry Nodes: Use common utility for copying attribute data rBa803dbe7ed80
- Sculpt: Remove face sets from default cube rBe8291f4504d3
Fixes
- Fix T101926: Curves: Remove type-specific attributes when deleting rBd046c8c9d756
- Fix: USD & Alembic importers might not initialize material indices rB97f4e076c7fc
- Fix T101883: Issue applying modifier to mesh with shape keys rBbe32882e1c40
- Fix: Geometry Nodes: Memory leak when deleting instances rBc14b11374647
- Fix: Sample nearest surface node crash with empty mesh rB91ecf47b2c6b
- Fix T101872: Curves sculpt deform node crash with changed curve count rB85875455b917
- Fix T101882: Division by zero in mesh topology nodes rB161aa5e0d039
- Fix T101871: Realize instances node can skip material indices rB728451f01ad5, rBL63063
Cleanup
- Cleanup: Remove unused grease pencil / RNA includes rB1a11353d341a
- Cleanup: Move versioning_defaults.c to C++ rB23ea72f05102
Review
Requested changes
D15624: (WIP) Geometry Node: Curve IntersectionsRequested changes
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeRequested changes
D16281: [WIP] Curves editmode: edit points are drawn from evaluated curvesCommented
D16161: Selection input for curve trim node and behavior correctionsCommented
D16274: USD CI TestsAccepted
D16316: Nodes: "Exists" boolean for the Named Attribute Input nodeAccepted
D16304: Nodes: Restrict Python API on built-in nodes.Commented
D16216: UI: Refactor Node Context MenuAccepted
D16298: Fix T101922: transforming surface points misses redrawAccepted
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:
- T101778: Node group operators
Changes / Features
- Point Cloud: Support applying modifiers rBb3e6a2888a2d
- Cycles: Use 0.01m as default point cloud radius rBa6db2c22b11e
- Nodes: Add "Legacy" to legacy node UI names, skip in search rBa1bc05b200a6
- Curves: Multithread position vertex buffer extraction rB98aa7276c8e5
- Mesh: Move runtime data out of DNA rBc34c6d3e25f2
- Draw: Add missing TBB define to draw module rB6c4210b97bab
- Build: Add TBB define to BMesh module rB1703a8fb3339
- D16204: Geometry: Cache bounds min and max, share between data-blocks
- D16249: BMesh: Multithread BMesh to evaluated Mesh conversion
- D16230: Nodes: Allow skipping node attachment after dragging
Fixes
- Fix: Attribute layers can be skipped in Mesh to BMesh conversion rB6f190c669f30
- Fix T101711: Curve to points node sometimes skips initializing radius rB0d25169dc518
- Fix T101746: Node copy and paste changes multi-input socket order rB6c4b72b13574
- Fix T101773: Mirror Vertex Weights operator broken rBa35d5378addf
- Fix: Missing part of previous BMesh bug fix rB2111fab88a24
- Fix: Crash updating draw cache of original curves data rBafd30e5e3a77
- Fix: Curves sculpt adding resets attribute values rB1fbd300adb9a
- D16224: Sculpt: Standardize face set undo steps, optimize memory usage
Cleanup
- Cleanup: Simplify node insert after drag code rB0f60872461e1
- Cleanup: Remove macro usage in vertex group mirror operator rB7e4786503c0d
- Cleanup: Reduce variable scope in vertex group mirror operator rBe38377d690da
- Cleanup: Use std::mutex for mesh runtime mutexes rBc67e5628d22f
- Cleanup: Use const vertex pointer argument rBaa5ce2fcc1e3
- Cleanup: Convert two nodes files to C++ rB89bd261d9e61
- Cleanup: Move draw_cache_impl_volume.c to C++ rB7636fc06ea30
- Cleanup: Small changes to curves draw cache rBe8eed82bd54b
- Cleanup: Decrease variable scope in UI region popup code rB605f87256ec7
- Cleanup: Use correct blenkernel namespace for mesh functions rBa481eb5576fc
- Cleanup: Remove link drag search operations for socket templates rBf5e6d4e4b01c
- Cleanup: Reduce indentation in node attach operator rB37d83f0095da
- Cleanup: Comment formatting in BMesh operator rBa80b1adc10c5
- Cleanup: Remove unused spreadsheet geometry cache item rB37461b8bdd7d
Review
Requested changes
D16208: Nodes: Show nested node-group in the headerRequested changes
D16009: Geometry node: Add a point selection input to Fillet Curve NodeRequested changes
D16161: Selection input for curve trim node and behavior correctionsCommented
D16216: UI: Refactor Node Context MenuCommented
D16203: T101705: Don't create a lazy socket for dangling connectionsAccepted
D16228: Nodes: Change Mix node link drag weightingAccepted
D16209: Node: Add blend modes to Mix node link drag searchCommented
D16239: Fix T101746: Create copible links by order in multi socketRequested changes, accepted
D16210: Nodes: Duplicate Linked operator + User Preference option for Node TreeRequested changes
D15387: BKE: Attribute type name identifierAccepted
D16170: Nodes: Link to Output operatorRequested changes
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeRequested 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 NodeRequested changes
D15019: Geometry Nodes: Add Instance Dimensions Input NodeAccepted
D16153: Fix: Muted curves connect to the Fac socketRequested changes
D15522: Geometry Nodes: UV sphere: Change pos calc and parallelizeRequested changes
D12199: Geometry Nodes: Add Pick mode to Switch node (WIP)Requested changes
D12177: Geometry Nodes: Curve Connect Splines NodeRequested changes
D13298: NURBS surface knot insert operatorRequested changes
D15715: Nodes: Add subtype selection to socket editingRequested changes
D14042: Move solidify code to geometry moduleAccepted
D15956: Hair Curves: make the "surface_uv_map" a searchable dropdownCommented
D14935: Add Option To Skip Temporary LayersCommented
D16040: UV editor: Improve Ui alignment in overlays panelClosed
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 GeometrySetClosed
D12108: Geometry Nodes: Mesh InsetClosed
D11984: Fix unexpected twist and asymmetry in curve using tangent modeClosed
D13431: Nodes: Pointer from socket to node for faster lookupsClosed
D11906: Build lookup table to help parallelize normal accumulation after the deformation process
Tracker
- Investigated: 16
- Duplicate: 1
- Resolved: 5
- Archived: 2
Next Week
Bug fixing for 3.4, module meeting, finish the node add menu asset integration, more code review.
October 3 - October 9
This week I almost finished adding node assets to the geometry nodes add menu, worked on bug fixes, and spend some extra time working on some performance projects.
I started work on improving bounding box caching (T96968). I'm trying to make the project more manageable by breaking it into smaller steps.
I also made two tasks about mesh naming: the first a general improvement, the second in order to move forward with the "position as a generic attribute" patch.
- T101689: Improve consistency of mesh face naming
- T101688: Mesh vertex internal naming (especially position data)
Changes / Features
- BLI: Unroll vector loops for better performance on GCC rBd2f0cb674572
- Geometry Nodes: Change order of outputs in topology nodes rB248def7e4806
- Geometry Nodes: Rename Control Point Neighbors Node rBc3b6e372542f
- Geometry Nodes: Add soft min for points node radius input rBf9a10e7ed039
- UI: Avoid unnecessary label in set curve normal node rB9f8b0b83a9c5
- D16135: Nodes: Add node group assets in add menu
- D16147: Geometry Nodes: Add curve index and custom value to sample curve node
- D16204: Geometry: Cache bounds for curves and points, share between data-blocks
- D16180: Mesh: Move runtime data out of DNA
Fixes
- Fix T101583: Issues applying modifier to mesh with shape keys rB810251048236
- Fix T101424: Empty group node added to node add search rBf63179cc9fef
- Fix: Properly free non-trivial node editor runtime type rB65c8c8367929
- Fix: Use after free in geometry node group logger rB46c40d7fa1ec
- Fix: Crash when reininitializing empty generic array rBfbbd7f0d5cc9
- Fix: Incorrect field status in offset point in curve node rB99cbaced3bfc
- Fix: File menu broken after recent commit rBa096248d1253
- Fix: Crash versioning transfer node with animation data rBd981418c8ce0
- Fix T101610: UV Sphere missing from geometry nodes menu rB424df9ea8712
- Fix: Bump subversion after forward compatibility breakage rB31e89ee5b9d4
- Fix: UI: Warning for description with period at end rBbc0066668324
- D16187: Boolean: Avoid transferring empty material slots
Cleanup
- Cleanup: replace UNUSED macro with commented args in C++ code rB97746129d587
- Cleanup: Fix outdated mesh data comments rB577a79b48521
- Cleanup: Avoid inconsistent naming in mesh topology API rBb04b87b32244
- Cleanup: Use helper function for previous mesh loop rBa716e696584e
- Cleanup: Clang tidy rB548a2cbe06b2
- Cleanup: Remove unnecessary MOD_nodes.h includes rB14de57713d76
- Cleanup: Remove unused includes rB6be8c6b3b131
- Cleanup: Fix sign conversion warning in BMesh log rBd42f882343c7
- Cleanup: Move eight modifier files to C++ rB406a98aff893
- Cleanup: Move subdiv_ccg.c to C++ rB79b1e267ef9a
- Cleanup: Move editmesh_undo.c to C++ rB349091ce00d5
- Cleanup: Move shrinkwrap.c to C++ rBd4f77c22661c
- Cleanup: Move subdiv_modifier.c to C++ rBeae3fa8730df
- Cleanup: Move multires.c to C++ rB0f224ceedba8
Review
Accepted, committed
D16054: BKE: Mesh attribute adapt domain improveAccepted, committed
D16050: Retains active NURBS curve after point deletionAccepted
D16137: Geometry Nodes: Separate Instances from InstancesComponent.Commented
D16133: Geometry Nodes: New Relax Face Sets nodeCommented
D16161: Selection input for curve trim node and behavior correctionsAccepted
D16103: USD Import: Custom Data Update for ColorsAccepted
D16108: USD Export: Custom Data Update.Accepted
D16163: Fix T101628: Correct frame node intersection in add reroute operatorRequested changes
D15596: Convert Color Attribute operatorAccepted
D16114: Attribute Node: access geometry node instance attributes.Accepted
D16159: I18n: disambiguate New in file menu after previous mistakeAccepted
D16118: Geometry Nodes: Set Curve NormalCommented
D16145: Sculpt: Auto-masking UI improvementsCommented
D15802: Reuse input sockets when creating new node groups
Tracker
- Reported T101599: Node group timings aren't displayed for node groups
- Investigated: 11
- Duplicate: 1
- Resolved: 5
- Archived: 1
Next Week
Hopefully I'll get to the point of committing the node editor add menu asset integration. Other than that, I'd like to make progress on some of the changes with bounding boxes, and I also started some experimental changes to mesh data extraction for drawing that I'd like to finish.
September 26 - October 2
This week I worked more on mesh and curve topology nodes, did a bunch of code review, and did a fair amount of the work for adding node group assets to the geometry nodes add menu.
Changes / Features
- Geometry Nodes: Curve and mesh topology access nodes rB482d431bb673
- Nodes: Use plain menus for geometry nodes add menu rB837144b4577f
- Geometry Nodes: Miscellaneous changes in control point neighbors node rBc15a76152454
- Mesh: Add C++ implementaiton of topology mappings rB25533dbe219f
- D16105: Geometry Nodes: Add index input to Edge Vertices node
Fixes
- Fix: Incorrect handling for crease layers rB57ea827bfb28
- Fix: Viewer node overlay alpha broken on NVidia GPUs rBc007e84e9ec6
- Scew Modifier: Remove eager normal calculation rBdcd909122f9a
- Fix T101348: Sculpt smooth brush artifacts with hidden faces rBf2bad0e49f8c
- Fix T101118, T101471: Crash with bevel weight in solidify modifier rB3059c0998a3d
- Fix T101398: Transfer Attribute node still defined in menu rB0084b8635f75
- Fix: Assert in legacy mesh conversion rBaa58f58e46c3
- Fix: Order of node mixins in custom nodes python template rB912a1e2820cc
Cleanup
- Cleanup: Deduplicate logic in CustomData access functions rBff353842bdbc
- Cleanup: Use variable and const for sculpt mesh vertex to poly maps rBb6ee599d9205
- Cleanup: Use signed integers for mesh vertex indices rB2f0c40c7a270
- Cleanup: Unused variable warning with path guiding turned off rBb145cc9d361e
- Cleanup: Remove unused BMesh function rB57620af33c3d
- Cleanup: Remove more unused CustomData API functions rBa4ff106c5864
- Cleanup: Typo in forward declaration rBa790873d2a81
- Cleanup: Naming in edge vertices node rBc938447ee261
- Cleanup: Move draw_manager_data.cc to C++ rB42eda155df3b
- Cleanup: Move files that use mesh runtime data to C++ rB1c1dc5f8440d, rBe0a261c653cb
- Cleanup: Move object_update.c to C++ rB7db79feecd65
- Cleanup: Move modifier.c to C++ rB0ff485b6bac2
- Cleanup: Move three modifier files to C++ rB15e6673ccdc3
Review
Commented
D14970: 3D Texturing: Fix seam bleeding.Accepted
D15954: Geometry Nodes: Viewport preview.Accepted
D13373: Geometry Nodes: Control Point Neighbor NodeCommented
D16066: Geometry Nodes: Relaxed Catmull-Rom Trim (improvement suggestion)Accepted
D16092: Fix T101339: Animation on nodegroups breaks when socket is moved up/downAccepted
D16079: Fix T101393: Vertex Crease operator does not create vertex crease layerRequested 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 deletionAccepted
D11592: Alembic/USD: use geometry sets to import dataAccepted
D11591: Alembic: import arbitrary attributesCommented
D15996: I18n: fix geometry nodes field tooltipsCommented
D16054: BKE: Mesh attribute adapt domain improveCommented
D16103: USD Import: Fixed vertex colors import for Color3f.Accepted, committed
D16061: Fix T101361: Check if node is hiddenAccepted
D16093: Fix missing Outliner updates when adding nodetreesAccepted
D15440: Geometry Nodes: New uv map based attribute transfer mode.Accepted
D16077: Fix T101341: make nodegroups active input/output non-animatableAbandoned
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.
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 rBbdb57541475f
- Geometry Nodes: Split transfer attribute node rBdedc679ecabb
- Mesh: Move selection flags to generic attributes rB12becbf0dffe, rBL63036
- Mesh: Move edge crease out of MEdge rBa8a454287a27, rBL63035
- Mesh: Move sculpt face sets to a generic attribute rB060a53414194, rBL63034
- Mesh: Use cached looptris in draw cache extraction rB0d7d8c73cf5c
- Curves: Use early out when apapting domain of single valuerB535f50e5a6a2
- Geometry Nodes: Add Self Object Node rBdd5131bd700c
- Attributes: Allow calling "finish" on empty accessors rB91dd29fd45d1
- Attributes: Correct implementation of typed "write_only" method rB600c069e0ef5
- 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 rB1b46d57f67c7
- Fix T101249: Node groups don't show in node search rB7e980f2b8cb9
- Fix: Assert calculating mesh triangulation rB2438f76d6f28
- Fix: Missing DNA rename for recent mesh refactor rB2d8eadacf9fd, rBL63037
- Fix: Crash with empty vertex group in mask modifier rBd12f0d3f7032
- Fix: BMesh to Mesh conversion does not create all necessary layers rB01ed08690a3f
- Mesh: Avoid uninitialized values when converting BMesh to Mesh rBa82e52102b0f
- Fix: Use correct node group for add node search rB77dcfac8a38d
- Fix: Add missing drag link search item for store named attribute node rBe9344d329ffa
- Fix T101262: Crash in spreadsheet selection filter with empty domain rB20dc8393192f
- Fix T101208: Missing original index handling in extrude node rB90999a06948a
- Fix T101188: Fluid modifier doesn't work rB6f15141f2731
- D16036: Fix T101235: File with no mesh poly or loop layers crashes (option 2)
- D16035: Fix T101235: File with no mesh poly or loop layers crashes (option 1)
Cleanup
- Cleanup: Remove unused data transfer function rBce63fea080ce
- Cleanup: Grammar fix in lazy function rB35375380d73b
- Cleanup: Improve comment for curve component legacy curves rBbe863506b842
- Cleanup: Improve consistency when nodes run without OpenVDB rB1b4cf3af4b17
- Cleanup: Remove BKE_ prefix for local functions rBcbbed90486c6
- Cleanup: Miscellaneous cleanup in distribute points in volume node rBc1f622e63e38
- Cleanup: Use const arguments for node group poll function rB3676d6b88d0a
- Cleanup: Move versioning_300.c to C++ rB862de9187f1b
- Cleanup: Move mesh_mapping.c to C++ rB3d5e0c8b9dc1
Review
Accepted, committed
D15375: Geometry Nodes: Distribute Points in VolumeRequested changes
D15440: Geometry Nodes: New uv map based attribute transfer mode (WIP).Commented
D15996: I18n: fix geometry nodes field tooltipsRequested changes
D11592: Alembic/USD: use geometry sets to import dataRequested changes
D11591: Alembic: import arbitrary attributesAccepted
D16025: Fix T100846: Bump blender file min version for forward compatibility warningAccepted, committed
D16013: Nodes: Fix GroupInput and GroupOutput showing in Add MenuAccepted
D15976: Geometry Nodes: Lazy threading.Accepted
D15802: Reuse input sockets when creating new node groupsAccepted
D16023: Fix race condition in memory freeing in edit mesh wrapper to meshAccepted
D16021: Curves editmode: show point selectionAccepted
D16041: Node Editor: Adjust node link curvingCommented
D16003: Geometry Node: Convert Curve Length NodeCommented
D15956: Hair Curves: make the "surface_uv_map" a searchable dropdownCommented
D16040: UV editor: Improve Ui alignment in overlays panelCommented
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.
I also converted the last curve node to the new data-block. I could finally remove the old curve implementation. 8 months later or so!
source/blender/blenkernel/BKE_geometry_set.hh | 40 --
source/blender/blenkernel/BKE_spline.hh | 688 -------------------
source/blender/blenkernel/intern/curve_eval.cc | 587 -----------------
source/blender/blenkernel/intern/geometry_component_curve.cc | 1464 -----------------------------------------
source/blender/blenkernel/intern/spline_base.cc | 526 ---------------
source/blender/blenkernel/intern/spline_bezier.cc | 646 ------------------
source/blender/blenkernel/intern/spline_nurbs.cc | 395 -----------
source/blender/blenkernel/intern/spline_poly.cc | 97 ---
12 files changed, 1 insertion(+), 4453 deletions(-)
Changes / Features
- Curves: Improve sculpting performance by reducing allocations 460fe4a10cccf6
- Geometry: Avoid unnecessary initialization when resizing data arrays 9088a1f4764f37
- Sculpt: Make storing mask and face set layers optional b5f7af31d6d474
- Sculpt: Separate hide status from face sets, use generic attribute ee23f0f3fb58ce
- Sculpt: Improve performance when initializing face sets 9c35a5a5241b6d
- Curves: Port Curve to Points node to the new data-block 7536abbe16bd86
- Curves: Remove CurveEval and old Spline types ecf3435362cf2c
- Attributes: Validate some builtin attributes for untrusted inputs 8934f00ac5701e
- Sculpt: Respect hiding when creating face sets from loose parts a231637faeef8f
- Curves: Don't allow resolutions less than 1 641bbc820f9466
- Curves/PointCloud: Avoid quadratic cost for retrieving positions eb3a561a7fe0b2
- Nodes: Avoid unnecessary sorting when selecting or moving nodes 400151833db019
- Attributes: Add function to retrieve span without adding attribute e37f3388b15635
- BLI: Add utility functions to generic spans 225b5a3491d959
- Mesh: Fix quadratic cost for accessing normals with RNA 390320a151e23c
- D15982: Mesh: Move positions to a generic attribute
- D15973: Nodes: Use plain menus for geometry nodes add menu (WIP)
Fixes
- Fix: Mesh SoA format conversion skips versioning 818c9e524d82d3
- Fix: Missing updates for multires sculpting 8fdaf2bddccf7c
- Fix: Node edge pan and remove on cancel doesn't work ea474dda620036
- Fix T101025: Cycles motion blur crash with changing point cloud size 21ed3b3258887e
- Fix T101027: Sculpt tools don't respect visibility after recent commit 8442b0ffc1df59
- Fix: Multires crash after recent face set refactor 5bad311f4ce471
- Fix T101013: Reordering materials broken with only one assigned ad245f1970343e
- Fix: Crash after recent attributes commit 4f284873d0e37e
- Fix T101031: Crash with Initialize Face Sets operator 92a92fdca520a2
- Fix: Geometry nodes crash with undefined node 4cea4f4c5f845a
- Fix: Merging mesh and non-empty BMesh creates "flag" attributes 0945ae338b4e77
- Fix: Build error after previous cleanup commit 530f203e27a7ea
- Fix: Resolve deprecation warning when copying polygon struct 08a8de739d8c7f
Cleanup
- Cleanup: Fix grammar in IndexRange header a45b4084222464
- Cleanup: Remove unused member variable in lazy function graph 3d93525069d230
- Cleanup: Rename attribute required functions d5df23d7581230
- Cleanup: Remove unused argument from modifier data mask callback 6d4d74172bac0a
- Cleanup: Use attribute API for curves functions 50913d719ccb24
- Sculpt: Move sculpt_face_set.c to C++ c8b9ede4b1c2ae
- Cleanup: Comment formatting 8f6a07bc750ffd
- Cleanup: Make format e22198b8d18c08
- Cleanup: Add missing licence headers 643e94c03202c8
Review
Requested changes
D13373: Geometry Nodes: Control Point Neighbor NodeRequested changes
D15527: Geometry Node: Add Face Corner Info, Face Corner Loop nodesAccepted
D15914: Geometry Nodes: New evaluation system.Accepted, committed
D15423: Geometry Nodes: New Face Set Boundaries nodeAccepted, committed
D14481: Geometry Nodes: Port the trim curve node to the new data-blockAccepted, committed
D16002: Fix T101137: Crash with Transform NodeAccepted, committed
D15786: BLI: Add generic utlity for gathering values with indicesRequested changes
D15802: Reuse input sockets when creating new node groupsAccepted, committed
D15997: Curves: Correct and improve Catmull Rom interpolationRequested changes
D15793: Fix T100627: Rejection of recursive calculation of frame nodes.Commented
D15976: Geometry Nodes: Lazy threading.Commented
D11591: Alembic: import arbitrary attributesCommented
D11592: Alembic/USD: use geometry sets to import dataCommented
D15775: Nodes: Add persistent identifier to nodes (WIP).Commented
D15956: Hair Curves: make the "surface_uv_map" a searchable dropdownAccepted
D15887: UI: Add Mix Node to color section of add node menuAccepted
D16006: Fix: Make node position consistent when added through link drag searchAccepted
D16007: Fix: Prevent clipping of node drop shadowRequested changes
D15789: Remove hidden socket linksCommented
D15715: Nodes: Add subtype selection to socket editing
Tracker
- Investigated: 17
- Confirmed: 1
- Resolved: 3
- Archived: 1
Next Week
Next week I'll try to finish some of the patches I've created recently, and hopefully commit the node editor assets in search menu patch. I'd also like to make progress on the mesh topology input nodes.
September 5 - September 11
This week I worked more on mesh data structure refactors, cleaning up the node editor, fixing bugs, and code review.
I committed one change I've been working on for a couple months, removing custom data pointer usage from Mesh
. It was great to finish that. I also committed the bevel weight part of the refactor, and made the same change for edge creases, and started on the MVert -> float3
a bit on the weekend.
I also made a bit of progress on the node editor assets project.
Changes / Features
- Mesh: Remove redundant custom data pointers 05952aa94d33ee
- Mesh: Avoid saving redundant generic material index attribute 352d55b1c88776
- Mesh: Move bevel weight out of MVert and MEdge 291c313f80b4cc
- Subdiv: Avoid quadratic runtime for loose edges 12c235a1c515d4
- D15909: Geometry Nodes: Split transfer attribute node (WIP)
- D15937: Sculpt: Make storing mask and face set layers optional
- D15927: Mesh: Move edge crease out of MEdge
Fixes
- Fix T100863, T100875: Vertex group reading broken for recent files 0a32f6b76a63dc
- Fix: link drag search feature only works for geometry nodes groups e5a7470638803f
- Fix T100974: Remesh operators reset mesh properties 1f4dc51d09af4d
- Fix: Restore fix for empty attributes after recent commit ced56dbc539652
- Fix: Spreadsheet row filters unimplemented for boolean type 9f50bd20eb3b5a
- Fix T100841: Creating a frame node with shortcut doesn't sort nodes ff17131109bb6e
- Fix T100760: No color attribute initialization when created by brush 2636f6fdeeb725
- Fix: Integer type in linear probing strategy ff7bba8dad5d09
- Fix T100903: Unfinished sentence in instance rotation node page rBM9537
- Geometry Nodes: Avoid relying on rounding in extrude tests rBL63025
- D15919: Fix: Move mesh legacy conversions to out of reading code
Cleanup
- Cleanup: Simplify BKE_mesh_nomain_to_mesh 21f2bacad977d3
- Cleanup: Remove unused DerivedMesh functions ebc385de5f6bc1
- Cleanup: Use C++ methods to retrieve attribute accessors d5934974219135
- Cleanup: Remove unused face customdata for merging meshes 17f37b43f1f4aa
- Cleanup: Remove unnecessary node sorting, rename variables 6830ba12a8591f
- Cleanup: Avoid using runtime node flag, use topology cache 545fb528d5e10b
- Cleanup: Remove unused update custom data pointers in attribute API 3484c6d4f11640
- Cleanup: Tweak naming for recently added mesh accessors be038b844cb53b
- Cleanup: Remove redundant vertex duplication in extrude node b9727dae829dcd
- Cleanup: Use more specific function for deselecting all nodes 2d38768f89d12a
- Cleanup: Move select all nodes code to operator 1d24586a900daa
- Cleanup: Remove unused function 1fcc673230bf58
- Cleanup: Fix unused variable warnings 63cfc8f9f6d623
- Cleanup: Unused variable, compiler warning 258d3858572b58
- D15939: Cleanup: Port multires baking low-res mesh from DerivedMesh to Mesh (WIP)
Review
Commented
D15914: Geometry Nodes: New evaluation systemAccepted
D15878: Fix T100822: Merging objects does not assign materials correctlyAccepted
D15375: Geometry Nodes: Distribute Points in VolumeAccepted
D14481: Curves TrimAccepted
D15851: Fix T100747: Cannot add "String" attribute to meshCommitted
D15920: Fix T100521: Node doesn't belong to frame when added through link drag searchCommented
D15894: BLI: Add newblender::Pool
containerCommented
D15789: Remove hidden socket linksCommented
D14759: Custom Colors for Empty ObjectsCommitted
D15809: Fix T99141: Crash with edit mode and copy location constraintAccepted
D15880: Fix T100796: Wrong tangents on bezier splines with duplicate points and handles.Commented
D14006: BLI: New C++ BitVector data structure.
Tracker
- Investigated: 14
- Confirmed: 3
- Resolved: 3
- Needs Information: 1
- Known Issue: 1
- Archived: 1
Next Week
I'll start working on getting assets into the node editor add menu, and do more code review, bug fixing, and mesh refactoring.
August 29 - September 4
This week I worked a bit more on adding assets to the node search menus, worked on the mesh data structure refactors, including some improvements to the way new attributes are initialized (or aren't!). I also did a whole bunch of cleanup to the node editor in various places, and then the usual code review and bug fixing.
Changes / Features
- Attributes: Improve custom data initialization options 25237d2625078c
- Mesh: Move material indices to a generic attribute f1c0249f34c417
- Sculpt: Avoid creating mask and face set when remeshing 71b660571a1fe8
- Mesh: Remove unnecessary copy in modifier stack 70f1711324e27e
- Mesh: Avoid redundant custom data layer initialization cccc6d6905be7a
- Curves: Avoid unnecessarily initializing new positions layer d94a11ed79b3c8
- Cleanup: Use C++ attribute API bcd671e565cd33
- Attributes: Avoid unnecessarily initializing new attributes 4c91c24bc7cbe2
- Geometry Nodes: Use separate field context for each geometry type 82a46ea6f8829f
- Nodes: Use existing nodes span cache 58c650a44c251a
- D15874: Nodes: Remove runtime socket location from DNA
- D15866: Node Editor: Avoid allocations for node socket tooltips
- D15818: Geometry: Avoid unnecessary initialization when resizing data arrays
Fixes
- Fix: Broken build with OpenVDB turned off dff15bb5bf4cc8
- Fix T99253: Missing face center dots with deform modifier cage option 3306b4a86bb8dc
- Fix T100767: Geometry nodes viewer node placed incorrectly 831ed297d0a02c
- Fix: Alphabetical order in duplicate data preferences panel 002f339aedd351
- Fix: Ensure topology cache exists when drawing nodes 21e235afc3e514
- Fix T100768: Reverse curves skips handles of middle Bezier points 28d8076a2e4e98, rBL63020
- Fix: Incorrect vertex group layer "construct" callback 3249853ebe56b5
- Fix: Use of deprecated field in legacy MFace conversion 6ee34319147207
- Fix: Build error in Cycles with OpenVDB turned off 9806672e86838f
- Fix: Potential name clash when adding rest position attribute d9c48d94e41ba9
- Fix build error after recent Metal GPU commit 0a85288462def1
- Fix build error from missing include 934b9277be7a13
- Fix: Build error on windows 6f52a118a0b0f1
- D15841: Fix: Resolve deprecation warning when copying polygon struct
Cleanup
- Cleanup: Replace recursive quadratic node link mute operation b978c1bc65434c
- Cleanup: Deduplicate node link intersection test b60850d3959534
- Cleanup: Remove misleading std::string reference binding 5ae3fa50e22470
- Cleanup: Refactor node add reroute operator 56193eccf646e9
- Cleanup: Use new node topology cache for sorting multi input sockets aa08545a019606
- Cleanup: Clarify multi-socket input sorting 0ff920b777791d
- Cleanup: Use const for node data in compositor 91d9f46aecacab
- Cleanup: Split node link draw culling to separate function 8d1e5334ece913
- Cleanup: Use const for custom data layers 6577d2df8ce3b1
- Cleanup: Use references and const in node editor cd10fb4826f383
- Cleanup: Avoid using node socket location df40440d22390a
- Cleanup: Use C++ vector types in node editor 86e7aaead29b22
- Cleanup: use more standard variable name for node sockets 2d72fc058613aa
- Cleanup: Further split of node link Bezier calculation function 40d815dff65158
- Cleanup: Remove redundant addition of attribute 0331a8c67c8035
- Cleanup: Deduplicate node link points evaluation functions b903b749442906
- Cleanup: Use separate variables for node socket locations 4a4044ad9b8c65
- Cleanup: Remove unused point cloud function 7bfabc6444181a
- Cleanup: Remove unnecessary struct keyword usage in node editor 4068880ffcb76c
- Cleanup: Avoid using geometry component unnecessarily b5bc08686418e6
- Cleanup: Return early 0348bc88e4c1e2, a736ca33ab08bc, ab6702a40fdfbd
- Cleanup: Remove unused struct 0fb699b21283f2
- Cleanup: Remove duplicate declaration in GPU capabilities af4e62a0205e6b
- Cleanup: Use standard variable name for curve points 3090edfecfcea1
- D15857: Cleanup: Simplify BKE_mesh_nomain_to_mesh
Review
Requested changes
D14481: Curves TrimCommitted
D15739: Fix T98968: Node reroute tool doesn't add to framesCommitted
D15724: Fix T99576: Guard against empty names when removing attributesAccepted
D15036: Nodes UI: Visual tweaks to node linksRequested changes
D14607: Assets: Implement viewport drag and drop for geometry nodesCommented
D15835: Function Node: Hash ValueCommented
D15837: Geometry Nodes: Add Name output to Object Info nodeRequested changes
D15869: I18n: add a translation context to node socketsRequested changes
D15375: Geometry Nodes: Distribute Points in VolumeRequested changes
D15716: Refresh UV editor window on change in subdiv surface geo nodeCommented
D15817: DRWManager: New implementation.Requested changes
D15786: BLI_array_utils::gather()Accepted
D15833: Fix T100687: Geometry Attribute Convert crashes in sculpt modeCommented
D6414: Shrinkwrap smoothingAbandoned
D15853: Fix T100768: Reverse curve does not swap handles for middle pointCommented
D15843: Cursor Tool: Add location / rotations props and reset button
Tracker
- Investigated: 13
- Resolved: 4
- Known Issue: 1
- Archived: 3
Next Week
Next week is more of the same basically. Though I hope to make some progress on the T100010.
August 8 - August 28
The past few weeks I've been traveling and haven't been working full-time, so I gathered them all here. The work I've done has mostly been cleanups and refactors, and some code review. The mesh data structure refactors have come a long way though.
Changes / Features
- Mesh: Move hide flags to generic attributes 2480b55f216c31
- Metaball: Evaluate metaball objects as mesh components eaa87101cd5a20
- Curves: Avoid creating types array when unnecessary 67f3259c546579
- CustomData: Add function to get name of default layer cc9c4e274440e5
- D15675: Mesh: Move material indices to a generic attribute
- D15795: Refactor: Move mesh selection flags to generic attributes
- D14365: Mesh: Move UV layers to generic attributes
Fixes
- Fix T100494: Broken sculpt hide status undo/redo a6056b870b1da9
- Fix: Write hide status attributes for undo steps e36ced1dce96f9
- Fix T100482: Face Set visibility reset after saving 35c601269b7c69
- Fix: Node editor context path for curves objects 92493a5fa74ac2
- Fix T99661: Use after free converting edit mode curve object to mesh 90b7c3d05e5854
- Fix: Compiler warning in macro after recent C++ conversion 31279d522be289
- Fix: Incorrect access of mesh hide layers 64f0c25a4655de
- Fix: Broken mesh hide status RNA accessors 344919240c8bd9
- Fix: Use of uninitialized variable in recent commit 2fc7e15164fc61
- Fix T100308: Removing scene time node does not update relations bdb85bdd9813d0
Cleanup
- Cleanup: Deduplicate RNA mesh element index retrieval f593a560d3ca6d
- Cleanup: Slightly improve virtual array implementation consistency e0414070d9d0a4
- Cleanup: Remove redundant use of evaluated non-mesh objects 27f2ff6b5b6568
- Cleanup: Fix const correctness in CustomData set name function aaea263be4d0ff
- Cleanup: Move view layer array utils from macros to functions 413c399ab8900e
- Curve: Simplify legacy curve conversion to mesh 90e027e59403aa
- Cleanup: Move bmesh_query_uv.c to C++ 6bea434c419516
- Cleanup: Move paint.c to C++ 486d27d32aa27e
- Cleanup: Move subdiv_mesh.c to C++ 0a84cc691d7945
- Cleanup: Move draw_cache_impl_pointcloud.c to C++ 4ab6baefb175e7, 1e8e70a90cdafa
- Cleanup: Move mball.c to C++ edd6d301c75569
- Cleanup: Move object_vgroup.c to C++ 407f11c55f6de0
- Cleanup: Move view3d_select.c to C++ db054b447de363
- Cleanup: Miscellaneous improvements to pointcloud draw cache c15a63d21eae49
- Cleanup: Fix typo in comment fc26e3fe19e6ee
- Cleanup: Add function for creating object dupli with separate data 1d68318e975abc
- Cleanup: Add comments about deprecated flags 39bad22008fb26
- Cleanup: Fix outdated comments referring to DispList 6718afdc8a324f
- Cleanup: Avoid using invalid attribute domain b649fc13ed47a8
- Cleanup: Remove unused object batch cache API function f8b1483566ccc0
- Cleanup: Use utility to write palette color list 59aef1d7171c9b
- Cleanup: Remove unused function a73cc8164679e2
- Cleanup: Fix outdated comment 9a67aac8d75618
- D15667: Cleanup: Remove outdated function for tagging batch caches dirty
Review
Requested changes
D14481: Curves TrimRequested changes
D13952: Geometry Nodes: Add Smooth Attribute nodeAccepted
D15491: Nodes: Move NodeTreeRef functionality into node runtime data.Requested changes
D15715: Nodes: Add subtype selection to socket editingCommented
D15793: Fix T100627: Rejection of recursive calculation of frame nodes.Requested changes
D15036: Nodes UI: Visual tweaks to node linksCommented
D15637: BLI: GArray improve: first, last, index_range, fillRequested changes
D15624: (WIP) Geometry Node: Curve IntersectionsAccepted
D14531: Fix T94413: Keep new group input sockets hidden when group input node has hidden socketsAccepted
D15731: Fix T100430: Restore bigger node socket snap hitboxAccepted
D15705: Fix T100258: Divide spline total length to integer total length of curvesCommented
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_removeAbandoned
D15714: [WIP] Windowmanager: improve duplicate check of notifiers.
Tracker
- Investigated: 7
- Confirmed: 2
- Resolved: 5
- Archived: 1
Next Week
Determine 3.4 priorities, update patches, code review, and finishing the "assets in search menu" patch.
August 1 - August 7
This week was mostly dedicated to organization: finishing or closing old patches, cleaning up the workboard and old tasks. I also did a fair amount of cleanup commits when working in other areas.
I wrote the manual pages for the new geometry nodes in 3.3: rBM9456, and updated the manual for curves sculpting too.
I also made two design/todo tasks. For the first I think I need to present a more complete proposal to Ton.
- T100127: New surface data-block
- T100153: 4.0: Remove mesh sculpt vertex colors and vertex colors API
Changes / Features
- Geometry Nodes: Speed up reading attribute with different type 43918ec28d1212
- Nodes: Disable link drag search for deprecated nodes bae2ce069516f7
- Nodes: Remove node after link drag search cancel 1dc503b33abdb8
- D15617: Attributes: Clarify and improve custom data initialization
Fixes
- Fix T96810: Invalid sculpt normals after some operations efe0e2b1837097
- Fix T100143: RNA path information of Curves datablock incorrect 74f983738ab47c
- Fix T100168: Sculpt positions undo not working after recent commit 06b6c004f5fb2c
- Fix: Incorrect field node deduplication for shortest path nodes 344c53561aa8bc
- Fix: Missing translation in deform curves on surface node 800c7dbf41a2d1
- Fix: Use evaluated materials in OBJ exporter d3eef4d22a021b
- Fix: Typo in geometry node tooltip 9b924b2a23b5e5
- Fix: Crash on instance on points node with empty mesh 0844781961e8fb
- Fix: Store named attribute node incorrect link drag search d730940fdb900d
- Fix: Build error after recent commit 5b8143287b607e
- Fix: Avoid OBJ importer assert seting normals on mesh with no faces 1cc11e32e4acef
- Fix: Warning from incorrect use of macro 42f9430a3a901e
Cleanup
- Cleanup: Remove unused sculpt and vertex color operators 44aa9e40ffe40c, Ad0fa5bc86185a, rBL62990
- Cleanup: Remove unused function ce352e6d000ea2
- Cleanup: Const in headers, standardize variable names bf8b56a69e06b2
- Cleanup: Remove outdated code for mesh normals 5b8c07dc50e058
- Cleanup: Simplify functions for adding and removing color attributes c5b361335aaa15
- Cleanup: Spelling, remove double negative 359aca8d4cf946
- Cleanup: Simplify arguments to sculpt draw functions 2ba2efc2969176
- Cleanup: simplify function for adding node to editor 2c00889d3e9d63
- Cleanup: Reduce indentation fd0c27944f6788
- Cleanup: Remove outdated comment 4c340f9bd454c8
- Cleanup: Remove incorrect comment fca7cb01011a3e
- Cleanup: Use generic utility to retrieve attributes to transfer 9d7aac6d66c9e5
- Cleanup: Remove unused function 646207c9afd54d
- Cleanup: Simplify const cast in virtual array construction a48e5c53a546cd
- Cleanup: Use const arguments in definition, add helper variable 81d75affb18bad
- Cleanup: Fix doxygen section for custom data type a5a60d0f4f65ce
- D15634: Cleanup: Make UV draw extraction more generic (WIP)
Review
Requested changes
D13952: Geometry Nodes: Add Smooth Attribute nodeAccepted, Committed
D15524: Enhanced extrude tool for NURBS surfacesRequested changes
D14481: Curves TrimRequested changes
D15596: Convert Color Attribute operatorAccepted, Committed
D15434: BKE_attribute_math: DefaultMixer empowermentAccepted
D13749: Node: Mix nodeCommented
D15589: Mikktspace: Optimized port to C++Commented
D15611: Fix T99460: Allow creation new datablocks from evaluatedCommented
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.
Changes / Features
- Refactor: Extract color attributes as generic attributes 1998269b109f65
- Geometry Nodes: Rename "Field on Domain" to "Interpolate Domain" ea4b1d027d97cd
- Curves: Avoid virtual function overhead when finding selected curves ff048f5d27c4b7
- Curves: Bring back parallel copying of curve and point attributes 55fb2abc814c57
- Curves: Unify poll functions, add message with no surface 00a3533429133f
- Nodes: Allow using escape key to exit node resizing f14f81e5ac6561
- Geometry Nodes: Hide value button for field at index node 5aba7f9774345b
- Geometry Nodes: Implement link drag search for two nodes b75d0c7e7a402d
- D15568: Nodes: Add node group assets to search menus
- D15519: Geometry Nodes: Use separate field contexts for different geometry types
- D15550: Mesh: Use cached looptris in draw cache extraction
- D15560: Curves: Avoid creating attribute when unnecessary
Fixes
- Fix T99761: Curves sculpt mode crash with empty curves 6ca602dd9fa14f
- Fix: Grammar mistake in info message 1adeae56e61e3c
- Fix: Fix attribute writer debug warnings in terminal f76a2c0d1895a4
- Fix: Assert in resample curve node with single point curve 739136caca5cbe
- D15581: Fix T96810: Invalid sculpt normals after some operations
- D15548: Curves: Validate data when writing to some builtin attributes
Cleanup
- Cleanup: Move five interface files to C++ 599a7ddf178488
- Cleanup: Move interface_region_tooltip.c and header to C++ 3c5620aabd33c3
- Cleanup: Remove mesh edge "tmp tag" 17567c235ac62f
- Cleanup: Use new IDProperty creation API for geometry ndoes modifier cf61be61900549
- Cleanup: Remove unused node "add and link node" operator 543ea415690ff2
- Cleanup: Use const context argument for UIList callbacks 72d8a40a3d7a3e
- Cleanup: Nodes: Store node group idname in tree type 3d91a853b209bc
- Cleanup: Clang tidy aa7734c9daa773
- Cleanup: Move wm_dragdrop.c to C++ 38e270ae30d97a
- Cleanup: Move mesh_tessellate.c to C++ faa0c7aa6f1cff
- Cleanup: Use LISTBASE_FOREACH macro 5c2fff306edb7b
- Cleanup: Make BKE_idprop.h self sufficient 4757a5ad338bbb
Review
Accepted, committed
D15414: Add tooltips to the geomerty node add menuRequested changes
D15451: Curve sculpting: Collision constraint solver.Commented
D15499: BMesh optimization: support directly iterating over mempool chunksAccepted
D15274: Geometry Nodes: Shortest Paths nodesAccepted
D15536: Curves: Add CurvesGeometry.radii()Commented
D15589: Mikktspace: Optimized port to C++Accepted
D15395: UI: Scroll sidebar category tabsAccepted
D15557: Geometry Nodes: Improve handling of zero-sized attributes.Accepted
D15556: Fix: missing evaluated offsetsClosed
D2576: Allow joining of one area into part of another
Tracker
- Investigated: 13
- Resolved: 4
- Duplicate: 2
- Archived: 4
Next Week
Next week I'll finish up the changes to get assets into the node editor search menus, and maybe start changes to the menu.
July 18 - July 24
This week I did some refactoring to attributes and custom data access, looked into bugs, started looking into refactoring the add node search.
Changes / Features
- Geometry Nodes: Improve UV Sphere primive performance 7808ee9bd73d7e
- Curves: Port fillet node to the new data-block 2551cf908732ba
- Spreadsheet: Implement selection filter for curves sculpt mode 396b7a6ec8fdcc
- Attributes: Use new API for C-API functions 31365c6b9e4cd9
- Curves: Remove use of CurveEval in sculpt brushes 215f805ce6b540
- Geometry Nodes: Port sample curves node to new data-block 6bcda04d1f1cc3
- RNA: Don't allocate empty char pointer properties 35b4e3a3501c9c
- Point Cloud: Remove redundant custom data pointers 410a6efb747f18
- Curves: Remove redundant custom data pointers e9f82d3dc7eeba
- Geometry Nodes: Copy parameters when copying a curves data-block 6a1ab4747b7758
- Curves: Hide snapping menu in curves sculpt mode 87ae10a05047c0
- D15488: Mesh: Remove redundant custom data pointers (WIP)
- D15519: Geometry Nodes: Use separate field contexts for different geometry types
Fixes
- Fix: Removing attributes from UI invalidates caches c94c0d988a5640
- Fix T99878: Deleting curves or points removes anonymous attributes eb281e4b245f69
- Fix T99873: Use evaluated vertex groups in armature modifier 80b2fc59d11d58
- Fix T99835: Incorrect title case for two node names 35843ddcd80e59
- Fix T99873: Store named attribute node cannot write to vertex groups c40971d79a8878
- Fix T99884: Crash when converting to old curve type aa1ffc093c4711
- Fix T99854: Crash converting legacy NURBS curves to new type ada601251889c2
Tests
- Geometry Nodes: Add test for T99873 rBL62976
- Geometry Nodes: Add test for sample curves node rBL62977
- Geometry Nodes: Add tests for fillet curves node rBL62975
Cleanup
- Cleanup: Use r_ prefix for boolean return parameters 98395e0bdfc849
- Cleanups: Small changes to armature deform 7a4a6ccad74f9a
- Cleanup: Rename length parameterization interpolation function 63be57307eba75, 4ba6bac2f1a45f
- Cleanup: Remove debug print in test 95ab16004d1e55
- Cleanup: Access attributes with new API instead of geometry components c3b9a4e001057f
- Cleanup: Use generic utility for copying compressed attribute 40ffb94ab47c29
- Cleanup: Remove unnecessary handling of normals for fluid colliders d34f8ac3d9a4c3
- Cleanup: Combine geometry null checks in if statements 5d6e4822d85bf4
- Cleanup: Remove compile option for curves object 597955d0a82eb2
- Cleanup: Add comment for geometry nodes lazyness 3370c1a8a7b24c
- Cleanup: Remove unused function fe108d85b4d7f5
Review
Requested changes, accepted
D15407: Curves: Sculpt on deformed curves.Requested changes, committed
D15414: Add tooltips to the geomerty node add menuRequested changes
{D13749: Node: Mix nodeRequested changes
D15274: Geometry Nodes: Shortest Paths nodesRequested changes
D14481: Curves TrimAccepted
D15434: BKE_attribute_math: DefaultMixer empowermentRequested changes
D15375: Geometry Nodes: Distribute Points in VolumeCommented
D15534: Parallelize BMesh lookup table generation (BM_mesh_elem_table_ensure)Commented
D15522: Geometry Nodes: UV sphere: Change pos calc and parallelizeCommented
D15025: Expose Face Sets In Python APIAccepted, committed
D15431: Fix T99583: Missing update for interpolation option in particle edit mode.Closed
D12636: Geometry Nodes: Finish off Distribute Points in VolumeClosed
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.
Lately I've been focusing on finishing up existing smaller projects. I updated my two current mesh data structure refactors (D14077 and D14685), updated my design about how to deal with volume grids as attributes, sifted through all the char *
members in DNA, and did some more cleanup.
Changes / Features
- Curves: Add sculpt selection overlay e3ef56ef914175
- Curves: Port subdivide node to the new data-block 9435ee8c65193e
- UI: Adjust and fix shader node descriptions 2a60b979cca272
- Curves: Move type conversion to the geometry module 7688f0ace7a6c4
- BLI: Use simpler sliced generic virtual arrays when possible 6e879c39987cb9
- Geometry Nodes: Use alphabetical order for UV nodes in add menu 322abb2e4b5ca1
- Curves: Expose function to calculate vector handles dccdc6213ec6ff
- D15408: Geometry Nodes: Copy parameters when copying a curves data-block
- D15393: Spreadsheet: Implement selection filter for curves sculpt mode
Fixes
- Fix T99191: Boolean modifier creates invalid material indices 5723bf926dcb38, a2d59b2dac9e68
- Fix: Spreadsheet does not display original curves data f0ac55f51965c2
- Fix T99464: Curves sculpt add 3D brush symmetry broken fae68ec651c871
- Fix T99284: Undefined values output from UV nodes faac25fefedf4b
Cleanup
- Cleanup: Move mesh legacy conversion to a separate file c4b32f1b291a3c
- Cleanup: Use generic index mask utility a91f9c2c014012
- Cleanup: Use C++ style of avoiding unused variable warnings 85ef8e19455524
- Cleanup: Use std::move for geometry set 59e1009f1094b0
- Cleanup: Improve variable name 5c3dc52536d373
- Cleanup: Correct comment with spreadsheet enum type ed7dc4282c034f
- Cleanup: Remove redundant filtering of legacy normal attribute 9a4927031dade7
- Cleanup: Remove unused variable bc2121147f32f5, 52fa0c4251e7c9
- Cleanup: Remove unused function af6f3a4020fc09
Review
Requested changes, accepted
D15280: BKE: New geometry attribute APICommented, 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 nodeAccepted
D15402: Hair Curves: The new curves object is now availableCommented
D15238: Fix T93062: Check for empty name when editing custom propertyCommented
D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attributeAccepted
D15308: Draw: Curve outline drawing in object mode.Accepted, committed
D15382: Cleanup: Fix compiler warningsAccepted, committed
D15374: Fix: Bke Curve geometry test: Incorrect curve constructionCommented
D14759: Custom Colors for Empty ObjectsCommented
D9621: Configurable rotation angle increments
Tracker
- Investigated: 9
- Confirmed: 2
- Resolved: 3
- Duplicate: 1
- Archived: 1
Next Week
I'm on vacation next week.
June 27 - July 3
This week I worked on code review, bug fixing, and later in the week, worked on removing CurveEval
(T95443).
I'm almost finished with that project.
I made one design task this week, I'll probably discuss it with the sculpt module next week:
- T99297: Operators to save curve or point selection as an attribute
Changes / Features
- Geometry Nodes: Only calculate mesh to volume bounds when necessary 0ea282f7462070
- Curves: Avoid initializing offsets when first allocated 276e419671b31d
- Curves: Adjust "for each curve by type" utility 4206b302754797
- D15334: Curves: Port subdivide node to the new data-block
- D15342: Curves: Remove use of CurveEval in sculpt brushes
- D15346: Curves: Port fillet node to the new data-block (WIP)
- D15326: Curves: Move type conversion to the geometry module
Fixes
- Fix T99171: Crash in mesh vertices positions RNA update function 151fc2fcd8461a
- Fix T99309: Duplicate elements deletes instance attributes 95055af668337c
- Fix: Flush mode to evaluated object when exiting curves sculpt mode 1c61db5346d051
- Fix: Incorrectly sized curves created in set conversion node 7e55ff15b09407
- Fix: Build error with unity builds off after recent cleanup 69ee9ca90e36aa
- Fix: Correct attribute names in resample curves code c15ae2e87b26cf
- Fix: Use distance unit for points node radius input 2d18dd9309556e
Cleanup
- Cleanup: Rename curve segment count function f4a9a3767ee2f5
- Cleanup: Simplify logic building in length parameterization d0e3388848a66e
- Cleanup: Avoid assigning constructed VArray to reference a69e5c234834ed
- Cleanup: Add assert for unsupported legacy curve type 6161ce6e5d5eb3
- Cleanup: Remove unnecessary includes from geometry nodes header df8d96ab66adf4
- Cleanup: Remove outdated comments bd7b181e1057db
- Cleanup: Clang tidy, unused variable warning 95964444c66024
- Cleanup: Add assert for customdata realloc size 32e9c9802eb3fb
- Cleanup: Remove duplicate include 982d6589a8c705
Review
Accepted
D15134: Curves: Prototypes for various features surrounding the new curves object.Accepted
D15348: BLI: Refactor length parameterization.Commented
D14481: Curves TrimAccepted
D15322: Spreadsheet: display byte colors as scene linear floatsCommitted
D10895: Geometry Nodes: Add Mesh To Volume NodeCommented
D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attribute.Committed
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommitted
D15310: Attributes: Use attribute renaming function for generic mesh layersRequested changes, committed
D15337: Fix T99316: Crash when no font is in String to Curves in geometry nodesCommented
D15308: Draw: Curve outline drawing in object mode.Accepted
D15306: Add "Use Limit Surface" option to subdivision surface geometry nodeCommented
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 ba1e97f1c6cd0c rBL62961
- Curves: Skip CurveEval in legacy curve conversion 5606942c63bf81
- Curves: Port string to curves node to the new data-block a646a4b47e4c50
- Geometry Nodes: Speed up Separate color node in RGB mode 04734622415521
- Geometry Nodes: Optimize selection for virtual array input 3e5a4d14124029
- Mesh: Add an explicit "positions changed" function 54182e4925de4e
Fixes
- Fix T98975: Broken vertex paint mode operators 2eba15d3e862fd
- Fix T98960: Baking to active color attribute uses wrong layer d901f8b75bf831
- Fix T98956: Crash removing some builtin attributes cebc5531e9445a
- Fix T98949: Deleting vertex group in geometry nodes affects others 12bde317f4c94d
- Fix: Incorrect dirty normal tag after mesh translation fca94c5e0d6f8a
- Fix: Remove broken vertex paint "fast update" check 6dde88c5366be0z
- Fix: Memory leak writing to builtin attribute with wrong type 785931fc3cdbfb
Cleanup
- Cleanup: Remove unnecessary includes f6290cd2a448e0
- Cleanup: Move paint_vertex_color_ops.c to C++ 3545d8a5008322
- Cleanup: Remove unused argument 35d2a2284659ca
- Cleanup: Make function static b0fe0e6a3047e1
- Cleanup: Remove unused array in vertex paint code 9b775ebad747c0
- Cleanup: Use const arguments d2a3b99ff7abb3
- Cleanup: Clang tidy 1160a3a3f83caf, be692cc4fe9b4c
- Cleanup: Grammar in comments c08fda3a6b1d05
- Cleanup: Remove unused argument 256cb68d33aec6
- Cleanup: Grammar: a vs an 9f8cc1bc349cb3
Review
Requested changes
D14481: Curves TrimRequested changes
D15134: Curves: Prototypes for various features surrounding the new curves objectRequested changes
D14365: Split the MLoopUV struct to 3 bool attributes and a float2 attributeRequested changes
D11591: Alembic: import arbitrary attributesAccepted
D13920: Geometry Nodes: Points NodeAccepted
D14389: Geometry Nodes: Unwrap and Pack Islands NodesRequested changes, accepted
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeAccepted
D15293: BLI: Improve check for common virtual array implementations.Committed
D15191: Spreadsheet: Support operations for filtering colorsCommitted
D15103: Fixed selection indication for virtual socket on nodesAccepted
D15285: Fix T99130: Spline factor gets messed up if one hair is too shortCommented
D14733: Color Attribute: Add convert color attribute operationAccepted
D15241: Fix T94969: Crash. Volume to mesh with 0 amount of voxelsAbandoned
D14736: Modification of The node "Extrude Mesh" to include the ability to extrude a Conic shapeAbandoned
D14846: Geometry Nodes: Include Separate Color optimization from Hans
Tracker
- Investigated: 14
- Confirmed: 1
- Resolved: 5
- Duplicate: 1
- Archived: 6
Next Week
I think I'll be able to finish porting almost every node to the new type next week. Maybe some other things will come up though.
June 13 - June 19
This week was a bit light in terms of time, and I didn't accomplish too much. But I did get a fair amount of cleanup done, mostly in attribute extraction in the draw module. I'm happy with that change anyway.
I figured out some of the boilerplate for drawing the sculpt selection for curves, nothing visual yet though.
I also made a design task for a "Field on Domain" building block node: T98943
Changes / Features
- Attributes: Adjustments to duplicate attribute API function rB58a67e6fb6df
- Attributes: Add null check in color attribute duplicate operator rB0f06de807249
- D15205: Refactor: Extract color attributes as generic attributes
Fixes
- Fix: Don't allow duplicate color attribute operator in edit mode rBc7942c31b2a9
Cleanup
- Cleanup: Remove unused argument, unnecessary struct keyword rBac4836af6ad9
- Cleanup: Remove unnecessary switch statement rB8a3ff496a737
- Cleanup: Always store attribute name in attribute request rB3c2a2a6c9659
- Cleanup: Simplify syntax in curves draw cache file rB18def163f893
- Cleanup: Remove redundant doxygen section rB96764c3a1f7d
- Cleanup: Miscellaneous improvements to draw attribute extraction rBb83f33ffca77
- Cleanup: Use more specific includes for grease pencil modifiers rB10850f0db93b
- Cleanup: Variable name style in STL importer rB28f4fc664fbf
- Cleanup: Snake case for variable name rB25f18e6c4905
- Cleanup: Fix const correctness of attribute search function rBf5e7221fbdc3
- D15197: Cleanup: Simplify arguments to sculpt draw functions
Review
Accepted
D15198: Geometry Nodes: Volume Cube nodeRequested changes, accepted
D13920: Geometry Nodes: Points NodeRequested changes, accepted
D15151: Geometry Nodes: add 'Intersecting Edges' output for boolean nodeRequested changes, accepted
D15216: Curves: Refactor add brushRequested changes
D13952: Geometry Nodes: Add Attribute SmoothCommented
D15036: Nodes UI: Visual tweaks to node linksAccepted
D15191: Spreadsheet: Support operations for filtering colorsCommented
D15184: Fix T98813: crash with GPU subdiv in edit mode and instance objectsAccepted
D15217: UI: Custom Properties - Rename properties to remove "Use/Is"
Tracker
- Investigated: 7
- Confirmed: 1
- Resolved: 1
- Archived: 2
Next Week
Next week I'll be back in the US. Apart from taking some time to get things settled there, I'll be working on basically the same things I suppose, maybe with a bit of "geometry nodes as an operator" sprinkled in. But the main goal is still getting selection drawing figured out.
June 6 - June 10
This was my last week in Amsterdam. I mostly spend time on code review, moving some nodes to the new curves type, and preparing a presentation about the current state of the hair project, which should become a blog post relatively soon. I also did some fixing and cleanup in the attribute C API.
Changes / Features
- Curves: Port set type node to new data-block rB9e393fc2f125
- Curves: Port delete geometry node to the new curves type rB8a6cbcf386a1
- Attributes: Use names instead of layers for some functions rB6eea5f70e3b7
- CustomData: Add function to free a named layer rB7974d2bff6f3
- D15169: Mesh: Simplify access of active/default color attribute (WIP)
Fixes
- Fix: Incorrect curves and pointcloud bounding boxes rBfe4e646405eb
- Fix: Incorrect logic in attribute search functionrBd39e0f961668
- Fix: Heap buffer overflow in new curves set type node rB17971b8a5be8
- Fix: Crash in selection paint brush with empty curves rB32ee2ffc7d3e
- Fix: Missing include rBaebca2bd652d
Cleanup
- Cleanup: Use const pointers in attribute API rB9fda23389758
- Cleanup: Use const variables/pointers rB5b0e9bd97504
- Cleanup: Remove unnecessary namespace specification rBfe746b273874
- Cleanup: Clang tidy rB6a11cd036cef
- Cleanup: Correct comments rB4fc7e1a88004
Review
Requested changes
D15151: Geometry Nodes: add 'New Edges' output for boolean nodeCommented
D15159: OBJ: vertex colors support in importer and exporterCommented
D15137: Try to introduce a slider widget for sculpt mesh filterAccepted
D15165: Fix T98727: Dynamic Paint does not update normalsRequested changes
D15019: Geometry Nodes: Add Instance Dimensions Input NodeAccepted
D15144: Make BKE_id_attribute_rename() generate unique name cross domainCommitted
D14963: Nodes: Show node description in Node editorAccepted
D15131: Geometry Nodes: Instance Rotation NodeAccepted
D15132: Geometry Nodes: Add Instance Scale Input NodeCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D15142: Default "Selected Only" to True When Exporting ObjectsAbandoned
D15008: Adds specific Icons per force to the outlinerAccepted
D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicatesAccepted
D15136: Fix for Assert Failure in Duplicate Elements
Tracker
- Investigated: 8
- Needs Information: 2
- Archived: 5
Next Week
Next week I'll be visiting Berlin. I'll also try to make progress on the curves sculpt selection drawing task.
May 30 - June 6
This week was full of lots of code review, cleanup, and bug fixes. We also had a geometry nodes sub-module meeting on Wednesday (meeting notes here), and had design discussions about curves sculpt mode, and some initial discussions about how we should progress with the development of simulations.
I also committed the curves sculpt mode selection patch I've been working on for a bit and worked a bit more on porting nodes to the new curves type.
I was also involved in various design tasks, including one about enum names, more conversation about my mesh SoA refactor, and another about various socket and node names. I also closed the task for the "mesh screw node", and created two tasks:
- T98533: Writing to 8 bit integer "enum" attributes in geometry nodes
- T98494: Path animation and the new curves type
Changes / Features
- Curves: Add soft selection in sculpt mode rBa1830859fa98
- Curves: Port bounding box node to the new curves type rB8589f60546b3
- Geometry Nodes: Use fields for delete geometry inversion rBc4e11122c537
- Mesh: Only check dirty normals flag of current domain rBa5190dce9d08
- Attributes: Hide internal UI attributes and disallow procedural access rB4669178fc378
- Curves: Add surface UV map name property rB12722bd35458
- Curves: Avoid optimization to avoid storing selection for now rBe9eae1b8577b
- D15129: WM: Speed up processing of duplicate notifiers
- D15108: Curves: Make preserving length in the comb brush optional
- D15127: Geometry Nodes: Slightly optimize selection for virtual array input
Fixes
- Fix: Curves sculpt mode keymaps missing in preferences rB0a2a8d702ad2
- Curves: Fix overallocation for curve attributes when deleting curves rB93a68f2a9032
- Fix T98403: Crash applying modifiers on non-mesh objects rB18a17d42911d
- Fix T98546: Crash with multires bake and zero levels rB96a47af413a8
- Fix: Build error after merge from release branch rB91c44920dd56
- Fix T98556: Crash with extrude node in edit mode rB2d9c5f3dcf2e
- D15118: Fix: Realloc copies too much from previous allocation
Cleanup
- Cleanup: Move remaining mesh draw code to C++ rB176d7bcc2eb4
- Cleanup: Move wm_event_system.c to C++ rB545d46987900
- Cleanup: Move lib_override.c to C++ rBa746cef82526
- Cleanup: Move attribute.c to C++ rBb24e091c5a99
- Cleanup: Simplify dependencies for GMP math header rB3060b98842fe
- Cleanup: Comments and formatting in mesh extract headers rBe37eebf16f5b
- Cleanup: Remove unused BKE_spline.hh includes rBc7e4c4307224
- Cleanup: Improve const correctness of ID functions rBa40b61112831
- Cleanup: Move attribute domain count out of enum rBa5d9b3442d4e
- Cleanup: Use shorter variable name rB4e3ce0485551
- Cleanup: Use const for retrieved custom data layers rBdb5ffdd1a496
- Cleanup: Use const, make format rB6572ad86208a
- Cleanup: Simplify curves toolbar drawing logic rB545b9ddc34da
- Cleanup: Split large block of versioning code to separate function rB4a72b64c7b36
- Cleanup: Use const pointers rB10488d54d983
- Cleanup: Clang tidy rB3f9376851bca
- Cleanup: Remove unnecessary struct keywords rB23f8fc38d910
- Cleanup: Remove outdated comment rBca5939170461
- Cleanup: Tweak geometry component comments rB16746e8ec283
- D15077: Cleanup: Remove unused sculpt vertex color functions and operators
Review
Requested changes, accepted
D14941: Native STL ImporterRequested changes
D15019: Geometry Nodes: Add Instance Dimensions Input NodeAccepted
D15103: Fixed selection indication for virtual socket on nodesAccepted
D15125: Curves: Use uv coordinates to attach curves to mesh.Commented
D14150: Object: Speed up duplication of large selections by doing fewer collection syncsRequested changes
D15074: Docs: Add Curve Pen DocumentationAccepted
D15116: Spreadsheet Editor: Support int 8 attributeCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommitted
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 renamesAccepted
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 PointsCommitted
rB96f20ddc1e84: Geometry Nodes: Don't allow UI attributes as modifier field inputsAccepted
D15087: Fix T98520: Sculpt operators can unintentionally clear multires maskAccepted
D15140: Fix T98624: Curve Pen NURBS extrusion creates duplicatesAbandoned
D15008: Adds specific Icons per force to the outlinerCommented
D15061: Geometry Node: Changing the tab of Input nodesAccepted
D15132: Geometry Nodes: Add Instance Scale Input NodeAccepted
D15136: Fix for Assert Failure in Duplicate ElementsCommitted
D15058: Cleanup: fix source typos (may break API)Committed
rBAbcb71eea69a: UI: Update deep grey community themeCommitted
rBA0c532fe2c88: UI: Update Minimal Dark Community themeAccepted
D15033: Nodes: Add separately allocated run-time data for bNodeTreeAccepted
D15060: Nodes: Add separately allocated runtime data for nodes and socketsAccepted
D15089: Fix T98536: geometry nodes wrong selection on duplicate edgesRequested changes
D14205: Geometry Nodes: Add selection outputs to Curve to Mesh nodeAccepted
D15131: Geometry Nodes: Instance Rotation NodeCommented
D15037: Refactor: Snap-related. Clarified attribute names and refactored #defines into enumsCommented
D14823: T97706: Adds operator to duplicate the active color attribute layer
Tracker
- Investigated: 12
- Duplicate: 1
- Confirmed: 1
- Resolved: 2
- Archived: 3
Next Week
Next week I'll try to get the selection drawing for curves working as an overlay. Since I don't know how much work that will be I won't plan too much more besides the usual bug fixing and code review.
May 16 - May 22
This week I started by doing a bunch of documentation/manual work from the backlog, mainly for 3.2 features: rBM9284, rBM9285
I also focused on finishing up the selection brush and related tools for curves sculpt mode. It should be mainly ready here: D14934. We also spent time discussing/planning/reviewing render engine support for the curves data-block: T96455.
Other than that, I spent time on bug fixing, plenty of planning, and some miscellaneous work on curves sculpt mode.
Changes / Features
- Curves: Support pressure in sculpt brushes rBcea37b312763
- Curves: Use only current brush location for delete brush rBf8239cc9a0ec
- D14934: Curves: Add float selection in sculpt mode
Bug Fixes
- Fix T96810: Bitmap race condition in PBVH normal calculation rBb8bd20d7e023
- Fix T98237: Double free with curve object conversion to mesh rBc88de1594ff3
- Fix T98266: Crash with empty mesh boolean node rBd4cdae29c107
- Fix: Node editor "Group" panel displays for embedded node trees rB00af3e9472f3
- Fix: Copy and paste error in curves RNA rB200e63b0bf72
- Geometry Nodes: Fix issue with flip_faces test rBL62929
- D15002: Fix: Sample pressure properly for 3D curves sculpt brushes
- D14944: Fix T98101: Handle single point curves in delete brush
Cleanup
- Cleanup: Simplify loop syntax for curve points rB019681b9841d, rBb215fe82e8d4
- Cleanup: Use const arguments rBe222e19d826c, rBd095fcd6b417
- Cleanup: Remove unused function rBfff8f969def8
- Cleanup: Deduplicate Alembic procedural bounding box mesh creation rBf11401d32a30
- Cleanup: Remove redundant function rB29ca935eb8fc
- Cleanup: Use const in curves sculpt code rBed62b65474f0
- Cleanup: Decrease variable scope rBf5b708d1cf89
- Cleanup: Remove unnecessary indentation rBf4cbfaded657
- Cleanup: Order return arguments last rB3ad551042700
- D15011: Cleanup: Simplify custom data file writing process
Review
Requested changes
D14916: EEVEE/Workbench: support Curves attributes renderingAccepted
D14942: Curves: Draw legacy hair particle system as curves object. (WIP)Commented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D15009: Functions: Speedup preparing multi-function parametersAccepted
D14957: Improve check for whether a node tree references an animated Image.Accepted
D14998: Fix T98231: missing updates when material output is in groupAccepted
D14846: Geometry Nodes: Include Separate Color optimization from HansAccepted
D15004: Manual: Rename Max Width in "String to Curves"-nodeCommented
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.

Changes / Features
- Curves: Adjust sculpt mode UI layouts rBa4382badb91c
- Curves: Add disabled message for add empty hair operator rB2a2e47b20c88
- Refactor: Move resample curves code to the geometry module rBe0e95f789576
- BLI: Avoid invoking tbb for small parallel_reduce calls rBc2737913dbe7
- D14934: Curves: Add float selection in sculpt mode
- D14938: Edit Mesh: Parallelize bounding box calculation in edit mode
Bug Fixes
- Fix: Spline parameter node broken for Catmull Rom curves rB74a5fb734ab5
- Fix T98056: Screw modifier crash with normal calculation and merging rBcb5b33a627d9
- Fix: Crash with empty curves add interpolate points rB6599d2f03b2a
- Fix: Hide empty panel in curves sculpt mode tool settings rB2f799f893ea7
- Fix: Missing curves type count cache update in add brush rBb38cd1bcbedc
- Fix T97853: Crash with edit mode X-ray and subdivision rB686abf185054
Cleanup
- Cleanup: Simplify loop syntax, decrease variable scope rBe46a38942a87
- Cleanup: Remove includes from DerivedMesh header rB7b091fbb94c8
- Cleanup: Move three mesh editors files to C++ rB1c70402c62ad, rB7fc2804f45af
- Cleanup: Simplify loop syntax, make function static rB84a764156340
- Cleanup: Clang tidy rB024f3ddf617f
- Cleanup: Fix range loop construct warning rBc5b67975cd19
- Cleanup: Use single quotes for Python enum string rBb765ea52af02
- Cleanup: Move mesh primitive cube to the geometry module rBa74a26776770
- Cleanup: Return early rBb46825545325
- Cleanup: Remove incorrect statement after recent refactor rB892562b7bf9c
Review
Accepted
D14909: Geometry Nodes: String to Curves rename Max WidthAccepted
D14823: T97706: Adds operator to duplicate the active color attribute layerCommitted
D14828: Fix: paint slot material assignment issuesCommented
D13132: Nodes Editor: Draw lines across the center of the gridRequested changes
D14875: Spreadsheet: Support showing enum value strings instead of integers.Requested changes
D14733: Color Attribute: Add convert color attribute operationAccepted
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_typemaskCommitted
D14919: Curves: 'Interpolate Point Count' are missing in 'Brush Settings'.Accepted
D14892: Fix T97761: Incorrect mixing of integers.Committed
D14891: Fix: compiler warnings due to recent patch
Tracker
- Investigated: 20
- Confirmed: 6
- Resolved: 3
- Archived: 3
- Known Issue: 5
Next Week
Hopefully I'll finish up the patch to add selection in curves sculpt mode so that it can be committed and finish up a few of the other pending patches in the curves area. I'd also like to make a bit of tangible progress on the mesh struct of arrays refactor.
May 2 - May 6
This week was filled with planning, work on curves sculpt mode, and some geometry nodes curve development. From looking at the list below, apparently I got to a lot of patch review too.
Changes / Features
- Curves: Optimize filling all curves with a single type rB16011e34f08e
- Curves: Use copied original data for invalid NURBS curves rB2d80f814cc24
- Geometry Nodes: Improve performance of mesh to points node rB6513ce258f73
- Curves: Add method to find indices for curve type in a selection rB9ee9dd257fae
- D14870: Curves: Expose resample operator in sculpt mode
- D14769: Curves: Port set type node to new data-block (WIP)
Bug Fixes
- Fix T93272: Material index mapping missing for mesh boolean node rBf80e4f0046ed
- Fix T97831: Curve to mesh node can create invalid wire mesh rB302584bd6eef
- Fix T97718: Crash using "Text on Curve" rBaf2740abc0b0
- Fix: Handle default better in curves type count cache rB477066adeee1
- Cleanup: Avoid asan overflow warning for RNG seed rB0f2cc50fc6b1
- D14855: Fix T97853: Crash with edit mode X-ray and subdivision
Cleanup
- Cleanup: Remove unnecessary logic for resample curves node rB060c5a7fa2c1
- Cleanup: Rename field input class name rBb4fa74e81293
- Cleanup: Move color attribute enums to be reusable rB11d075f07da9
- Refactor: Use boolean array for curves delete brush rB9fb98735ea1a
- Cleanup: Further clarification and renaming of curve field inputs rB622c4e4953a0
- Cleanup: Move curve length field input to blenkernel rBbe0417d69018
- Cleanup: Add comment about mininum curve length rBb4fb2a69804a
- Cleanup: Adjust variable names, miscellaneous changes rB48c0738d4a21
Review
Requested changes
D14866: UI: Add tool-tips to shader node socketsAccepted
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 issuesAccepted
D14199: Subdivision node: add input for vertex creasesCommented
D14858: PoC: Allow shrinkwrap constraint to target curvesAccepted
D14872: Curves: Convert legacy curves to new curves objectAccepted
D14724: UI: Add color attribute create to canvas selectorCommented
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 operationAccepted
D14861: Curves: Use old Add > Curve menu for new curves object.Commented
D14841: Workaround T81065: Merge UV's when applying modifiersAccepted
D14859: Outliner: add icons for nodegroupsAccepted
D14775: BPY types: add default Geometry Node poll functionAccepted
D14840: Curves: Add second experimental option for new curves tools.Accepted
D14873: UI: Expand the Snap Curves to Surface operatorClosed
D12936: Geometry Nodes: Add HSVA separate and combine nodes
Tracker
- Investigated: 9
- Confirmed: 2
- Resolved: 3
- Archived: 1
Next Week
Mostly more of the same. The larger focus is getting the hair/curves system to be usable for the Heist open movie, and also to move it out of experimental.
April 25 - April 29
This week I worked on bug fixing, finishing up the named attribute node changes, and progressed on converting the set spline type node to the new data-block. On Friday and the weekend I prepared to travel to Amsterdam for the next 6/7 weeks.
Changes / Features
- Curves: Cache the number of curves of each type f431be224fa5
- Curves: Support applying geometry nodes modifier 96bdd65e740e
- Mesh: Make vertex normal property read-only 891268aa824f
- Geometry Nodes: Add default attribute name to field inputs/outputs 0ad73bb9655f
- Geometry Nodes: Move named attribute nodes out of experimental 3e7ee3f3bcd6
- Geometry Nodes: Add "Named" to "Remove Attribute" node name 2fd8fa8f8451
- D14760: Mesh: Add an explicit "positions changed" function
- D14779: RNA: Don't allocate empty char pointer properties
Bug Fixes
- Fix T97679: Retrieving shape key normals modifies vertices c9c95201d081
- Fix T97595: Modifier attribute output broken for vertex groups 96834a7bacff
- Fix T93546: Fill curve node ignores last point of non-cylic curves 5b1ec08f040a
- Fix T97151: Curve vertex parenting crash with dependency cycle 8095875dffeb
- Fix T93899: Incorrect decorator buttons for geometry nodes vector/colors 3d9f0280ff1b 3d9f0280ff1b
- Fix: Correctly copy and update curve type counts cache 98ad294d1719
- Fix: Incorrect implicit enum conversion 8e1b16534d40
- Fix: Incorrect conversion from C bitfield syntax 2d7957727c9b
- D14788: Fix T93272: Material index mapping missing for mesh boolean node
Tests
Cleanup
- Snap: Use Map and unique_ptr for snap cache 1f270cf99b76
- Cleanup: Remove redundant vertex normal dirty tags 3b4b2bcb1326
- Cleanup: Move anonymous attribute removal to geometry component 3b4b2bcb1326
- Cleanup: Use bool, remove unnecessary struct keywords 9a8669ac81b9
- Geometry Nodes: Avoid parallel_for_each with a single geometry e9334c5df8b9
- Cleanup: Remove disabled optimization code b60f3fe6ada2
- Cleanup: Reword comment, rename variables 8399375098fa
- Cleanup: Improve const correctness of shape key functions b1b153b88c14
- Cleanup: Fix compiler warnings 099120e54a8b
Review
Requested changes, accepted
D14628: Geometry Nodes: Refactor array devirtualization.Requested changes
D14733: Add color attributes option to Convert Attributes operationRequested changes
D14199: Subdivision node: add input for vertex creasesRequested changes
D14759: Custom Colors for Empty ObjectsAccepted
D14785: Color Attribute: Add menu QoL improvementsRequested changes
D14607: Assets: Implement viewport drag and drop for geometry nodes (WIP)Commented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesAccepted
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 iconsAccepted
D14751: Geometry Nodes: Improve attribute dependency overlay.Accepted, committed
D14762: Fix: Socket tooltip display error
Tracker
- Investigated: 29
- Confirmed: 3
- Resolved: 6
- Needs Information: 2
- Archived: 7
- Duplicate: 2
Next Week
Adjust to jetlag and life at the Blender studio, finish up some ongoing changes, probably meetings, etc.
April 18 - April 22
This week I basically did more of the same, and not much new to show for it. I spent some time on the design tasks listed here, particularly the volume one where I made some mockups of how volume grids would interact with fields in geometry nodes.
- T91668: How to deal with multiple volume grids in a geometry
- T93905: Unify Image Texture node in geometry and shader nodes
- T97512: Rename to Remove Named Attribute node
- T97452: Attribute identification and semantics
Changes / Features
- Mesh: Avoid unnecessary normal calculation and dirty tags 6a3c3c77b3ebdb
- Refactor: Move mesh face dot tag out of MVert 8c25889bb67db4
- Nodes: Remove unnecessary RNA pointer creation ef2b8c1c3afac9
- D14685: Refactor: Move mesh hide flags to generic data types (WIP)
- D14730: Curves: Support applying geometry nodes modifier
- D14732: Curves: Cache the number of curves of each type
Bug Fixes
- Fix T96498: Modifiers affect multiple curve objects a7c65ef4cbbd71, rBL62890
- Fix: Memory leak writing to builtin attribute from modifier 65e4c91bec405a
- Fix: Build error on macOS after previous commit e96623c19babcb
- Fix: Assert failure with certain screw modifier settings fe43c170831fa8
- Fix: Use alphabetical order in geometry nodes add menu 74b9c351b9783c
- Fix: Incorrect info message in set material node d813ee55fdc872
- Fix: Assert when sculpting empty curves 5a069967222ebb
Cleanup
- Curves: Further split of curves draw code from particles 5b87862ddca2cb
- Cleanup: Don't recalculate normals in versioning code 9ec94c3882a414
- Cleanup: Remove unused variables, adjust comments 7f726b48ace40a
- Cleanup: Clang tidy, unused variable warnings ff6098345a6e0f
- Cleanup: Rename CD_MLOOPCOL to CD_PROP_BYTE_COLOR 03ec505fa54984
- Cleanup: Clang tidy 98fc998c70c172
- Cleanup: Remove redundant types from custom data masks 7cb6fb01831e94
- Cleanup: Move object_modifier.c to C++ 95cce6f6b0b4c9
- Cleanup: Remove incorrect comment 314b27850ccb6d
Review
Requested changes
D14607: Implement drag n drop for geo nodesRequested 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 spreadsheetRequested changes
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeCommented
D14469: Fix T95604: Naming inconsistencies in alembic exporter optionsCommitted
D14615: Fix T94559: Copying a geometry node group does not copy animation dataAccepted
D14535: Fix T97002: Preserve multi socket link orderAccepted
D14700: Curves: Show sculpt tool settings in panels.
Tracker
- Investigated: 13
- Confirmed: 3
- Resolved: 1
- Archived: 3
Next Week
I'll try to port another node or two to the new curves data-block and look into various other geometry nodes topics.
April 10 - April 17
This week I worked more on porting curve nodes (I spent most of that time on the curve to mesh node). I also did some miscellaneous performance improvements and code review, and spent the last couple days of the week looking into bugs.
Changes / Features
- Curves: Port curve to mesh node to the new data-block 7484f274dcdc90
- Edit Mesh: Parallelize bounds calculation with deform modifiers 0ba061c3bc9bf2
- Curves: Avoid duplicating evaluated positions with all poly curves 5a98e3827559c9
- Refactor: Evaluate surface objects as mesh components edcbf741df2f6d
- UI: Improve wording for some USD export descriptions 65194f47b0a387
- D14621: Geometry Nodes: Port sample curves node to new data-block
- D14661: Geometry Nodes: Improve performance of mesh to points node
Bug Fixes
- Fix T96988: Merge by distance node crash with certain input dc5ae10692520e
- Fix T97363: Duplicate elements node doesn't tag loose edges 089e7011913e35
- Fix: Apply tilt in curves data-block normals calculation 47d961a4b1c14b
- Fix: BMesh Python API errors after vertex_normals addition 77db370cb6e032
- Fix: Incorrect custom data maxlayers in rare files baae87ce86dc
- Fix: Use after free when removing attribute on instances 05715eaea144b3
- Fix: Assert evaluating single point Bezier curve 94495049a8ef2b
- Fix: Use consistent type for nurbs order attribute a8ee279aa903ad
- Fix: Curves: Add missing builtin attribute definition 078aa677b69216
- Fix: Assert when curve has no evaluated points 359b6baf325a70
- Fix: Missing translation in node socket inspection 810f33d434c2
Cleanup
- Curves: Split curve EEVEE/workbench functions from particle hair f31c3f8114616b
- Cleanup: Return early cb3c233ed3a519
- Cleanup: Clang tidy 0f9057390de1ce, ad3378215c0465
- Cleanup: Further hair to curves renaming 180163c4e4484b
- Cleanup: Declare variables where initialized 232b388455a53f
- Cleanup: Make curve deform argument optional 8e4c3c6a2414a3
- Cleanup: Move three mesh files to C++ abd02da4bd5ca5
- Cleanup: Correct wording in comments 88ab34488b45a5
- Cleanup: Remove reference to CD_NORMAL in poly custom data b1d915d0271942
Review
Commented
D14481: Curves TrimCommented
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 SmoothAccepted
D14277: Curves: Initial geometry nodes support for curves object.Accepted
D14034: Geometry/Compositor/Shader/Texture Nodes: Add general Combine/Separate Color nodesAccepted
D14643: Fix T95700: Oject Info node does not work with GPU subdivided meshesRequested changes
D14802: Geometry Nodes: Show supported types in geo socket tooltip.Accepted
D14615: Fix T94559: Copying a geometry node group does not copy animation dataRequested changes
D10895: T86838 Geometry Nodes: Add Mesh To Volume NodeCommented
D14335: Curves edit mode: support point selectionAccepted
D14640: Random value node hintsAccepted
D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material PropertiesCommented
D11591: Alembic: import arbitrary attributesAccepted
D14637: Curves: Fix some issues with operator to convert to particle system.Committed
D14622: Adding support for New Curves type in Set Material nodeAccepted
D14616: Curves Sculpting Icons: Snake Hook and Grow updatesAccepted
D14584: Fix adding certain nodes can cause python errors
Tracker
- Reported T97310: Tooltips broken after recent BLF commit
- Investigated: 34
- Resolved: 7
- Archived: 7
- Duplicate: 2
- Known Issue: 2
Next Week
Exactly the same as last week! I'll port more curve nodes to the new data-block, do more code review, and some continued struct-of-array refactoring for mesh code.
April 4 - April 10
This week I mostly worked more on curves to-dos. I also did a fair amount of code review, and some bug fixing.
Later on I looked into removing some DispList
code. Apart from some weirdness with instancing of metaballs that is going pretty well.
Changes / Features
- Curves: Port tangent and normal calculation to the new data-block ceed37fc5cbb46
- Curves: Add initial sampling utility, use for snake hook brush eb40b231f9e11d
- Curves: Port legacy curve viewport drawing to the new data-block b84255f590c07b
- Curves: Hair to Curves rename in Cycles/EEVEE UI 8b04308953adae
- Geometry Nodes: Parallelize mesh line node 8f344b530a6ed8
- Refactor: Evaluate surface objects as mesh components edcbf741df2f6d
- D14576: Curves: Split curve EEVEE/workbench functions from particle hair
- D14593: Refactor: Evaluate metaball objects as mesh components
- D14583: Blend Write: Add option for legacy mesh format
Bug Fixes
- Fix: Various fixes and cleanups in new curves code 502d16e6678848
- Fix: Curve parameter node broken for Bezier curves after refactor 74db0f3d5fa18e
- Fix: Missing virtual destructor on virtual class 6aaae444736199
- Fix: Assert fails when evaluating single point Bezier curve 1d86d617823b7a
- Fix T96838: Missing translations in link drag search e7f4aa8f0cb617
- Fix T96999: RNA mesh transform does not mark normals dirty 9c962b2e2b3d77
- D14561: Fix T96498: Curve object modifier affects all curves
Cleanup
- Cleanup: Return early in metaball tessellation code 46c54b12b02d5b
- Cleanup: Define new curves normal mode in DNA 87a3bf33564b03
- Curves: Name mutable data retrieval functions explicitly 8551e890687de7
- Cleanup: Pass const arguments to object snapping 7a5e663843786f
- Cleanup: Simplify if statements, clang tidy bb7e3c2b563f75
- Cleanup: Move interface.c to C++ 432ad4c6327876
- Cleanup: Remove unused function 9eb4cb956b7037
Review
Requested changes
D9967: Add support for showing socket descriptions in tooltips in Node Editor and Material PropertiesRequested changes
D14607: Implement drag n drop for geo nodesRequested changes, accepted
D12587: Move Sculpt Colors From ExperimentalAccepted
D14515: Curves: Operator to snap curves to surface.Accepted
D14585: Functions: Optimize simple generated multi-functions.Accepted
D14262: Curves edit mode: show dots for pointsAccepted
D14474: Curves: New Grow/Shrink brush.Accepted
D14330: Curves: fix edit mode detectionCommented
D14608: Updated voxel remesher defaultsCommitted
D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance nodeCommitted
D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3DCommitted
D13558: Fix T86200: Properties editor rearranges columns poorly when very wideCommitted
D14522: Geometry: fix division by zero inGEO_uv_parametrizer_pack
Committed
D14577: Set curve resolution in curves_to_curve_eval()Committed
D14518: Knife tool: Fix UI alignment in extra settings popoverAccepted
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.
Changes / Features
- Geometry Nodes: Add search to named attribute input node 3ecdfd09386ee7
- Geometry Nodes: Port set handle nodes to new data-block 00ba51d37bf5b1
- Curves: Add length cache, length paramerterize utility 72d25fa41d8c57
- Curves: Port resample node to the new data-block 60a6fbf5b59911
- Curves: Port parameter node to the new data-block f4f89a76a8f4ca
- Curves: Port length node to the new data-block 62334c6ee4c967
- Geometry Nodes: Remove soft min from extrude node scale 4a93c4bf1d3931
- Curves: Port curves total length node to the new data-block 400ea40dca7a9b
- Curves: Support set origin and apply transform operators 933d56d9e98d3b
- Curves: Inline some simple methods f6baba695cc0a7
- D14483: Use a vector instead of a linked list for object instances (WIP)
Bug Fixes
- Fix T97001: Grease pencil array modifier relative offset broken 637fe6f5ff9c8f
- Fix: Assert with set origin operation and single active object a567bef5ccae85
- Fix: Remove special case from curve segment size function 87e9451d660e82
- Fix: Failing curves test after recent commit e26c89cd767ce0
- Fix: incorrect assert in new code ac9ddf54a0bb80
Cleanup
- Cleanup: Remove interface region files to C++ 4537eb0c3b1678
- Cleanup: Move interface View2D files to C++ be699936af7b86
- Cleanup: Remove object bounding box function 69c07adb518329
- Cleanup: Remove unused boundbox flag 11c6d4e88eb919
- Cleanup: Use const for bounding boxes where possible f688e3cc3130e7, 5387d33e5f954c
- Cleanup: Move geometry set fields to a separate header 5c80543c4366ee
- Cleanup: Curves draw cache renaming, use references 8466fd4bd1fe0f
- Cleanup: Avoid storing pointers for attribute search callback 762d3a48e860d3
- Cleanup: Move scene.c to C++ fc288d39702aad
- Cleanup: Move transform_snap_object.c to C++ 037f7891115318
- Cleanup: Move two grease pencil files to C++ 27424b758a874b
- Cleanup: Remove legacy dupli system from point cloud object 1f6c2507f80ce4
- Cleanup: Use float3 type 59c3194f8e8850
- Cleanup: Remove unnecessary namespace specification 41ee5382f655fe
- Cleanup: Use const mesh arguments c9f54cd644e12b
Review
Requested changes
D12587: Move Sculpt Colors From ExperimentalRequested changes, accepted
D11592: Alembic/USD: use geometry sets to import dataRequested changes, accepted
D11591: Alembic: import arbitrary attributesAccepted
D14262: Curves edit mode: show dots for pointsAccepted
D14408: Curves: Improve Snake Hook brush.Commented
D14507: Assets: Instancing operator option for collection asset droppingCommented
D14199: Subdivision node: add input for vertex creasesCommented
D14474: Curves: New Grow/Shrink brush.Requested changes
D14389: Geometry Nodes: Unwrap and Pack Islands NodesAccepted
D14457: UI: Address cosmetic papercuts of the reroute nodeAccepted
D14249: Nodes: Remove hidden links when creating node groupsAccepted
D13302: UI: Improve visual stability of the dot grid backgroundCommented
D14330: Curves: use a flag to detect edit modeCommented
D14400: Attributes: show attributes in edit mode n-panelAccepted
D14441: Curves: Support converting curves to legacy hair system.Committed
D14501: Fix: outliner and button icons alignmentCommitted
D14453: Move uvedit_parametrizer functions to blenlib from uvedit codeAccepted
D11474: Fix T88785: Avoid value slider clipping through rounded cornersAccepted
D14458: Geometry Nodes: Don't create new node tree when adding a nodes modifierAccepted
D14443: Cleanup: Fix various typos (code and comments)Accepted
D14476: Fix T91541: Naming inconsistency in Freestyle Modifier - Curvature 3DAccepted
D14469: Fix T95604: Naming inconsistencies in alembic exporter options
Tracker
- Investigated: 9
- Resolved: 2
- Archived: 2
Next Week
I'll have to spend some time solving the current issue with curve object updates (T96498). Beyond that, next week will probably look pretty similar.
March 21 - March 27
This week I spent most of my time working on porting more nodes to the new curve data structure, and on bug fixes. The performance improvements I get when porting nodes are satisfying, and it's really important to make sure we don't have three separate curve types in Blender's code, but I'm getting a bit burnt out working on constant refactoring, so I might take a break from that next.
Changes / Features
- Geometry Nodes: Multi-thread creation of selection from field d3a1e9cbb92cca
- Geometry Nodes: Improve performance writing to vertex groups 610ec34c1f7dbd
- Curves: Add a utility to count curves of each type c0016d85b2a628
- Curves: Bezier and general interpolate to evaluated utility cea51c1bb500eb
- Curves: Tweak evaluated offset functions 797a1356caadc8
- BLI: Add utility for tracking average and min runtime 7ef3a1a6e6e749
- BLI: Adjust interpolation to support integers, other tweaks 378022c7973db5
- UI: Use title case for labels f92e3b39f18a3d
- D14435: Curves: Port resample node to the new data-block
- D14382: Curves: Add length cache, length paramerterize utility
- D14463: Curves: Port length node to the new data-block
- D14464: Geometry Nodes: Port set handle nodes to new data-block
- D14462: Curves: Port curves total length node to the new data-block
Bug Fixes
- Fix T96308: Mesh to BMesh conversion doesn't calculate vertex normals 64cd927519748b
- Fix T96294: Crash and error with shape key normal calculation b0aaf6ff4a9731
- Fix T96401: Broken multires baked normals result 3a8a7d93f92719
- Fix T96494: Array modifier with caps crash on curve objects 923b28aab85768
- Fix: Small fixes for NURBS evaluation 8ed46389601dc3
- Fix: Missing "Hair" to "Curves" rename 067d0d44669f85
- Fix: Build error with flag usage and strict warnings fb3a0a34b4d2d2
Cleanup
- Cleanup: Simplify logic, rename variables 9b2879f8b38a45
- Cleanup: Adjust naming in new curves code e253f9f66d6f63, 6e72e3fdb295fd
- Cleanup: Add asserts, remove default case 1243cb803e7d09
- Cleanup: Use more specific variable name 83c99ccb2169b5
- Cleanup: Use bool for BMesh creation params 1c790555a02bfc
- Cleanup: Small changes to multires bake normals access def1c0c5385b78
- Cleanup: Clang tidy aeb2c2afaf00d1, 976c91cd770f43
- Cleanup: Typo, improve variable names 6d61cf4e80d03e
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 attributesAccepted
D14376: Curves: Improve Comb brushCommented
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_validCommented
D9967: Add support for node socket tooltipsAccepted
D12155: Curves: Curve PenRequested changes
D14469: Fix T95604: Naming inconsistencies in alembic exporter optionsCommitted
D14283: Fix unreported: Drag link search doesn't always connect to the socketCommented
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 8538c699216621
- Geometry Nodes: Remove legacy node code 943b919fe807b5, rBL62854
- Geometry Nodes: Add named attribute nodes behind experimental flag d4e46c13cc92e0
- Curves: Port duplicate elements node to new data-block 663bd38ed65eb0
- Curves: Port handle type selection node to new data-block 578c2f117a9ed9
- Curves: Port Bezier Segment node to the new data-block 389807624de844
- Curves: Port transform node to new data-block 5d7f4f2cab20a9
- Curves: Port fill curve node to the new data-block b2cb99d3fd19a8
- Curves: Port reverse curves node to the new data-block 298d8a7b4aedb7
- Curves: Port handle type selection node to new data-block 578c2f117a9ed9
- Curves: Port convex hull node to new data-block d4bd9f6a278b70
- Curves: Port count spline length output to new data-block 379bd6d50ce37e
- D14382: BLI: Add length parameterization utility
Bug Fixes
- Fix: Curves last evaluated segment is empty 8146c996ebd7cd
- Fix: Build error from missing build dependencies 263c5b33d697f6
- Fix: Update icons for hair to curves rename 9af791f8739edc
- Fix: Build error after curve evaluation commit 7a4af7a01ba9df
- Fix: Compiler error on windows and mac 22de21bef1a317
Cleanup
- Cleanup: Miscellaneous improvements to duplicate geometry node 6d97a5f93c77c9
- Cleanup: Move object_transform.c to C++ 356073c13e1648
- Cleanup: Reorganize duplicate elements file ee2d39b3a74a80
- Cleanup: Remove unnecessary namespace specification 2564d152d6edf6
- Cleanup: Remove unnecessary namespace usage, use const d2726e46262a4f
- Cleanup: Rename "spline" variables to "curve" 0835996cc92896
- Cleanup: Remove unused includes 7bdba5f1e058af
- Cleanup: Further removal for legacy geometry nodes 213d00607ea00d
- Cleanup: Clang tidy cc98b40f870c39
Review
Requested changes
D14340: Curves: New Add brushRequested changes
{Phab|D14389}}: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D14389: Geometry Nodes: Unwrap and Pack Islands NodesCommented
D13522: Eevee: Add support for Nishita sky textureRequested changes, accepted
D14321: Geometry Nodes: Add "Connected" mode for Merge by Distance nodeRequested changes
D11591: Alembic: import arbitrary attributesRequested changes
D14335: Curves edit mode: support point selectionRequested changes
D12155: Curves: Curve PenRequested changes
D14330: Curves: add an EditCurves structureCommented
D14379: Add Material Index selector to existing Multiple strokes modifierCommented
D14262: Curves edit mode: show dots for pointsAccepted
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
Changes / Features
- Curves: Port realize instances node to the new data-block 6c6f591f909a02
- Curves: Port mesh to curve node to new data-block 901a03725ed581
- Curve: Store NURBS basis cache as a single vector 25b4e41875bb7c
- Curve: Remove temporary buffer during NURBS evaluation 29dc6fb1c1db3f
- UI: Use property split in curves surface panel f19582ebf489c3
- D14284: Curves: Initial evaluation for curves data-block (WIP)
Bug Fixes
- Fix: Deleting vertex group attribute can change original mesh 5c86f0369c6fc4
- Fix T96146: Subdivide curve node uninitialized dangling handles 521d4190a09b11
- Fix: Assert in set spline type node after recent commit dbd9472ef58174
- Fix T95843: Invalid mesh runtime data after sculpt undo c77597cd0e15f9
- Fix T93573: Curve evaluated mesh selected in edit mode 2b3367cdf8694a
- Fix: Handle handles reset when realizing with other curve types edcb2ad7b3a07f
- Fix: Use "construct" instead of "assign" for uninitialized memory 115ff08fdb251c
- Fix: Curves cyclic access function duplicates attribute c238728105272b
- Fix: Add missing break 24c543d4af599e
- D14317: Fix T96294: Crash and error with shape key normal calculation
Tests
- Geometry Nodes: Add test file with many NURBS curves rBL62853
- Geometry Nodes: Add regression test for recent commit rBL62850
- Adjust OBJ tests slightly for recent NURBS cleanup rBL62852
- Curves: Add test for knots generation commit rBL62851
Cleanup
- Cleanup: Reduce duplication in realize instances code 338fe9e2b53607
- Cleanup: Simplify NURBS basis cache arguments 3c8182409c02bf
- Cleanup: Remove unnecessary NURBS optimization 34a61ceeaa0d9f
- Cleanup: Simplify/deduplicate curves built-in attribute access f3799437347d0e
- Cleanup: Use new enum for NURBS curve knots modes db7c4d7a1cf3a4
- Cleanup: Use helper variable, const argument 4ec1c8bc9c0cb9
- Cleanup: Use helper variable 28434dab0c9b59
- Cleanup: Rename geometry set "curve" to "curves" b8f1ae5c388608
- Cleanup: Correct comment 90c3147e05b310
- Cleanup: Clang tidy d09695b4dd0eca
Review
Commented
D13953: Geometry Nodes: Split CurvesCommitted
D13891: Revision of NURBS knot generation modesAccepted
D14315: Validation message split from nurb_check_validAccepted
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 pointsCommented
D14323: Geometry Nodes: Add "Is Seam" and "Set Seam" nodes, "seam" attributeAccepted, committed
D14279: Geometry Nodes: Tiny optimization to UV SphereAccepted
D14283: Fix unreported: Drag link search doesn't always connect to the socketCommented
D14326: Geometry Nodes: Add "Set Sharp" and "Is Sharp" nodesCommented
D14277: Curves: Initial geometry nodes support for curves object (WIP).Committed
D14172: Implement interpolation for boolean custom data typeCommented
D12482: Geometry Nodes: Add UV output to Curve to Mesh nodeCommented
D14173: UI: Multi-Window Area DockingCommented
D14199: Subdivision node: add input for vertex creasesCommented
D14281: Geometry Nodes: Add "Capsule" geometry primitiveRequest changes
D11907: Geometry Nodes: Remesh VoxelAccepted
D14276: Fix Spline Length node after recent refactor.Commented
D14287: Preferences: Convert certain preferences to be row-based.Accepted
D14301: Fix T96292: Unable to set active material output using Python.
Tracker
- Investigated: 9
- Resolved: 3
- Confirmed: 2
Next Week
I think I can finish up the position evaluation earlier this week. Then I can either work on the rest of curve evaluation, and porting the rest of the nodes, or help on sculpt/edit modes for curves.
February 28 - March 5
This week I worked more on converting code to use the new curves data-block, and made progress on curves evaluation with the new data-block as well.
I also did a fair amount of bug fixing and investigating for the 3.1 release.
I was visiting family, so I worked a little less than usual.
Changes / Features
- Geometry Nodes: Begin conversion to new curves 9ec12c26f16ea3
- Geometry Nodes: Port most curve primitives to new data-block 444d57d4404593
- Curves: Move curves primitive to object add code f98d74c80de7b1
- Curves: Port set resolution node to the new data-block ddf956fb5846da
- BLI: Add functions to IndexRange to mirror Span d793d184137afb
- D14247: Curves: Port realize instances node to the new data-block
Bug Fixes
- Fix T96164: Crash with curve domain attributes 295d5c6ef5b9a4
- Fix T96152: Crash realizing curve instances 887ccb853711d8
- Fix T93573: Remove outline from instances in edit mode 216a215ba58ac6
- Fix: BLI math clamp doesn't work 2600806c2ef1b6
- Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32bdbe
- Fix: Don't tag curves component cache dirty for radius 94a4dddb1b64ec
- Fix: Use correct default in Curves to CurveEval conversion 9ebb65323e57ed
- Fix: Only possible to create one 8 bit integer attribute 1a8db5b717299e
- Fix: Incorrect assert in curves code 4f2f3114b7be27
- D14229: Fix T93573: Curve evaluated mesh selected in edit mode
Cleanup
- Cleanup: Mesh normal calculation comments and logic ac3f4db719451a
- Cleanup: Rename set handle type node internally to match UI 3c175caaa34f72
- Cleanup: Unused variable warnings 1763ffa0be4806
- Cleanup: Use bool instead of int 611157057b5f8b
- Cleanup: Rename geometry set "curve" functions to "curves" 245722866d6977
- Cleanup: Move mesh_validate.c to C++ 579f42ae525df0
- Cleanup: Move object_add.c to C++ 4c407f20a62c7d
Review
Requested changes
D12155: Curves: Curve PenAccepted
D14223: Search: Take word order into account in string search.Commented
D14205: Geometry Nodes: Add selection outputs to Curve to Mesh nodeAccepted
D14207: Curves: Add brush to add curves on surface.Committed
D11930: Nodes: Improve readability of selected node linksAccepted, committed
D14192: UI Papercut: Fix multi input socket outline and highlightAccepted
D14225: Fix T95479: Geometry nodes crash with cage display.Commented
D12482: Geometry Nodes: Add UV output to Curve to Mesh nodeAccepted
D13891: Revision of NURBS knot generation modesAccepted
D14215: BLI: Add scoped-defer utility to add RAII-like behavior to C types.Committed
D14129: Dual Mesh: use std::moveAccepted
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
- T95940: Remove normalization from original coordinate attribute (CD_ORCO)
- T95776: How to attach hair to a surface
- T95845: Use Copy on Write in more places
Changes / Features
- Curves: Use simpler "set" behavior for postion attribute 4c66bd5da256
- Curves: Use simpler "set" behavior for handle position attributes f8fe0e831ec1
Bug Fixes
- Fix T95839: Data race when lazily creating mesh normal layers 59343ee1627f
- Fix T93873: Wrong limits for color socket exposed to modifier be6bcaa8c13d
- Fix: Clear mesh runtime cache when adding elements 353fe610ed2d
- Fix T95987: Data transfer modifier custom normals crash 398538b914a3
- Fix T95952: Uninitialized value used in Bezier Segment node dbef66c32f72
- Fix T95919: Apply Pose as Rest Pose Operator crashes 284cef473fed
- Fix: Build error in debug build a81cc5cbcb6c
- Fix: Failing OBJ export tests due to mesh normals commit 7aa0be4b32bd
- Fix: Errors in previous cleanup commit 06bc20f61a82
- Fix: Attempt to fix build error on windows 7518adc5bbe2
- Fix: Crash switching between sculpt and edit mode 7b37d980b97f
- Fix: Only possible to create one 8 bit integer attribute 1a8db5b71729
- Fix: Incorrect assert in curves code 4f2f3114b7be
Cleanup
- Cleanup: Mesh normal calculation comments and logic ac3f4db71945
- Cleanup: Use function to check if normals are dirty b7171d1b8220
- Cleanup: Use new enum for CurveEval handle types 5b4732f81ca8
- Cleanup: Use new curves type enum for CurveEval f3ef0763b411
- Cleanup: Remove unused mesh dirty flags ad3ee84f4e5f
- Cleanup: Use curves wrapper dde5cc6670f3
- Cleanup: Simplify operating on multiple geometry components c23ee6d7b4d6
- Curves: Add methods to retrieve range for points or curves 1361c6e60460
- Cleanup: Typo in comment f4d80ecdfd31
Review
Requested changes
D12155: Curves: Curve PenAccepted
D13701: Geometry Nodes: Duplicate ElementsAccepted
D14181: Fix T95985: Crash when assigning a name for an output attributeAccepted
D14180: Curves: Initial brush implementations for curves sculpt modeAccepted
D14192: UI Papercut: Fix multi input socket outline and highlightClosed
D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive node.Closed
D14155: Fix T93873: Broken UI of color socket inputClosed
D14174: Fix T95952: Uninitialized value is used in Bezier Segment primitive nodeCommented
D13906: Geometry Nodes: Mesh Face is Planar NodeCommented
D14093: Enabled the outliner to use the correct icon for each curve subtype.Closed
D14196: Nodes: NodeSocket location exposed to the Python API
Tracker
- Investigated: 10
- Resolved: 5
- Archived: 1
Next Week
More similar work: curves evalaluation, and a bit of code review and bug fixing.
February 14 - February 18
Another very similar week, only a couple things really different from last week. On Friday Jacques and I discovered a threading issue with the new lazy normal calculation that I had to fix: T95839
Part of the work on the curve data structure sent me on a tangent of reworking the newly added C++ templated math operations to add support for basic types like float
and int
, in addition to the vector types like float3
. That's useful for sharing very type-agnostic code.
Changes / Features
- BLI: Implement templated math functions for basic types 399168f3c13f
- BLI: Generalize short algorithm for finding bounds 5b73017ddb67
- Mesh: Avoid creating incorrect original index layers 1850a0b2ab12
- Cleanup: Use functions for accessing mesh normal dirty state 969c4a45ce09
- Nodes: Update dependency graph when removing some nodes 734c6a4405f2
- D14145: Geometry Nodes: Begin conversion to new curves (WIP)
Bug Fixes
- Fix T95252: Move duplicate node doesn't do edge-panning 33d5ecd5b5e0
- Fix T95720: Spreadsheet missing volume grid info 1f7f7ca14e50
- Fix T94495: Split edges node leads to a crash in edit mode 82c3bef7655b
- Fix: Debug build error with vector type division 48432c1c9282
- Fix: Build error in debug build cbdd57864049
- Fix: Memory leak in recently added curves copy function 114cc47b7876
- D14154:Fix T95839: Data race when lazily creating mesh normal layers
Cleanup
- BLI: Change dependencies in vector math files a9f023e22638
- Cleanup: Pass const Scene to mesh evaluation 7773393d35ac
- Cleanup: Deduplicate functions for creating attributes 8c96ee8903e0
- Cleanup: Remove unused argument to mesh tessellation ef0e21f0ae71
- Cleanup: Use C++ math functions ad1f8a50b026
- Cleanup: Rename original curve object type enum ad1f8a50b026
- Cleanup: Rename file used for calculating mesh edges 3ed3ee253b12
- Cleanup: Clang tidy 7d5f6c330f10
Review
Updated
D13701: Geometry Nodes: Duplicate ElementsCommented
D12587: Move Sculpt Colors From ExperimentalCommented
D13891: Revision of NURBS knot generation modesAccepted, committed
D14065: Fix T95542: Dual Mesh crashes with some non-manifold verticesCommented
D13958: New C++ based wavefront OBJ importerAccepted
D11930: Nodes: Improve readability of selected node linksAccepted
D14107: Curves: Add experimental curves sculpt mode.Commented
D14143: Improve Complex Solidify Constraints SolverCommented
D13906: Geometry Nodes: Mesh Face is Planar NodeAccepted
D14136: Curves: add initial edit mode supportAccepted, committed
D14122 D14122: Fix T87829 and T95331: Issues when nodes too close togetherAccepted, committed
D14124: Fix (unreported): Curve to Mesh: Don't create caps, when the rail curve is cyclicAccepted
D14117: Curves: Initial brush system integration for curves sculpt mode.Accepted
D14151: UI: Do not include the text stating an enum item is the defaultAccepted, committed
D14142: Fix T93526: Missing tooltip for attribute search buttonAccepted
D14129: Dual Mesh: use std::move
Tests
- Geometry Nodes: Add regression test files for extrude node rBL62844
- Geometry Nodes: Add regression test for T95542 rBL62843
Tracker
- Reported: T95839: Data race when lazily creating mesh normal layers
- Investigated: 16
- Resolved: 2
- Archived: 3
- Known Issue: 3
- Needs Information: 1
- Confirmed: 2
- Duplicate: 3
Next Week
Similar plan: I'll do a bit more bug fixing for 3.1, work on curves evaluation and the refactor to change nodes to the new data structure, and do code review.
February 7 - February 13
This week I worked more on implementing the curves data-block, lots of miscellaneous code review, some bug fixes, and had some meetings. Two with industry folks about the hair project, and one about the sculpt vertex colors patch. I'm also still making progress on my project of turning mesh vertex data into a regular vector for just positions (T93602).
Changes / Features
- Curves: Rename "Hair" types, variables, and functions to "Curves" fe1816f67fbc6a
- Refactor: Move PBVH update tag out of MVert 7682d7de046185
- D14054: Curves: Further implementation of new curves data structure
- D14077: Refactor: Move bevel weight out of MVert and MEdge
- D14053: BLI: Generalize short algorithm for finding bounds
Bug Fixes
- Fix T95458: Line art ignores curve objects with no evaluated mesh 88ff5e5fb9d66d
- Fix T95573: Incorrect bounding box of evaluated curve b76918717dbfd8
- Fix T95620: Crash When Entering Edit Mode on a Curve d1202bd641ca26
- Fix: Incorrect size used for reading curves data 516781da809dcd
- Fix: Missing changes in recent "Curves" rename 40e8b9775d3430
- Fix: Complete curves renaming missed in previous commit 2887df119c3b4e
Cleanup
- Cleanup: Remove unused mesh mask definitions 0247dcde6585d7
- Cleanup: Clang tidy, unused variabel warnings c824c06f3881bb
- Cleanup: Clang tidy 2cc47474434aaf, 7d5f6c330f1065
- Cleanup: Remove definition for unused flag 22c60ac8b15835
Review
Commented
D12587: Move Sculpt Colors From ExperimentalRequested changes
D13701: Geometry Nodes: Duplicate ElementsAccepted
D13906: Geometry Nodes: Mesh Face is Planar NodeAccepted, committed
D13356: UI: Improve node drop shadowRequested changes
D13891: Revision of NURBS knot generation modesAccepted
D14006: BLI: New C++ BitVector data structure.Accepted
D13737: Fix T94415: Nodes: poor selection behavior inside frame nodesCommented
D13953: Geometry Nodes: Split SplinesCommented
D12746: Geometry Nodes: Add Random Spherical Distribution nodeCommented
D13958: New C++ based wavefront OBJ importerCommented
D13577: Geometry Nodes: Add Between operations to Compare nodeRequested changes
D14042: Move solidify code to geometry moduleAccepted
D14051: Fix T95612: Missing domain interpolation when setting output attribute.Accepted, committed
D14026: Fix T95532: Merge node deletes everything for empty selectionsCommented
D14038: Geometry Component: add access to vertex creasesCommented
D13749: Node: Mix nodeCommented
D14050: Fix T91840: Don't create invalid links when inserting a node on a link.Commented
D11209: [WIP] Reroute node improvementsClosed
D14046: Bevel modifier limit method based on edge/face smoothnessCommented
D14062: Fix size_t -> int -> size_t round trip in CyclesClosed
D13656: Fix T94334: 3DView View Menu Close Error
Tracker
- Investigated: 21
- Resolved: 3
- Archived: 5
- Known Issue: 1
- Confirmed: 5
Next Week
The same as last week's plan: code review and a bit of work for 3.2 targets, continue building the new curves data structure, and bug fixing.
January 31 - February 6
This week I mainly worked on bug fixing, code review, and starting to refactor the new curves data structure.
I also organized a 3.2 targets list for geometry nodes, and created tasks where necessary. There were some design discussions about 2D vector sockets, which I suppose I'll continue next week.
One interesting bug I ran into was T93245, where it turns out that creating over 2047 instances overrides point cloud object's color!
I also abandoned some of my old patches that I don't think are worth pursuing at this point:
- D9145: Property Search: Use fuzzy string matching
- D10619: WIP: Curve Profile Presets
- D12175: Geometry Nodes: Proof of concept lazy conversion to and from BMesh
- D11773: BLI: Add "is_parallel" function for float3
- D11596: Geometry Nodes: Curve Deform Node
Changes / Features
- Curves: Changes to the new curves data-block f59767ff972954
- Attributes: Infrastructure for generic 8-bit integer data type e7912dfa1959be
- Geometry Nodes: Remove object transform dependency in some cases c9b578eac8a3c0
- D14007: Curves: Rename "Hair" types, variables, and functions to "Curves"
Bug Fixes
- Fix T95334: Crash with no vertex normals in multires bake 2f591adc1a95de
- Fix T94334: Area close operator crash in 3D view menu b73d3b80fdcb72
- Fix: Displaying any point cloud in the viewport causes crash 59a8bdd48ce1ea
- Fix: Missing translations from operator descriptions 7099d5b66129de
- Fix: Remove incorrect assert in mesh modifier evaluation 0b4cf2984f826d
- Fix: Incorrect default distance for merge by distance node 0446c9c87564ce
- Fix build error b127654816a7cb
- D14018: Mesh: Avoid creating incorrect original index layers
- D14000: Cleanup: Move PBVH update tag out of MVert
Cleanup
- Cleanup: Remove unused "init" node tree flag 66e9ee1a2f3dae
- Cleanup: Grammar in comments and tooltips f79c8e25f17461
- Cleanup: Add comment about unsed custom data type 3e0ffe5a396e58
- Cleanup: Return early, use switch, rename function 2053fc849e9efb
- Cleanup: Add file names back to node header af426c850811d8
- Cleanup: Clang tidy, use braces 28656293c62461
- Cleanup: Add missing breaks in previous commit bff83ecee51b81
- Cleanup: Use C++ types 03e580c98c5ef0
- Cleanup: Add back comment removed in recent commit c4f159cfcd1684
Review
Requested changes
D13906: Geometry Nodes: Mesh Face is Planar NodeCommented
D13891: Revision of NURBS knot generation modesCommented
D13868: Collections: Functions to calculate bounding box and dimensionsAccepted
D13975: Fix T95185: Invalid normals after undo in sculpt modeCommented
D13919: Geometry Nodes: NURBS Order Input/Set NodeAccepted
D13983: Fix T95084: Evaluate all output attributes before changing the geometry.Commented
D13918: Curve: increase max of order u/vCommented
D12035: Geometry Nodes: Add Easing Function NodeRequested changes
D13952: Geometry Nodes: New node Attribute SmoothCommented
D13764: Function Node: Add Integer Math nodeCommented
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 nodeCommented
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 sizeCommented
D13577: Geometry Nodes: Add Between operations to Compare nodeRequested changes
D14002: Fix :T94815 Drag to add node search prioritizes wrong node typeCommented
D13773: Fix T94241: Grayed out Front-Face Falloff checkbox in popoverCommitted
A81fc6b060b6cc: UI: Update deep grey community themeClosed
D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit mode
Tracker
- Investigated: 22
- Resolved: 3
- Archived: 6
- Known Issue: 1
- Confirmed: 3
Next Week
I plan to basically continue the same things, code review for 3.2 targets, continue building the new curves data structure, and bug fixing.
January 24 - January 30
This was a bit of a duller week. I finished up the necessary manual pages for all of the new geometry nodes features in 3.1, and worked on bug fixing. Plus a little bit of code review. There were no daily meetings since Jacques was in Amsterdam.
I committed the merge by distance patches and added tests for them as well as the 29 tests for the extrude node.
Changes / Features
- Geometry Nodes: Initial merge by distance node ec1b0c2014a8b9
- Geometry Nodes: Port weld modifier to the merge by distance node 0ec94d5359d732
- Geometry Nodes: Add or improve various socket descriptions cab1f1d9a2347c
- Nodes: Improve link-drag search support for boolean math node a18bd403bf3edb
- Mesh: Add versioning in 3.0 for vertex normal refactor add07576a09018
- UI: Use property split in new operator popup cb09485ff2bd7a
Bug Fixes
- Fix T94476: Threading/performance issue with curve to points node 03b57d39731a39
- Fix T95202: Curve to mesh node inconsistent edge vertex order 89dbad9085df09
- Fix T95212: Mirror modifier normals crash 834b966b419ca5
- Fix: Complete transfer attribute input renaming 279a73e429d409
- D13960: Fix T95334: Crash with no vertex normals in multires bake
- D13939: Fix T95185: Invalid normals after undo in sculpt mode
- D13934: Fix T95252: Move duplicate node doesn't do edge-panning
Cleanup
- Cleanup: Remove mesh vertex "temp tag" flag 90a23dec4650d6
- Cleanup: Remove unused DerivedMesh functions 23775f3914d647
- Cleanup: Remove unused DerivedMesh normal handling 14427f5aaac85d
- Cleanup: Remove unused DerivedMesh flag 79032a8513f2b0
- Cleanup: Remove unused "_ex" version of function 57f6aa4d832cc2
- Cleanup: Remove modifier type hair callback a58592885c3e75
- Cleanup: Correct location of node function declarations 2bf519d211b1c5
- Cleanup: Remove useless comments c1b5cea63acf66
- Cleanup: Clang tidy d7ac659e02327c
- Cleanup: Remove unused variable 3e2591c83ed6c4
- 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 5a0c5912a41eac
- Update tests for curve to mesh edge vertex order change rBL62814
- Add regression test for point cloud merge by distance node rBL62805
Review
Requested changes
D13547: Geometry Nodes: Grouped StatisticsRequested changes
D13936: Nodes: Dynamic nclass for Map Range nodeCommented
D13920: Geometry Nodes: Single Point NodeAccepted
D13356: UI: Improve node drop shadowAccepted
D13747: Assets: Add operator to create preview from active object.Accepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathAccepted
D13694: Geometry Nodes: String to Curves Line/PivotAccepted
D13373: Geometry Nodes: Segment Length NodeCommented
D12587: Move Sculpt Colors From ExperimentalCommitted
52b2769b9c1283: Fix T95169: Assert in weld modifier codeCommented
D13927: obj: speed up the exporter by multi-threading and avoiding tiny I/O callsClosed
D12224: Geometry Nodes: Mesh ExtrudeClosed
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.
Changes / Features
- Geometry Nodes: Extrude Mesh Node 95981c98764832
- Mesh RNA API: Expose contiguous normal arrays b7fe27314b25a7
- Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661f134
- Geometry Nodes: Set Handle Type Node: Left and right by default 8c1ddee10cfe11
- BLI: Add index_range method to VectorSet 44ca984dc7b150
Bug Fixes
- Fix T94760: Crash building BMesh when opening file 6cd977b903f46e
- Fix T94967: Sculpt mode crashes with missing normals 68aa35ae74226f
- Fix: Node link drag search doesn't list shader sockets 5fca280c803b68
- Fix T95097: Attribute Capture node UI inconsistency 294ab849099828
- Fix Python API docs build error 9ca1052226d3ee
- Fix: Incorrect soft max after IDProperty UI data refactor A0574f418a03e2
- D13887: Fix T93455: Set material node does not use empty slot
- D13856: Mesh: Add versioning in 3.0 for vertex normal refactor
Cleanup
- Cleanup: Improvements to mesh to bmesh conversion 5c4a5fd40ddb79
- Cleanup: Move bmesh_mesh_convert.c to C++ b7878a4d457a59
- Cleanup: Use references, const variables 1f026a3db90987
- Cleanup: Move node editor files to proper namespace 902a103f8092b6
- Cleanup: Make node editor functions private 977baeaa261b1c
- Cleanup: Grammar: its self vs. itself 46475b8e1164ff
- Cleanup: Use references, LISTBASE_FOREACH macro 221ff895d962a3
- Cleanup: Remove unused node editor toolbar file 09ecb089a5e228
- Cleanup: Remove incorrect comment 9b4c017031f942
- Cleanup: Resolve unused variable warning, make function static 14d261d23afe03
- 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 sphereAccepted
D13757: Geometry Nodes: New Scale Elements node.Commented
D13868: Collections: Functions to calculate bounding box and dimensionsAccepted, committed
D13809: Flip Mesh Faces NodeAccepted
D13640: Geometry Nodes: Curve Primitive ArcAccepted
D13804: Geometry Nodes: Triangulate Node - Add Selection InputAccepted
D13796: Geometry Nodes: Edge Angle Node: Add Signed Angle OutputAccepted
D13647: USD Preview Surface material export.Accepted
D13838: Attributes: Add operator to convert generic attributes to other typesAccepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathRequested changes
D13373: Geometry Nodes: Segment Length NodeCommented
D13734: Geometry Nodes: Add Intersection mode to Curve Trim node.Commented
D13840: Fix T94038: Curve type objects count double in scene statisticsAccepted
D13700: Geometry Nodes: New Output for Number of Mesh IslandsCommented
D13867: Fix Bevel Intersection ContinuityCommented
D12530: GPencil: Add Scale Thickness to Pivot Point Pie MenuClosed
D1863: T39656 Ctrl+Click for Nurbs
Tracker
- Reported: T94987: Dragged node links are invisible
- Investigated: 22
- Resolved: 4
- Archived: 4
- Confirmed: 6
- Duplicate: 5
Next Week
Just bug fixing and work on the manual for all the new 3.1 features. I'll try to get the merge by distance node into 3.1 as well, and on Monday I'll start by moving my extrude node test file to become regression tests.
January 10 - January 14
This week the most exciting thing is that I landed the vertex normal refactor I've been working on. Apart from some issues with an OBJ test that I hadn't tested since it was added, it went well I think, though I do see a couple of bug reports now. I did some performance testing, and it made some observable gains in real files, which was a nice surprise, since I was mostly approaching it from the "understandable code" perspective.
We had some longer meetings talking about patches and other design topics this week. The meeting notes are pretty lengthy here: https://devtalk.blender.org/t/2022-1-10-2022-01-14-geometry-nodes-sub-module-meetings/22405
I spent quite a while reviewing a patch that exposes color painting in sculpt mode (previously "sculpt vertex colors") in master, and had a bit of a discussion about it afterwards.
Changes / Features
- Refactor: Move normals out of MVert, lazy calculation cfa53e0fbeed71
- Geometry Nodes: Rename transfer attribute geometry input 6a16a9e661f134
- Spreadsheet: Add mesh topology information with a debug value 922ae55a16a967
- Nodes: Support link-drag search with compare node outputs 9fe704800ef128
- D13839: Mesh RNA API: Expose contiguous normal arrays
Bug Fixes
- Fix T94624: Object as font instances don't work 97c2c39916202f
- Fix T94852: Geometry Proximity crash when unsuccessful 6e926e9b567eb5
- Fix: Incorrect logic in mesh validation for removing layers 0c5ccae79d6212
Cleanup
- Cleanup: Remove unused "active ID" node flag 37b336a8af31e4
- Geometry Nodes: Move normal field input to be usable elsewhere f4af21038d82bb
- Cleanup: Remove unused subdiv functions b7a27efd781b90
- Cleanup: Clang tidy 1bd0a87384011b
- Docs: Add comments to node socket struct header a4a95c8d36ba70
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 ExperimentalRequested changes
D13757: Geometry Nodes: New Scale Elements node.Accepted, committed
D13546: Set Spline Type node - better conversion from NURBS to BezierCommented
D13550: Nodes: Expand Math and Vector Math functionsRequested changes
D13796: Geometry Nodes: Edge Angle Node - Add Return Signed Angle OutputRequested changes
D13764: Function Node: Add Integer Math nodeAccepted
D13774: Geometry Nodes: Add NAND, NOR, XOR, XNOR, IMPLY, NIMPLY to Boolean MathRequested changes
D13809: Flip Mesh Faces NodeRequested changes
D13694: Geometry Nodes: String to Curves Line/PivotRequested changes
D13804: Geometry Nodes: Triangulate Node - Add Selection InputAbandoned
D12695: Nodes: Expose the node socket location as read-only to the Python APICommented
D12035: Geometry Nodes: Add Easing Function NodeCommented
D13640: Geometry Nodes: Curve Primitive ArcCommented
D12792: Geometry Nodes: Add Random value to Object Info nodeCommented
D13303: Start of implementation of new texture margin generation.Commented
D13791: BLI: Refactor vector types & functions to use templatesAccepted
D13800: Fix T94812: Render layer sockets are missing after file load.Accepted
D13813: Fix T94837: curve tilt on a 2-point-curve is wrongAccepted
D12915: Fix: Build warning with MSVC
Tracker
- Investigated: 15
- Resolved: 3
- Archived: 2
- Confirmed: 1
- Duplicate: 2
Next Week
Now that I've had a break and some time to think about it, I'll come back to the "extrude regions" case for the extrude node. Then some code review, and hopefully merge by distance for meshes (looking into porting the weld modifier again).
January 3 - January 9
This week I didn't really finish anything notable. Mostly it was a big time vacuum with lots of work on various branches and discussions about "random" things like GPU acceleration, performance bottlenecks, and patches.
Changes / Features
- Nodes: Consistent link drag search for math and vector math nodes 458be2ecc4557f
- BLI: Add slice method to MutableSpan 9793bc30cec959
- D13721: Attributes: Infrastructure for generic 8-bit integer data type
- D13735: Spreadsheet: Add mesh topology information hidden with a debug value
Bug Fixes
- Fix T94581: Incorrect geometry delete behavior with instances c6069c439c8fb2
- Fix: Link drag search error with random value node from color socket f7c0287278e08d
- Fix T94594: Incorrect spreadsheet data set region type in old files 1b9e103a308c3b
- D13768: Fix T94624: Object as font instances don't work
Cleanup
- Cleanup: Remove unused code from BKE_node.h 34e84d0ee8a238
- Cleanup: Use forward declaration of struct in header 5ba5678e0041c9
- Cleanup: Spelling/grammar in comments c0fb8ea8f3cd01
- Cleanup: Clang tidy 675d3cdd699d8c
- 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 objectRequested changes
D13694: Geometry Nodes: String to Curves Line/PivotRequested changes
D13764: Function Node: Add Integer Math nodeRequested changes
D13546: Set Spline Type node - better conversion from NURBS to BezierAccepted
D11664: Accurate NURBS circle and sphereAccepted
D13739: UI: Show recently selected items at the top of searchesAccepted
D13718: Cleanup: Nodes: Convert generic shader node files to c++Commented
D13733: Fix crash when removing sockets used by internal linkCommented
D13715: Fix T94495: 'Split Edges' geometry node leads to a crash in edit modeAccepted
D13736: Fix T94659: Crash when deleting instances.Accepted
D13366: Geometry Nodes: Add Mesh Edge Angle NodeCommented
D9621: Configurable rotation angle incrementsCommented
D13697: Fix T89252: Unable to interact with Stabilize stroke text on clickCommented
D13693: Geometry Nodes: Rename String To Curves socket
Tracker
- Reported
- 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.
Changes / Features
- Point Cloud: Optimize bounding box calculation 6d7dbdbb44f379
- Geometry Nodes: Support instances in the delete geometry node a94d80716e688a
- D13709: Geometry Nodes: Extrude Mesh Node
Bug Fixes
- Fix T94442: Trim curve node can crash with duplicate point 4cbcfd22f5d26e
- Fix T94454: Python API curve to mesh use after free without depsgraph c0fdf16561034f
- Fix T94380: Scrolling zooms in spreadsheet data set region 1a721c5dbec928
- Fix: Issues with attribute comparison in geometry nodes tests 279085e18e6973
- Fix: Duplicate link search entries for attribute statistic node 955748ab1e35d9
- Fix T94453: Weld modifier crash after recent cleanup dc0bf9b7027783
Cleanup
- Cleanup: Remove unused node tree "local sync" functions c34ea3323a3aa4
- Cleanup: Remove unused DerivedMesh functions 5e8b42bf865848
- Cleanup: Return early, organize variable declarations 1464eff3753b8d
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 NodeRequested changes, accepted
D13680: Nodes: Improve link drag search for Math and Vector Math nodesAccepted
D12743: Geometry Nodes: Accumulate Function NodeAccepted
D13625: Geometry Nodes: Add Integer Mode to Attribute StatisticsRequested changes, accepted
D13664: Fix T94113: Local view + Geometry Nodes is broken for instancesCommented, accepted
D13695: Nodes: Add Compare node operations to link drag search menuAccepted
D13691: Nodes: Weight drag link search for Math nodesAccepted
D13686: Nodes: Cleanup: Remove no op registration functionsAccepted
D13697: Fix T89252: Unable to interact with Stabilize stroke text on clickAccepted
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.