User:HooglyBoogly/Reports/2023/

All Reports

May 30 - June 4

This week I worked on the delete geometry node, code review, splitting out a small change from the node group operators branch, and on rotation sockets. I also did code review and looked into fixing some high priority bugs I caused in the last few weeks. Monday was a holiday here, and I was moving to a new appartment later in the week, so I wasn't able to work full days.


Changes / Features

  • BLI: Improve IndexMask::complement() performance 49b48209e7
  • Geometry Nodes: Rewrite mesh delete geometry node 50bfe1dfe3
  • Geometry Nodes: Improve delete geometry performance with vertex groups ab6860f3de
  • Geometry Nodes: Copy no loose vert/edge status in delete geometry node 9e9e0bf6d0
  • Mesh: Forward compatibility with generic bevel weight in 4.0 f75af7cbf5


Fixes

  • Fix #108039: Incorrect results when setting custom normals 214da4b6b4
  • Fix #108273: Mirror modifier resets copied custom normals 1551d7f033
  • Fix #108330: Resample node crash with empty curves ac4b76318a


Cleanup

  • Refactor: Remove pre-2.8 function to reevaluate a single object e64b3c8212
  • Cleanup: Simplify retrieval of evaluated point cloud for conversion c39bb12744
  • Cleanup: Use unique_ptr, references for UV aabb islands c5694fdf10
  • Cleanup: Remove unnecessary assert 37f6af9e2c
  • Cleanup: Simplofy use of modifier eval context flags 66d20c8723
  • PR #108482: WIP: Refactor: Move geometry nodes execute implementation for reusability


Review

  • Requested changes, accepted PR #108462: GPencil: Add operator to create new grease pencil object
  • Accepted PR #107653: Paint: Add loop select for faces
  • Accepted PR #107968: Geometry Nodes: Add "Corners of Edge" node
  • Accepted PR #108541: Cleanup: Parallel edge vertices selection in Delete Geometry node
  • Accepted PR #108540: Fix #108537: Incorrect early return in delete geometry node
  • Accepted PR #108359: Node Editor: Don't change size of resize area for frame nodes with zoom
  • Accepted PR #108375: Fix #108336: Treat node sockets with muted links as linked
  • Accepted PR #107460: Fix #103068: Link insert offset not working when rotating/scaling nodes
  • Accepted PR #108411 Fix: remove materials from simulation state in all cases
  • Accepted PR #104465: Fix small grammar errors in Simulation Zones page
  • Accepted PR #108286: Animation: Make Vertex Weight Edit modifier inclusive
  • Commented PR #108468: WIP: Geometry nodes: Basic volume simulation support
  • Commented PR #108477: Cleanup: Move io files to c++
  • Accepted PR #108476: Fix: Redeclaration variable in loop
  • Commented PR #108529: Cleanup: int16_t casting in index_mask.cc
  • Commented PR #108535: Fix #108049: Nodes pasting can leave multiple active nodes
  • Commented PR #108542: Cleanup: Replace C includes
  • Accepted PR #108271: Fix #108266: sculpt auto created color attribute not set as render color


Tracker

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


Next Week

I'd like to finish rotation sockets and the first iteration of node group operators, and fix more of the high priority bugs.

May 23 - May 28

A 4.5 day week here-- I took most of Monday off. I spent a fair amount of time this week unifying things after the index mask refactor landed, which gave some nice improvements to the delete geometry node (I'm also looking at simplifying that for meshes locally). Besides that, I looked into bugs, did some code review, kept some PRs up to date, and spent a bit of time with the node group operators branch (kept getting distracted from that though!)


Changes / Features

  • Curves: Optmize and simplify point and curve deletion f63cfd8e28
  • Curves: Avoid inverting selection when deleting elements 865f14c641
  • Curves: Improve IndexMask usage in curves sculpt brushes 1b19f62917
  • Mesh: Reimplement and unify topology maps 4d841e1b35
  • Curves: Use simpler index mask logic in various places d7e671028c
  • Mesh: Remove deprecated argument to split_faces API function efbcfd8703
  • PR #108331: WIP: BLI: Improve IndexMask::complement() performance


Fixes

  • Fix: IndexMask slice and offset ignores offset 6bf3831b2c
  • Fix #108226, #108219: Crash in mesh validation in importers 39780b39bd
  • Fix #108258: Sculpt mode crash after remesh de2c8416a0
  • Fix: Crash entering vertex paint mode 1c88721442
  • Fix #108108: Remesh modifier crash with empty result 34791dc37b
  • Fix #108175: Missing subversion bump for recent geometry nodes change ba880db09a
  • Fix: Crash with "use sharp" turned off in weighted normal modifier d168df7c23
  • Fix #108034: Multires simple subdivide crash 2262ea079b
  • Fix: Windows build error in template code a6eae61b52


Cleanup

  • Cleanup: Standardize delete geometry code ea937b304d
  • Cleanup: Simplify IndexMask usage in two geometry nodes 5063f7a725
  • Cleanup: Remove IndexRange::as_span() static array and cache 986ff5a3a4
  • Cleanup: Consolidate public point cloud/mesh conversion functions 93a2e5dbfa
  • Cleanup: Simplify iteration in align euler to vector node 379a8b700b
  • Cleanup: Rename loose edge and loose vert variables in draw code 4a7cfa18e2
  • Cleanup: Remove template in vertex color transform operators fa8351486f
  • Cleanup: Remove unnecessary template in curve subdivide node e704ebaba4
  • Cleanup: Use C++ BitVector in subdiv code instead of Bitmap 9fd8fe134d
  • Cleanup: Corrections in IndexMask comments d049e622bd
  • Cleanup: Move offset size copying utility to generic header 0b0b6a687a
  • Cleanup: Mark deprecated custom data types as such 9268a47b5b
  • Cleanup: Remove unnecessary namespace specification de0f11515e
  • Cleanup: Remove #pragma once in .cc files 14e6a5c44c
  • Cleanup: Fix uninitialized variable warning in bit span test f78639ff9f


Review

  • Requested changes, accepted PR #104629: BLI: refactor IndexMask for better performance and memory usage
  • Requested changes PR #107653: Paint: Add loop select for faces
  • Commented PR #105690: WIP: I18n: add per-label translation contexts for nodes
  • Requested changes, accepted PR #108227: UI: Fix and improve a few messages
  • Requested changes, accepted PR #108291: Mesh: Avoid position copying in corrective smooth modifier
  • Accepted PR #107968: Geometry Nodes: Add "Corners of Edge" node
  • Accepted PR #108201: Geometry Nodes: store path to simulation bake in modifier
  • Accepted PR #108100: Move versioning file 2.8 to C++
  • Accepted PR #108220: Geometry Nodes: expose simulation bake path in UI
  • Commented PR #108234: UI: Rename Distort socket in the Lens Distortion compositing node
  • Commented PR #108289: EEVEE: Fix non-deterministic codegen preventing shader cache to work


Tracker

  • Investigated: 7
  • Resolved: 5


Next Week

I'd like to split some changes from the node group operators branch and make it a bit more generic so it's not just for curves. Besides that, I'd like to make progress on rotation sockets and the auto smooth replacement.

May 15 - May 19

This week I worked on a few projects:


Changes / Features

  • Core: Write mesh and movieclip with new format 1b63a290c6
  • Geometry Nodes: Only use realized geometry in mesh boolean node fc06a471f1
  • Mesh: Move bevel weight to generic attribute 2a56403cb0
  • Geometry Nodes: Keep loose vert/edge tags for extrude and split edges 381fae91b1
  • Mesh: Remove sculpt vertex colors from RNA API 6805657a39
  • Carver: Update for change in bevel weights API 874d7bf885
  • PR #107954: WIP: Geometry Nodes: Rotation type
  • PR #108089: Mesh: Move vertex/edge crease to generic attributes
  • PR #108014: WIP: Mesh: Replace auto smooth with node group
  • PR #104609: Mesh: Update addons for auto smooth removal


Fixes

  • Fix #108034: Multires simple subdivide crash 0eba8ac85a
  • Fix: Assert loading undefined geometry node 216cb9e3f0
  • Fix: Missing loose vertices converting BMesh to Mesh 112a5196f6


Cleanup

  • Cleanup: Undo move of functions in previous node cleanup commit f3babec2df
  • Cleanup: Add a function to sample mesh point normals 468295cb7c
  • Mesh: Remove deprecated face/vert custom data API d41021a7d4
  • Cleanup: Remove redundant node type lookup function 859c0d9edf
  • Cleanup: Remove unused node function for finding link d87547abd5
  • Cleanup: Remove unnecessary struct keywords in node header 320ac28f75
  • Cleanup: Remove redundant writing of old face set type 9bdfb15e98
  • Cleanup: Remove deprecated unused fields in raycast node ea64b2ce08
  • Geometry Nodes: Remove realize instances legacy behavior f17ea1f2a7
  • Cleanup: Add function to check if named custom data layer exists f106579a9a
  • Cleanup: Rename mesh loose edges tag function 71d22331b1
  • Nodes: Remove deprecated useless width_hidden property 30a20b4def
  • Node Wrangler: Remove deprecated useless width_hidden property 0c0b00d6df
  • Cleanup: Add version after linking function for 4.0 series 180c72a708


Review

  • Requested changes, accepted GeometryNodes: Add "Corners of Edge" node
  • Accepted PR #107656: Geometry Nodes: Sample Volume node
  • Accepted PR #107790: Cleanup: Move BKE_node.h to C++
  • Accepted PR #105375: USD Export: New Curves/Hair Support
  • Commented PR #108001: Move the node previews to the tooltip region
  • Accepted PR #107945: Fix #107633: USD import: duplicate shader nodes
  • Commented Refactor Render Result to allow implicit buffer sharing PR #108045
  • Accepted Cleanup: Fix copyright date in new bke header PR #108112
  • Closed Sculpt: Fix #107123: New normals impl. for PBVH_FACES PR #107456


Tracker

  • Investigated: 4
  • Resolved: 2
  • Archived: 1


Next Week

Hopefully I can finish some of the things I started this week, and maybe make some progress on node group operators.

May 8 - May 14

This week I finished adding some more features to simulation nodes-- making caching optional and subframe mixing, and worked more on mesh topology caching. I refactored the existing topology maps to all use the same implementation, and added a few cached maps to Mesh. The tricky part there is figuring out which topology maps to cache, all of them would be way too much, but only one or two seem to miss some significant performance improvement opportunities. Both of the changes are still in review but I hope I can make more progress next week.


Changes / Features

  • Mesh: Reduce custom normal calculation memory usage 17d161f565
  • Geometry Nodes: Implement simulation subframe mixing e6e6fb3a62
  • Geometry Nodes: Make simulation caching optional 8efd6d5f82
  • Geometry Nodes: Add display toggle for simulation cache in timeline ee08b2ddff
  • Mesh: Tag no loose verts and edges when converting from BMesh 6323d56eb5
  • Geometry Nodes: Extrude: Skip topology map with no edge attributes 5b5e6a846a
  • Geometry Nodes: Slightly optimize mesh to curve node 143ca272bd
  • PR #107816: WIP: Mesh: Add three cached topology maps
  • PR #107861: Mesh: Reimplement and unify topology maps


Fixes

  • Fix #107151: Multires data from external file is not loaded 34e29440f7
  • Fix #107826: Missing defaults for principlied volume string sockets 2db23d38ca
  • Fix #107694: Assert adding custom normals to empty mesh e151425c5c
  • Fix: Build error after previous commit 4d7a93930c
  • Fix: Incorrect value retrieval in simulation subframe mixing 6491387fba
  • Fix: Build error after simulation header cleanup ce96abd33a


Cleanup

  • Cleanup: Reduce binary size by deduplicating attribute processing 4f2ac09886
  • BLI: Use inline instead of static for bounds functions 3f44b24cf2
  • Cleanup: Move remaining sculpt_paint files to C++ 150943e084
  • Cleanup: Use OffsetIndices class in extrude node and merge by distance node 85ddc1b0de
  • Cleanup: Avoid redundant attribute adding in extrude node da43c42e40
  • Cleanup: Add comments to simulation state header 2f349ce884
  • Cleanup: Correct commet about curves bounds 3a0d17ceea


Review

  • Requested changes PR #107653: Paint: Add loop select for faces
  • Requested changes PR #107790: Cleanup: Move BKE_node.h to C++
  • Requested changes PR #107656: Geometry Nodes: Sample Volume node
  • Accepted PR #107916: UI: Capitalize "Python" in UI messages, improve a few others
  • Accepted PR #107894: Fix #107893: Attribute Statistic produces wrong Variance value
  • Commented PR #107827: Geometry Nodes: Add 'Fill Interior' option to Mesh to SDF Volume
  • Accepted PR #107636: Fix #106929: adjust normalization of zero vector in nodelink shader
  • Accepted PR #107828: Geometry Nodes: Add 'Signed Distance' input node
  • Accepted PR #107814: Fix: Empty built-in attributes are duplicated by some nodes
  • Commented PR #107885: Fix #107882: Get evaluated mesh from curve object too
  • Commented PR #107911: Cleanup: Use StringRef instead of std::string for node declaration
  • Accepted PR #107868: Geometry Nodes: Change "Separate Components" node output order to match Spreadsheet


Tracker

  • Investigated: 7
  • Resolved: 4
  • Archived: 1


Next Week

The rest of the team is having a workshop on node group operators and node tools. I'm not sure how much I'll be able to participate remotely, so I might have to find something else that can occupy a fair amount of time. I think that might be rotation sockets, or more work on my branch that replaces mesh auto smooth (for 4.0).


May 1 - May 7

A 4 day week, I took Friday off.

We committed the simulation nodes branch! I did a bunch of cleanup there to get it into a mergeable state, and helped implement a couple of the remaining features. I also finished some performance improvements to face corner normal calculation with custom normals, just reducing memory usage and doing things like using indices instead of pointers.

Suzanne is spinning about twice as fast as a few versions ago, in this test file from Brad Clark.

After simulations landed, I started implementing a cache toggle for simulation nodes so it could work more efficiently in a realtime context that isn't concerned with the cache. I also started working on simulation subframe mixing, but stopped when I didn't understand the context or the big picture of why it would work the way I was doing it. I'll have to look into that again next week.


Changes / Features

  • Mesh: Split MLoopTri poly indices into a separate array d0705bd697
  • Cleanup: Unify mesh sampling multifunctions 7ff752b789
  • BLI: Remove clamping from generic span slicing 1f76863f80
  • PR #107592: Mesh: Reduce custom normal calculation memory usage


Fixes

  • Fix #107480: Crashes in mesh format conversion for old files 5525e5b942
  • Fix #107505: Temporary stack not cleared in BMesh normal calculation d5fc1b9ba4
  • Fix #107514: Broken normals wtih weighted normal "keep sharp" option 2e50e0a849
  • Fix: Missing normalization for sampled normals when adding curves f59fdc40ec


Cleanup

  • Cleanup: Move remaining modifier files to C++ 730b11034f
  • Cleanup: Deduplicate sampling at index in geometry nodes 7f040099e3
  • Cleanup: Move attribute_math to proper blenkernel namespace 367145209c
  • Cleanup: Avoid allocating extra array in sample nearest node b3a3b94976
  • Cleanup: Miscellaneous changes in corner fan normal calculation 96f9930de1
  • Cleanup: Reduce indentation when setting custom normals 2390abf1d3
  • Cleanup: Use array and span in weighted normal modifier c2a2c2dcab
  • Cleanup: Simplify CurvesGeometry deletion copying 09c1a93c21
  • Cleanup: Rename field input classes to match UI names d9a7f1285f


Review

  • Requested changes, accepted PR #106848: Initial Grease Pencil 3.0 stage
  • Requested changes, accepted PR #107470: Geometry Nodes: Link drag search value moving improvement
  • Requested change PR #107627: Geometry Nodes: Simulation calculate to frame operator
  • Commented PR #107656: Geometry Nodes: Sample Volume node
  • Accepted PR #107575: Fix #107566: Gesture face set respect hidden faces
  • Requested changes PR #105375: USD Export: New Curves/Hair Support
  • Commented PR #107686: Nodes: Update of nodes topology cache more parallel
  • Accepted PR #107713: Fix #105147: Rename geometry node to Is Face Planar
  • Accepted PR #107535: Fix: calculating duplicates in kdtree does not work with selection
  • Accepted PR #107312: Fix #107306: Merge by distance node is not deterministic
  • Accepted PR #107569: Cleanup: Move node_util.h to C++
  • Accepted PR #107591: Cleanup: convert node_exec.h to c++
  • Accepted PR #107516: Cleanup: Move pipeline.h to C++
  • Accepted PR #107508: Cleanup: Move draw_manager_profiling to C++
  • Accepted PR #107628: Fix #107623: Do not allow dragging search menu from custom socket
  • Accepted PR #107622: Fix #107545: Mistakes in recent node.cc cleanup
  • Commented PR #107258: I18n: Remove extraction macros from the node socket declarations


Tracker

  • Investigated: 9
  • Resolved: 6
  • Archived: 1


Next Week

I hope to finish adding the cache checkbox early on Monday or Tuesday. Beyond that it depends on the team's priorities I think, not sure where we'll head right now. I might look into caching mesh topology maps again too.

April 24 - April 30

This week I helped to finish parts of the simulation branch, including moving some of the changes to main. I did some bug fixing, and looked into mesh face corner normal calculation again. I've mostly been looking at it from the perspective of reducing memory usage, which has been enough for a 50% improvement so far at least, I'd say. I also looked into the performance of the new Index of Nearest node a bit.


Changes / Features

  • Mesh: Reduce memory corner normals memory usage and simplify threading 9fcfba4aae
  • Mesh: Allocate custom normal spaces in array 3c43632651
  • Mesh: Reduce memory usage calculating custom normals 9292e094e7
  • Nodes: Support adding multiple nodes from search menu 45cecb101c
  • Subdiv: Optimize coarse position extraction with cache 3507431c30
  • Multires: Use cached loose edge information 9f78530d80
  • Geometry Nodes: Use implicit sharing in store/capture attribute nodes b54398c16c
  • Geometry Nodes: Index of Nearest: Use grain size based on tree sizes d8f4387ac9
  • Geometry Nodes: Index of Nearest: Use span for non-single ids 4346314351
  • BLI: Add bit span operations and bounded bit spans b87ccedd75
  • BLI: Add "take front" and "take back" methods to bit spans 67700ced54
  • BLI: Allow different integer types when filling span indices a6baf7beae
  • Curves: Avoid retrieving arrays many times e0a3212176
  • BLI: Add methods to generic spans to retrieve size in bytes 4daa7ae649
  • Attributes: Allow attribute API to create non-deleteable attributes 098e58ea24


Fixes

  • Fix: Extrude node propagates all anonymous attributes 0f47722d82, bea6391188
  • Fix #107095: Spikes during multires reshape propagation ae57d86d42
  • Fix #106289: Copy optimal display edges in mirror, array modifiers 5a1013f6a8
  • Fix: Compile error in debug build in normals code d086249f4d
  • Fix: Wrong crease accessed for multires reshape 30f8e688c3
  • Fix: Build error in quadriflow ace686983c
  • PR #107458: Fix #107123: Refactor sculpt normal calculation to require vert poly map


Cleanup

  • Cleanup: Simplify and deduplicate mesh sampling code bec033e057
  • Cleanup: Avoid storing redundant information in corner normals task data bdaf8e3715
  • Cleanup: Standardize mesh corner normals code 93f99859bc
  • Cleanup: Use short2 for custom normals, simplify access 82769653f8
  • Cleanup: Use simpler C++ types in mesh corner normals code f8eebd3b25
  • Cleanup: Remove unnecessary vertex normal custom data masks 5ce4447f02
  • Cleanup: Remove redundant namespaces in mesh normals code 803f03ae32
  • Cleanup: Declare field context variables const 5727851d65
  • Cleanup: Use helper function to sample normals when adding curves 0a5f0890cc
  • Cleanup: Extract function to make extend node declaration d6c61ccadc
  • Cleanup: Remove timer in node, improve comment 4b96af6cdd
  • Cleanup: Implement "make available" for extrude node individual input 060216ac31
  • Cleanup: Fix spelling in subdiv function name 032e69527d
  • Cleanup: Use consistent enum type in header 2cbf536605
  • Cleanup: Fix typo in mesh sample function name 96fd14a65f
  • Cleanup: Remove global mesh threading size macro 1777f40c27
  • Cleanup: Add note about adding attributes while iterating 696b56c1da
  • Cleanup: Simplify passing empty anonymous attribute set f8cc6cc866


Review

  • Requested changes PR #106848: Initial Grease Pencil 3.0 stage
  • Requested changes, accepted PR #107279: Mesh to Volume: Changes in Fog Volume
  • Accepted PR #107133: Add support for attributes storage in simulation state
  • Accepted PR #106919: Simulation nodes: UI for simulation state items in sidebar
  • Commented PR #107470: Geometry Nodes: Drag and drop value moving improvement
  • Accepted PR #107097: Cleanup: Type conversions in node.cc
  • Accepted PR #107413: Cleanup: prefer nullptr inside extract_mesh.hh
  • Commented PR #107312: Fix #107306: Geometry Nodes: Merge by Distance node be deterministically
  • Requested changes PR #107339: Cleanup: Ensure default cases in node.cc
  • Accepted PR #107323: Fix #107273: Group input is not listed in the node search
  • Commented PR #107336: Vulkan: Conversions between Blender and Vulkan Enums
  • Accepted PR #107310: Fix Python error when trying to call the Search Menu with no object
  • Commented Fix: Knife tool does not interpolate vertex customdata in interior cuts PR #107367
  • Committed 18f4fd6b85: Attributes: Add function to rename attribute
  • Committed fee9a3796c: Cleanup: Add not equal operator to compute constext hash
  • Committed ac1827edda: BLI: Add utility method to check if CPPType matches multiple types


Tracker

  • Investigated: 6
  • Resolved: 4
  • Archived: 1


Next Week

Hopefully we can merge the simulation branch. Beyond that, I hope to just get closer to finishing a bunch of the things I've been working on, no particular focus yet.


April 17 - April 23

This week I finally finished the mesh struct of arrays refactor I started a year and a half ago (#95965). A big project! But not really bigger than I expected, I actually sort of expected it to take longer. I learned a lot in the process. And the benefits can still trickle into other places, but with the file-format impacting changes over with, there's no urgency.

I tried to help with some of the simulation nodes changes, taking some of the tangentially related topics and finishing them up for main. I did plenty of code review too, mainly for simulation things. And we spent some time discussing the baking UI (#107181).

Along with that I committed a cache for loose vertices, aiming to make viewport drawing of large geometry-nodes-generated meshes faster.


Changes / Features

  • Mesh: Move edges to a generic attribute 2a4323c2f5
  • Mesh: Cache loose vertices 8e967cfeaf
  • Attributes: Integrate implicit sharing with the attribute API e45ed69349
  • Subdiv: Tag result mesh with no loose edges/verts 54072154c5
  • Geometry Nodes: Slightly optimize mesh to curve node 98ccee78fe, 097b9c5a36
  • Curves: Optimize edit mode selection draw extraction 70d854538b
  • PR #107154: Geometry: Refactor creation to avoid empty data arrays


Fixes

  • Fix: Spreadsheet missing other geometry types for edit mode mesh objects 2f4a8ecf18
  • Fix #106138: Node add searches missing context-based poll d6abd2ce72
  • Fix #107185: Edit mode or existing attribute break rest position 82ca3d3604
  • Fix: Search in node editors missing items 716b9cff23


Cleanup

  • Cleanup: Miscellaneous improvements to subdivision geometry nodes 993d24c174
  • Cleanup: Use generic edge calculation for legacy curve to mesh 5ab48a53e4
  • Cleanup: Use function ref instead of pointer for transform gizmo 21b51e7b88
  • Cleanup: Remove redundant "reference" argument to geometry copy 7535ab412a
  • Cleanup: Remove unnecessary point cloud function argument 2ab500c234
  • Cleanup: Avoid switch fallthrough, avoid copying bit span bc338aac74
  • Cleanup: IO: Separate creating mesh and adding to Main 60bb57663a
  • Cleanup: Remove unnecessary attribute provider callbacks d818d05415
  • Cleanup: Improve comments about curves and mesh offset spans 7bb8c8a5cf
  • Cleanup: Remove unused includes, correct comments e7eb8fd908
  • Cleanup: Remove redundant custom data initialization 5ca7e1301f
  • Cleanup: Use utility to create mesh in metaball tessellation 3e41b98295
  • Cleanup: Use more specific arguments to calc edges function a32fb96311
  • Cleanup: Avoid magic number for bits per integer 5bed959e81
  • Cleanup: Use consistent argument order for mesh creation functions 10d175e223
  • Cleanup: Use curve positions accessor function ab8acbbfe5
  • Cleanup: Remove unused variables/functions b647c2b88d
  • Cleanup: Remove unused using keyword c234a802ba, 4edcae75aa
  • Cleanup: Remove else after return in subdiv modifier code 473bb8a8b0
  • Cleanup: Fix custom data memcpy call null argument 491f098edf


Review

  • Requested changes, updated PR #106937: Simulation Nodes: bake simulation states to disk
  • Requested changes, updated PR #104619: Geometry Node: Index of Nearest
  • Requested changes PR #106346: Mesh To Volume fixes / refactoring
  • Requested changes PR #106920: WIP: Sculpt: cleanup sculpt attribute API
  • Updated, accepted PR #106903: Undo: support implicit-sharing in memfile undo step
  • Requested changes PR #106919: Simulation nodes: UI for simulation state items in sidebar
  • Requested changes PR #107133: Add support for attributes storage in simulation state
  • Accepted PR #107179: Fix #106208: data-block socket defaults not used for node group
  • Accepted PR #106812: Support for simulation zones in copy operators
  • Requested changes PR #106065: Add Active Camera geometry node
  • Accepted PR #106700: Core: Add sub-types for float-type custom properties
  • Accepted PR #107196: RNA: ignore some large arrays in override code
  • Accepted PR #107255: Geometry Nodes: Delete value moving for drag and drop group inputs
  • Commented PR #107043: Geometry Nodes: Simulation Zone drawing updates
  • Accepted PR #107097: Cleanup: Type conversions in node.cc
  • Accepted PR #107146: Fix #107067: Properly clear CD_FLAG_ACTIVE/DEFAULT_COLOR flags
  • Accepted PR #107055: Cleanup: Replace manually flag checking by method in node.cc
  • Commented PR #106972: Make first non-anonymous CustomData layer active
  • Accepted PR #106750: UI: Change the name of Invert nodes to Invert Color
  • Requested changes PR #106515: Fix #106484: Show all rotations with same precision
  • Commented PR #107214: Fix #107186: Curve assets don't generate preview images


Tracker

  • Investigated: 11
  • Resolved: 3
  • Archived: 5


Next Week

I plan to do more bug fixing and help with merging the simulation nodes branch (late for Bcon1 unfortunately).

April 11 - April 16

This week I worked on implicit sharing for mesh and curve offsets, a few random mesh related improvements, and made progress with node group operators. I started to look into how to register the input properties, but didn't make much progress after that. I ended up being very busy with bug fixing recently. That figures considering the large changes I've been making across mesh stuff though. I also did some cleanups to the geometry nodes simulation branch.


Changes / Features

  • Geometry: Use implicit sharing for curve and mesh offsets dcb3b1c1f9
  • Attributes: Add 2D integer vector attribute type 988f23cec3
  • Curves: Define "lookup int" function for RNA arrays d633d9fd02
  • Curves: Avoid unnecessary allocations in copy and move constructors e03da77033
  • Point Cloud: Avoid unnecessarily initializing initial positions 71ed98debe
  • Mesh: Avoid unnecessarily initializing corner topology arrays e35f971da1
  • PR #106638: Mesh: Move edges to a generic attribute
  • PR #106774: Mesh: Split MLoopTri poly indices into a separate array
  • PR #106917" Geometry Nodes: Use implicit sharing in point/mesh conversion nodes
  • PR #106694: WIP: Cycles: Parallelize copying geometry attributes from Blender


Fixes

  • Fix: PLY export behavior with multiple meshes 254d148458
  • Fix: Remove unsupported data types in extrude and split edges nodes 80f3f59555
  • Fix #106802: Incorrect modifier deform evaluation result 99c630cd9c
  • Fix #106879: Texture Node add search is broken 8df6974a15
  • Fix #106366: Handle exceptions in add fur operator c7995f3185
  • Fix: Assert when converting curves object to mesh object a1cc15f239
  • Fix: Mesh validate missing mesh polygon removal tags 15683d81be
  • Fix: Incorrect mesh data used in mesh remap code 1a6cfa1ae1
  • Fix #106845: Extrude node crash when no faces added 16de3ba759
  • Fix #106828: Extrude individual mode crash on mesh with no faces 4170545dc5
  • Fix #106780: Crash with sculpt undo and poly offsets 03c4173d81
  • Fix #106745: Subdivision surface crash with more than 8 UV maps fd234fe1ce
  • Fix #106743: Crash writing with legacy mesh format cd30bce7f1
  • Fix #106901: Dangling pointer after freeing mesh runtime data 1db918f948
  • Fix: Dangling pointer when clearing mesh 4c793a5b20
  • Fix: Incorrect creation of deform mesh with no deform modifiers a04098ebba
  • Fix #106778: Incomplete copy of curves radius to Cycles 90ad930a01
  • PR #106829: Fix #106138: Node add searches missing context-based poll


Cleanup

  • Cleanup: Deduplicate curves data-block copying 936e608382
  • Cleanup: Slightly CurvesGeometry reorganize read function dd229a9d54
  • Cleanup: Add access method for point cloud positions a7bee90c1d
  • Cleanup: Remove setting polygon loop total from Python c31434a570
  • Cleanup: Remove unused PBVH "respect hide" variable 3fadaa4fca
  • Cleanup: Remove setting polygon loop total bb76a94d06
  • Cleanup: Remove unnecessary PBVH attribute pointer 4472717de2
  • Cleanup: Remove unnecessary check when allocating mesh face offsets b7e9906337+
  • Cleanup: Add utility function for clearing mesh geometry baf6892270
  • Cleanup: Use consistent mesh vertex position names 7d4edcfa68
  • Cleanup: Make deprecated custom data type handling consistent 3f31ac2e1a
  • Cleanup: Use more descriptive function name in extrude node 197e9b9f80
  • Cleanup: Use swap to take ownership of mesh data dccd42766c
  • Cleanup: Use references in mesh.cc 000aef6e5e
  • Cleanup: Access curves offsets in RNA with C wrapper function 642bc5546a


Review

  • Requested changes PR #106346: Mesh To Volume fixes / refactoring
  • Requested changes, accepted PR #106884: Cleanup: Use Vector for passing lists of PBVHNodes around
  • Requested changes PR #106812: Support for simulation zones in copy operators
  • Commented PR #106919: Simulation nodes: UI for simulation state items in sidebar
  • Commented PR #105841: Assets: Implement Traits
  • Accepted PR #106838: UI: Add slash character support to fuzzy search initials mode
  • Accepted PR #105509: Cleanup: Reduce nesteds in node.cc
  • Accepted PR #104998: UI: Rename Bright/Contrast to Brightness/Contrast
  • Accepted PR #106721: UI: Add slash separators to Hue/Saturation/Value
  • Commented PR #106897: UI: Add prefix to Blender version
  • Commented PR #106944: WIP: Add vertex groups to CurvesGeometry
  • Commented PR #105598: WIP: IO: C++ STL exporter


Tracker

  • Investigated: 22
  • Resolved: 14
  • Archived: 3


Next Week

More of the same basically.

April 2 - April 10

This week I committed the refactor reducing memory usage of mesh faces, added the drop-down to change node socket subtypes, worked a bit on node group operators, and did a bunch of code review. I also found some easy improvements to Cycles copying of Blender attributes, which is now around 10x faster in general. I also worked on various WIP improvements for meshes, some are just in branches on my repo for now:


Changes / Features

  • Mesh: Replace MPoly struct with offset indices 7966cd16d6
  • Cycles: Avoid overhead from RNA when extracting mesh data 4bcd59d644
  • Cycles: Optimize extraction of Blender attributes 8d0920ec6d
  • Cycles: Optimize Blender point cloud attribute extraction aef0e72e5a
  • Cycles: Optimize Blender curves attribute extraction ae017b3ab7
  • Nodes: Add dropdown to select group socket subtype e7f395dd20
  • PR #106677: Attributes: Add 2D integer vector attribute type
  • PR #106638: Mesh: Move edges to a generic attribute
  • PR #106694: WIP: Cycles: Parallelize copying geometry attributes from Blender
  • PR #106774: Mesh: Split MLoopTri poly indices into a separate array


Fixes

  • Fix #106584: Active/default UV map legacy conversion with name conflict 42a9c62bff
  • Fix: Cycles ignores point cloud and curves byte color attributes 5a86c4cc88
  • Fix: Crash and broken multires baking 85bd64ece4
  • Fix: Crash loading autosave/last session file after MPoly removal e785d956c4
  • Fix #106622: Various errors filling cone/cylinder primitive faces 11ba8c6ab4
  • Fix #106598: Cone primitive crash after MPoly removal 6cb5b14f16
  • Fix: Wrong attribute name used for corner edges array a2b259aa2c


Cleanup

  • Cleanup: Removed DerivedMesh triangle cache 7adea7ee15
  • Cleanup: Remove poly normal writing 7a1ec82af4
  • Cleanup: Deduplicate OffsetIndices utility for meshes and curves 4b2ea18ec9
  • Cleanup: Use const arguments for DerivedMesh functions 547f0d5dab
  • Cleanup: Use generic mesh corner to poly map utility f594e951e0
  • Cleanup: Use generic index copying utility for normals dec9c593cb
  • Cleanup: Slight improvements to Python BVH tree utility 47ab0403f0
  • Cleanup: Remove unused DerivedMesh variables 6f2263bc79
  • Cleanup: Remove unused DerivedMesh edges/corners code 68092297ca
  • Cleanup: Remove unused DerivedMesh functions 2887557907
  • Cleanup: Remove unused DerivedMesh vert normals calculation 6652d2ee9b
  • Cleanup: Remove commented code c71f66daa8
  • Cleanup: Comment formatting, remove debug print 8906aa77cd
  • Cleanup: Incorrect assignment in previous cleanup commit f7029bc960


Review

  • Updated, accepted PR #106228: Custom Data: support implicit sharing for custom data layers
  • Commented PR #106515: Fix #106484: Show Rotation with higher precision
  • Requested changes, accepted PR #106648: Core: Fix broken CustomData IO with Autosave files
  • Accepted PR #106580: UI: Fix several messages in the UI
  • Accepted PR #105972: Nodes: Move data-block default values with link drag search
  • Accepted PR #106271: PBVH: update mesh data pointers stored in pbvh
  • Requested changes PR #104619: Geometry Node: Index of Nearest
  • Commented PR #105598: WIP: IO: C++ STL exporter
  • Accepted PR #106250: Mesh: Use more efficient update tag when flipping faces
  • Requested changes PR #105422: Shape Key editing: propagate updates through basis chains
  • Requested changes, accepted PR #106537: Fix #106430: Index the right UVmap in BMesh
  • Requested changes PR #104998: UI: Rename Bright/Contrast to Brightness/Contrast
  • Requested changes PR #106597: Remove simulation inputs when deleting outputs and vice versa
  • Accepted PR #106402: DRW: remove edges hidden by Optimal Display in IBO creation
  • Accepted PR #106605: Fix #106602: Cyclic link in versioning code
  • Accepted PR #106545: Fix #106530: Don't try to move unmovable node socket values
  • Accepted PR #106417: Fix #106354: Account for hidden vertices in weight gradient operator
  • Accepted PR #106507: Fix #106422: Mesh Data Attributes Using tip_ for iface_
  • Accepted PR #106644: Fix #106628: Use correct function to get active uv layer
  • Closed PR #106573: optimized blenloader for loops


Tracker

  • Investigated: 10
  • Resolved: 6
  • Archived: 1


Next Week

Next week I'll hopefully have more visible results for node group operators, and I'll fix a bunch of the bugs that have been piling up.


March 27 - April 1

This week I fixed bugs, worked on mesh optimizations including a 4-6x improvement in time for extracting mesh data for Cycles and some improvements for skipping calculation of loose edges and vertices for rendering. I also made progress on an initial implementation of node group operators and cleaned up some of the geometry nodes modifier code to make it more reusable.


Changes / Features

  • Geometry: Skip recomputing bounds after translation 59c0e19db2
  • Geometry Nodes: Copy cached no loose edge status in realize instances 00bb30c0e9
  • Geometry Nodes: Tag no loose edges after curve to mesh node 63689e4756
  • Geometry Nodes: Simplify retrieval of node dependencies cbb813886c
  • Geometry Nodes: Slightly improve curve to mesh performance 52eced3eef
  • Release Cycle: Blender 3.5 Bcon5 1be25cfff1
  • PR #106275: Cycles: Avoid overhead from RNA when extracting mesh data


Fixes

  • Fix #106315: Use after free mirror modifier custom normals handling 6fa464d189
  • Fix #105912: Texture paint removes evaluated mesh attributes 0face8bd22
  • Fix #106134: Broken triangulation without cached face normals 5efa39096c
  • Fix #105965: Add fur modifier properties missing UI data ba4442ef41
  • Fix: Debug assert extracting multiple UV maps in edit mode 80319035e6
  • Fix: Crash when loading 3.4 autosave file f9b9430982
  • Fix: Mistake in mesh vertex normal dirty tag in previous commit 16576beb22
  • PR #106161: Fix #91256: Convert UI data when changing IDProperty data type


Cleanup

  • Cleanup: Mode most of MOD_nodes.cc to the blender namespace 1a956ce196
  • Cleanup: Use helper function to create AttributeFieldInput 60cac27ccc
  • Cleanup: Make geometry nodes execution functions more reusable 1113a25d1f
  • Cleanup: Use const arguments for IDProperty functions 3d5ba79050
  • Cleanup: Use Vector for metaball tessellation vertex data 9bb6f92fe0
  • Cleanup: Geometry Nodes: Split modifier property update function 498287bca0
  • Cleanup: Use const pointers for evaluated meshes 1af3c16962
  • Cleanup: Use consistent type in function definition 389025bee2
  • Cleanup: Retrieve const custom data layers 431d9858c5
  • Cleanup: Remove unused variable efda95840d
  • PR #106186: WIP: Refactor: Remove pre-2.8 function to reevaluate a single object


Review

  • Requested changes PR #106402: DRW: remove edges hidden by Optimal Display in IBO creation
  • Requested changes PR #106350: Fix #106247 - Fix incorrect selection check when in multi-mesh
  • Requested changes PR #106417: Fix #106354: Account for hidden vertices in weight gradient operator
  • Accepted, committed PR #106237: Fix #105855: Crash with node add menu assets and keyboard navigation
  • Accepted PR #106185: Fix #106128: OBJ exporter crash when a mesh only has loose vertices
  • Requested changes PR #106320: Refactoring: Consist: Directly linked links & index & drawing order & evaluated behavior of multi-input links
  • Requested changes PR #106250: Mesh: Use more efficient update tag when flipping faces
  • Accepted PR #106318: Fix #106261: When geometry output is viewed the cycling operator picks wrong sockets.
  • Accepted PR #106301: Fix: unnecessary edge pan updates
  • Accepted PR #105924: Fix #105917: Correct compositing map range clamp tooltip
  • Requested changes PR #105972: Nodes: Move data-block default values with link drag search
  • Closed PR #106359: WIP: Modelling: Add rotate to array modifier
  • Accepted PR #106172: Fix #106131: invalid selection after select random curves operator
  • Commented #106398: UsdGeomPoints import support


Tracker

  • Investigated: 14
  • Resolved: 4
  • Archived: 3


Next Week

More node group operators work and more bug fixing.

March 20 - March 26

This week I worked on landing the final mesh struct-of-array refactors (two still to land, but everything is finished), more bug fixing for 3.5, and helped with some final manual updates for 3.5 (not sure how to link those on my weekly report though).

I also worked on a slightly longer-term improvement to Mesh normals calculation that I also mentioned last week, PR #105920. This week I did some performance testing. Long story short, it's going to need some more work, at least for the final goal of proper determinism.

I helped Jacques with the refactor to IndexMask from PR #104629 by replacing a trivial implementation of the function to convert a bit mask to an IndexMask with something that should take advantage of the new design. It still needs a bit of work though.


Changes / Features

  • Mesh: Replace MLoop struct with generic attributes 16fbadde36
  • BLI: Simplify and extend OffsetIndices class 309553fc07
  • BLI: Add dirty and cached checks to shared cache 40bd35c9c4
  • BLI: Add a default constructor to OffsetIndices dab0ab673e
  • PR #105938: Mesh: Replace MPoly struct with offset indices
  • PR #106159: Geometry: Skip recomputing bounds after translation
  • PR #105940: Mesh: Simplify mesh triangle length counting


Fixes

  • Fix #105949: Uninitialized array used when counting material triangles 711a830ede
  • Fix #106029: Crash sculpting with dynamic topology 058a0187f8
  • Fix #105926: Sharp edge attribute removed when all edges are sharp 0323f8d1d9
  • Fix: Invalid custom data read during legacy mesh format conversion de49d18af5
  • Fix: Hide corner vert and edge attributes in UI dd7e1a3574
  • Fix: Unused variables mistake from previous commit 6addd195fa
  • PR #106161: WIP: Fix #91256: Convert UI data when changing IDProperty data type


Cleanup

  • Cleanup: Move poly topology lookup functions to C++ header 5c3f4195b6
  • Cleanup: Remove mesh poly macros, simplify loops 73d0531f50
  • Cleanup: Use Array and Span for mesh draw buffer cache data 638709b0ed
  • Cleanup: Reorder mesh draw cache functions to avoid prototypes 5256b2ca62
  • Cleanup: Pass UV offset in UV edit code 21e3b4483f
  • Cleanup: Grammar: "it's" vs "its" cef82a1d39
  • Cleanup: Avoid contractions for loose geometry variables aa1fc6102f
  • Cleanup: Rename variables in BMesh loose element extraction 85066f3748
  • Cleanup: Remove unused polys variable ce140c1b15
  • Cleanup: Make SculptSession a C++ only type 59050f3fdd
  • Cleanup: Avoid unused includes in EnumerableThreadSpecific header 7c952d6d15


Review

  • Accepted Core: new blenlib library for implicit-sharing PR #105994
  • Requested changes, accepted Fix: Vertex paint filter operators broken undo PR #106136
  • Commented UI: Generalize drop target API, support them for UI views PR #105963
  • Requested changes Nodes: Move data-block default values with link drag search PR #105972
  • Accepted Animation: Weight Paint select more/less for faces PR #105607
  • Requested changes, accepted Fix #105397: Support viewer socket cycling with linked geometry output PR #105836
  • Accepted Animation: Weight Paint select more/less for vertices PR #105633
  • Accepted, committed Mesh: Set bounds eagerly for spherical and cylindrical primitive nodes PR #105743
  • Commented WIP: Nodes: Rename Bright/Contrast to Brightness Contrast PR #104998
  • Accepted Add helper function to node_utils to create links to virtual sockets PR #105975
  • Accepted Fix #106097: Don't offset child nodes when pasting PR #106099
  • Accepted Fix #106094: Snap curves to surface operator does not update geometry PR #106104
  • Accepted Separate ColorRamp node name into Color Ramp PR #104996
  • Accepted Python API: Add deprecation warning to MeshUVLoop PR #105970
  • Commented Extra documentation for outputting UV maps from Geometry Nodes #104392
  • Accepted Fix #105917: Correct compositing map range clamp tooltip PR #105924


Tracker

  • Reported #106140: Array store test falure in latest main debug build
  • Investigated: 12
  • Resolved: 3
  • Duplicate: 1
  • Archived: 3


Next Week

Actually final commits to 3.5 if necessary, and I'll try to work on node group operators and help on simulation where I can.

March 13 - March 19

This week I worked on the simulation nodes branch (mainly 3bad7a51cb), finishing my mesh refactoring, and some final bug fixing for 3.5. I also ended up doing some more cleanup in mesh draw data extraction and worked on refactoring mesh vertex normal calculation to be deterministic (see PR #105920).

One new design task:

  • Add Active Camera geometry node #105761


Changes / Features

  • Mesh: Optimize BMesh to Mesh conversion with UV maps 0fe0db63d7
  • Mesh: Parallelize extraction of UV maps 63a44e29ac


Fixes

  • Fix #103021: Metaballs have jagged normals c6878d5e82
  • Fix: Edit mesh face corner color operators always use first layer ee18b625ca
  • Fix: Dyntopo attribute data warning doesn't work 6a96a151be
  • Fix #105775: Make "Add > Fur" node setup stable with deformation 4f18022f80
  • Fix: Various issues with attribute removal f23e3c7f04
  • Fix #105577: Python MeshPolygon API allows negative material indices d260cacc9d
  • Fix #105791: Alembic procedural ignores materials e7295efb4b
  • Fix #105681: Sculpt trim generates smooth shaded faces f6f2f4f264
  • Fix: Uninitialized boolean arrays in mesh conversion 46da66f4df
  • Fix: Crash in weighted normal modifier 99506b3d73
  • Fix: Failing assert for meshes with no faces d3cfb2e20e


Cleanup

  • Cleanup: Use spans for mesh data in texture margin code 21b6f6f1f6
  • Cleanup: Wrap C++ normal accessors with C functions b21537d215
  • Cleanup: Store cached mesh normals with Vector 4aa2a3522e
  • Cleanup: Use better check for UV map attribute 35bb942ae3
  • Cleanup: Use spans and C++ type to access mesh normals d7ac2a177a
  • Cleanup: Use C++ attribute API r37889015f342c400d98bb5f821f73855dae65ed7
  • Cleanup: Use more specific variable names for color attributes f149d7625d
  • Cleanup: Avoid keeping mesh normals references after dirty tag bad85fe8c7
  • Cleanup: Remove mesh validation of cached normals d9c2fb9ae2
  • Cleanup: Small changes in Mesh BMesh conversion 2ae9526cd9
  • Cleanup: Tweak mesh normal accessors documentation 17a53d6647
  • Cleanup: Remove two redundant color attribute functions 90076b543b
  • Cleanup: Remove redundant mesh normals dirty tag function f9132e2bbf
  • Cleanup: Remove unused pbvh function declarations f2a05c3e4e
  • Cleanup: Use C++ array type in skin modifier 13ae75f545


Review

  • Requested changes PR #104478: WIP: Core: use generic copy-on-write system to avoid redundant copies
  • Requested changes PR #105607: Animation: Weight Paint select more/less for faces
  • Requested changes PR #105598: WIP: IO: C++ STL exporter
  • Requested changes PR #105743: WIP: Mesh: Add bounds eagerly for circle primitive node
  • Requested changes, accepted PR #105871 Fix #105152: Removing color attribute doesn't update active
  • Requested changes, accepted PR #105756: Mesh: Remove unnecessary mesh position copying
  • Accepted PR #105696: Geometry Nodes: use lazy-function directly for switch node
  • Accepted PR #105708: CustomData: add separate function to add layer from existing data
  • Accepted PR #105809: Fix #105778: Prevent invalid links with link swap
  • Requested changes PR #105836: Fix #105397: Support viewer socket cycling with linked geometry output
  • Accepted PR #105192: Fix #104730: Suppress using anonymous UV layers for rendering
  • Accepted PR #105814: Fix: Correct several messages in the UI
  • Requested changes, accepted PR #105838: Fix: Broken mesh to curve conversion
  • Accepted PR #105877: Fix #105720: crash when adding viewer node
  • Accepted PR #105870: Cleanup: Simplify mesh to legacy curve logic
  • Accepted PR #105737: Refactor: Extract CurvesGeometry read/write function
  • Closed PR #105792: FIX: Disable the bounding box that replaces the Alembic object

Tracker

  • Reported #105778: Node editor link swapping can create invalid link
  • Reported #105885: Toolbar items and icons stacked and clipped
  • Investigated: 9
  • Resolved: 8


Next Week

I'll have to take a couple days off I think, but I hope to be nearly done with the mesh refactoring, and make some more progress on simulation nodes, and hopefully start some work on node group operators.

March 6 - March 12

This week was a bit slower because of nodes and physics workshop going on in Amsterdam. I still found things to work on though-- bug fixes, performance improvements, the subtype selector for node group inputs/outputs, mesh refactors, and of course code review. So I think it was actually a productive week!

I also added the first infrastructure for multiple inputs and outputs to the simulation nodes branch.

I worked on caching for loose vertices too (PR #105567), but there are two definitions of "loose vertices" and both are used:

  • Vertices not connected to any faces (may be used by loose edges)
  • Vertices not connected to any edges

Maybe caching both would be fine, it's only a bitmap anyway. But I'll put that one on hold for now.


Changes / Features

  • Mesh: Parallelize BMesh to Mesh conversion 5669c5a61b
  • Mesh: Set bounds eagerly for cube and grid primitive nodes f9c627b275
  • Mesh: Move face shade smooth flag to a generic attribute 5876573e14
  • Mesh: Avoid writing unnecessary attributes 27b9ce6ab6


Fixes

  • Fix #105587: Triangulated shading in sculpt mode {{GitCommit|caf90c6a905574e7524d53c8c05cae056adda89b}
  • Fix #105524: Texture paint broken after recent cleanup 68a142ee7b
  • Fix #105610: Missing "Amount" validation in duplicate elements node 4912695e00
  • Fix #105518: Crash in edit mode with cage editing fefb35988c
  • Fix: Hide ".uv_seam" attribute in UI 60f35207d4
  • Fix: Logic error in check for curves selection ea80e14464
  • Fix #105496: Incorrect solidify modifier materials after recent cleanup 8faeccf6e5
  • Fix #105430: Curves pick select selects multiple objects 281f383c23


Cleanup

  • Mesh: Move functions to C++ header 1dc57a89e9
  • Cleanup: Make mesh function static cbc73a1e05
  • Cleanup: Remove unused node function declarations 111038062a
  • Cleanup: Remove unused mesh function 68ec41d00e
  • Cleanup: Fix unused variable warning in release builds 03fffc08b6
  • Cleanup: Small tweaks to new PLY code 3c5a15db57
  • Cleanup: Remove unused UI handlers function 050e08e5f0
  • Cleanup: Remove unused GPU subdivision function declaration 6398c9cd7f
  • Cleanup: Unused variables, missing includes in PLY IO 96263368b5
  • Cleanup: Move functions in BMesh Mesh conversion 85fb63f99c
  • Cleanup: Fix warning in skin modifier 5ab49afe8d


Review

  • Requested changes, accepted PR #104941 Rotation C++ API
  • Requested changes PR #105375 USD Export: New Curves/Hair Support
  • Requested changes PR #105192 Fix #104730: Suppress using anonymous UV layers for rendering
  • Requested changes PR #105607 Animation: Weight Paint select more/less for faces
  • Accepted PR #105631 Fix #105601: Remove duplicates when inserting links into multi inputs
  • Commented PR #105633 Animation: Weight Paint select more/less for vertices
  • Accepted PR #105394 Cleanup: Don't do recursion where possible in node.cc
  • Requested changes PR #105515 Spreadsheet: Add Volume grid's active voxel count
  • Commented PR #105598 IO: C++ STL exporter
  • Requested changes PR #105509 Cleanup: Reduce nesteds in node.cc
  • Accepted PR #105474 Cleanup: Fix incorrectly formatted multi-line docstring


Tracker

  • Investigated: 16
  • Duplicate: 1
  • Confirmed: 1
  • Archived: 1
  • Resolved: 7


Next Week

I'd like to keep making progress on the two remaining mesh refactors, and work o node operators, or maybe simulation nodes.

February 27 - March 5

This week I mainly focused on mesh cleanups, with the goal of making my two remaining large patches (corners and faces refactors) simpler. I want them to look more like "find and replace" than complex changes, since the diffs are massive.

I also did the regular code review and bug fixing as things came up. I also made some design tasks for planned breaking changes in 4.0:

  • #105316 Particle system removal for 4.0
  • #105317 Face maps removal for 4.0
  • #105321 Remove legacy instancing panel for 4.0
  • #100153 Breaking Mesh API changes for 4.0


Changes / Features

  • Mesh: Move edge UV seams to a generic attribute cccf91ff83
  • Mesh: Clear loose edges bitmap with count of zero f37077ae5a
  • Mesh: Avoid recalculating bounds after some operations 52104c1a0c
  • Geometry Nodes: Remove unnecessary position copying in delete node 79d64bfde3


Fixes

  • Fix #104219: Node links dragged from wrong socket after selection 076a33ccd1
  • Fix #105162: Array modifier cap material index ignored 079dbf4d1b
  • Fix #105314: Custom node groups missing sockets 15f59470a3
  • Fix #105259: Copy & paste boolean custom property as driver doesn't work d90d6f8674
  • Fix #105331: Assert in solidify extrude after recent cleanup 52d20c6a0e
  • Fix #104915: Race condition writing subsurf optimal display edges 3db246a3ce
  • Fix #105165: Weighted normal modifier crash after recent cleanup 62c6eb12bf
  • Fix: Explode modifier cycles test failure after recent cleanup baa27d0aef
  • Fix: Use of uninitialized variable after recent cleanup 2324eb4f8c
  • Fix #105319: Crash in weighted normal modifier after recent cleanup f2ea7ae751
  • Fix: Debug build error after recent variable rename cleanup 7de2f21001


Cleanup

  • Cleanup: Standardize mesh edge and poly naming 3022a805ca
  • Cleanup: Use references for mesh poly variables 915ff8d152
  • Cleanup: Use simpler iterator for mesh polygons 45cff837bc, 08e20376b1
  • Cleanup: Use spans for mesh render data 0f61497e20
  • Cleanup: Access mesh data with spans d939ecc46f
  • Cleanup: Mesh: Access looptris with Span eb68334b58
  • Cleanup: Use consistent "positions" term for mesh update tag functions c3d803c2ef
  • Cleanup: Use consistent "vert" term for mesh normals b37111c574
  • Cleanup: Clarify mirror modifier copying and face flipping ce25209e26
  • Cleanup: Remove mesh normals function, deprecate in RNA d0eeb3d155
  • Cleanup: Small tweaks to new PLY code 3c5a15db57
  • Cleanup: Unused variables, missing includes in PLY IO 96263368b5
  • Cleanup: Move UV parameterizer to blender::geometry namespace b43f520a82
  • Cleanup: Small cleanups to flip faces node 71a79a7a7c
  • Cleanup: Remove legacy argument from mesh creation functions 96abaae9ac
  • Cleanup: Remove unused variable f1f47df56b
  • Cleanup: Remove unnecessary declarations in laplacian smooth modifier 4ffae99d6d
  • Cleanup: Make mesh validation functions static 93508ab2df
  • Cleanup: Use clearer variable names in mirror modifier 8aa1a7db3e
  • Cleanup: Move five mesh related files to C++ 118ec54ec7
  • Cleanup: Move five modifier files to C++ d449539cd2


Review

  • Requested changes PR #105393 Fix #102843: Add UV Packer with O(nlogn) performance
  • Requested changes PR #105090 Nodes: SDF Volume nodes milestone 1
  • Accepted PR #105088 UI: Region polling support
  • Requested changes PR #105394 Cleanup: Don't do recursion where possible in node.cc
  • Accepted PR #105413 Cleanup: Deduplicate node parent checking functions
  • Accepted PR #104404 IO: New C++ PLY importer/exporter
  • Accepted PR #105264 Geometry Node: Make Capture Attributes more lazy
  • Accepted PR #105237 Animation: Remove the 'Weight Paint: Fix Deforms' operator
  • Accepted PR #105195 I18n: add per-socket translation contexts for nodes
  • Requested changes, accepted PR #105184 Fix #105109: Pick selection with multi object edit
  • Accepted PR #105182 Curves: change default font offset from 1.0 to 0.0
  • Accepted PR #104937 Cleanup: Use const arguments in node.cc
  • Accepted PR #105252 Fix #105028: No update exiting curves edit mode
  • Requested changes, accepted PR #105212 UV: Migrate UV packing from Editor to bf_geometry.
  • Accepted PR #105340 Refactor: Replace DNA_DEPRECATED attribute with _legacy suffix
  • Requested changes PR #105469 Cleanup: nodeToView & nodeFromView usage
  • Accepted PR #105473 Cleanup: Fix a few messages in the UI
  • Accepted PR #105370 Fix #105278: IDProperty UI missing library overridable toggle
  • Commented PR #105474 Cleanup: Fix incorrectly formatted multi-line docstring


Tracker

  • Investigated: 11
  • Duplicate: 2
  • Confirmed: 1
  • Archived: 1
  • Resolved: 6


Next Week

Next week I'll hopefully get closer to finishing the mesh changes, and maybe start on node group operators if the design is a bit more settled. I'll also probably take part in some design discussions happening at the HQ, at least a bit.


February 20 - February 23

This was a four day week for me. I mainly worked on bug fixing, but also did some code review and found some performance improvements while investigating other things. I also did a bit more mesh data access cleanup.

I made some tasks for curves edit mode this week too:

  • #105053: Curves edit mode draw tool
  • #105054: Curves edit mode extend/extrude operator
  • #105055: Curves edit mode radius editing
  • #105037: Curves edit mode Bezier handle drawing
  • #105038: Curves edit mode Bezier handle editing


Changes / Features

  • Nodes: Allow adding multiple search items per type in add menu cc925b9282
  • Subdiv: Simplify final vertex counting 3b59163b02
  • Curves: Avoid unnecessary allocation when calculating offsets 612965497e
  • Geometry Nodes: Remove unnecessary position copying in delete node 79d64bfde3


Fixes

  • Fix #103387: Radius affects curves bounding box 97a8bb450c
  • Fix #104842: Incorrect cyclic curve parameter node factor 11766574a4
  • Fix #104915: Race condition writing subsurf optimal display edges 3db246a3ce
  • Fix #105150: Mesh.vertex_colors.new() returns existing active layer f9f29eefc7
  • Fix #105089: Curves sculpt add creates invalid resolution fcdfc0a85b
  • Fix #104902: Use forward compatible integers for boolean RNA properties 720dbea429
  • Fix #104980: Apply All Shape Keys operator not working d1b6f16906
  • Fix #104975: Essentials assets missing from node link-drag search 3e721195b0
  • Fix: No default for NURBS weights in realize instances and join nodes 8b45f583a2
  • Fix: Global buffer overflow of enum property items on startup 1b72712283
  • Fix: Missing essentials path in internal assets function b5fa180d5d
  • Fix: Set curve type node creates unnecessary nurbs weight attribute 4ba73b50d0
  • Fix: Debug build failure and warnings after recent cleanup commit 2bd097a58d
  • Fix: Use of uninitialized mesh size variables after recent cleanup 5b1f94f05a


Cleanup

  • Cleanup: Access mesh edges, faces, and loops with spans cb62ab5b28
  • Cleanup: Remove unnecessary copying of mesh data outside CustomData a74fd9f2ae
  • Cleanup: Use simpler syntax to return panel open status 05637254da
  • Cleanup: Remove unused UV map deletion functions 996eb1bd5f
  • Cleanup: Move area.c to C++ 140a663f6f
  • Cleanup: Move rna_access.c to C++ 709013dca4


Review

  • PR #104941: Requested changes Rotation C++ API
  • PR #105102: Requested changes Nodes: Add custom color option for Node header
  • PR #105090: Requested changes Nodes: SDF Volume nodes milestone 1
  • PR #105212: Requested changes UV: Migrate UV packing from Editor to bf_geometry
  • PR #105020: Accepted Fix #103761: creating a color attribute doesn't make it active
  • PR #104620: Accepted Curves: Add support for proportional editing
  • PR #104967: Accepted Curves: Add cursor snapping support
  • PR #104968: Accepted Fix #103269: node group asset description not showing as tooltip in the Add menu
  • PR #105040: Accepted Fix #104947: Tag mesh for depsgraph update on UV map deletion
  • PR #105182: Commented Curves: change default font offset from 1.0 to 0.0
  • PR #105136: Accepted Mesh: replace 'BKE_mesh_merge_verts' algorithm
  • PR #104957: Accepted Fix #82936: Make Geometry Nodes modifier icon blue in outliner
  • PR #105130: Accepted Fix #103865: keep id properties overridable when setting them with Python
  • PR #104994: Requested changes Fix: Node operators crash when 'region' is null
  • PR #104977: Accepted Cleanup: Mark overriden virtual call as such
  • PR #105169: Accepted Fix #105168: Entering vertexpaint creates a non-default color attribute
  • PR #105201: Accepted Fix #105198: Ensure Frame and Reroute nodes are searchable


Tracker

  • Investigated: 26
  • Duplicate: 2
  • Confirmed: 1
  • Archived: 7
  • Resolved: 14


Next Week

Next week I'll do more bug fixing, more mesh refactoring, and probably start a bit of work on 3.6 features (node group operators maybe).

February 13 - February 19

This week I focused on bug fixing for 3.5 again. I had a giant pile of bug reports, with more coming in.

The pile is now a bit smaller! I also did a fair amount of code review, and committed two or three final features for 3.5.


Changes / Features

  • Mesh: Set active attribute values edit mode operator 6661342dc5
  • Curves: Replace quick fur operator, add to add menu 4387dbf03e
  • Geometry Nodes: Operator to wrap a modifier's node group 5ca65001ea
  • Geometry Nodes: Remove "normal" attribute 300c673a64
  • Spreadsheet: Add original indices to mesh debug information 2ee5560b3f
  • WM: Add option for clearing asset data to append operator 81b53aa507
  • Curves: Add delete operator to edit mode 3807a0981e


Fixes

  • Fix: Incorrect BMesh to Mesh attribute copying dfacaf4f40
  • Fix: Missing const specifier for curve field input 2a7440176e
  • Fix #104652: UV Face Dots randomized 459c210154
  • Fix #104869: Crash converting UV maps to legacy format 8b416f7f60
  • Fix #104690: Evaluated positions user-after-free for copied poly curves 72a2229848
  • Fix #104826: Mesh to BMesh with shape keys can corrupt layers 4ebb66864a
  • Fix #104698: Assert and failure adding shortcuts to curves sculpt tools c9285f83ab
  • Fix #104697: Curves Sculpt: Setting brush shortcuts does not work 9d15b3f424
  • Fix #104841: Split function for Cycles for sharp edges ignores attribute efc2e5134f
  • Fix #104588: Initialize Face Sets from edit mode selection broken 0dfc102531
  • Fix #104789: uv_layers.remove() always raises error b7e39acfcd
  • Fix #104785: Quick fur keeps asset status of appended node groups 9f41f95c8e
  • Fix #104188: Screw modifier edges invisible in edit mode wireframe view d9398bb53f
  • PR #104835: Fix #104358: Crash with broken writing to freed evaluated mesh: Fix: No update setting curve selection domain with all selected bea1eff3a5


Cleanup

  • Cleanup: Use simpler attribute transfer API in duplicate elements node 7ad1d3156c
  • Cleanup: Remove read-only attribute type be6847e773
  • Cleanup: Use Span to iterate over nodes instead of ListBase c2a0decbf3
  • Cleanup: Nodes: Avoid unnecessary const cast, use early return 851de8170d
  • Cleanup: Quiet unused variable warning 86b3073c9e
  • Cleanup: Move draw_attributes.hh to C++ c92c52f0c9
  • Cleanup: Make format, fix missing static warning d465b92823


Review

  • PR #104404: Requested changes IO: New C++ PLY importer/exporter
  • PR #104707: Requested changes, accepted USD Import: USD Shapes Support
  • PR #104620: Requested changes Curves: Add support for proportional editing
  • PR #104703: Requested changes, accepted Curves: Fix curve segment selection
  • PR #104605: Requested changes Cleanup: Node internal link relink
  • PR #104623: Requested changes Geometry Node: Edge Rings node
  • PR #104671: Accepted BLI: new bit span data structure
  • PR #104709: Requested changes, accepted Fix #104370: Draw: Don't request the same attribute more than once
  • PR #104577: Accepted Refactor: Weight Paint Select Linked Faces
  • PR #104783: Accepted Fix: Skip anonymous CustomData layers for the python API
  • PR #104589: Accepted Curves: add Curve Parameter Falloff to comb brush
  • PR #104832: Requested changes Geometry Nodes: Add selection and depth options to realize instances
  • PR #104750: Requested changes, accepted Curves: Add transform tools to toolbar
  • PR #104617: Accepted Fix: Use proper types in compare node link drag search options
  • PR #104626: Requested changes, accepted Curves: Add select more/less
  • PR #104833: Accepted Nodes: Add 'View Online Manual' to context menu
  • PR #104813: Accepted Curves: Add remove_selection function
  • PR #104793: Accepted Fix #102529 : deduplicate NodeGroups with assets
  • PR #104889: Accepted Fix #104850: Create Geometry Nodes operators fails if not in English
  • PR #104694: Accepted Fix #104166: Add redraw for asset marking and unmarking
  • PR #104715: Requested changes, accepted Curves: Draw point overlay only in point selection mode
  • PR #104897: Accepted Fix #104604: Don't remove the potentially next element of the iteration
  • PR #104937: Requested changes Cleanup: BKE Nodes: Try to always use const
  • PR #104467: Accepted Curves: cage overlay for sculpt mode
  • PR #104619: Commented Geometry Node: Index of Nearest
  • PR #104705: Accepted Curves: Use deformed points in overlay (crazyspace)
  • PR #104672: Accepted Cleanup: fix a few typos in UI messages


Tracker

  • Investigated: 24
  • Duplicate: 2
  • Confirmed: 1
  • Archived: 4
  • Resolved: 11


Next Week

Some more bug fixing, finishing more mesh refactors, and possibly some work on the simulation branch.


February 6 - February 12

This week I mainly worked on bug fixing and code review, and also committed a some final features for 3.5, and two more mesh struct-of-array refactors. I also got used to using Gitea.

Changes / Features

  • Mesh: Remove unnecessary edge draw flag 7ca651d182
  • Assets: Implement viewport drag and drop for geometry nodes bfa7f9db0e
  • Geometry Nodes: Add option to hide input in modifier 158f809dcb
  • Geometry Nodes: Edges to Face Groups Node 50dfd5f501


Fixes

  • Fix #100957: Dyntopo shows false positive data loss warnings 88f9c55f7f
  • Fix #104297: Cycling geometry nodes viewer ignores sockets 5c994d7846
  • Fix: Inaccessible default for node group image sockets 0ea15a6fbb
  • Fix: Curve resolution input node missing default e1a29b58bb


Cleanup

  • Cleanup: Use lambdas in mesh mapping callback, remove unused arguments 284cdbb6cf
  • Cleanup: Remove unused/redundant includes from BKE_curves.hh 3c8f7b1a64
  • Cleanup: Move 18 sculpt files to C++ 53b057aa09
  • Cleanup: Move 6 sculpt-session-related files and header to C++ 5c8edbd99b
  • Cleanup: Fix const correctness warning in recent commit 50918d44fb


Review

  • PR #104577: Requested changes, accepted Refactor: Weight Paint Select Linked Faces
  • PR #104414: Accepted Geometry Nodes: use smooth normals in Distribute Points on Faces node
  • PR #104416: Accepted Geometry Nodes: new Axis to Euler node
  • PR #104469: Accepted Curves: initial surface collision for curves sculpt mode
  • PR #104569: Requested changes, accepted Curves: Add select linked
  • PR #104560: Requested changes, accepted Curves: Add lasso and circle select
  • PR #104465: Accepted Cleanup: Use utility function to find groups in node tree
  • PR #104440: Accepted Cleanup: Geometry Node: Make Accumulate Attribute node more generic
  • PR #104465: Accepted Cleanup: Use utility function to find groups in node tree
  • PR #104406: Requested changes, accepted Curves: Add select pick operator
  • PR #104451: Commented UI: Change Behavior for Multi-Select Enums
  • PR #104602: Commented Geometry Node: Select by Component node
  • PR #104600: Accepted Fix #104501: CLear CD_FLAG_NOCOPY flag after use...
  • PR #104411: Requested changes, accepted Curves: Add box selection
  • PR #104585: Accepted Cleanup: Use const char * for layer names in collada exporter
  • PR #104563: Accepted Geometry Nodes: improve parallelization in Delete/Separate Geometry node
  • PR #104552: Accepted Geometry Nodes: Experimental option for Volumes
  • PR #104493: Commented UI: Make text nomenclature and ordering consistent
  • PR #104602: Commented Geometry Node: Select by Component node
  • PR #104461: Commented Subdivision Surface: add dependency graph tracking when cpu mesh is needed.
  • PR #104484: Commented I18n: write messages of the vertex group lock operator explicitly
  • PR #104425: Accepted Fix: Experimental Panel links modified for Gitea


Tracker

  • Investigated: 6
  • Confirmed: 1
  • Archived: 4
  • Resolved: 1


Next Week

Same thing as last week basically!


January 23 - February 5

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

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

  • T95967: Struct of Arrays Refactor for Mesh Polygons
  • T104327: Decrease SharedCache overhead


Changes / Features

  • Geometry Nodes: Tweak menu location of sample nodes rB789e549d
  • Curves Sculpt: Add report about missing surface for puff brush rBf954029e
  • Performance
    • Curves: Use shared caches for evaluated data rB7f958217
    • BMesh: Parallelize BMesh to evaluated Mesh conversion rBebe8f8ce
    • Geometry Nodes: Skip sorting in topology nodes if possible rBd6c9cd44
    • Geometry Nodes: Optimize start point case of Points of Curve node rB000e722c
    • D17135: Curves: Optimize evaluation of many NURBS curves


Fixes

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


Cleanup

  • Cleanup: Use offset indices arguments for curves utilities rB7fc39535
  • Cleanup: Simplify mesh and point cloud conversion rB9facc506
  • Cleanup: Array types, const, math API in workbench code rBf5e76aa3
  • Cleanup: Quiet unused variable warning in non-debug builds rB8343e841
  • Cleanup: Remove unused image paint function rB96e37aff
  • Cleanup: Edit Mesh: Decrease variable scope, use bool instead of int rB6e0d58a6
  • Cleanup: Compiler warnings in new sculpt & workbench rB79ba1a1a
  • Cleanup: Rename pbvh.cc to pbvh_colors.cc rBf24b9a79
  • C++ Conversions


Review

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


Tracker

  • Investigated: 28
  • Confirmed: 7
  • Archived: 7
  • Resolved: 7


Next Week

I have quite a few high priority reports stacked up so I'll really have to start with those. Then there's some code review I can get to, and the remainder of my most recent to-do list looks like this:

  • Duplicate entries in node search for assets with local ID
  • Grab curves sculpt brush
  • Root ID use in shaders for randomization
  • Field status toggle
  • Subtype editing

January 16 - January 22

This week I worked on various fixes, performance improvements, smaller new features, code review, and updating some existing patches. I also moved 50 files to C++, in preparation for another mesh data structure refactor. This time I'd like to replace MPoly with offset indices like we did for curves. There's no need to store the size of a polygon when it can be calculated from the next offset integer in the array. Storing the size is like caching the result of a subtraction, which doesn't really make sense. Jacques also added a nice abstraction for that this week, the OffsetIndices class, which I used in more places.

I still have two high priority bugs to look into, but I was able to close a few this week.


Changes / Features

  • Nodes: Use dynamic declarations for group nodes rB70260960
  • Geometry Nodes: Use checkbox for exposed boolean sockets rB2ea47e0d
  • Geometry Nodes: Rename Interpolate Domain and Field at Index nodes rB4961e5f9
  • Geometry Nodes: Rename node and socket for "Group ID" convention rB203ab983
  • Curves: Add RNA access to evaluated normals per control point rB241d87e9
  • Geometry Nodes: Add warning to set material node with no faces rB400f0229
  • Geometry Nodes: Adjust modifier UI to put field toggles on the right rB68625431
  • Geometry Nodes: Prefer evaluate at index value input in search rB9179362e
  • Performance
    • Curves: Avoid building evaluated point offsets for poly curves rB8d63293c
    • Geometry Nodes: Parallelize flip faces node rB4cfa4f75
    • Geometry Nodes: Parallelize mesh and curve edit hint transformation rBe0e6afb7
    • Curves: Avoid adding curve type attribute when setting default rB647a7da1
    • Curves: Avoid reallocations when evaluating NURBS curves rBdfd63bf1
    • Curves: Deduplicate and parallelize point to curve map creation rB6c4e3a9e
    • Curves: Remove attribute retrieval, deduplicate evaluation logic rB30111961
    • Curves: Avoid reallocations when evaluating curve in trim node rBe12498e4
    • Geometry Nodes: Avoid creating cyclic attribute when redundant rBbaf69b06


Fixes

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


Tests

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


Cleanup

  • Cleanup: Use OffsetIndices class in more cases rB38a45e46
  • Cleanup: Use OffsetIndices abstraction in duplicate elements node rB76673e5f
  • Cleanup: Use utility function for copying curve domain data rB9233b609
  • Cleanup: Use elif in custom property edit operator, reduce whitespace rB0e89d243
  • Cleanup: Curves selection boolean to float comparison rB7df5d7c7
  • Cleanup: Rename curves utility function rB7db00d4e
  • Cleanup: Add documentation to curve legacy conversion functions rBa219507d
  • Cleanup: Fix incorrect comments in mesh extrude node rBdf545612
  • Cleanup: Remove unnecessary includes in geometry set header rBd42d4e33
  • Cleanup: Remove unused/redundant includes from curves/pointcloud draw rB83f92188
  • Cleanup: Remove unnecessary curves RNA verification disabling rB85ea74ad
  • Cleanup: Remove unused attribute API function rB190d66b5
  • Cleanup: Fix unused variable warning in merge by distance rBe7af2503
  • C++ Conversions
    • Cleanup: Move three modifier related files to C++ rB0b17d171
    • Cleanup: Move versioning_290.c to C++ rB3d6fd290
    • Cleanup: Move six mesh-related files to C++ rBf2bb044f
    • Cleanup: Move multires files to C++ rBc07fdad0
    • Cleanup: Move four sculpt/paint files to C++ rB60ea01aa
    • Cleanup: Move sculpt_dyntopo.c to C++ rB6f6cc269
    • Cleanup: Move several modifiers files to C++ rB79053a6f
    • Cleanup: Move remaining subdiv/subsurf files to C++ rBbbc35fef


Review

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


Tracker

  • Reported T103945: Assert failure in anonymous attribute relations
  • Investigated: 26
  • Confirmed: 1
  • Known Issue: 1
  • Duplicate: 4
  • Archived: 3
  • Resolved: 8


Next Week

I'm hoping I can commit the attribute editing operator, and that making a curves sculpt mode grab brush that doesn't do curve length preservation won't take too long. I'd like to get a patch posted for making sharp face status into a generic attribute.

January 9 - January 13

This week I finished my change to make positions a generic attribute for meshes, and a similar change for UVs that Martijn has been working on for a while. I also added boolean custom property types for the geometry nodes modifier, moved sharp edge flags to a generic attribute, and made some smaller usability improvements to various geometry nodes things.

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


Changes / Features

  • Mesh: Move positions to a generic attribute rB1af62cb3
  • Mesh: Move sharp edge flag to generic attribute rBdd9e1ede
  • Refactor: Const correct Custom Data API, prepare for CoW rB3a3d9488
  • Custom Properties: Add boolean type rBef68a37e
  • Nodes: Avoid small allocations for internal links rB05ddc7da
  • Nodes: Improve wording of node operator descriptions rB7bf75231
  • Geometry Nodes: Rename Interpolate Domain and Field at Index nodes rB4961e5f9
  • Geometry Nodes: Only set soft range for modifier properties rBcb92ff7b
  • Modifiers: Only allow geometry nodes for curves and point cloud rB2c910cb7
  • D16971: Mesh: Avoid copying positions in object mode modifier stack


Fixes

  • Fix T103304: Incorrect handling of edge crease in subdivision node rB0a21a554
  • Fix: Curves select all operator name rB046d1a41
  • Fix: Failing test after combination of Mesh refactors rBaaaa75f9


Tests

  • Geometry Nodes: Add test file for T103304 subsurf node crease failure rBL63172


Cleanup

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


Review

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


Tracker

  • Investigated: 12
  • Confirmed: 1
  • Needs Information: 1
  • Duplicate: 1More of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.
  • Archived: 4
  • Resolved: 2


Next Week

More of the same basically, starting with bug fixing, and hopefully ending with merging some form of edit-mode attribute editing.

January 2 - January 6

This week I worked on various performance improvements, made some progress on some mesh and node refactors, and did a bit of bug fixing and code review work.

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


Changes / Features

  • Node Editor: Paste nodes on mouse position rB7355d64f
  • Object: Support converting curves object to mesh rB2752a884
  • Curves: Support boolean attribute selection type, simplifications rBc26616b2
  • Point Cloud: Support set origin and apply scale operators rBadb4dd91
  • UI: Skip expensive view button searching when drawing rB8b1edff6
  • Geometry Nodes: Multithread transforming instances and point clouds rB0efb79fb
  • Geometry Nodes: Parallelize reading and writing vertex groups rB224d26fd
  • Geometry Nodes: Parallelize deleting vertex group rB58f1e628
  • Node Editor: Avoid allocations for socket tooltip button arguments rB13ad68d1
  • Node Editor: Use the topology cache more when drawing node tree rB0c30873d


Fixes

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


Cleanup

  • Cleanup: Use const variables in node tree drawing rBe550d8c8
  • Cleanup: Simplify node editor socket picking rBe091291b
  • Nodes: Remove runtime socket location from struct rB87fd798a
  • Cleanup: Remove unused code in node editor rB03abc386
  • Cleanup: Comment formatting in node editor rB1d636f5e


Review

  • Requested changes, accepted D16858: Geometry Nodes: Deterministic anonymous attribute lifetimes.
  • Commented D16848: Animation: Add Select Linked Vertices to Weight Paint Mode
  • Accepted, committed D16892: Fix: sort link indices in multi input sockets incorrect
  • Accepted, committed D16926: Fix T103663: Fill single selected material not by false
  • Accepted, committed D16929: EEVEE: Improved animation playback performance in EEVEE for materials using Mix nodes.
  • Accepted D16898: Fix T103564: creating a color attribute doesn't make it active


Tracker

  • Investigated: 5
  • Confirmed: 1
  • Resolved: 3


Next Week

Next week I'll try to finally commit/finish the group node declaration refactor and merge it into the simulation branch.