User:HooglyBoogly/Reports/2023
< User:HooglyBoogly | Reports(Redirected from User:HooglyBoogly/Reports/2023/)
All Reports
December 18 - December 30
These past weeks I've mainly worked on some cleanups and bug fixes-- stuff I can do without much back and forth with others.
Changes / Features
- Curves: Add basic custom normals support f63a7c1ee9
- Curves: Support View Selected in edit mode 0ceb272832
- Sculpt: Avoid expensive mask access in remaining cases bd51bb7623
- Mesh: Rename MLoopTri variable names, and functions 7c69c8827b
- Mesh: Rename totvert, totedge, and totloop fields efbee2d606
- PR #116166: Geometry Nodes: Matrix socket type, attribute type, and initial nodes
Fixes
- Fix #116351: Assert in sculpt mode with no faces a0f8a6dae8
- Fix #116373: Error using foreach_get on MeshLoopTriangle loops 5f527fdc89
- Fix #116069: Incorrect data transfer custom normals behavior 78c3253553
- Fix #115400: "Face Sets from Visible" missing undo and redraw 255ac188a9
- Fix #116532: Cloth filter performance issue from mask attribute access 27582ddb93
- Fix #115046: Crash updating string custom property UI data 0f2e534674
- Fix #116647: Sculpt smooth brushes ineffective with low strength 715c829290
- Fix #115857: UV project modifier crash with invalid name 2396d07f4e
- Fix #116372: Crash in boolean triangulation after recent cleanup 66409b3860
- Fix: Incorrect curves asset in recent commit ebb9cf21ec
Cleanup
- Mesh
- Rename Mesh loop_data to corner_data 8dd8f932e2
- Remove unnecessary argument in mesh normals code 48b0a504b4
- Replace MVertTri type with C++ vector 7132c7a53c
- Remove unnecessary DNA_meshdata_types.h includes b9b47088bc
- Move BKE_mesh_calc_edges to bke namespace 2c43a9eed9
- Correct and improve comments in DNA_customdata_types.h dcbc5a3641
- Remove most indirect includes of BKE_customdata.hh 06eda2a484
- Sculpt
- Remove unnecessary function and data in PBVH 4ee151e204
- Tweak PBVH grid faces update retrieval 8bf73a7a97
- Sculpt: Split mask and position smooth brushes ac15db443f
- Remove unused paint struct 399e8264e6
- Remove unnecessary/indirect includes in sculpt headers d54b24c55a
- Use BitVector instead of BLI_bitmap in sculpt code a683d1b0c6
- Sculpt: Add utility to duplicate mask data 70ae6f5d41
- Improve sculpt variable name a52887abb0
- Miscellaneous
- Use FunctionRef instead of std::function 854d7afa1e
- Move attribute domain enum to C++ header, use enum class 19001c9e6c
- Use forward declarations to replace includes of BKE_attribute.hh edf8a776ac
- Use utility to fill default attribute values 2618c1d71d
- Slightly improve virtual array docs 8555c22ced
- Avoid uninitialized variable warning 2da88752be
- Grammar, redundant "private" in class 01dbe11ea6
- Return attribute unique name string by value 7ed172336f
- Check for null before copying datablocks d093c9075d
- Use accessor functions for point cloud positions 7f24972911
- Refactor: Move evaluate on domain field input to be reusable 5de57e7001
- Use dynamic declaration for sample curve node da6867ca3b
- Debug build error, unused variable warnings 8e30dc12da
- Inconsistent struct vs. class declaration warning 4f8d584325
- Make format 19b46e0816
- PR #116664: Cleanup: Remove some indirect includes in common headers
Review
Requested changes
Menu Switch Node PR #113445Requested changes
Curves extrude operator PR #116354Requested changes
Geometry Nodes: Sort Elements node PR #114194Requested changes
Geometry Nodes: Rewrite Scale Elements node PR #115142Accepted
Volumes: refactor volume grid storage PR #116315Accepted
Geometry Nodes: support panels in geometry nodes modifier PR #116472Requested changes, accepted
Geometry Nodes: Visualize viewer as text PR #115664Commented
Geometry Nodes: Sort Elements node PR #114194Accepted
Geometry Nodes: Speedup of Shortest Edge Paths node PR #114707Accepted
Geometry Nodes: initial Volume Grid socket support PR #115270Commented
USD: Support armature and shape key export PR #111931Accepted
UI: add support for uiLayout based panels PR #113584Requested changes, accepted
Fix #11689: Sculpt: Box Hide tool keymap option "Outside" not working PR #116412Accepted
Fix: all curves drawn cyclic if "cyclic" attribute exists PR #116638Accepted
Fix #116270: Sculpt: Simplify brush crash PR #116291Accepted
Fix: failing unit tests due to "stack-use-after-scope" PR #116434Accepted
Fix #11614: Empty Point Cloud crash Points to Curves PR #116640Commented
Enable TBB for opensubdiv. PR #116357Accepted
Fix #116019: Solidify Crease Inner not working with edge crease attribute PR #116491Commented
RNA: Add missing raw types for DNA types PR #115761Commented
RNA: Speed up raw array access when the property is stored contiguously PR #116015
Tracker
- Investigated: 20
- Resolved: 11
- Closed: 2
Next Week
Taking some time off at the beginning of the first week of the year. After that I suppose I'll be starting to move my focus to the GP project for the beginning of the year.
December 11 - December 17
This week I mainly worked on the same things as last week, and also made a design task for matrix sockets and implemented it.
Changes / Features
- Curves: Add edit mode tilt control 0e8c874166
- Curves: Add edit mode duplicate operator 9af176bfe6
- GPv3: Specialize duplicate function for curve selection domain 7dc6a6bd9a
- Mesh: Add viewport normals simplify option 912c4c60d8
- Geometry Nodes: Change Instance Rotation node to use rotation socket a6838c8a12
- PR #116066: Curves: Add basic custom normals support
- PR #116166: Geometry Nodes: Matrix socket type, attribute type, and initial nodes
- PR #116106: Geometry Nodes: Add Rotate Rotation node
Fixes
- Fix #116017: Mesh edit mode vertex slide allocation ignores alignment 5b053204ed
- Fix #115994: Crashes with edit mode tools using custom data correction eefe19a7de
- Fix #116141: Missing task isolation when storing sculpt undo node e5cb2b2798
- Fix #116025: Uninitialized value when versioning old node trees 65252564ee
- Fix #116140: GPU subdivision ignores completely smooth shading cdb2f1e1ba
- Fix #116122: Frame Selected/All operators incorrectly frame view 766b0ce820
- Fix #115326: Memory leak toggling dyntopo on and off with empty mesh a7e8d8c8be
- Fix: Crash copying BMesh from typo in CustomData copy 6bc3445e65
- Fix: Mesh draw normals extraction ignores sharp_edge with no sharp_face 5875349390
- Fix: Out of bounds array access building PBVH for empty BMesh 7aee8124a7
- Fix: Sculpt undo crash for multires after recent cleanup d7b2141c2e
- Fix: New generic attributes uninitialized after curves draw tool f5adfa6acd
- Fix: PBVH has face sets check ignored for BMesh 87e8a282bc
- Fix: Warnings and build error after previous forward declaration commit 96dff1d3ce
Cleanup
- Sculpt
- Use loops instead of PBVH iter macro in sculpt undo 36097b757e
- Use FunctionRef for PBVH callbacks 488de130b3
- Remove useless PBVH update function f15bca64f2
- Remove unnecessary sculpt visibility update 1d94003660
- Remove unnecessary PBVH threading settings function 4c1f766d0d
- Remove unused PBVH node pointer 3ddba82716
- Remove unused sculpt code c8aecac001
- Remove unnecessary "sculpt_undo" prefix for local functions 36d5443f57
- Remove unnecessary PBVH function 0ad65762cc
- Move PBVH update functions to C++ namespace 262572a6a0
- Tweak PBVH node face indices functions, add comments ce4ec6d42b
- Pass vertex update array as argument when building PBVH 71b6f0ecbe
- Simplify vertex index retrieval in sculpt undo nodes ba6c07f2d9
- Simplify PBVH build process slightly b3aca5b28f
- Slightly improve variable naming in sculpt undo nodes 93a3423584
- Mesh
- Remove unnecessary Mesh C-API functions b52a071e7a
- Use C++ attribute API instead of CustomData API c53e220aef
- Move mesh update tags to DNA struct 1d0179adbb
- Remove inline functions and extra includes from draw extraction 768cd9b763
- Improve mesh MLoopTri struct comment 249c8b0e6b
- Move two mesh functions to C++ header e657aa2360
- Use utility function to calculate face normal bb2a289a9a
- Un-inline mesh data access functions 4c1817e76f
- Remove extern "C" from mesh C header 3fb6397b79
- Forward declare some classes in mesh headers 30d95966d5
- MISC
- Remove unnecessary C API for delaunay triangulation a494d6a641
- Remove unnecessary namespace specification 7c423682bc
- Remove unused curves keymap items dcf9d74cba
- Slightly simplify some loops in delaunary triangulation 5be9a1cce4
- Slightly simplify delaunay triangulation input gathering 34bf1f6c0c
- Move opensubdiv C-API headers to C++ 8157f33911
- Move BLI_delaunay_2d.hh to C++ 451aa56d9c
- Move draw_manager_text.h to C++ 79ade784b8
- Doxygen section title case consistency 6dad7afe5e
- Remove const for Span and by-value types in headers 6a1009c9f8
- Make format c02784bd4f
Review
Requested changes, accepted
PR #115864: Curves: Support for draw toolUpdated, accepted
PR #113413: Geometry Nodes: use dynamic declaration for switch nodeRequested changes
PR #115664: Geometry Nodes: Visualize viewer as textRequested changes
PR #113584: UI: add support for uiLayout based panelsAccepted
PR #113431: Geometry Nodes: Add Active Camera input nodeAccepted
PR #115466: Geometry Nodes: new Bake nodeAccepted
PR #116231: Geometry Nodes: refactor storage for socket valuesCommitted
PR #116010: Fix compiler warningAccepted
PR #116152: Fix #116144: Tag update relations for Active Camera nodeAccepted
PR #116026: Fix #116000: Face set toggle visibility not working correctlyAccepted
PR #116028: Fix #116024: Face set unhide crash for masked typeAccepted
PR #116134: Fix #116130: Mirrored custom normals broken againClosed
PR #115982: Nodes: Show active node position & width in UI when Developer Extras enabledClosed
PR #105408: Matrix operations and sockets for geometry nodesClosed
PR #111740: BLI: add parallel_memset and use for normal calculation
Tracker
- Investigated: 11
- Resolved: 7
- Closed: 1
Next Week
More of the same mostly I suppose. I'm mainly using this in between time to try to fill in some gaps and make future work easier.
December 4 - December 10
This week I did a fair amount more performance and cleanup work in the sculpt module. I'm trying to approach it from both ends: improving existing code iteratively and planning some larger replacements like the rewritten brushes (starting with the draw brush in Sergey's branch). So far for the larger changes I'm focusing on operator code where I can more easily measure performance changes.
I also:
- Made a bit of progress on curves custom normals calculation. Though I didn't finish it like I hoped.
- Added matrix sockets and a custom data type in a branch. Besides the mixing, that's basically done.
- Fixed a performance regression from quadratic performance in BMesh data copying. Funny to see something deep in my todo list raised to high priority with a report. A lesson in trusting my instincts maybe.
Changes / Features
- Mesh: Avoid calculating corner normals for drawing flat-shaded meshes c4446d7924
- BMesh: Optimize copying attributes from many elements at once 0b1049b41d
- BMesh: Improve performance when copying attributes in same mesh 66da875488
- BMesh: Use simpler element copy within the same mesh 865b806811
- PBVH: Specialize node bounds update, expose functions e9f4f8b52a
- PBVH: Use C++ Bounds type for node bounds 8a705ffd11
- Sculpt: Refactor face sets storage and access f3dd1a3260
- Sculpt: Make hide poly pointer in sculpt session const 4e7e539b33
- Subdiv: Remove unnecessary CCG derived flag structs 8171f719fe
Fixes
- Fix #115979: Object bounds display type doubled size 4eee57fc3b
- Fix #115856: Sculpt Face sets drawing sometimes uses wrong default a86658a58a
- Fix #115924: Sculpt: Draw face sets not working on first try 7f6cf068d5
- Fix #115775: Curve object to mesh conversion crash ce81bdc284
- Fix: Protect against access of empty geometry bounds optional 79552f87f2
- Fix: Build error and format fixes after previous cleanup e0d95b95cc
- Fix: Incorrect use of Vector resize in mesh_fair 184418b6d0
- Fix: Debug build error after recent PBVH bounds change cc3c5e2329
Cleanup
- Mesh
- Use consistent "mesh" variable name (replace "me") 854cdd1180
- Store more mesh runtime data with unique_ptr 695e626d3f
- Store SubdivCCG in unique_ptr 5cd6a05f5e
- Avoid passing context to shrinkwrap blenkernel function c293c75975
- Move BMesh headers to C++ 7a96c4672c
- Simplify common logic for BMesh attribute copy fc4d29e08a
- Improve comments in BKE mesh types header 0318d49995
- Remove unused DMFlagMat struct 3b1d5d14f2
- Sculpt
- Move majority of sculpt paint module to C++ namespaces e5814ab201
- Sculpt explicitly retrieve mesh face visibility attribute 83810e28fc
- Write sculpt mask directly when restoring data before stroke 2b0448c91d
- Use references for sculpt undo nodes c4436776d1
- Move sculpt undo system to C++ namespace 08d657c874
- Return sculpt node automasking data by value 956d00e37a
- Return PBVH vertex data arrays as spans 869ea79da0
- Add utility to compare non-indexed and indexed span values dc234c5d93
- Use FunctionRef for PBVH batch drawing 874f83c42e
- Store sculpt undo nodes with C++ Vector 63432f0963
- General C++ cleanup
- Change some view3d projection functions to use C++ types d742f08cc6
- Remove unused / legacy code
- Remove unused custom data function 353d000f15
- Remove unused BoundBox functions edb7656c06
- Remove unnecessary size argument to CustomData free function cc7080b8b0
- Remove unused BoundBox flag a9b94d6150
- Remove remnants of old color layer preview system fe3b8b6e9b
- Remove unused modifier functions 3a075a95ee
- Other
- Use simpler positions name in curves selection functions 85012ccb1f
- Remove excessive use of optimized IndexMask functions 7bfb7af311
- Fix missing declaration warning 7cf9252713
- Resolve mix of bool and char warning 3c476979b1
- Resolve inconsistent struct vs. class declaration warning 2609f16fc8
Review
Requested changes, accepted
PR #115923: GPv3: Clean loose points operatorRequested changes
PR #114194: Geometry Nodes: Sort Elements nodeAccepted
PR #115602: GPv3: Drawing PlacementRequested changes
PR #115664: WIP: Geometry Nodes: Visualize viewer as textRequested changes
PR #115864: WIP: Curves: Support for draw toolRequested changes, accepted
PR #115740: GPv3: Overlay: only show visible and editable materials.Accepted
PR #115964: UI: fix and improve a few messagesAccepted
PR #114797: Fix #114760: new attribute does not get active for some domainsAccepted
PR #115795: GPv3: Crash switching to draw mode for empty objectCommitted
PR #115138: Geometry Nodes: Face Group Boundaries node speedupAccepted
PR #115805: Nodes: add node callback for extra info that is drawn above nodeCommented
PR #115898: Refactor: Pass Keyframe settings as argumentsAccepted
PR #115796: Fix #115716: Empty Grease Pencil Keymap WarningAccepted
PR #115744: Fix #115667: Sculpt face sets draw wrong with subdivision modifier
Tracker
- Reported #115895: GPv3: Draw surface projection artifacts at mesh boundaries
- Investigated: 9
- Resolved: 5
- Closed: 1
Next Week
I'll finish the basic curves custom normals feature, and finish a PR adding matrix sockets and the attribute type.
November 27 - December 3
This week I landed a few more changes, including the geometry bounds refactor I've been working on for a while and a big refactor to the extrude node. I also ended up doing a lot of sculpt mode cleanup, basically trying to use data oriented design, simplify code, and make use of C++ features.
Changes / Features
- Refactor: Further improvements to geometry bounds 14e3523ac2
- Geometry nodes
- Geometry Nodes: Rewrite parts of extrude mesh node c31718649d
- Geometry Nodes: Remove drag & drop requirement of geometry input ed23989e2e
- Sculpt mode and multires
- Sculpt: Improve "Hide/Show" operator performance for mesh 4e66769ec0
- Subdiv: Store multires sculpt grid visibility in BitGroupVector ccab01f97f
- Sculpt: Multithread mesh "show all" operation 380b7c5dc3
- Sculpt: Remove redundant "reveal all" operator 0978f9486e
- Refactor: Sculpt: Clarify PBVH attribute requests 8c8ea2ec47
- Multires: Use IndexMask for Subdiv CCG face updates 63af8dbfca
- BLI: Add utility to reverse index mask 21a2390f4c
Fixes
- Fix #115108: Object dimensions infinite for armatures 91c936e01c
- Fix #115298: Sculpt mask removed with undo involving mode change 09caf59690
- Fix #115521: Voxel remesh resets smooth with attribute propagation off 81abaaad6b
- Fix #115366: Missing task isolation subdividing loose edges eb399678f5
- Fix: Incorrect subdiv IndexMask construction 34ec46934c
- Fix: Crash building sculpt PBVH a86122606c
- Fix: Sculpt drawing ignores hide status f69beb4829
- Fix: Debug and lite build errors after recent cleanup 5366ccd625
Cleanup
- Sculpt and multires
- Remove redundant subdiv pointers from PBVH 8b28bb9882
- Remove redundant selection comparison from mesh tests db17c4bff5
- Use const arguments for some paint functions f2ed2b82ce
- Move constant variable declarations outside of loop aae0b71342
- Use proper type for subdiv CCG faces aa2cdf283a
- Move enum definition out of header 68baa04eeb
- Pass PBVH node grid indices as Span a7afc5b1e8
- Use const SubdivCCGFace variables c2571cd259
- Move paint hide file to namespace 11b4e9311f
- Pass PBVH draw attribute requests as span 2a94328346
- Use enum class int paint hide operator 841864406f
- Remove unused / legacy code
- Remove unused threading C-API functions 4c79b87d9a
- Remove/replace SmallHash data structure 991486c37f
- Remove unused voxel sampling functions 7020a4ff1a
- Remove unused BLI voronoi code 573b4728cb
- Remove unused argument to PBVH draw functions 2864f3ad3f
- Remove unused curve positions variable c28cb3d0ac
- Mesh
- Move mesh looptri real edges function 19b9b8d431
- Remove mesh "vert coords" functions f2467f75b3
- Remove unnecessary mesh C-API functions 321c1af26e
- Remove outdated normals comment for mesh validation c083b3b8d2
- Use optional for original indices in extrude node f1c0bce651
- General C++ cleanup
- Store BVH and shrinkwrap data with C++ types aca27e5462
- Move four blenkernel headers to C++ 7e3ba529ea
- Use C++ arrays to store subdiv ccg data 8c59532106
- Use C++ threading API in subdiv_ccg.cc dfc6b1deb6
- Small tweaks to C++ style in lib remap code ac6e854335
- Remove unnecessary keywords from newly C++ headers 9271949f7b
- Use references instead of pointers in subdiv_ccg.cc 1a36feb7e5
- Other
- Use const arguments in many drawing related functions e83b1b8ae0
- Solve missing declaration warning for grease pencil operator b292449c1c
- Use const variables and arguments 7eb8c4cdda
- Grammar in a few comments 13c145ac02
- Make format 367423a31c
- Add missing return 721de99571
Review
Requested changes, accepted
PR #115389: GPv3: Duplicate operator (edit mode)Requested changes, accepted
PR #115278: GPv3: Lock unselect materials operatorCommitted
PR #112794: Mesh: add index-independent test for mesh equalityRequested changes, accepted
PR #115602: GPv3: Drawing PlacementRequested changes
PR #115664: WIP: Geometry Nodes: Visualize viewer as textRequested changes, accepted
PR #115612: Fix #115526: missing normals on first chunk of array modifierCommented
PR #115270: Volume Grid SocketsRequested changes
PR #114194: Geometry Nodes: Sort Elements nodeCommented
PR #115677: WIP: C++ BLI rect typeAccepted
PR #115568: Fix #115548: Missed sort after multithreaded algorithmRequested changes
PR #115535: GPv3: Copy Materials to Selected operatorAccepted
PR #115047: Fix #115037: Crash deleting tool node group from outlinerRequested changes, accepted
PR #115580: Fix #115572: shape_key_remove operator leaves shared normalsRequested changes
PR #115142: Geometry Nodes: Rewrite Scale Elements nodeAccepted
PR #115439: Compositor: UI: better node visibility for default node treeCommitted
PR #115495: Cleanup: USD: Fix unused declaration and argumentAccepted
PR #115532: Fix: Missing compositor update upon changing tree optionsCommented
PR #114797: Fix #114760: new attribute does not get active for some domainsCommented
PR #115512: Geometry Nodes: extract global data passed to a geometry nodes invocation to separate struct
Tracker
- Investigated: 6
- Resolved: 3
- Closed:
Next Week
I'll make a PR for basic curves custom normals support, make a design for matrix sockets, and continue some sculpt refactoring.
November 13 - November 26
The DDoS attack made it hard to make last week's report, so this is a combination of the last two weeks.
Lots of stuff finished recently! The main thing I'm happy about is getting the number of branches on my repo from around 40 to 23. That means I have far fewer WIP projects, which is helpful for my sanity. I'm looking forward to getting that number even lower.
Apart from the commits listed below, I also worked on the start of a sculpt brush refactor with Sergey. We're trying to make the implementation of the draw brush nicer to start, then move on to other brushes and multires, and dynamic topology. The main difficulty is still measuring performance reliably though. It's hard to commit to a few key decisions without that.
Changes / Features
- Hydra: Parallelize and simplify submesh export 75f24a5f14
- Refactor: Move object runtime data to separate allocation 4bcdc57fc8
- Mesh
- Improve remesh attribute transfer ba1c8fe6a5
- Parallelize remaining topology maps bb80716244
- Move sculpt mask to a generic attribute f2bcd73bd2
- Copy small caches when moving mesh data to Main database e9db14b3d8
- Add flag to store presence of overlapping topology 9785f2631e
- Geometry Nodes
- Index switch node 8d5aa6eed4
- Support node tools in object mode 3fcd9c9425
- Node tools: Support warnings 6ba9ee88c8
- Convert four nodes to use rotation socket 600a133521
- Use rotation socket for the object info node 49087a84d0
- GPv3: Avoid unnecessarily creating cyclic attribute in hard erasor e28a782dbe
- PR #114933: Refactor: Further improvements to bounds
Fixes
- Fix: GPv3: Missing curve type counts update in hard erasor 02a95198d2
- Fix: Avoid unnecessary conversions in rotation socket versioning 106de9f03c
- Fix #114870: Object dimensions does not used evaluated geometry 14eb08c3a5
- Fix #115202: Set Selection node crash in object mode ef3897f6a4
- Fix #115170: Sculpt mode crash b63e31df57
- Fix #115060: Swapped custom data mask in BMesh code 4dede4efa8
- Fix #114822: Data transfer modifier doesn't work for face corner normals 451c054d9b
- Fix #114841: Sculpt Multires drawing broken with no mask 1a8b5bcd43
- Fix #114948: Parenting crash blender since ObjectRuntime refactor d46d1bbe6a
- Fix #114737: Curves: Random selection crash in curve select mode e10ac17fdb
- Fix: Missing space in property description 4edc138933
- Fix: Duplicate node tools menus in sculpt mode b3d4fc80fd
- Fix: Error in previous crazy space cleanup 8792f73446
- Fix: Crash with crazyspace mesh sculpting 5bacfd5c44
- Fix #114623: Node group asset added with wrong position from header 5b094ee770
- Fix: Auto smooth versioning node group doesn't show in data-block picker 00551a3ed2
- Fix: Error in previous commit b794bf173c
- Fix: Incorrect default used when retrieving material indices 6d18fe76b5
- Fix #114830: Sculpt line project inverted 31c1207c1a
- Fix: Incorrect freeing in depsgraph RNA objects iterator da511f5573
Cleanup
- Sculpt
- Cleanup: Access sculpt attributes with C++ attribute API 301731692e
- Cleanup: Remove sculpt session mask pointer 9781600d68
- Cleanup: Remove unused return argument from "ensure mask" function 76dc180c3d
- Cleanup: Use C++ BitVector for sculpt boundary info ee9265710a
- Cleanup: Retrieve sculpt mask without write access 865929d4b1
- Cleanup: Avoid shallow copy in OBJ exporter 932f20135d
- Cleanup: Generalize some attribute propagation functions 9a28852494
- Cleanup: Slightly generalize attribute gather function f3ba4115f2
- Cleanup: Correct offset indices slice assert 876b624320
- Cleanup: Remove unused old sequencer iterator 2b1b600456
- Cleanup: Remove unused CustomData function f2aab07760
- Cleanup: Grammar in comments 29f3d54e91
- Bounds
- Cleanup: Return Bounds type directly in mesh to volume code 62b4555d01
- Cleanup: Acess geometry bounds more directly c56912eade
- Cleanup: Access mesh bounds directly for Python raycast bc61167d8e
- Cleanup: Remove unused edit mesh cage bounding box cache 807c076e28
- Cleanup: Simplify crazyspace loop over mesh corners a0b9865aa6
- Cleanup: Use enum class for ModifierTypeType 805e6b7525
- C++ conversions
- Cleanup: Use C++ types for crazyspace deform storage 4d7274b7f4
- Cleanup: Use C++ types for modifier type deform callbacks 8f5ff2c5dd
- Cleanup: Use C++ math functions in mesh normals code df960e5fc3
- Cleanup: Move several blenkernel headers to C++ 3d57bc4397
- Cleanup: Move draw_subdivision.h to C++ ea78af4b5d
- Cleanup: Move BKE_modifier.h to C++ 7b51d32dd9
- Cleanup: Remove unnecessary keywords in C++ headers 8d2b203a3d, f27aee857b, 0c1bb82fc4
- Cleanup: Combine crazyspace C header with C++ header 8f362a175d
- Cleanup: Remove mistaken reference binding to temporary 8a0079053f
- Cleanup: Fix debug build error after recent commit fdae173ed4
- Cleanup: Add const to MutableSpan methods 5371f5516c
Review
Requested changes
PR #112677 WIP: Geometry Nodes: add support for gizmosRequested changes
PR #115278 GPv3: Lock unselect materials operatorRequested changes, accepted
PR #114580 GPv3: Material lockingRequested changes, accepted
PR #114850 GPv3: Fix Remove Material Slot and Unused SlotsCommented, accepted
PR #114862 IO: C++ STL exporterCommented
PR #114362 ID properties: Support enum values with itemsCommented
PR #114699 Fix #114657: Color attribute from applied GN modifier not activeCommented
PR #115115 Geometry Nodes: Edge Paths to Curves node speedupRequested changes, accepted
PR #114048 Geometry Nodes: Add a 'Group ID' input to the Fill Curve nodeAccepted
PR #115246 Geometry Nodes: Parallel Edges to Face GroupsAccepted
PR #115245 Geometry Nodes: Edges to Face Groups speedupAccepted
PR #115131 Geometry Nodes: Edge Paths to Selection node speedupCommented
PR #115138 Geometry Nodes: Face Group Boundaries node speedupAccepted
PR #114910 Geometry Nodes: allow naming geometry setsCommented
PR #114922 Cleanup: Geometry Nodes: Parallel accumulationAccepted
PR #112794 Mesh: add index-independent test for mesh equalityCommented, accepted
PR #114682 Mesh: Make edge_other_vert function branchlessAccepted
PR #114791 Cleanup: Avoid shallow copy in PLY exporterAccepted
PR #115258 Fix: bevel weights in Simple mode of SolidifyAccepted
PR #115233 BLI: change timeit to use fmtlib instead of direct coutAccepted
PR #115180 Fix #115105: Edge Crease Doesn't TransferCommented
PR #114797 Fix #114760: new attribute does not get active for some domainsAccepted
PR #115178 Fix #114860: Edge bevel weights in complex solidifyAccepted
PR #114793 Fix: Typo in: Copy built-in attributes for masked curves type conversionCommented
PR #115026 Nodes: add int and bool to shader nodegroupsAccepted
PR #115394 Fix #115368: Auto smooth node is added every time if the file has linked objectAccepted
PR #115376 Refactor: GEO: Mesh selection header fileRequested changes
PR #114194 Geometry Nodes: Sort Elements nodeAccepted
PR #111010 Cleanup: Remove iostreams include from timeit headerAccepted
PR #114978 Fix #114648: Compositor executes upon editing non-compositor treesAccepted
PR #115001 GPv3: Show All MaterialsAccepted
PR #115038 GPv3: Hide Others operatorAccepted
PR #115041 GPv3: Lock and Unlock all materials operatorsAccepted
PR #115272 GPv3: Lock Unused Materials operatorAccepted
PR #115440 Cleanup: silence warning inconsistent-missing-overrideAccepted
PR #114724 BLI: Two digit ms precision for SCOPED_TIMER macro
Tracker
- Investigated: 18
- Resolved: 15
- Closed: 1
Next Week
I'll continue to try to finish WIP changes, and make progress on some node tools topics and sculpt mode refactors.
November 6 - November 12
This week was mainly spent discussing geometry nodes design in a workshop with Dalai, me, Jacques, Simon, and Lukas. I'm pretty happy with the results. We agreed on a direction for lots of important topics (except there's more discussion that needs to happen about appended-asset deduplication). There's a blog post about it here.
Changes / Features
- Mesh: Make vertex normal calculation deterministic 5052e0d407
- Geometry Nodes: Support top-level instance meshes in boolean node 16553c2a44
Fixes
- Fix #114686: Cannot execute node tool operators 821060f75a
- Fix: Debug build error after previous commit 6273205c93
- Fix: Remove support for node tool data-block inputs for 4.0 871c717c6e
- Fix: Windows build error from missing template argument deduction 17b875fccf
Cleanup
- Cleanup: Consolidate draw attribute extraction ae1b4a6a28
- Cleanup: Remove C header from C++ math header 583bd9662e
- Cleanup: Small cleanups to mesh normals calculation 0d1831cd2e
- Cleanup: Follow style guide in new math function, use std:: namespace 70074a7d46
- Cleanup: Remove unused functions ece4b6e84d
- Cleanup: Add missing includes to node anonymous attribute header 15f1fe5ddb
Review
Requested changes
PR #114048 Geometry Nodes: Add a 'Group ID' input to the Fill Curve nodeRequested changes
PR #114580 GPv3: Material lockingRequested changes, accepted
PR #113978 GPv3: Set caps operatorCommented
PR #114501 mesh: use faster acos() variant in normals calculation- PR #114628
Closed
Modeling: Implements adaptive Bezier curve tessellation Commented
PR #114549 PyAPI: Speed up Mesh.edge_keys using foreach_get and NumPyRequested changes, accepted
PR #114188 GPv3: Set selected curve material as active materialAccepted
PR #114683 Cleanup: Geometry Nodes: General topology map creation in Shortest Edge PathsCommented
PR #114682 Cleanup: Mesh: Branchless function edge_other_vertAccepted
PR #114006 GPv3: Set Uniform operator for Thickness and OpacityCommented
PR #114558 : Skip non-existing UV maps on VBO uploadAccepted
PR #114684 Cleanup: Geometry Nodes: Early returns in Shortest Edge Paths nodeAccepted
PR #114537 : Cryptomatte node not link drag searchableAccepted
PR #111010 Cleanup: Remove iostreams include from timeit headerAccepted
PR #114638 Cleanup: Sculpt, use C++ types for PBVH proxy node APIAccepted
PR #114636 Cleanup: Sculpt, use C++ vector types in internal types
Tracker
- Investigated: 10
- Resolved: 2
- Closed: 4
Next Week
Next week I'll mostly try to finish things I've already started. Currently I have too many open pull requests. I'll also work with Sergey to make progress on sculpt mode changes. It's my last week In Amsterdam, so I'll probably have some more design discussions as well.
October 23 - November 5
Another busy week! Actually this includes two weeks (the few days before the conference last week). At the conference I gave a talk about my mesh refactoring project from the last two years. Beyong that I focused on bug fixing and code review, and some work on dynamic topology. I also talked with Simon and made some tasks for issues he's been running into.
- Overall usability checkup #114280
- "Lock" with node group asset "Append & Reuse" to prevent accidental editing #114058
- Blur attribute node face corner handling #114275
- Sample by Group ID #114278
- Split curves node #114277
Changes / Features
- Sculpt: Dyntopo: Consider all vertices in face set brush fbd49adfc4
- Depsgraph: Hard-code visibility for "from IDs" builder ccfe952f34
- BLI: Add "scatter" array_utils function 6935cd0798
Fixes
- Fix: Broken node tool group data-block references 2893dc8ab7
- Fix #114102: Node tool data-block inputs broken 66c1ca7419
- Fix #113496: PBVH draw crashes and unsupported attribute types e05c36f56d
- Fix #112973: Node tools: Incorrect redo behavior in sculpt mode 0f9dcafa76
- Fix #114177: Crash in extrude mesh vertex mode with unsupported data d503f2ac33
- Fix: Sculpt redo crash after undoing addition of mask db5cae78b7
- Fix #113988: Deformed PBVH modifies original normals 5af8b839cf
- Fix #113665: Sculpt mode does not unshare color attribute data 692292536f
- Fix #114357: Dyntopo face set brush does not create face sets layer 90269dfe14
- Fix #113752: Explode modifier edge cut option broken 74af0528f4
- Fix #114077: Duplicate edges for two point evaluated curves 7dcd777379
- Fix #114081: Auto smooth versioning node group missing UI data 7ba92a2a2f
- Fix #114053: Sculpt visibility broken after undo f2627a55ee
- Fix: Missing keyword for mesh sharpness angle argument c5262d9f9a
- Fix: Incorrect PBVH mask drawing after recent change d6be6339f1
- Fix: Selection input inivisible in set selection node 0e4a3bd7aa
- PR #114425: Fix: Missing update of "all" library when refreshing library
Cleanup
- Cleanup: Sculpt: Simplify face and face set iteration 44b79af4fc
- Cleanup: PBVH: Remove redundant storage of face set metadata 756dea7ca1
- Cleanup: Use utility function to fill triangle face offsets 22e706e87a
- Cleanup: Remove unnecessary struct keywords in sequences headers 0ff4060cd3
- Cleanup: Simplify construction of Group ID VectorSet df4df75317
- PR #114340: Cleanup: Consolidate draw attribute extraction
Review
Requested changes
PR #113539: Sculpt: Rewrite BMLog to support customdata and geometry undo stepsRequested changes
PR #114048: Geometry Nodes: Add a 'Group ID' input to the Fill Curve nodeRequested changes
PR #113431: Geometry Nodes: Add Active Camera input nodeRequested changes
PR #114501: WIP: mesh: use faster acos() variant in normals calculationAccepted
PR #114049: Fix #113993: Bevel cutoff intersection type crashAccepted
PR #114052: BLI: Add std::string variant of BLI_uniquename_cbAccepted
PR #114283: GPv3: Multi-frame editingAccepted
PR #113908: GPv3: Named Layer Selection nodeAccepted
PR #113836: Sculpt: Better boundary preservation with dyntopoCommented
PR #114378: UI: Increase Node Label Name Limit From 63 to 255 Characters.Commented
PR #113933: WIP: Geometry Nodes: make instance handling more explicit when modifying all real geometriesCommented
PR #113978: GPv3: Set caps operatorRequested changes
PR #114188: GPv3: Set selected curve material as active materialAccepted
PR #113357: Sculpt: Implement face set brush for dyntopoAccepted
PR #114320: PLY: import/export custom vertex attributes ()Accepted
PR #114262: PyAPI: Enable MeshPolygon.loop_start raw array accessAccepted
PR #111909: VSE: use c++ container for strip iteratorAccepted
PR #114475: Fix: Correct order of nodes in the Mesh > Write menuRequested changes, accepted
PR #114007: GPv3: Switch Direction operatorRequested changes
PR #114006: GPv3: Set Uniform operator for Thickness and OpacityAccepted
PR #114017: Curves: Add radius transform mode to edit modeCommented
PR #114362: ID properties: Support enum values with itemsRequested changes
PR #106997: Geometry Nodes: Object and Collection InputAccepted
PR #114147: Fix: missing attribute in curves selection codeAccepted
PR #114270: Fix #114240: Initialize output alpha for RGB colorCommented
PR #114373: Cleanup: BLI: Parallel TransformRequested changes, accepted
PR #114088: Fix #114060: GPv3: Transform crash with multiple object editingAccepted
PR #114056: Fix #113919: Avoid crashes with unsupported new socket typesAccepted
PR #114101: Fix #114094: Mask by Color brush has stopped workingAccepted
PR #114038: Fix "Fix #102885": Wrong check is always FalseAccepted
Node Wrangler: Remove Switch Type operator -addons/pulls/104957 PR #104957Accepted
PR #114114: Nodes: Float draw position for socketsClosed
PR #114039: Fix "Fix #102885": Wrong check is always False (try/except version)Accepted
PR #114375: Cleanup: Use utility to fill index range in curve nodeAccepted
PR #114099: Sculpt: Add timing information for BMesh PBVHClosed
PR #107007: WIP: Geometry Nodes: Scene Sound Input NodeClosed
PR #109846: Geometry Nodes: Add Random Rotation nodeClosed
PR #111544: Geometry Nodes: Change node python identifiers to node namesClosed
PR #109405: Geometry Nodes: Easing NodeClosed
PR #106989: WIP: Geometry Nodes Rna Input Node
Tracker
- Investigated: 42
- Resolved: 12
- Needs Information: 1
- Duplicate: 4
- Closed: 15
Next Week
Jacques will be here at the HQ, so we'll go through a bunch of design topics. And I still have a couple more things to fix for 4.0.
October 16 - October 22
This was a busy week!
- I worked with Sergey on the next portion of the dynamic topology project, getting edge attribute interpolation working so we can maintain boundaries. Though I didn't have as much time for that as I would have hoped. I did get to do some cleanups to sculpt mode in general though.
- I helped to review and design the grease pencil integration with geometry nodes.
- I finished the face map changes for 4.0, including a change to versioning and a new operator to select elements based on a boolean attribute.
- I worked on the slides for my conference presentation, though I still have a bit to do there.
- And then, as always, various code reviews and bug fixes.
- I landed the auto smooth conversion to geometry nodes, the idea being that it should land early in 4.1.
- I tested an implementation of an index switch node which would support switching between an arbitrary number of items, like a dumb version of the menu switch.
- I made progress on the bounding box refactors. That's another big one, but it's a nice simplification so far!
Changes / Features
- Mesh: Replace auto smooth with node group 89e3ba4e25
- Refactor: Improve access to object data bounds 1cbd0f5a85
- Sculpt: Use C++ Set to store PBVH Node BMesh elements 40080f618c
- Mesh: Add versioning to convert old face maps to boolean attributes 820f0c24c4
- Mesh: Add operator to select elements based on boolean attribute 3d236bc858
- Geometry Nodes: Optimize joining of instances a5eaf6698a
- Curves: Add edit mode operator to set attribute values 31ec00895f
- Mesh: Update addons for auto smooth removal b1fbf73a08
- BMesh: Add face duplication check to validation function ba83825cfa
- PR #113975: Mesh: Add viewport normals simplify option
- PR #113958: WIP: Draw: Split point cloud position and radius vertex buffers
Fixes
- Fix #113842: Curves Info node length output always zero cdae07dccf
- Fix: Missing edge domain in node tool set selection node bd4c310a19
- Fix #113824: Setting curves select mode changes active attribute b2fe1bf624
- Fix #112448: Leading deform modifiers skip adding original coordinates d7e501ce3b
- Fix: MeshPolygon.use_smooth set inversed b4e6ef4279
- Fix: Mistaken curves copy and reference binding in fillet node c77bbdcf82
- Fix: Missing node tool menu update after moving asset to catalog b6b17ee5f9
- Fix: Build error after bounding box refactor 5db502a122
- Fix: Material selection node test failure e84ba67c73
- Fix #113894: Node tool crash with deleted group output node f6d45d248c
- Fix: Misleading node tools popover label eb41a7ec9d
- Fix #113894: Node tool crash with deleted group output node f6d45d248c
Cleanup
- Cleanup: Use C++ types instead of BLI_buffer in pbvh_bmesh.cc 062169698a
- Cleanup: Simplify grease pencil line overlay size counting e1fd7a8a7b
- Cleanup: Consistent use of curves::has_anything_selected 8ec6260ed5
- Cleanup: Fix const correctness of node tree interface cache API 8c0fc33739
- Cleanup: Remove disabled PBVH BMesh code 86bf9b1163
- Cleanup: Simplifying freeing node editor space data f64ed2e963
- Cleanup: Consistent const usage in headers, use std::move 7b09983423
- Cleanup: Improve comment about CurvesGeometry::resize() 44fa749bbe
- Cleanup: Retrieve virtual array single value in one call 60e7e89bfa
- Cleanup: Const correctness, unused variable warning in GP draw code fba7671205
- Cleanup: Comment style, reduce variable scope in pbvh_bmesh.cc 45478706b8
- Cleanup: Remove unnecessary namespace specification aa34e2f2aa
- Cleanup: Use simpler copying with begin iterator and count e52b269283
- Cleanup: Use const in grease pencil drawing code 2528b6da9b
- Cleanup: Use proper case for "uv_phi" class name 9a458314f2
- Cleanup: Resolve clang compile warnings 5b108ae522
- Cleanup: Avoid unnecessary check for empty curves 57c27b47b9
- Cleanup: Remove unnecessary parentheses in switch cases 4c7fe8b583
- PR #113957: WIP: Cleanup: Move object runtime data to separate allocation
Review
Requested changes, accepted
GPv3: Named Layer Selection node PR #113908Requested changes
VSE: use c++ container for strip iterator PR #111909Requested changes, accepted
GPv3: Cyclical set operator PR #111904Requested changes
GPv3: Join Geometry/Realize Instances node PR #113844Requested changes, accepted
GPv3: Set Material node PR #113816Requested changes
Mesh: add index-independent test for mesh equality PR #112794Accepted
Geometry Nodes: new Split to Instances node PR #113083Accepted
BLI: Add std::string variant of BLI_uniquename_cb PR #114052Requested changes, accepted
GPv3: Material Selection node PR #113827Requested changes, accepted
GPv3: Fillet Curve node PR #113850Accepted
Nodes Rotation Socket Documentation PR #104584Accepted
Nodes: support looking up node sockets by identifier and name PR #113984Accepted
GPv3: Separate/Delete Geometry node PR #113828Accepted
GPv3: Set Material Index node PR #113821Accepted
GPv3: Delete Geometry node PR #113721Accepted
Fix #113993: Bevel cutoff intersection type crash PR #114049Commented, accepted
GPv3: Transform operators (translate, rotate, scale, opacity, radius) PR #111836Accepted
Fix: Dyntopo sculpt on plane destroys the mesh PR #113972Accepted
Fix: GPv3: Remap materials PR #113855Accepted
GPv3: Convex Hull node PR #113788Accepted
GPv3: Set caps operator PR #113978Accepted
Refactor: Return by value PR #113761Accepted
GPv3: Replace Material node PR #113818Accepted
UI: support different main word heuristics in string search PR #113648Accepted
Fix: GPv3: Drawing tool didn't initialize all attributes PR #114005Commented
WIP: Geometry Nodes: make instance handling more explicit when modifying all real geometries PR #113933Commented
Refactor: ANIM_setting_get_rna_values to return a Vector PR #113931Accepted
Geometry Nodes: Avoid Face Corner domain as prefer for Blur Attribute PR #113905Accepted
Fix #113860: Nullptr checks for node socket and panel name pointers PR #113924Accepted
UI: Remove Colons from Property Names PR #113797Accepted
Fix #113763: Float2 attributes on curves not rendering in Cycles PR #113884Accepted
Cleanup: Remove disabled PBVH BMesh code 86bf9b1163Accepted
Cleanup: Simplify public API of unique name functions PR #113934Accepted
Fix #102885: IDproperty subtype can cause Blender UI to throw exception PR #114003Accepted
Fix: USD Export: Calculate extents properly for lights PR #113910
Tracker
- Investigated: 12
- Resolved: 3
- Closed: 3
Next Week
I'll mostly be doing things related to the conference, but also trying to fix some remaining bugs for 4.0.
October 9 - October 15
This week I helped with the geometry nodes grease pencil support that a few others are working on, did some work in geometry nodes, and otherwise spent my time in sculpt mode, including fixes, cleanup, and code review for dynamit topology features.
Sergey and I talked about face maps for a while and made a plan to lessen the "breaking" aspects of the removal in 4.0. I regret forgetting about that for a while earlier, the situation would be much simpler if I had added a feature or two early on in the 4.0 process.
I also made a video with Pablo about node tools. It was pretty fun to share that project more publicly.
Changes / Features
- Geometry Nodes: Add default input option for node groups 20d8f27ed2
- Nodes: Use index instead of reordering for draw order 1ccba4d9fe
- PR #113510: WIP: Sculpt: Implement vertex data undo for dynamic topology
Fixes
- Fix #113619: Incorrect nested group assets in compositor add menu 601fba20a6
- Fix: Set selection node crashes with attributes on the wrong domain 50ed14f228
- Fix: Sculpt dynamic topology doesn't draw active/render color attribute a6a2af5fdd
- Fix #112448: Leading deform modifiers skip adding original coordinates 9b0188db03
- Fix: Incorrect early return in recent cleanup f27ac434f6
- Fix: Sculpt dynamic topology doesn't draw active/render color attribute a6a2af5fdd
- Fix #113737: Missing UI text for geometry nodes handle type properties e083be6a9c
- Fix #113736: Add modifier menu broken for surface objects d3151df74a
Cleanup
- Cleanup: Use C++ arrays for SculptUndoNode 3e81f66998
- Cleanup: Extract attribute function to copy values from group to group 7507251071
- Cleanup: Simplify sculpt faces mask undo loop 9ab290e1b3
- Cleanup: Use const pbvh node pointers for some accessor functions de47c2a8b4
- Cleanup: Return PBVH node vertex indices with span instead of pointer cbb4ae80ba
- Cleanup: Access mesh bounds more directly 4eeabd274e
- Cleanup: Access mesh bounds directly ab9716f058
- Cleanup: Move BKE_object.hh to C++ 976eaae02f
- Cleanup: Remove unnecessary struct keyword in BKE_object.hh a935701a87
- PR #113646: WIP: Cleanup: Avoid storing redundant state for sculpt colors
- PR #113465: Refactor: Improve access to object data bounds
Review
Requested changes
PR #113539: Sculpt: Rewrite BMLog to support customdata and geometry undo stepsAccepted
PR #113742: Nodes: unify static and dynamic declarationsRequested changes, accepted
PR #113614: GPv3: Curve Fill nodeSuggested changes
PR #113721: GPv3: Delete Geometry nodeRequested changes
PR #112794Mesh: add index-independent test for mesh equalityAccepted
PR #113497: Nodes: add forward compatibility for dynamic node declarationsAccepted
PR #113507: GPv3: Implement expanding of Grease Pencil component in the spreadsheetAccepted
PR #113702: GPv3: Reverse Curve nodeAccepted
PR #113659: GPv3: Curve to Mesh nodeAccepted
PR #110146: Fix: Geometry Nodes: Create instance attribute of the right typeCommented
PR #112535: GPv3: Initial Geometry Nodes supportAccepted
PR #113446: Fix #113287: Industry Compatible Keymap: Node Editor Search missingAccepted
PR #113502UI: allocate panel runtime data separatelyAccepted
PR #113634: GPv3: Curve to Points nodeAccepted
PR #113711Fix #113697: Fix timer leak from panel drag/animate processingAccepted
PR #113411: Fix: Node Editor: Improve info panel drawingRequested changes
PR #113512: WIP: GPv3: Add support for some more geometry nodesAccepted
PR #113598: GPv3: Add support for more geometry nodesAccepted
PR #112058: UI: Highlight Selected Item in View3D Mode MenuAccepted
PR #113717Fix #113429: Dirty evaluated curveAccepted
PR #104585: Fix spelling mistakeAccepted
PR #110683: Fix #110666: Copy built-in attributes for masked curves type conversionAccepted
PR #113589: GPv3: Rename layer domain to just "Layer"Accepted
PR #113581: GPv3: Add support for simple geometry nodesCommented
PR #110769: Function Node: Hash ValueCommented
PR #113630: Fix: Python node_utils.connect_sockets broken after API changeCommented
PR #113584: WIP: UI: uiLayout based subpanels
Tracker
- Investigated: 8
- Resolved: 4
- Closed: 3
Next Week
I'd like to spend more time on sculpt mode, work on my Blender conference talk, and spend time on some geometry nodes topics.
October 2 - October 8
This week I arrived in Amsterdam, so super busy, but fewer commits since there were a lot of in person discussions. Sergey and I worked out a plan to start getting dynamic topology improved in smaller incremental steps, where each step is a more obvious improvement.
We also talked a fair amount about how volumes should work in geometry nodes, and I helped look into some developments for grease pencil, especially the integration with geometry nodes.
Changes / Features
- Geometry Nodes: Update set shade smooth node with domain, add note a10cc66432
- PR #113175: Geometry Nodes: Add default input option for node groups
- PR #113419: Nodes: Use index instead of reordering for draw order
- PR #113412: WIP: Hydra: Parallelize and simplify submesh export
- PR #113205: WIP: Mesh: Add flag to store presence of overlapping topology
Fixes
- Fix: Incorrect rotation from 3D cursor tool node e59a2b9a21
- Fix: False positive geometry randomization in split edges node 36f7d33121
- Fix #113142: Sculpt fairing operators don't update normals 85580c5835
- Fix #113128: Socket hide value not copied to group input ecb52140cd
- PR #113367: Fix: Missing edge domain in node tool set selection node
Cleanup
- Cleanup: Simplify BMesh PBVH draw data upload 9d201dc16b
- Cleanup: Return early to reduce indentation for 3D cursor drawing ce4663403b
- Cleanup: Simplify filling constant value per triangle in PBVH draw 5052fe489c
- Cleanup: Else after return in curves trim b5b0a296b6
- Cleanup: Avoid combining signed and unsigned integers 6305902b24
Review
Requested changes, accepted
PR #110093: GPv3: Initial drawing toolUpdated
PR #113083: Geometry Nodes: new Split to Instances nodeCommented
PR #113382: WIP: Improved parallelization of subdivisionAccepted
PR #113164: UI: Add descriptions to a few geometry nodesAccepted
PR #113114: Geometry Nodes: deduplicate code to deal with dynamic socket amountsAccepted
PR #113410: Nodes: move socket declaration methods to base declaration builderCommented
PR #109893: WIP: Geometry Nodes: Add Quaternion Math nodeCommented
PR #113411: WIP: Fix: Node Editor: Improve info panel drawingAccepted
PR #110981: Cleanup: Replace usage of old BLI_array macros with C++ typesRequested changes
PR #113353: WIP: Fix #113340: Socket naming consistencyAccepted
PR #113144: UI: start search in menu when pressing spacebarAccepted
PR #112583: Custom Properties: Add extra subtypes for float arrayCommented
PR #111904: GPv3: Cyclical set operatorAccepted
PR #113348: Sculpt: Improve support of face sets with dyntopoAccepted
PR #113354: Fix assert in PBVH face set drawing codeAccepted
PR #113160: Fix: Geometry Nodes: dangling pointer in geometry after modifier evaluationAccepted
PR #113402: Fix #113387: Memory leak with Separate by Loose Parts
Tracker
- Investigated: 10
- Resolved: 3
- Duplicate: 1
- Closed: 1
Next Week
More of the same, mostly.
September 25 - September 29
This week I changed the way assets work for node tools and modifiers, fixed a bunch of node tool issues and a few bugs in sculpt mode, and did more code review, especially for wrapping up 4.0 features.
Changes / Features
- Geometry Nodes: Move node tools out of experimental 1a7527b1df
- Geometry Nodes: Expose non-asset tools 355ed0838c
- Geometry Nodes: Require modifier tag for add menu, show non-assets af3461c387
- Geometry Nodes: Add option to force inputs to be single values 6875925efa
- Geometry Nodes: Store tool group in a separate editor property 9e495c5b06
- Geometry Nodes: Fix Support for extending nested menus with assets b49c84276c
- PR #5: Mesh: Add viewport normals simplify option
Fixes
- Fix #112351: Sculpt implicit sharing thread safety crash 97f2b01ea9
- Fix #112817: Nodes incorrectly "fully masked" after expand face sets 406de58674
- Fix #112961: Crash marking Collection as an Asset 8774b20477
- Fix #109599: Setting custom normals can skip marking some edges sharp 7449f0e14c
- Fix #112900: Assert displaying mesh with hiding and no material indices c095962d06
- Fix: Set node interface item active when added with link-drag-search 54ca0c93f9
- Fix #112957: Incorrect PBVH multires grid iteration 79d0b71751
- Fix: Compile error from unused module requested in CMake 1badb464b0
- Fix #112817: Nodes incorrectly "fully masked" after expand face sets 8e188ed55b
- Fix: Node tools shortcuts don't display in menus 34a1b5bdbd
- Fix: Crash deleting geometry nodes node group e5e07c184e
- Fix: Missing node asset menu updates after mark asset 395f279166
- Fix: Assert requesting vertex group for unsupported object type dfa55f036e
- Fix: Grammar in operator description 7e0691d027
- Fix: Missing node asset unassigned non-asset label 03f6fe81b2
- Fix: Use disabled status for non-selected node tool modes and types 93b285be4b
- Fix: Missing node group name in non-asset node tool redo panel 772061d57f
- Fix: Extra menu separator with node tools in nested menus 2ec192a54a
- PR #112870: Fix: Continuous asset reloading in edit mode with no node tools
Cleanup
- Cleanup: Move sculpt mask update to a separate function ca447ef542
- Cleanup: Make PBVH iter mask not a pointer 9e5cf73b4d
- Cleanup: Missing includes and forward declarations in header 2d19e345cd
- Cleanup: Consistency between asset-extended menu UI templates 0cb01332f1
- Cleanup: Move logic out of loops, remove unnecessary ui sublayouts d1fbc69e03
- Cleanup: Move BKE_screen.h to C++ 916d4c9d9b
- Cleanup: Remove unnecessary struct keyword in BKE_screen.hh 2aa393e727
- Cleanup: Make format 06df854112 2e6b81f151
Review
- Geometry: add utility to check for bad geometry element index dependence #113030 PR #113030
Accepted
- GPv3: Initial drawing tool #110093 PR #110093
Requested changes
- Fix #109491: Erratic behavior of materials for text objects #109746 PR #109746
Accepted
- Geometry Nodes: support baking individual simulations #112723 PR #112723
Accepted
- Subpanels for node group sockets #108565 PR #108565
Requested changes
- Fix #112439: Don't hide sockets of Reroute node #112965 PR #112965
Accepted
- UI: fix and improve a few messages #112975 PR #112975
Accepted
- CurvesGeometry: Add initial vertex group support #106944 PR #106944
Requested changes, accepted
- Cleanup: Nodes: Simplify drawing function #112860 PR #112860
Accepted
- Fix node socket connection util after changes to the interface API #112960 PR #112960
Accepted
- Fix #112022: allow vertex groups and attributes with same names again #112889 PR #112889
Accepted
- UI: Add Preference to Instant Search in all Menus #112925 PR #112925
Accepted
- Geometry Nodes: add Inspection Index to Repeat Zone #112818 PR #112818
Accepted
- Fix #102885: IDproperty subtype can cause Blender UI to throw exception #112582 PR #112582
Accepted
- UI: Input Placeholders #112104 PR #112104
Accepted
- UI: Match Node Editor Node menu with Context menu #112924 PR #112924
Accepted
- Fix #112933: Bug crash 17.0+ MSVC builds with function passed-by-value arguments captured in lambdas #112616 PR #112616
Commented
- Fix #112817: Draw Face Sets not working #112824 PR #112824
Closed
Tracker
- Investigated: 8
- Resolved: 7
- Closed: 1
Next Week
Next week I'm traveling to Amsterdam for six weeks! Besides that, I'm also planning to resolve a few limitations for node tools, and do some more work on ongoing projects.
September 18 - September 24
This week I worked more on polishing the node tools feature. It's still not clear if it will make it into 4.0, but I hope so. We'll see.
Using geometry nodes myself a bit, I made some small usability improvements to link drag search and the "Move to Nodes" operator.
I also wrote a design task about how I imagine the material interface to work in the future: Material reusability and fields
Changes / Features
- Geometry Nodes: Add option to force inputs to be single values 6875925efa
- Geometry Nodes: Filter data-block buttons for tools and modifiers 1c51f74cb4
- Geometry Nodes: Don't require geometry input for "Move to Nodes" d1d570d318
- Geometry Nodes: Disable viewer node shortcut in tool context 0fbb958417
- UI: Improve geometry nodes tool popover layout 2cb34f7c0d
- Curves: Add RNA API to add points 07f01b5fc2
- Nodes: Move float values to "Value" node with link-drag-search 2419acf756
- UI: Use "unassigned" icon for assets in modifier and node add menus c1954f9846
- UI: Rename "No Catalog" node assets menus to "Unassigned" 0e1aca735a
Fixes
- Fix: Exception creating geometry node group or node group socket 1cfed92c84
- Fix #112500: Crash setting mesh line vertices to 0 9184ea415b
- Fix #104893: Node wrangler: Shader node preview error with panels 42bba405f0
- Fix #112590: Split edges crash with loose vertices 4709082e6e
- Fix: Improve button alignment of single value node group operator inputs e44932473a
- Fix: Crash drawing node with null panel name 89422a7719
- Fix: Crashes in geometry nodes group data-block polls f7eb7ced58
- Fix: Debug build error after recent cleanup c6380d772c
- Fix: Missing "Add Shortcut" for node group operator 70ffc7a2de
- Fix: Extra period in menu descriptions 5c9b628596
- Fix: Missing units in quadrilateral node points inputs 4d07c08cc2
- Fix: Swapped icons in node tool header popover 652aab0b31
- Fix #112814: New geometry nodes always named "Tool" 15f24bd248 26e56d0b52
- PR #112743: Fix: Missing node asset menu updates after mark asset
- PR #112690: Fix #112351: Sculpt implicit sharing thread safety crash
Cleanup
- Cleanup: Remove unused sculpt mask expand operator b838c34afa
- Cleanup: Move sculpt mask fill to lambda, remove data struct 64ce21aa2a
- Cleanup: Sculpt: Use C++ threading API 72a33623e6
- Cleanup: Group forward declarations at top of geometry set header a531d19b3d
- Cleanup: Move depsgraph headers to C++ 867f99c2af
- Cleanup: Move softbody.c to C++ ef5e57bbff
- Cleanup: Remove unnecessary struct keyword from newly C++ headers 8a9dad1f2c
- Cleanup: Small changes in node interface item addition 8954b70d49
- Cleanup: Add nodiscard to BitSpan and BitVector lookup methods 7b597c2bef
- Cleanup: Resolve const correctness in grease pencil API 774b9607c9
- Cleanup: Rename grease pencil function to access layer at index 0fd0539f04
Review
Commented
PR #112179: WIP: Experiment: Geometry Nodes: support baking individual simulationsAccepted
PR #112421: Geometry Nodes: use lazy evaluation in repeat zoneCommented
PR #112723: Geometry Nodes: support baking individual simulationsRequested changes
PR #112104: UI: Input PlaceholdersRequested changes
PR #112058: UI: Highlight Selected Item in View3D Mode MenuAccepted
PR #110828: UI: show recently selected items at the top of searchesAccepted
PR #112591: Nodes: panel buttons, short names and material propertiesRequested changes, accepted
PR #112589: USD: fix import for uniform colors.Commented
PR #112472: Refactor: Geometry Nodes: Move "move value to socket" logic to editors moduleRequested changes
PR #112573: GPv3: Add statistics informationCommented
PR #112503: Fix #112462: Panel buttons remain active after redrawingAccepted
PR #112520: Fix #112490: Always draw socket icons in "hidden" nodesAccepted
PR #112531: Nodes: add internal node zone typeAccepted
PR #109924: Curves: Sculpt mode frame selected operator supportCommented
PR #112616: Fix: Bug crash 17.0+ MSVC builds with function passed-by-value arguments captured in lambdasAccepted
PR #112527: Nodes: Rename ui_items property to items_treeAccepted
PR #112706: Fix #112664: Expand face sets freeze when cursor is on mesh boundariesAccepted
PR #112525: Fix #112521: Socket in_out type specified as a simple enumAccepted
PR #112473: Cleanup: Support value of rotation socket
Tracker
- Investigated: 9
- Resolved: 3
- Duplicate: 1
Next Week
I'll merge the last things for 4.0
September 11 - September 17
This week I worked on node tools. We're down to just a couple tasks for 4.0 now. I also worked more on mesh triangulation and a few other random smaller things.
Changes / Features
- Geometry Nodes: Update node tool menus dynamically cc83951951
- Geometry Nodes: Show uncategorized assets in separate menus d2d4de8c71
- Cycles: Use Blender headers to access geometry data, avoid copy 2fac2228d0
- Mesh: Pre-fill loose verts and bounds cache of line primitive dd9f196c2e
- Geometry Nodes: Skip redo panel for node tools without inputs c59d998ce5
- Geometry Nodes: Show node tool name in redo panel ee1ee584de
- Nodes: Support shortcuts for adding specific node group assets from menu 75d788f2d3
- Attributes: Expose "is required" read-only property to Python 99f9a53321
- Geometry: Move mesh primitives from nodes to geometry module 7344c7875a
- PR #112264: WIP: Geometry Nodes: Port triangulate node from BMesh to Mesh
- PR #112389: Geometry Nodes: Filter data-block buttons for tools and modifiers
- PR #112400: Curves: Add RNA API to add points
Fixes
- Fix: Duplicate node tool catalog in point cloud edit mode 05045c3e50
Cleanup
- Cleanup: Remove unnecessary "add node search" #112056 PR #112056
- Cleanup: Remove unused logic from geometry nodes operator f122193e24
- Cleanup: Remove unnecessary extern "C" from Python files b67bf17139
- Cleanup: Remove unused includes in cuboid primitive 67aad1f72d
- Cleanup: Grammar and corrections in operator type documentation 4caa2dddd9
Review
Requested changes
PR #111909: VSE: use c++ container for strip iteratorRequested changes, accepted
PR #111931: USD: Support armature and shape key exportRequested changes
PR #106944: Curves: Add initial vertex group supportRequested changes
PR #104542: Geometry Nodes: Points to Curves node documentationAccepted
PR #111741: Fix #112331: Add update tags directly in bNodeTreeInterface API methodsCommented
PR #110093: GPv3: Initial drawing toolAccepted
PR #104882: Fix #104865: Adjust Node Wrangler for node socket interface API changesCommented
PR #112327: WIP: I18n: make favorites menu entry names translations depend on languageRequested changes, accepted
PR #112250: Nodes: Support for input/output sockets in same vertical spaceAccepted
PR #112363: Fix: Simulation Nodes: assert when scrubbing the timeline with simulation (Blender 3.6)Commented
PR #112326: Fix #112233: Panel collapsed state should not hide socket linksAccepted
PR #111747: Fix: USD import: deform group name collisionAccepted
PR #112280: Fix #112068: Crash when loading converted curvesAccepted
PR #112227: Fix: 3D Viewport header missing update changing vertex groupsAccepted
PR #104881: Fix: Adjust Node Wrangler texture setup operator for recent API changesAccepted
PR #112252: UI/I18N: Fix a couple of issues in new 'Add Modifiers' menu.Commented
PR #112473: Cleanup: Support value of rotation socketCommented
PR #112298: USD: Fix for spammy attribute prints for unsupported and non-array attributesCommented
PR #112241: Asset Shelf: Transparent asset shelf header with background for buttonsCommented
PR #112254: WIP: Cleanup: Reduce number of parameters on RNA def numeric properties functionsCommented
PR #112292: Fix #112285: Sculpt Mode: Mask brush smoothing is brokenAccepted
PR #112234: Fix: USD export: revert renaming active UV mapsAccepted
PR #112337: Fix #112330: Group sockets not initialized when created by link-dragClosed
PR #106871: UI: Import obj files by drag and drop
Tracker
- Investigated: 5
- Resolved: 1
- Duplicate: 1
Next Week
I'd mainly like to finish the to-dos for node tools.
September 4 - September 10
This week I worked on updating the modifier interface, the auto smooth replacement task (I had a meeting with Campbell and Bastien where we agreed to move it to 4.1), and some node tools tasks.
Other than that I started a rewrite of the triangulate node to use Mesh instead of BMesh. That's nearly finished except for the "Beauty" mode for quads which is surprisingly complicated.
Changes / Features
- Geometry Nodes: Extend add modifier menu with node group assets 6da4b87661
- Mesh: Further optimize topology map creation 98e33adac2
- Geometry Nodes: Hide node group selector for asset modifiers 0783debda8
- Geometry Nodes: Show node group in modifier UI after duplication be68db8ff9
- Geometry Nodes: Expose sharp edge status with builtin nodes 4e97def8a3
- Geometry Nodes: Improved defaults when creating new tool b4dc16f32d
- UI: Remove name property from node interface active panel UI 6642bd6220
- UI: Add a separator before modifier context menu geometry nodes items 80b1d098a7
- UI: Rename Geometry Nodes "Show Node Group Selector" property 75c57e924f
- UI: Add separator after "Empty Modifier" in add modifier menu b51a2dde3f
- PR #112166: Geometry Nodes: Update node tool menus dynamically
Fixes
- Fix #111811: Corrective smooth modifier crash with zero vertices a8bbddc10b
- Fix: Debug build error after previous commit c4cec77b91
- Fix #109583: Avoid non-threadsafe writing to custom normals data c8c6f62cf3
- Fix: Node link drag search attachment to existing group input broken f47de98def
Cleanup
- Cleanup: Change mesh face triangle count macro to C++ inline function 9f998c3e3a
- Cleanup: Avoid assuming guarded allocator in corrective smooth modifier 88a7860251
- Cleanup: Move sequencer_intern.hh to C++ dcd0512eb1
- Cleanup: Add comment about purpose of add modifier operator 82438b37ad
- Cleanup: Use simpler face vert iteration in sculpt expand e52404db95
- Cleanup: Use BitVector instead of BLI_Bitmap in sculpt expand f4505e7b0a
- Cleanup: Simplify Hydra SubMesh creation and removal f5472dcebc
- Cleanup: Change OffsetsIndices::data() to return Span instead of pointer 9db02c8617
- Cleanup: Use C++ Set for expand snap enabled face sets 646b3555ff
- Cleanup: Use const arguments to sculpt "get" functions 96f761a17c
- Cleanup: Remove mesh validation assert in mesh code 2cc3a63216
- Cleanup: Remove unnecessary struct keyword in C++ code 006104645a
- Cleanup: Remove unnecessary search item in texture node add menu e86211cded
- Cleanup: Use consistent static function names in sculpt_geodesic.cc 8bc1e5a0e9
- Cleanup: Remove mistanly committed timer 644297cc6e
Review
Requested changes
PR #111909: VSE: use c++ container for strip iteratorRequested changes
PR #111931: USD: Support armature and shape key exportAccepted
PR #111695: Nodes: Add PanelDeclarationBuilder for panels in builtin nodesRequested changes, accepted
PR #112140: Geometry Nodes: add Skip input to Simulation Output nodeRequested changes
PR #112058: UI: Highlight Selected Item in View3D Mode MenuRequested changes, accepted
PR #112185: Fix #112184: Adapt optimized case of Points of Curve node for domainRequested changes
PR #111747: Fix: USD import: deform group name collisionAccepted
PR #110855: UI: support searching in menusAccepted
PR #111756: UI: Add canvas picker to paint modes in 3D ViewportAccepted
PR #111894: USD: skip exporting deform group attributesAccepted
PR #111514: Fix #109670: attribute shared between geometries even when editedCommented
PR #111193: WIP: Fixed 149 XCode compiler warnings. (needs revision)Commented
PR #112110: Fix #111978: Passthrough if there is no simulation state (backport to 3.6)Commented
PR #112111: UI: Use asset icon for "Mark Asset" in menusAccepted
PR #112023: Fix #112021: Crash dragging node groups into an empty node editorAccepted
PR #112047: Fix #111788: Label width needs to use UI scale to match node widthRequested changes
PR #111813: Correct initialization of bNodeSocket::default_attribute_nameAccepted
PR #111921: Fix #111779: drop asset shading group to GN editor still importsAccepted
PR #112109: Fix: Incorrect NodeTreeInterface move functions argument descriptionsAccepted
PR #111838: Texture Nodes: Refactor Add menuCommented
PR #105841: Assets: Implement TraitsAccepted
PR #112142: Fix #111832: Move the Node Group Icon to a first position in headerAccepted
PR #112037: Fix #111898: Custom normals data transfer modifier does not workAccepted
PR #111958: Fix #111933: wrong rest positionCommented
PR #106320: Fix #106235: Use consistent order for multi-input socket linksAccepted
PR #111989: Fix #111936: Nodes forward compatibility data is not freedCommented
PR #111993: Workbench: Remove old implementationAccepted
PR #111994: Fix: Build error with Audaspace turned onAccepted
PR #112020: Fix #111983 : Context Path in the node editors is brokenAccepted
PR #112205 : Fix #112087: Float curve flickers with aligned points at x axis
Tracker
- Investigated: 12
- Resolved: 2
- Duplicate: 1
Next Week
I'll mainly work on some node tools things but also spend a bit of time on the auto smooth node group task to make some progress on the todos here.
August 28 - September 3
This week I landed a bunch of mesh changes I had been working on for a while, I worked more on the auto smooth port to geometry nodes, and did a bunch of code review. Towards the end of the week I worked on changes to the modifier UI in order to make the auto smooth change work better.
Changes / Features
- Mesh: Rewrite split edges algorithm f41dc90925
- Mesh: Add three cached topology maps 4e94db97e2
- Mesh: Replace EdgeHash and EdgeSet with C++ classes 425b871607
- Geometry Nodes: Avoid attribute copy in simple case of points to curves 7563b96945
- Subdiv: Use index instead of pointer for grid to face map 2228006d5b b81a257059
- UI: Remove gap for decorators in node group interface panel af56a4f0d3
- PR #111718: Mesh: Make vertex normal calculation deterministic
- PR #111717: Geometry Nodes: Extend add modifier menu with node group assets
- PR #111675: WIP: Multires: Simplify threading and use C++ data structures
- PR #111468: Attributes: Expose "is required" read-only property to Python
- PR #111761: Geometry Nodes: Improved defaults when creating new tool
Fixes
- Fix: Crash in sculpt mode with shared normals caches b339e3937d
- Fix: Memory leak with node interface forward compatibility e160a4ceca
- Fix: Compile error with Ghost X11 off and Wayland on eafe8332c7
- Fix: geometry nodes asset traits not written to file 9600b74318
- Fix: Various crashes and issues dragging node group interface 32ca4caaac
- Fix: Crash dragging node interface panels at root level 78495acaa0
- Fix: Crash adding panel to node group b36367e663
- Fix: Incorrect assert in node tree interface copy 9fd4091f5b
- Fix #111698: Sculpt draws unchanged normals on first stroke 2a28112bb8
- Fix #111582: Delete geometry node incorrectly marks no loose vertices 7c57eb42d7
- Fix: Build error with Audaspace turned off 249a03525c
Cleanup
- Cleanup: Simplify mesh primitive grid and cuboid quad creation df7f22d28e
- Cleanup: Simplify USD export mesh data access 59d1fc4b61
- Cleanup: Use Map instead of std::map for USD mesh writer 0b23816d5c
- Cleanup: Sculpt: Remove duplicate visibility update function c9621a002d
- Nodes: Remove unused shader and compositor NodeItem definitions 15f5dfd45d
- Cleanup: Remove unnecessary includes from C++ data structure headers fa34992def
- Cleanup: Remove unnecessary/wrong solidify modifier normal recalculation 74bd927f7c
- Cleanup: Remove redundant asserts about dirty normals bb181fb8f1
- Cleanup: Simplify bContextStore API with C++ concepts feb14a4d38
- Cleanup: UI: Store uiBlock context stores in vector instead of list 1763a46cbf
- Cleanup: Use const for context store variables ceb3d75c18
- Cleanup: Remove unnecessary Mesh C API functions 69c498084a
- Cleanup: Remove unused BMesh include 3766084bf9
- Cleanup: Correct outdated tree view item comment da0c7ca0c2
- Cleanup: Fix unused variable warning 3f0eba32d4
- Cleanup: Make SubdivCCG a non-trivial struct e56b1fc164
- Cleanup: Small C++ changes to two tree view uses 840769d855
- Cleanup: Add missing struct forward declaration fdd6065c21
- Cleanup: Fix warning from mistaken copying od node tree d600a38e44
- Cleanup: Fix else after return fe7412bbdc
- Cleanup: Move BLO headers to C++ 3db523ab3e
- Cleanup: Move IO headers to C++ 78dd7d91c4
Review
Requested changes, accepted
PR #111348: Nodes: Panels integration with blend files and UIRequested changes, accepted
PR #109610: Geometry Nodes: Points to Curves nodeRequested changes, accepted
PR #111623: Geometry Nodes: refactor simulation storage and how simulation nodes access itRequested changes
PR #111741: Add update tags directly to bNodeTreeInterface to enable tagging by APIRequested changes, accepted
PR #111589: UI: Move Auto-Offset toggle to User PreferencesCommented
PR #110802: Node: Gabor Noise TextureRequested changes, accepted
PR #111368: Geometry Nodes: Support drag & drop for MaterialsAccepted
PR #110707: Mesh: Parallelize vertex and edge to corner topology map creationRequested changes
PR #111747: Fix: USD import: deform group name collision.Accepted
PR #111752: UI: support context dependent menus (aka assets) in menu searchAccepted
PR #110855: UI: support searching in menusAccepted
PR #111145: UI: fix and improve a few messagesAccepted
PR #111845: Geometry Nodes: generalize modifier simulation cache storage namesAccepted
PR #111615: Fix #111607: Do not unregister internal nodesAccepted
PR #111799: PyAPI: Better error msg when re-using internal node idAccepted
PR #111739: Node Editor: show auto-attach status while movingAccepted
PR #111640: UI: Node Grid Adjustments for Line WidthAccepted
PR #111822: Geometry Nodes: rename bdata to blobRequested changes
PR #111813: Correct initialization of bNodeSocket::default_attribute_nameAccepted
PR #111798: Shading Nodes: Refactor Add menuAccepted
PR #111921: Fix #111779: drop asset shading group to GN editor still importsAccepted
PR #111815: Fix (unreported): Assert for mesh without cornersCommented
PR #111740: BLI: add parallel_memset and use for normal calculationAccepted
PR #111707: Fix: socket hidden in the link drag operator for group input nodesAccepted
PR #111609: Customdata merging does not check layer limit on destinationCommented
PR #111695: WIP: Add a PanelDeclarationBuilder for adding panels to builtin nodesCommented
PR #111766: UI: Show Labels for BSDF "Distribution" and "Subsurface Method"
Tracker
- Reported #111817: "Move to Nodes" operator broken after node group interface refactor
- Investigated: 9
- Resolved: 3
- Duplicate: 4
Next Week
I'd really like to commit the auto smooth to geometry node group conversion, including the changes to the modifier add menu. I assume I'll spend time resolving some node tools limitations, and maybe doing more cleanup in sculpt mode code too.
August 21 - August 27
This week I mainly focused on mesh normals, with the goal of finishing the conversion of auto smooth to a geometry nodes modifier. I made a design task for an asset to replace auto smooth, called "Smooth by Angle". I also met with Pablo where we discussed asset integration to modifiers and a more general UI overhaul there. We also discussed a reorganizing the compositor add menu.
As part of the work on rotation nodes, I made a design task about a Swap Node Operator meant to be a proper implementation of the feature node wrangler had for a while.
Changes / Features
- Mesh: Share normals caches by splitting vertex and face calculation 383a145a19
- Geometry Nodes: Initial basic rotation socket nodes 45d8a8b0c3
- Nodes: Move rotation socket out of experimental 34e4bedcd8
- Nodes: Change rotation socket color 4b26fbbd02
- Nodes: Remove "Make Group" and "Ungroup" from add menu 7c2dc5183d
- Geometry Nodes: Move tool-specific nodes to proper menus 550c15bccd
- PR #111482: Geometry Nodes: Convert four nodes to use rotation socket
- PR #111468" Attributes: Expose "is required" read-only property to Python
Fixes
- Fix #111255: Sculpt mode crash for mesh with no faces 42bf06a57d
- Fix #110516: Geometry nodes use attribute toggle boolean values broken a1dceeec00
- Fix: Missing multires to faces visibility sync after box hide 4a0581eca2
Cleanup
- Cleanup: Sculpt: Avoid unnecessarily changing vertex normals 111e586424
- Cleanup: Use C++ threading API in sculpt/paint code cf9fcbf24e
- Cleanup: Simplify PBVH update of mesh pointers 119fbba47d
- Cleanup: Simplify, parallelize multires to mesh visibility propagation 4d82e1a7ee
- Cleanup: Separate sculpt undo restore into types 7fc7441a7b
- Cleanup: Use FunctionRef for PBVH filtering callback 1857df8d5b
- Cleanup: Remove unused node function e7abe1fd76
- Cleanup: Remove unnecessary mesh C API function f5b7813f3c
- Cleanup: Remove unused sculpt function declaration d8757236e0
Review
Requested changes
PR #111348: Node panels: Integration with blend files and UICommented
PR #110828: UI: show recently selected items at the top of searchesCommented, accepted
PR #111390: GPv3: Refactor code for the hard eraserRequested changes
PR #111429: Fix #110908: Crash when scrubbing timeline with sim nodeAccepted
PR #111282: Compositor: Refactor Add menuAccepted
PR #110042: Cleanup: Refactor Switch View node to use dynamic declarationsRequested changes
PR #111368: Geometry Nodes: Support drag & drop for MaterialsAccepted
PR #110707: Mesh: Parallelize vertex and edge to corner topology map creationAccepted
PR #111514: Fix #109670: attribute shared between geometries even when editedAccepted
PR #111427: Fix #111174: dropped nodegroups from the asset browser show selectorAccepted
PR #111421: Fix #111273: multiple vertex weight sliders show the same valueAccepted
PR #111521: Fix #111504: Regression: Mesh draw corruption in sculpt modeCommented
PR #109924: Curves: Sculpt mode frame selected operator support
Tracker
- Investigated: 5
- Resolved: 2
- Duplicate: 1
Next Week
More work on existing projects!
August 14 - August 20
I was on a bike trip this week. Checked in a bit with my laptop along the way though, so I might as well list that here.
Cleanup
- Cleanup: Subdiv: Replace "stack or buffer" storage with C++ classes 39a40d6f84
Review
Accepted
PR #111313: Cleanup: Reduce unnecessary mesh position copyingAccepted
PR #111145: UI: fix and improve a few messagesAccepted
PR #111270: Fix: Display nodelinks consistently across different UI scalesAccepted
PR #110952: Node panels: RNA for node group interfacesCommented
PR #111243: WIP: UI: TreeView Drop Target Position FeedbackCommented
PR #111282: Compositor: Refactor Add menu
Tracker
- Investigated: 2
Next Week
A normal week, though I'll be on my laptop so things might be a bit slower.
August 7 - August 13
This week I was at Siggraph and traveling to and from LA. The conference was a lot of fun-- inspiring and huge. I saw some technical things I want to check back on when I get the time, but also I got the impression our current priorities were the right ones too, good to see!
I had the time for some cleanup and code review at the hotel or at airports.
Fixes
- Fix: Potential error in RNA operator description callback d38a0cf537
- Fix: Build error on windows after recent commit 0bd3c23f1b
Cleanup
- Cleanup: Return std::string from operator name and description callbacks f0467b4615
- Cleanup: Make sculpt face visibility test inline 9804b2244a
- Cleanup: Add comment for mesh triangulation faces cache efacffebfc
- Cleanup: Remove unused argument to PBVH draw 3d6a8ab54f
- PR #111061: Cleanup: Use contiguous storage for delaunay triangulation arrays
Review
Requested changes
PR #110093: GPv3: Initial drawing toolRequested changes, accepted
PR #109518: USD IO: Generic Attributes SupportAccepted
PR #110952: Node panels: RNA for node group interfacesCommented
PR #111079: GPv3: Dissolve OperatorAccepted
PR #110929: Fix #110723: cant drop object name on object field/socket in node editorAccepted
PR #110885: Node panels: New DNA and C++ API for node group interfacesAccepted
PR #111075: Fix #111073: Crash when F3 is pressedAccepted
PR #110686: Nodes: use auto registration for nodesAccepted
PR #110935: Fix #110464: rna_idprop_ui_create() fails to create new string propertyAccepted
PR #110963: Fix #110447: Curves random selection is reversedAccepted
PR #111002: Vertex Paint: Add set vertex colors option to lock alphaAccepted
PR #111052: Refactor: Solve invalid icon-id enum values, use type aliasAccepted
PR #110619: Fix #110096: Crash Crash on calling curve pen operatorAccepted
PR #111036: Fix #111024: Crash when adding attribute to curve object
Next Week
Next week I'm on vacation.
July 31 - August 4
This week I committed the existing node group operator patches, did code review, a bit of bug fixing, and looked some more into sculpt mode performance-- though with no real results this week.
One new design task this week:
- #110807: Geometry node group input for "Single Value Only"
Changes / Features
- Sculpt: Improve PBVH draw performance for meshes f10965dcb8
- Geometry Nodes: Operators: Support more object types and modes fd9d22ba57
- Geometry Nodes: Initial tool-specific nodes e3e6fb8ecf
- Geometry Nodes: Draw node operator inputs in redo panel bc393c4033
- Refactor: Retrieve node operator asset with property 65591b2c8c
- Geometry Nodes: Rename "Operator" context to "Tool" 733f90bd24
- Mesh: Replace older flip faces utilities 4309c32be6
- Mesh: Add API functions to assign vertex normals eabff37483
- Mesh: Move flip faces function to blenkernel 40de15d521
- PR #110813: Geometry Nodes: Add warning for tools and text in node editor header
Fixes
- Fix #110411: Mesh loop cut preview uses final instead of cage positions 29a338811c
- Fix #110682: Loading old files crashes from missing DNA rename 9cad2e8771
- Fix #110001: Edit mesh overlay text uses final positions instead of cage c126708d69
- Fix: Missing updates for geometry node group tool properties 9909bf60c9
- Fix: Node group operators reset mesh select mode 85bac9d292
- Fix: Geometry nodes self object crash in node operator 4395e0da93
- Fix: Duplicate "Tool" geometry nodes menu with asset catalog 444a42e71c
- Fix: Array modifier assert when not recalculating normals d0d21f2934
Cleanup
- Cleanup: Use references for mesh extraction render data and cache a049f3b5df
- Cleanup: Make geometry set naming more consistent dc7979a056
- Cleanup: Use const for Blender data in Hydra exporter 66dd1657b8
- Cleanup: Small improvements to Hydra mesh and curves export e0efc234c8
- Cleanup: Return std::string from operator name and description callbacks f0467b4615
- Cleanup: Simplify mesh triangle material counting 55970fa367
- Cleanup: Sculpt: Remove unnecessary visibility flushing e4e23bdd73
- Cleanup: Simplify some parallel iteration over PBVH nodes 8104d6e95c
- Cleanup: Split fsmenu.c before C++ conversion 97769581f5
- Cleanup: Remove unused variable in pbvh draw code 02e0d7717b
- Cleanup: Sculpt: Remove unused function to set vert visibility 12258d4931
- Cleanup: Remove unused simulation data-block defaults 6806b1c93d
- Cleanup: Sculpt: Use utility functions for setting face visibility 7114d2efa6
- C++ conversions
- Cleanup: Various cleanups in newly C++ headers c15d391e86
- Cleanup: Remove unnecessary struct keyword from editors includes 88de2f25ed 07019e7ef5 8bb8cfb54e
- Cleanup: Move mesh related blenkernel headers to C++ 731d296f35
- Cleanup: Move editors headers to C++ ffe4fbe832
- Cleanup: Move WM headers to C++ bc8c892c65
- Cleanup: Move fsmenu.c to C++ aa5b142e98
- Cleanup: Remove mistakenly duplicated file in C++ conversion 81f51e5433
- Cleanup: Reduce indentation in pbvh clipping b54bca9f08
- Cleanup: Sculpt: Use consistent operator function names c3685fe068
- Cleanup: Make object material count function take a const pointer 39c3a86d8e
- Cleanup: Make mesh normal calculation function const f97a51350d
Review
Requested changes
PR #110065: Node previews in the shader editorAccepted
PR #110812: Custom Data: make get_layer_index_n always safely handle n overrunAccepted
PR #110810: Cleanup: avoid using NOD_static_types.h for creating the node.type enumCommented
PR #110707: Mesh: Parallelize vertex and edge to corner topology map creationRequested changes
PR #110275: Mesh Edit: implement an operator to smooth shape key deformationAccepted
PR #110803: Nodes: Remove the experimental "node panels" featureUpdated, committed
PR #110539: Creator: move to C++ #110539Accepted
PR #110678: Fix #110471: Normal Edit modifier screws up UVsAccepted
PR #110575: Compositor: Improve link drag searchAccepted
PR #110805: Cleanup: simplify usage of NOD_static_types.h in rnaAccepted
PR #110619: Fix #110096: Crash Crash on calling curve pen operatorAccepted
PR #110487: Fix #110485: Mesh to curve node incorrect implicit sharing crashRequested changes, accepted
PR #110670: Fix #106257: Move to Nodes does not work if the node tree has no Geometry input or outputCommented
PR #110773: LibOverride: Add ID pointer to operations over ID pointersAccepted
PR #110800: Fix: simulation outputs empty geometry when going to frame zero
Tracker
- Investigated: 7
- Resolved: 4
- Archived: 1
- Duplicate: 1
Next Week
Siggraph next week!
July 17 - July 23
This week I was mostly stalled on my main project the node group operators, but in the meantime I looked into some performance improvements for sculpt mode, focussing on decreasing the time to switch from object mode to sculpt mode. I also updated some patches for normals and worked more on rewriting the edge split node. Some meetings and related discussions about node tools took a fair amount of time too.
I renamed some mesh data and make a follow-up task about renaming "loops" too:
Changes / Features
- Mesh: Extract loose edges and vertices in two threads c4ac4ecc4c
- Sculpt: Improve PBVH draw performance for meshes f10965dcb8
- Sculpt: Remove dynamic topology "Smooth Shading" option a632f1ddfd
- Sculpt: Multithread PBVH mesh triangle bounds calculation 79115c5c56
- Sculpt: Parallelize grid bounds calculations for creating PBVH bed79d9ad1
- Sculpt: Replace GHash with Map when building PBVH 69cf65732a
- Mesh: Rename "polys" to "faces" 5e9ea9243b
- PR #110479: Mesh: Split vertex and face normal calculation
Fixes
- Fix #109583: Avoid non-threadsafe writing to custom normals data 580833165c
- Fix: Mesh face normal calculation can give zero vectors f557222a7b
- Fix: Remove static assert causing build error on macOS 95b2c252fb
Cleanup
- Cleanup: Use C++ containers and spans for some PBVH data 1be70f22cc
- Cleanup: Simplify iteration over mesh faces, use utility functions 0e87e25b37
- Cleanup: Simplify removing curves in GP erasor stroke mode 189fc24f1a
- Cleanup: Remove unnecessary manual mesh edit data destruction 673fc326db
- Cleanup: Rename mesh custom data fields 95edff7495
- Cleanup: Pass edge to corner map by value in normal calculation af19de3986
- Cleanup: Small changes to GP smooth operator 0a33594d78
- Cleanup: Avoid passing redundant face index in normal calculation bd4be36894
- Cleanup: Access more mesh data with C++ methods f9a4fcd8cf
- Cleanup: Pass array references with spans in GP eraser 78dba0bb17
- Cleanup: Clarify string usage in PBVH draw 38fc111fc9
- Cleanup: Use const reference for PBVH draw arguments 82f67a1b58
- Cleanup: Use const for PBVH node grid indices 81e687b49d
- Cleanup: Use const pointers in PBVH draw arguments 318f9b259b
- Cleanup: Remove check for null object when building PBVH 79cb56e1f1
- Cleanup: Remove using keyword for std::string in pbvh draw e749599f95
- Cleanup: Sculpt: Use r_ prefix for return argument 1c9e32cab1
- Cleanup: Make format aebc743bf1 795ca93de5 f3f31054ba
Review
Requested changes, accepted
PR #109518: USD IO: Generic Attributes SupportAccepted
PR #110577: Geometry Nodes: extract bake items from simulation bakingRequested changes
PR #110065: Node previews in the shader editorCommented
PR #109846: Geometry Nodes: Add Quaternion data type to Random Value nodeAccepted
PR #110619: Fix #110096: Crash Crash on calling curve pen operatorCommented
PR #110468: Modifiers: Add idname field to ModifierTypeInfoCommented, accepted
PR #110500: GPv3: Initial modifier supportAccepted
PR #110552: BLF: Conversion of blf_font_w32_compat to c++Accepted
PR #110321: UI: fix and improve a few messagesRequested changes
PR #110487: Fix #110485: Copy attribute only for same domaiAccepted
PR #110200: UI: Refactor quick label tooltip implementation for buttonsCommented
PR #110458: WIP: UI: Add initial UI support for ID pointers custom properties.Commented
PR #110124: WIP: UI: Node Dashed Lines ReadabilityAccepted
PR #108234: UI: Rename Distort socket in the Lens Distortion compositing nodeAccepted
PR #110225: Fix #110210: Hide Value option doesn't work on color socketsAccepted
PR #109910: Fix #103410: name collisions between vertex groups and attributesClosed
PR #110251: Geometry Nodes: Add Transform Order to the Transform Geometry nodeClosed
PR #110240: Geometry Nodes: Add Invert option to Rotate Euler node
Tracker
- Reported #110508: Crash accessing text style properties in object mode
- Reported #110546: Edit text overlay not working after C++ conversion
- Investigated: 5
- Resolved: 2
- Archived: 1
Next Week
I'd really like to get my existing node group operators patches landed.
July 10 - July 15
This week I mainly worked on bug fixes, node group operators, code review, and started adding support for face domain color attributes (in vertex paint and sculpt mode). One bug with the split edges node took a LOT of time and I'm not quite done with it yet. I'm much happier with the state of the code now though; it's a bit longer but easier to follow and doesn't have any intermediate states anymore.
Two new design tasks this week:
I have to respond to some valid points on the second one. I think it's probably not worth splitting up the color separate/combine nodes. I still think the math nodes are worth separating though, eventually.
Changes / Features
- Geometry Nodes: Avoid geometry copies in "no cache" simulation 424c6edc53
- Geometry Nodes: Hide node operators behind experimental option for now c8e0c69c73
- Geometry Nodes: Remove assets loading warning from 3D view header baf1c79668
- PR #110018: Refactor: Retrieve node operator asset with property
- PR #109819: Mesh: Rename "polys" to "faces" #109819
Fixes
- Fix #109462: Incorrect "No Cache" simulation cache invalidation 80f105e924
- Fix #110107: Subdivide curves crash with empty input d74b984467
- Fix: Adding node group asset doesn't respect import method 2549272f02
- Fix #109840: Select similar crease broken after generic conversion 12d7f8e7c1
- Fix: Draw manager uses empty positions after recent refactor a3e05f06a6
- Fix: Potential crash with null simulation cache during playback 6fbe0e27ca
- Fix: Node operators crash when using depsgraph f5ffdafea2
- Fix: BLI: Assert in generic array move constructor 5ca29d293b
- Fix: Build error in rigid body code with bullet turned off 791a06061c
Cleanup
- Cleanup: Remove unused "Simulation" data-block f3f05daf11
- Cleanup: Simplify RNA access of attribute data type and domain 282993e75f
- Cleanup: Simplify retrieving color attribute, improve const correctness c728fa0663
- Cleanup: Reduce use and scope of templates in vertex paint 087612c042
- Cleanup: Move simulation nodes cache reset function to proper place 4d54e3b6e1
- Cleanup: Use spans and float3 to store sculpt and PBVH vert positions f0b53777c8
- Cleanup: Move Map performance test out of header a5a72019a9
- Cleanup: Use C++ Array types for Edit Mesh SoA cache 3d383d383f
- Cleanup: Use C++ types, references for custom normals 3fc45d6151
- Cleanup: Fix macOS build error, move set performance test out of header 9a879b27b3
- Cleanup: Return corner normal space by value 5c4694759b
- Cleanup: Move ED_curves.h to C++ 5a86705d4c
- Cleanup: Remove unused animation channel type be09e94f05, 90ba798885
- Cleanup: Remove unused function 6d74a7173e
- Cleanup: Make format 2c1a7d6960
Review
Requested changes
PR #110063: WIP: GPv3 : Hard Eraser toolRequested changes
PR #109635: GPv3: Stroke smoothing operatorRequested changes
PR #109703: Geometry Nodes: support materials in simulation state with data-block mappingRequested changes
PR #109924: Frame Selected operator for curves sculptingRequested changes
PR #109910: Fix #103410: name collisions between vertex groups and attributesCommented
PR #110099: Fix: Geometry Nodes: Sample curve crash with invalid curve indicesAccepted
PR #110095: Fix #110021: Deform modifier binding can go wrong in certain stacksRequested changes, accepted
PR #109825: UI: Basic tree-view drag & drop reordering and inserting supportRequested changes
PR #109836: Refactor: Mesh Merge: deduplicate code, no interpolation for edgesCommented
PR #110016: UI: Customizable quick label tooltip for buttonsAccepted
PR #105841: Assets: Implement TraitsAccepted
PR #109764: Geometry Nodes: Blur node speed upCommented
PR #109394: Geometry Nodes: Propagate geometry component limitation on group declarationCommented
PR #110044: WIP: Volume grid attribute support in geometry nodesCommented
PR #110064: Use ImBuf instead of a raw buffer for compositor previewsCommented
PR #109221: GPv3: Segment selection support for all relevant selection operatorsCommented
PR #109969: WIP: Mesh: Merge by Distance: Split codeAccepted
PR #109851: Geometry Nodes: Rotation socket tooltipAccepted
PR #109733: GPv3: Add access functions for opacity and radius attributesAccepted
PR #108683: Fix: Removing layer in BMesh can destroy othersAccepted
PR #109892: Fix #109885: Check if BVH tree is null in correct placeCommented
PR #108001: Nodes: Move preview images to an overlayAccepted
PR #109996: Sculpt: Split paint_vertex.cc into paint_weight.ccAccepted
PR #109905: Geometry Nodes: add run-time data to geometry nodes modifierAccepted
PR #109871: Fix #99569: Socket type drawing of custom type in view templateCommented
PR #109746: Fix #109491: Erratic behavior of materials for text objectsCommented
PR #109919: Cleanup: Improve comments, rename variables, reduce indentation and use OffsetIndex APIAccepted
PR #109801: Cleanup: Prepare versioning_250.c to move on C++Commented
PR #109228: UI: Improved Initial Vfont SizesAccepted
PR #110084: Fix #110083: Fix incorrect initialization of bounds max
Tracker
- Investigated: 9
- Resolved: 4
- Duplicate: 1
Next Week
I'll be on vacation.
July 3 - July 9
This week I mainly worked on node group operators. I also did some code review-- mainly a PR to import and export generic attributes for USD, which is pretty exciting! I also worked on a few performance improvements in some random areas, and renamed Mesh "polys" to "faces" (in a PR for now).
The basics of the design for more object types for the operators is coming together. We won't use tags, but a more specialized UI in the node editor. That helps make things a bit easier to learn and a bit faster. You still have to open the asset browser to add the asset to a catalog though.
Changes / Features
- BLI: Optimize utility for index counting 53416281bd, a3bfd6e20d
- Mesh: Fix missing multithreading in part of BMesh to Mesh conversion 827baed610
- Geometry Nodes: Fill new quad poly offsets in parallel 2b4666b17b
- Refactor: Simplify mesh edit mode modifier evaluation 91b27ab637
Fixes
- Fix #109691: Edge crease not handled in complex solidify 7538127a58, c65fa57b0b
- Fix #109471: BMesh to Mesh conversion invalid UV boolean attribute data 87b8e2e18d
- Fix #109745: Mesh poly normals RNA accessor returns vert normals 0f510f3ae9
- Fix: Incorrect name for calculate simulation job 19e2d7cd0e
Cleanup
- Cleanup: Simplify replacing component data in geometry set ec29d96d11
- Cleanup: Reduce indentation in paint_vertex.cc 29bfd03009
- Cleanup: Deduplicate color attribute domain and type RNA enums 475e8bcd97
- Cleanup: Use C++ attribute API to add attributes in a few places 2a1ac6145a
- Cleanup: Simplify access to next face corner in domain interpolation ec30217755
- Cleanup: Correct two curves and mesh comments 7830d9f21e
- Cleanup: Unused variable in mesh writing, C++ casting ca7f4122da
- Cleanup: Remove unnessary C API for asset representation 1b4b90f5f7
- Cleanup: Remove outdated comment for Mesh geometry component b0b5af5dd6
- Cleanup: Use more explicit casting in mesh RNA code 96ad44a462
- Cleanup: Move BKE_editmesh_cache.h to C++ 75b42d1d95
- Cleanup: Various changes in modifier simulation cache 7b3097f6ff
- Cleanup: Fix enum conversion warning in grease pencil code b0412ad3d1
- Cleanup: Make format 97634b7f6e
- PR #109821: Cleanup: Use C++ Array types for Edit Mesh SoA cache
Review
Requested changes
PR #109518 USD IO: Generic Attributes SupportAccepted
PR #109627: Fix #109565: Array modifier changes the Root vertex of Skin modifierCommented
PR #109733: GPv3: Add getters and setters for opacity and radius of a grease pencil drawingAccepted
PR #109164: Geometry Nodes: new repeat zoneAccepted
PR #109287: Cleanup: Move versioning file 2.6 to C++Commented
PR #109764 Geometry Nodes: Blur node speed upCommented
PR #109453: GPv3: Add separate paint modeCommitted
PR #109715: Editors: move some files to C++Commented
PR #105841 Assets: Implement Traits
Tracker
- Investigated: 5
- Resolved: 3
- Archived: 1
Next Week
More of the same, but also I'll implement face domain color attribute painting, because otherwise the USD color attribute import will have to become weirder and more complex.
June 26 - July 2
This week I worked on node group operators and made a prototype for a button in the modifier interface to switch modes for editing attributes.
I'm finding the node tools stuff pretty exciting. The possibility of letting geometry nodes work better interactively is really cool. The possibilities are endless, and the idea makes Blender much more easily customizeable and scalable.
Changes / Features
- Geometry Nodes: Node group operators initial phase e4cc91a611
- Geometry Nodes: Use implicit sharing for mesh to curve node simple case 301f13191b
- Curves: Share positions array for single point profile at origin bef20cd3f1
- Curves: Optimize curve to mesh with single point profile 48fad9cd0c
- Curves: Avoid calculations in curve to mesh single point case 6e9f54cbda
- Sculpt: Use a factor for mask extract factor property 95df909bcc
- Point Cloud: Add initial edit mode support f89b32382a
- Spreadsheet: Support selection filter for point cloud objects 267d449a50
- PR #109628: BLI: Add and optimize utility for index counting
- PR #109526: Geometry Nodes: Operators: Support more object types and modes
- PR #109423: WIP: Geometry Nodes: Add button to switch context to edit attribute
- PR #109517: Geometry Nodes: Initial operator-specific nodes
Fixes
- Fix: Node group operator crash with group node 4f90504def
- Fix: Assert in sculpt mask extract object creation 15cecd1833
- Fix: Missing null check for forward compatibility in mesh conversion 5ae500b535
- Fix #109547: Error creating geometry node group from property editor 6eea4acc62
- Fix #109523: Crash applying modifier with shape keys f6f3a6a928
- Fix: Spreadsheet filter toggle active when not functional a5b5623933
Cleanup
- Cleanup: Sculpt: Remove unnecessary absolute values of face sets 5ccb458a21
- Cleanup: Remove unnecessary modal callback for face set extract 9e78d4e646
- Cleanup: Simplify mask usage when evaluating attribute ccfc67e4cd
- Cleanup: Remove unused variable in curve to mesh conversion 49977c3aee
- Cleanup: Simplify topology node deduplication comparisons 7be0d1481c
- Cleanup: Mesh to Curve: Decrease variable scope, improve comments b2017978d4
- Cleanup: Remove unused custom data type a1cc621e1e
- Cleanup: Move NOD_socket.h to C++ 4369429101
Review
Requested changes
PR #109518: USD IO: Generic Attributes SupportRequested changes
PR #109393: WIP: Geometry Nodes: Curve intersectionsAccepted
PR #109444: Nodes: add nested node ids and use them for simulation stateRequested changes, accepted
PR #109084: Geometry Nodes: Mix RotationsAccepted
PR #109164: Geometry Nodes: add support for serial loopsCommented
PR #109287: Cleanup: Move versioning file 2.6 to C++Accepted
PR #109366: Curves: Reimplement random selection with maskAccepted
PR #104717: Fix: glTF importer shading flat/smoothAccepted
PR #109385: Cleanup: Remove unused variable in a add node search functionAccepted
PR #109303: Fix #109295: Adding simulation item inconsistent with group interfaceAccepted
PR #109476: Fix: Assert creating offsets in duplicate elements nodeCommented
PR #109288: Simplified base color for socket types
Tracker
- Investigated: 9
- Resolved: 4
- Duplicate: 1
- Archived: 1
- Known Issue: 1
Next Week
More work on node group operators, and hopefully moving forward with rotation nodes. Maybe we'll decide more solidly on the "switch context" button so I can work more on that too.
June 19 - June 23
This week I spent most of my time fixing bugs for 3.6. It took a while but I finally have no more high priority reports assigned to me. I also worked on a few larger projects:
- Mesh Normals and Auto Smooth in 4.0 #93551
- Node group operators initial phase PR #108947
Rotation nodes are held up because we didn't agree yet about whether to have more than one node or combine a bunch of operations into some "Combine/Separate Rotation" node.
Fixes
- Fix #109070: Creating mesh from Python skips setting faces sharp ee352c968f
- Fix #109236: Split Edges node skips loose edges b226c115e2
- Fix #109231: Python defined socket type switching broken c9a8b1f13f
- Fix: Meshes created by addons shaded smooth 4c21a4eaca
- Revert "Fix: Revert changes in Mesh to Volume node and modifier to Blender 3.6" c1292b4a80, 9b708c8650
- Fix #109060: Crash with mask modifier smooth option e516f25e8f
- Fix #109161: Baking freeze with invalid edge array d622673f4b
- Fix: Torus primitive shaded smooth after mesh refactor c3a12704de
- Fix: Creating sharp_face attribute skipped with smooth set 30bf4c0945
- Fix #108930: Mirror modifier handles custom normals incorrectly 2ef27684c5
- Fix #109042: Bake from multires different from previous versions 00f88babed
- Fix: Mistakenly duplicated code in previous split edges fix fa1121765d
Cleanup
- Cleanup: Use newer IndexMask implementation in split edges node cd6a428259
- Cleanup: Remove redundant name copying when building dynamic sockets b1d83e9bef
- Cleanup: Remove unnecessary C wrappers from Mesh RNA cb07162c74
- Cleanup: BLI: Deduplicate bounds merging eeecc24014
- Cleanup: Quiet unused warnings in rna_mesh.cc c5fe62ac8e
- Cleanup: Move NOD_geometry.h to C++ e570f13616
Review
Requested changes
PR #109221 WIP: GPv3: Segment selection support for all relevant selection operatorsCommitted
PR #109297 Fix: revert changes in Mesh to Volume node and modifier to Blender 3.6Commented
PR #109237 BMesh: Respect data alignment for attributesCommented
PR #108639 EEVEE-Next: Irradiance Cache: Initial ImplementationAccepted
PR #109287 Cleanup: Move versioning file 2.6 to C++Accepted
PR #109174 Geometry Nodes: Avoid index lookup from index maskAccepted
PR #109305 Geometry Nodes: Move simulation panel higher in node editor sidebarAccepted
PR #109293 Curves: Mask function for end pointsAccepted
PR #109203 Fix: geometry nodes modifier property not working after changing it in PythonAccepted
PR #109352 Fix: Incorrect rotation socket hiding in raycast nodeAccepted
PR #108995 Cleanup: Preparation to move versioning file 2.6 to C++Accepted
PR #109222 Fix: Too complex to be optimized by compilerAccepted
PR #109208 Fix: zero interior band width leads to no volume outputAccepted
PR #109143 Cleanup: MutableSpan: Add assert for catch negative indicesCommented
PR #109268 WIP: Fix: Geometry Nodes: Don't create dependency graph relations for linked socket valuesAccepted
PR #109228 UI: Improved Initial Vfont SizesAccepted
PR #109172 Fix #109171: Delete curve instead trying to create empty resultCommented
PR #109240 GPv3: Select AlternateCommented
PR #109303 Fix #109295: Make new simulation socket operator the same as new group socketCommented
PR #109324 Fix #109307: Memory leak changing simulation item nameCommented
PR #108286 Animation: Make Vertex Weight Edit modifier inclusiveCommented
PR #109248 Cleanup: Remove unused includeAccepted
PR #109242 Cleanup: Remove unused variable from recent commitAccepted
PR #109167 Cleanup: Undo revertions from last cleanup
Tracker
- Investigated: 13
- Resolved: 10
- Duplicate: 1
- Known Issue: 1
Next Week
I'd like to move on to the next phase of node group operators, and get some agreement about rotation nodes.
June 12 - June 18
This week I worked on node group operators and rotation sockets. The basics of both are working now.
I also worked on some mesh cleanups and moved more code to C++. And did a bunch of code review.
Changes / Features
- Mesh: Move vertex/edge crease to generic attributes e5ec04d73c
- Mesh: Forward compatibility with generic crease in 4.0 83ef3bc923
- Attributes: Add quaternion rotation type 1e4b80fed9
- Attributes: Support quaternion attribute in spreadsheet b275851d1c
- Attributes: Add identity default value to quaternion type 612e306598
- Nodes: Add rotation socket type, support in many geometry nodes 63dae2a105
- Mesh: Update addons for edge and vertex crease changes 6e83949a13
- UI: Use property split for geometry nodes modifier bake path 655f00bb41
- Refactor: Move geometry nodes execute implementation for reusability 8a3dad6f14
- PR #109030 : Geometry Nodes: Initial basic rotation socket nodes #109030
Fixes
- Fix #108517: Mesh split edges can give invalid indices 8a11f0f3a2
- Fix: Quadratic performance of simulation state frame lookup 261959cd9c
- Fix #109043: Mask modifier smooth option broken 17aaff69c6
- Fix #108817: Extrude node crash with vertex-only input 18350ba06a
- Fix: Crash deleting all curve points 13d567ba92
- Fix: Crash with "use sharp" turned off in weighted normal modifier 4834b301f0
- Fix: Build error without OpenEXR a6931db38b
- Fix: Fix two small link drag search issues, small cleanup 41f5ed970d
- Fix: Avoid creating uninitialized attribute in distribute points node 89232d52db
- Fix: Add missing header used by recent backport fix 05190a5a23
- Fix debug build error, geometry nodes test failure 87a6b98875
- Fix: OffsetIndices assert with invalid span 107c5e39aa
Cleanup
- Cleanup: Move GeometrySet and components to proper namespace f4124ee02d
- Cleanup: Access geometry bounds more directly 6301775f48
- Cleanup: Use C++ accessors for mesh data 7826aed105
- Cleanup: Use C++ accessor for mesh position attribute 68c6402666
- Cleanup: Remove unnecessary DispList bounds call 2c7daa34b5
- Cleanup: Remove unnecessary includes and declarations from mesh headers a43c7997aa
- Cleanup: Remove unnecessary C wrappers for mesh evaluation functions af53207b43
- Cleanup: Remove redundant copy of mesh fields f1d1caa44a
- Cleanup: Use fmt library for geometry nodes error messages 31145ffce5
- C++ conversions
- Cleanup: Move UI RNA files to C++ 0b71a1f054
- Cleanup: Move rna_space.c to C++ e08ff54228
- Cleanup: Move rna_mesh.c to C++ 3896eca440
- Cleanup: Move spacetypes.c to C++ c1e2d01ce3
- Cleanup: Move editmesh_utils.c to C++ 8030e38f63
- Fix: Debug build error after C++ conversion 67d7614c9b
- Cleanup: Grammar: it's vs its 7d935f94f3
- Cleanup: Use nullptr, clang format 1f0e206da6
- Cleanup: Silence unused parameter warning f98e488311
- Cleanup: Use functional cast for std::string_view 3db0c59ec1
- Cleanup: Make curves/volume copy functions const 0ec8599de7
- Cleanup: Make point cloud copy function const 8593c5fa11
Review
Accepted
PR #108649: Nodes: Panel declarations for grouping socketsCommented
PR #109083: WIP: Make ComponentAttributeAccessor handle active/default_color_attributeCommented
PR #108915: WIP: Fix #108880: Skin and Miffor modifiers cause mesh collapseAccepted
PR #108995 : Cleanup: Preparation to move versioning file 2.6 to C++Accepted
PR #108535: Fix #108049: Nodes pasting can leave multiple active nodesAccepted
PR #108332: Fix #108141: Group Insert operator creates invalid linksCommented
PR #108700: WIP: Curve-to-Mesh node Even ThicknessAccepted
PR #108686: Cleanup: replace the use of listbase in io_alembic.cc with vectorCommented
PR #109039: WIP: Cleanup: Node panels fixing/simplificationAccepted
PR #108998: Cleanup: Move space nla files to C++Accepted
PR #108959: Cleanup: Move space sequencer files to c++Commented
PR #108970: GPv3: domain support for selection operators (domains point and stroke)Commented
PR #108864: GPv3: Select ends operatorAccepted
PR #108976: Geometry Nodes: use shared_ptr for sharing simulation cacheAccepted
PR #109016: UI: Add type-safe C++ button apply function objectAccepted
PR #109052: Fix #109047: Screw modifier's smooth shading option does not workAccepted
PR #108484: Cleanup: Move versioning file 2.7 to C++Accepted
PR #107987: UI: improve layout for the texture mapping panelAccepted
PR #108801: Geometry Nodes: crash when propagating attributesAccepted
PR #108990: Fix #108977: Propagate material from first point cloud by Join Geometry nodeAccepted
PR #109068: Fix: Sculpt: Remove face map option from face set initializationCommented
PR #108924: BLI: Add Span template for arrays with known sizeRequested changes
PR #104416: Geometry Nodes: new Axis to Euler nodeCommented
PR #109012: Cleanup: various tweaks to the transform snap object codeAccepted
PR #108956: Cleanup: float2 in nodeToView & nodeFromView in BKE_node.hhAccepted
PR #108412: Fix #108376: Copy from geometry to other node tree types resets shapesAccepted
PR #109056: Fix #108053: Make the Collada UV sets enumerated from zero
Tracker
- Investigated: 9
- Archived: 1
- Resolved: 5
- Known Issue: 1
Next Week
I have some high priority bugs to fix for 3.6, and I'd like to commit the first phase of the node group operators project.
June 5 - June 11
This week I worked on bug fixing (including all of Friday on an unfortunate bug in the mesh edge split implementation), rotation attributes, some cleanup to geometry nodes for node group operators, and cleanup to meshes and the mesh modifier stack.
Changes / Features
- Mesh: Remove face map list, convert to integer attribute 46cf093270
- Mesh: Fix remesh color attribute propagation, improve performance 2b45f2d662
- Geometry Nodes: Use smaller grain size for sampe nearest surface node 65d294c385
- BLI: Add hash function to quaternion type 65d8cfd82d
- PR #108678: Attributes: Add quaternion rotation type
Fixes
- Fix #108571: OBJ vertex group import crash 41d994c9ac
- Fix #108788: Data transfer nearest interpolated broken 6a3ca93c7e
- Fix: Build error after previous remesh fix 0dde6ab424
- Fix: Amend previous windows build error fix fd74b280d9
- Fix: Remove non-threadsafe BMesh assertions in Mesh conversion d9dfa782eb
- Fix: Compile error in main after recent fmt usage 708dfbb91b
- PR #108826: Fix #108517: Mesh split edges can give invalid indices
Cleanup
- Cleanup: Avoid curve to mesh conversion in some deform modifiers 73d921a0c6
- Cleanup: Fix mistaken dependency between rotation headers 04422064fb
- Cleanup: Avoid using custom data type enum incorrectly 250c9ccc10
- Cleanup: Simplify namespaces in geometry component files 319b68763f
- Cleanup: Use explicit default for corner normals optional parameter d651ee69bd
- Cleanup: Fix mistakenly nested loops in versioning code 6ceb6fa27a
- Cleanup: Use const for modifier utility function 5ee22dd490
- Cleanup: Remove disabled code from particle system modifier c2430e55c8
- Cleanup: Remove unused deprecated socket type decf089e06
- Cleanup: Remove unused forward declaration 3503f7675c
- Cleanup: Remove argument from deform modifier utility function 102c015306
- PR #108637: Refactor: Simplify mesh edit mode modifier evaluation #108637
Review
Requested changes
Nodes: Category declarations for grouping sockets #108649 PR #108649Requested changes
Fix: Removing layer in BMesh can destroy others #108683 PR #108683Requested changes, accepted
Curves: Add separate start and end amounts to Select End operator #108799 PR #108799Requested changes
More flexible callback for persistent panel expand flags #108648 PR #108648Accepted
Improvements for "Geometry Node Editor" page #104483 PR #104483Commented
GPv3: "Select First"/"Select Last" operators #108864 PR #108864Commented, accepted
Mesh: Remove unnecessary mesh position copying #108721 PR #108721Commented, accepted
Fix #108737: Python error in Property Editor search menu #108795 PR #108795Requested changes
Cleanup: Geometry: Some unification in working with attributes in realize instances #108821 PR #108821Requested changes, accepted
adds docs for new geonodes corners_of_edge #104464 PR #104464Commented
UI: Asset Shelf (Experimental Feature) #104831 PR #104831Commented
UI: Add Mute property to node panel #108634 PR #108634Accepted
Add Catmull Rom as supported types to relevant node pages #104473 PR #104473Accepted
GPv3: "Select Box" operator #108661 PR #108661Accepted
Refactor: Pass deformation data to curve selection #108650 PR #108650Accepted
Fix #108578: Crash when unlinking input sockets #108623 PR #108623Accepted
Fix: UI: cannot copy-paste many array buttons in nodes #108349 PR #108349Accepted
Fix #108198: Particle hair crash when using Hair Dynamics #108480 PR #108480Accepted
Fix #108591: Handle null material adding paint slot #108592 PR #108592Accepted
Cleanup: Correcting default cases in node.cc #107339 PR #107339Accepted
Cleanup: Move io files to c++ #108477 PR #108477Accepted
Fix: Crash when using loop select on edge that has only 1 face #108759 PR #108759Accepted
Fix: Face loop select toggle behaviour in paint mode #108753 PR #108753Accepted
Cleanup: Fix comment warning #108676 PR #108676Commented
Fixing typo and rephrasing the Island Index section of the Mesh Island node #104481 PR #104481Closed
Cleanup: Geometry: Avoid nesting with simpler material handling in realize instances #108822 PR #108822Accepted
Cleanup: Fix strict compilation warnings #108803 PR #108803
Tracker
- Investigated: 9
- Archived: 1
- Resolved: 5
Next Week
I'll post a design task about mesh normals, update the initial node group operators patch, and work more on rotation sockets.
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
Mesh Edit: implement an operator to smooth shape key deformation. #110275 PR #110275Commented
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 {{GitCo