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.