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 objectAccepted
PR #107653: Paint: Add loop select for facesAccepted
PR #107968: Geometry Nodes: Add "Corners of Edge" nodeAccepted
PR #108541: Cleanup: Parallel edge vertices selection in Delete Geometry nodeAccepted
PR #108540: Fix #108537: Incorrect early return in delete geometry nodeAccepted
PR #108359: Node Editor: Don't change size of resize area for frame nodes with zoomAccepted
PR #108375: Fix #108336: Treat node sockets with muted links as linkedAccepted
PR #107460: Fix #103068: Link insert offset not working when rotating/scaling nodesAccepted
PR #108411 Fix: remove materials from simulation state in all casesAccepted
PR #104465: Fix small grammar errors in Simulation Zones pageAccepted
PR #108286: Animation: Make Vertex Weight Edit modifier inclusiveCommented
PR #108468: WIP: Geometry nodes: Basic volume simulation supportCommented
PR #108477: Cleanup: Move io files to c++Accepted
PR #108476: Fix: Redeclaration variable in loopCommented
PR #108529: Cleanup: int16_t casting in index_mask.ccCommented
PR #108535: Fix #108049: Nodes pasting can leave multiple active nodesCommented
PR #108542: Cleanup: Replace C includesAccepted
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 usageRequested changes
PR #107653: Paint: Add loop select for facesCommented
PR #105690: WIP: I18n: add per-label translation contexts for nodesRequested changes, accepted
PR #108227: UI: Fix and improve a few messagesRequested changes, accepted
PR #108291: Mesh: Avoid position copying in corrective smooth modifierAccepted
PR #107968: Geometry Nodes: Add "Corners of Edge" nodeAccepted
PR #108201: Geometry Nodes: store path to simulation bake in modifierAccepted
PR #108100: Move versioning file 2.8 to C++Accepted
PR #108220: Geometry Nodes: expose simulation bake path in UICommented
PR #108234: UI: Rename Distort socket in the Lens Distortion compositing nodeCommented
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:
- Adding a rotatation socket for geometry nodes: https://projects.blender.org/HooglyBoogly/blender/src/branch/geometry-nodes-rotation-type
- Improving normal calculation and replacing auto smooth for 4.0: https://projects.blender.org/HooglyBoogly/blender/src/branch/refactor-mesh-corner-normals-lazy
- Removing a bunch of deprecated code in 4.0
- Moving bevel weights and subsurf creases to generic attributes
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" nodeAccepted
PR #107656: Geometry Nodes: Sample Volume nodeAccepted
PR #107790: Cleanup: Move BKE_node.h to C++Accepted
PR #105375: USD Export: New Curves/Hair SupportCommented
PR #108001: Move the node previews to the tooltip regionAccepted
PR #107945: Fix #107633: USD import: duplicate shader nodesCommented
Refactor Render Result to allow implicit buffer sharing PR #108045Accepted
Cleanup: Fix copyright date in new bke header PR #108112Closed
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 facesRequested changes
PR #107790: Cleanup: Move BKE_node.h to C++Requested changes
PR #107656: Geometry Nodes: Sample Volume nodeAccepted
PR #107916: UI: Capitalize "Python" in UI messages, improve a few othersAccepted
PR #107894: Fix #107893: Attribute Statistic produces wrong Variance valueCommented
PR #107827: Geometry Nodes: Add 'Fill Interior' option to Mesh to SDF VolumeAccepted
PR #107636: Fix #106929: adjust normalization of zero vector in nodelink shaderAccepted
PR #107828: Geometry Nodes: Add 'Signed Distance' input nodeAccepted
PR #107814: Fix: Empty built-in attributes are duplicated by some nodesCommented
PR #107885: Fix #107882: Get evaluated mesh from curve object tooCommented
PR #107911: Cleanup: Use StringRef instead of std::string for node declarationAccepted
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.
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 stageRequested changes, accepted
PR #107470: Geometry Nodes: Link drag search value moving improvementRequested change
PR #107627: Geometry Nodes: Simulation calculate to frame operatorCommented
PR #107656: Geometry Nodes: Sample Volume nodeAccepted
PR #107575: Fix #107566: Gesture face set respect hidden facesRequested changes
PR #105375: USD Export: New Curves/Hair SupportCommented
PR #107686: Nodes: Update of nodes topology cache more parallelAccepted
PR #107713: Fix #105147: Rename geometry node to Is Face PlanarAccepted
PR #107535: Fix: calculating duplicates in kdtree does not work with selectionAccepted
PR #107312: Fix #107306: Merge by distance node is not deterministicAccepted
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 socketAccepted
PR #107622: Fix #107545: Mistakes in recent node.cc cleanupCommented
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 stageRequested changes, accepted
PR #107279: Mesh to Volume: Changes in Fog VolumeAccepted
PR #107133: Add support for attributes storage in simulation stateAccepted
PR #106919: Simulation nodes: UI for simulation state items in sidebarCommented
PR #107470: Geometry Nodes: Drag and drop value moving improvementAccepted
PR #107097: Cleanup: Type conversions in node.ccAccepted
PR #107413: Cleanup: prefer nullptr inside extract_mesh.hhCommented
PR #107312: Fix #107306: Geometry Nodes: Merge by Distance node be deterministicallyRequested changes
PR #107339: Cleanup: Ensure default cases in node.ccAccepted
PR #107323: Fix #107273: Group input is not listed in the node searchCommented
PR #107336: Vulkan: Conversions between Blender and Vulkan EnumsAccepted
PR #107310: Fix Python error when trying to call the Search Menu with no objectCommented
Fix: Knife tool does not interpolate vertex customdata in interior cuts PR #107367Committed
18f4fd6b85: Attributes: Add function to rename attributeCommitted
fee9a3796c: Cleanup: Add not equal operator to compute constext hashCommitted
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 diskRequested changes, updated
PR #104619: Geometry Node: Index of NearestRequested changes
PR #106346: Mesh To Volume fixes / refactoringRequested changes
PR #106920: WIP: Sculpt: cleanup sculpt attribute APIUpdated, accepted
PR #106903: Undo: support implicit-sharing in memfile undo stepRequested changes
PR #106919: Simulation nodes: UI for simulation state items in sidebarRequested changes
PR #107133: Add support for attributes storage in simulation stateAccepted
PR #107179: Fix #106208: data-block socket defaults not used for node groupAccepted
PR #106812: Support for simulation zones in copy operatorsRequested changes
PR #106065: Add Active Camera geometry nodeAccepted
PR #106700: Core: Add sub-types for float-type custom propertiesAccepted
PR #107196: RNA: ignore some large arrays in override codeAccepted
PR #107255: Geometry Nodes: Delete value moving for drag and drop group inputsCommented
PR #107043: Geometry Nodes: Simulation Zone drawing updatesAccepted
PR #107097: Cleanup: Type conversions in node.ccAccepted
PR #107146: Fix #107067: Properly clear CD_FLAG_ACTIVE/DEFAULT_COLOR flagsAccepted
PR #107055: Cleanup: Replace manually flag checking by method in node.ccCommented
PR #106972: Make first non-anonymous CustomData layer activeAccepted
PR #106750: UI: Change the name of Invert nodes to Invert ColorRequested changes
PR #106515: Fix #106484: Show all rotations with same precisionCommented
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 / refactoringRequested changes, accepted
PR #106884: Cleanup: Use Vector for passing lists of PBVHNodes aroundRequested changes
PR #106812: Support for simulation zones in copy operatorsCommented
PR #106919: Simulation nodes: UI for simulation state items in sidebarCommented
PR #105841: Assets: Implement TraitsAccepted
PR #106838: UI: Add slash character support to fuzzy search initials modeAccepted
PR #105509: Cleanup: Reduce nesteds in node.ccAccepted
PR #104998: UI: Rename Bright/Contrast to Brightness/ContrastAccepted
PR #106721: UI: Add slash separators to Hue/Saturation/ValueCommented
PR #106897: UI: Add prefix to Blender versionCommented
PR #106944: WIP: Add vertex groups to CurvesGeometryCommented
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:
- A small cleanup/optimization to the cube node: mesh-cuboid-optimize
- Splitting vertex and face normal calculation so they can be cached more easily: mesh-normals-calc-changes
- The start of a large change for 4.0 exploring how auto-smooth can be removed/changed: refactor-mesh-corner-normals-lazy
- Extending the memory usage improvements of attribute implicit sharing to curve and mesh face offsets: implicit-sharing-offsets
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 layersCommented
PR #106515: Fix #106484: Show Rotation with higher precisionRequested changes, accepted
PR #106648: Core: Fix broken CustomData IO with Autosave filesAccepted
PR #106580: UI: Fix several messages in the UIAccepted
PR #105972: Nodes: Move data-block default values with link drag searchAccepted
PR #106271: PBVH: update mesh data pointers stored in pbvhRequested changes
PR #104619: Geometry Node: Index of NearestCommented
PR #105598: WIP: IO: C++ STL exporterAccepted
PR #106250: Mesh: Use more efficient update tag when flipping facesRequested changes
PR #105422: Shape Key editing: propagate updates through basis chainsRequested changes, accepted
PR #106537: Fix #106430: Index the right UVmap in BMeshRequested changes
PR #104998: UI: Rename Bright/Contrast to Brightness/ContrastRequested changes
PR #106597: Remove simulation inputs when deleting outputs and vice versaAccepted
PR #106402: DRW: remove edges hidden by Optimal Display in IBO creationAccepted
PR #106605: Fix #106602: Cyclic link in versioning codeAccepted
PR #106545: Fix #106530: Don't try to move unmovable node socket valuesAccepted
PR #106417: Fix #106354: Account for hidden vertices in weight gradient operatorAccepted
PR #106507: Fix #106422: Mesh Data Attributes Using tip_ for iface_Accepted
PR #106644: Fix #106628: Use correct function to get active uv layerClosed
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 creationRequested changes
PR #106350: Fix #106247 - Fix incorrect selection check when in multi-meshRequested changes
PR #106417: Fix #106354: Account for hidden vertices in weight gradient operatorAccepted, committed
PR #106237: Fix #105855: Crash with node add menu assets and keyboard navigationAccepted
PR #106185: Fix #106128: OBJ exporter crash when a mesh only has loose verticesRequested changes
PR #106320: Refactoring: Consist: Directly linked links & index & drawing order & evaluated behavior of multi-input linksRequested changes
PR #106250: Mesh: Use more efficient update tag when flipping facesAccepted
PR #106318: Fix #106261: When geometry output is viewed the cycling operator picks wrong sockets.Accepted
PR #106301: Fix: unnecessary edge pan updatesAccepted
PR #105924: Fix #105917: Correct compositing map range clamp tooltipRequested changes
PR #105972: Nodes: Move data-block default values with link drag searchClosed
PR #106359: WIP: Modelling: Add rotate to array modifierAccepted
PR #106172: Fix #106131: invalid selection after select random curves operatorCommented
#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 #105994Requested changes, accepted
Fix: Vertex paint filter operators broken undo PR #106136Commented
UI: Generalize drop target API, support them for UI views PR #105963Requested changes
Nodes: Move data-block default values with link drag search PR #105972Accepted
Animation: Weight Paint select more/less for faces PR #105607Requested changes, accepted
Fix #105397: Support viewer socket cycling with linked geometry output PR #105836Accepted
Animation: Weight Paint select more/less for vertices PR #105633Accepted, committed
Mesh: Set bounds eagerly for spherical and cylindrical primitive nodes PR #105743Commented
WIP: Nodes: Rename Bright/Contrast to Brightness Contrast PR #104998Accepted
Add helper function to node_utils to create links to virtual sockets PR #105975Accepted
Fix #106097: Don't offset child nodes when pasting PR #106099Accepted
Fix #106094: Snap curves to surface operator does not update geometry PR #106104Accepted
Separate ColorRamp node name into Color Ramp PR #104996Accepted
Python API: Add deprecation warning to MeshUVLoop PR #105970Commented
Extra documentation for outputting UV maps from Geometry Nodes #104392Accepted
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 copiesRequested changes
PR #105607: Animation: Weight Paint select more/less for facesRequested changes
PR #105598: WIP: IO: C++ STL exporterRequested changes
PR #105743: WIP: Mesh: Add bounds eagerly for circle primitive nodeRequested changes, accepted
PR #105871 Fix #105152: Removing color attribute doesn't update activeRequested changes, accepted
PR #105756: Mesh: Remove unnecessary mesh position copyingAccepted
PR #105696: Geometry Nodes: use lazy-function directly for switch nodeAccepted
PR #105708: CustomData: add separate function to add layer from existing dataAccepted
PR #105809: Fix #105778: Prevent invalid links with link swapRequested changes
PR #105836: Fix #105397: Support viewer socket cycling with linked geometry outputAccepted
PR #105192: Fix #104730: Suppress using anonymous UV layers for renderingAccepted
PR #105814: Fix: Correct several messages in the UIRequested changes, accepted
PR #105838: Fix: Broken mesh to curve conversionAccepted
PR #105877: Fix #105720: crash when adding viewer nodeAccepted
PR #105870: Cleanup: Simplify mesh to legacy curve logicAccepted
PR #105737: Refactor: Extract CurvesGeometry read/write functionClosed
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++ APIRequested changes
PR #105375 USD Export: New Curves/Hair SupportRequested changes
PR #105192 Fix #104730: Suppress using anonymous UV layers for renderingRequested changes
PR #105607 Animation: Weight Paint select more/less for facesAccepted
PR #105631 Fix #105601: Remove duplicates when inserting links into multi inputsCommented
PR #105633 Animation: Weight Paint select more/less for verticesAccepted
PR #105394 Cleanup: Don't do recursion where possible in node.ccRequested changes
PR #105515 Spreadsheet: Add Volume grid's active voxel countCommented
PR #105598 IO: C++ STL exporterRequested changes
PR #105509 Cleanup: Reduce nesteds in node.ccAccepted
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) performanceRequested changes
PR #105090 Nodes: SDF Volume nodes milestone 1Accepted
PR #105088 UI: Region polling supportRequested changes
PR #105394 Cleanup: Don't do recursion where possible in node.ccAccepted
PR #105413 Cleanup: Deduplicate node parent checking functionsAccepted
PR #104404 IO: New C++ PLY importer/exporterAccepted
PR #105264 Geometry Node: Make Capture Attributes more lazyAccepted
PR #105237 Animation: Remove the 'Weight Paint: Fix Deforms' operatorAccepted
PR #105195 I18n: add per-socket translation contexts for nodesRequested changes, accepted
PR #105184 Fix #105109: Pick selection with multi object editAccepted
PR #105182 Curves: change default font offset from 1.0 to 0.0Accepted
PR #104937 Cleanup: Use const arguments in node.ccAccepted
PR #105252 Fix #105028: No update exiting curves edit modeRequested changes, accepted
PR #105212 UV: Migrate UV packing from Editor to bf_geometry.Accepted
PR #105340 Refactor: Replace DNA_DEPRECATED attribute with _legacy suffixRequested changes
PR #105469 Cleanup: nodeToView & nodeFromView usageAccepted
PR #105473 Cleanup: Fix a few messages in the UIAccepted
PR #105370 Fix #105278: IDProperty UI missing library overridable toggleCommented
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).
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
- Cleanup: Move PBVH files to C++ rB501352ef
- Cleanup: Move multires reshape header to C++ rBaf0d3781
Review
Commented
D17109: Geometry Nodes: Use face corner normals in Distribute Points on Faces node.Requested changes
D16792: New C++ based ply importer/exporterCommented
D17161: Fix T104256: Propagate all required curves attributes on points for move it in point cloudAccepted
D17190: Nodes: Add modal keymap for Node link dragAccepted
D17185: Modifiers: Measure execution time and provide Python access.Commented
D17084: UI: Statistics Overlay ImprovementsRequested changes
D16977: Fix T103761: creating a color attribute doesn't make it activeAccepted
D17164: UI: Make uiBut safe for non-trivial constructionAccepted, committed
D17131: Geometry Node: Curve to Points: Fix wrong field supported interface statusAccepted
D17093: Shader Nodes: Use layers from evaluated meshAccepted
D17092: BLI: GValueBuffer containerAccepted
D17183: Fix T104296: Crash caused by incorrectly initialized group nodes.Commented
D16009: Geometry node: Add a point selection input to Fillet Curve NodeAccepted
D17122: Fix T104136: Crash with Mesh to Volume & SimplifyAccepted
D16103: USD IO: Moving to the new Mesh Attributes API for ColorsAccepted
D17103: Fix T104044: keep order of UVMaps on loadAccepted
D17194: Fix T104316: Fix width of headerless panels on overlapping regionsAccepted
D17165: Keep CustomData layers properly sortedAccepted, 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 editingRequested changes, accepted
D16979: Curves: Add initial undo systemRequested changes, accepted
D16848: Animation: Add Select Linked Vertices to Weight Paint ModeRequested changes, accepted
D17063: Curves: Add initial transform supportAccepted
D17025: Curves: Add OffsetIndices abstraction.Accepted, committed
D17003: Fix T103632: Single point trim should sample curve end point correctlyAccepted, committed
D16846: Geometry Node: Geometry socket supported types tooltip without computingAccepted
D16998: Add more direct access to the UVMap associated bool layers in pythonAccepted
D17047: Curves: Edit mode selection operatorsCommented
D16414: Sculpt: Stroke Texture MappingAccepted
D16735: Geometry Node: Gather link searche: Ability to move values to the top using a new linkAccepted
D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributesAccepted
D17012: UI: Fix alignment of custom properties edit & remove buttonsCommented
D17045: Fix: Compare node: Link drag search: More Then for Color typeCommented
D16977: Fix T103761: creating a color attribute doesn't make it activeAccepted
D16949: Fix T103618: Transform grid bugAccepted
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.
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 attributesAccepted
D16752: 3D Texturing: Replace pointers with indexes in pbvh_uv_islandsAccepted, committed
D16997: Fix T103850: Avoid using components that can contain null pointerRequested changes
D16743: Geometry Nodes: Add selection and depth field to realize instancesCommented
D16980: Mesh: Support computing custom/loop normals lazily (WIP).Accepted
D16898: Fix T103564: creating a color attribute doesn't make it activeAccepted
D16935: Fix T103400: Transfer Mesh Data Layout broken for color attributesAccepted, committed
D16749: Cleanup: replace "UV's" by "UVs"Requested changes
D16979: Curves: Add initial undo systemCommented
D16551: RNA: Use C++ for sequencer propertiesAccepted
D16237: Geometry Nodes: Add a selection input to the store named attribute nodeAccepted
D16939: Fix T103679: Add missing operators in object context menu for point cloud and curvesCommented
D16977: Fix T103761: creating a color attribute doesn't make it activeCommented
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.

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 ModeAccepted, committed
D16892: Fix: sort link indices in multi input sockets incorrectAccepted, committed
D16926: Fix T103663: Fill single selected material not by falseAccepted, 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.