Week 65: January 6 - 10

  • Fix T71630: Add Delete Tracks to Edit menu in NLA editor.
  • D6540: Remove node->offsetx/offsety [WIP].
  • General bug tracker work.
  • Thought more about a generic simulation system and wrote a document about it. The document is not public yet, because I want to discuss it with sebbas first.
  • Changed the way function-networks are built to support removal of nodes during optimization steps.
  • Implemented constant-folding and dead-node-elimination optimizations on function networks. This will result in better performance in many cases.

Week 66: January 13 - 17

  • Usual Tracker Curfew work.
  • Fix T71690: Skip enum item separators in uiItemEnumR_string_prop.
  • Compiled Blender on a (borrowed) macbook for the first time to find an OS specific bug. Turned out to be related to aligned memory allocation. The final fix will hopefully be committed next week (D6606).
  • Had a meeting with sebbas to talk about a unified simulation system proposal I've been thinking about for some time now. More discussion is necessary of course.
  • The proposal can be found in the wiki.
  • In the functions branch I further improved the optimization of function networks before they are evaluated (potentially millions of times per second). Most notably, I implemented an optimization that can eliminate duplicate computations from the node tree. This is especially important when node groups are used a lot, because during inlining many duplicates of the same data paths might appear. An optimization like this could also benefit Cycles (afaik it does not do this optimization yet).

Week 67: January 20 - 24

  • Two days of Tracker Curfew work as usual.
  • Spent some time responding to feedback on the unified simulation system proposal I published last week. The thread can be found on devtalk.
  • I was learning more about the VDB data structure. My main goal was to understand why it is a good choice in general and for Blender.
  • Fixed a bug in the lockfree aligned allocator (9c9ea37).
  • Worked on improving the reuse of memory buffers when (node-based-)functions are evaluated. This is important because they are potentially evaluated on millions of particles. It's not done yet, but I made some good progress compared to my last attempts on this subject.

Week 68: January 27 - 31

  • Two days of Tracker Curfew work as usual.
  • Fix T67483: Cannot paste on unit-vector uibut.
  • D6709: Fix T73486: Keying Set "Whole Character" does not key all properties. (needs more work)
  • D6696: Fix T68076: Color Correction node generates NaN.
  • Wrote a document about the Function System.
  • New nodes: Vector Length, Normalize Vector, Ceil Float, Floor Float.
  • Vectorized Map Range node.

Week 69: February 03 - 07

This week I was in Amsterdam. Over the course of the week I had a couple of meetings with Brecht and Dalai in different combinations. The main topics we discussed were Particle- and Simulation-Nodes. We ended up having a much clearer picture of what had to be done to get a first version of Particle Nodes into master (see T73324). We also found a way to incorporate the particle nodes design into a unified simulation system later on. However, we will focus on particles first.

  • Did a little bit of bug tracker work (much less than usual).
  • Fixed a couple of bugs in the functions branch.
  • Committed Fix T68076: Color Correction node generates NaN.
  • For code quality I refactored the Mask modifier code. It uses C++ now and my test file sped up from 1.1 to 5.1 fps (D6779).

Week 70: February 10 - 14

  • Spent some time preparing code in blenlib to be merged from the functions branch into master.
  • D6799: BLI: Library to export graphs in dot format.
  • D6839: Outliner: ctrl+click to isolate exclude property of layer collections [WIP].
  • BLI: improve various C++ data structures (68cc982)
  • BLI: add utilities for defining non-movable and non-copyable classes (f8df628)
  • Fix T69697: Remove not working "Inherit Scale" option from menu
  • Started figuring out how to add new tree/node/socket types from C++ code.

Week 71: February 17 - 21

  • Fix T73859: Support executing sculpt.set_pivot_position without invoke.
  • D6882: UI shows settings of wrong marker when movie clip is offset.
  • Committed mask modifier refactor that improves performance significantly.(0e48bb2).
  • Identified a simple but nevertheless effective optimization for Mantaflow's mesh generation code (b8af5e1).
  • Worked on an internal C++ API for specifying socket and node types. I work on this in the simulation-tree branch.

Week 72: February 24 - 28

  • Partially reviewed D6902: Sculpt: Hardness brush property.
  • Partially reviewed D6892: VSE: Refactor delete operator and API.
  • Partially reviewed D6937: Ensure IDs get unique memory addresses withing q given editing session.
  • Fix T74227: Crash when clicking on viewport shading properties.
  • Reviewed and committed: File Browser: Recognize .fountain files as text files (aa4579c).
  • Reviewed and committed: BLI: Fix utf8 character counting when there is an incomplete utf8 char (95d0e04).
  • Fix Browser: Add Ctrl+F shortcut to activate filter textbox (e8ab013).
  • Nodes: Use destructor callbacks for bNodeSocketType and bNodeType (c60be37).
  • Separate meetings with Dalai and William talking about particle nodes. We agreed that it would be better not to do larger changes to the node system just yet, but implement particle nodes using the existing system. That reduces the scope of the project quite a bit. I'll get back to those more generic changes to the node system after a first particle nodes release.

Week 73: March 02 - 06

  • Made many header files usable from C++ by adding extern "C" (cf93b65, 5de56f9, 680b70f, d8198b2, f48b468, 51bce18).
  • Fix T74395: Box interpolation does not support repeat extrapolation.
  • Investiaged T67718: Point density texture crashes.
  • D7024: Fix T73049: Drag&drop on panels in 3d view behaves unexpectedly.
  • Reviewed and committed D6417: Fix T71578: Knife tool: some future points are drawn incorrectly.
  • Nodes: Support storing socket link limits in bNodeSocketType (c08151c).
  • Nodes: Fix writing socket default values to file (50d5050).
  • D7061: Blenloader API
  • D7062: Use Blenloader API for modifiers.
  • Added a new builtin simulation tree type, socket types and node types for the particle nodes project.

Next Week

  • Prepare code for collision solver development.
  • Implement placeholders for many more built-in nodes (including putting them into the menu).
  • Finish initial blenloader api.
  • Patch review and bug fixing.

Week 74: March 09 - 13

  • Updated Blenloader API patches according to feedback. Now waiting for approval. (D7061)
  • Reviewed/Benchmarked/Committed D7053: Python: add foreach_get and foreach_set methods to pyrna_prop_array.
  • Fix T74525: Fluid caches overwrite each other by default.
  • Fix T74315: Sculpt cloth brush breaks orbit around selection.
  • Fix T74296: Free depsgraph when view layer is removed.
  • Fix T74078: Flames disappear when fuel is animated and reaches 0.0 (D7112).
  • Fix T73228: UI shows settings of wrong marker when movie clip is offset.
  • Fix T73049: Drag & drop on overlapping panels behaves incorrectly.
  • Cloth: Copy point cache settings copying cloth modifier (6eeaecd).
  • Prepared a branch for particle solver development for Sebastian and introduced it to him.
  • Added ui for various builtin simulation and function nodes and put them into the menu.
  • Added support for storing Object/Image pointers in sockets (handle user counts etc.).

Next Week

  • Investigate how node groups can be shipped with Blender in a good way until a permanent solution has been found.
  • Implement more placeholders for function nodes (which are used in simulation node trees).
  • Patch review and bug fixing.

Week 75: March 16 - 20

  • Nodes: Display bl_icon of custom nodes in node header (120a38c).
  • Classified a couple of bugs after additional investigation.
  • Fix T74524: Tooltip for smoke dissolve time is backwards.
  • Added Float/Vector Math function nodes.
  • Added data type property to Set Particle Attribute and Particle Attribute nodes.
  • Added nodes for sampling surface attributes.
  • Added operators to create and load node groups that are shipped with Blender. Node groups using other nodes groups are handled properly as well.

Next Week

  • Integrate node groups into node menu and search.
  • Start implementing the new Simulation data block.
  • Write a proposal for how geometry/modifier/... nodes could work.

Week 76: March 23 - 27

  • D7225: Added simulation id data block.
  • Fix T75111: Crash when using subframes for animated fluid collider.
  • Fix T73945: Don't grey out "Calculate to Frames" in some cases.
  • Fix T74642: Take gravity field weight into account.
  • Investigated T73735: Fire does not render if flow object had disabled Show in Renders.
  • D7256: Fluids: Improve subframe handling.
  • Added group nodes to menu (but not yet to search). Need to discuss a bit more how that should look like exactly.
  • Started writing a document about geometry nodes. Unfortunately (or fortunately) I changed my opinions a couple of times during writing this, so I did not end up with anything I could publish yet. Instead of writing a full proposal I'll probably have to write a document that discusses several aspects more in isolation.

Next Week

  • Prepare some patches for early merge in master (e.g. adding socket types, shipping group nodes with Blender, ...).
  • Add a couple more important function node UIs.
  • Embed the simulation node tree in the simulation data block.