Week 15 + Holidays: January 7 - 11

  • Fixed Bugs: T60342, T60338, T60327, T60282, T60291
  • Started working on a new project called derivedrepo. It's purpose is to generate a new repository based on some (git) repository using some derivation function. The primary goal is keep a repository of compiled Blender builds to make bisecting more efficient. However, the project tries to solve a more general problem.
  • Started working on nodes in Blender. So far I mostly implemented a node compiler that uses LLVM as backend. Will write more documentation this week. The code is currently in two separate repositories on Github: Blender Core and UI.

Week 16: January 14 - 18

  • Testing new ArrayBase data structure as a replacement for ListBase (linked lists should not be used when it can be avoided...) (D4225).
  • Fixed Bugs: T60591, T60383, T60304
  • Unfinished fixes: D4221
  • Started working on making vertices active using box/circle/lasso select, but stopped for UX reasons (D4217).
  • Wrote a wiki page for the Everything Nodes project.

Week 17: January 21 - 25

  • Fixed Bugs: rBA2eb519c, T60816, T58502, T59145, T60791, T60126, T60709
  • Wrote a small addon for the Spring team to copy drivers (Github).
  • Tried to help some new developers to do their first code contribution (Twitter -> D4258, D4260, D4261).
  • Tested a generic interface for function calls. Also learned a lot about C++ this week. Currently, the code is still on Github, but will push the branch to soonish.

Week 18: January 28 - 01

  • Created an initial proposal for a Python Tool API. Many things have to be discussed still (T61105).
  • Removed deprecated ghosting code (D4271).
  • Fix T60996: Dyntopo flood fill fails due to missing ob->imat
  • Fix T60067: some modifiers don't use shape keys correctly
  • Fix T60226: Inset not working well on very small faces
  • Fix: allow curve of driver to be evaluated individually (f4c0dac).
  • Fixed some addons that were broken, because the object color does have an alpha value now (1ceaca7, 4e8ddec, 04dc7f2).
  • Fix: allow removal of addons that are symlinked (e6ba760).
  • Reviewed and merged: 9552d4b, d473d5b, 5348919
  • Started to update the bgl docs (D4280).
  • Committed to the Blender manual repository for the first time (4563).

Week 19: February 04 - 08

  • Fix T61275: recognize values with decimal separator in svg importer
  • Investigated D4312.
  • Cleanup: Remove deprecated ghosting code (4547815).
  • Fix T60935: More numerically stable distance to ray computation.
  • Some improvements/fixes for the Object Scatter addon (f40ec5d, 8e3a51e, 6f0deb3).
  • Don't split groups by default when importing .obj files (899c287).

Besides these things I also continued to work on the functions project. I'm spending quite some time learning how to do certain things in C++ (which I did not use for a serious project yet). I investigated/implemented the following:

  • Managing shared ownership over language boundaries.
  • Using dynamic composition instead of inheritance for some types.
  • How to use const so that it does not get in the way.

I also worked on some data structures that I want to work with. I put those into BLI for now. Feels like a good place for Blenders own C++ data structures. Most of them also have some unit tests already.

  • SmallVector<T>: Similar to std::vector, just that it does not have to allocate memory when it is small.
  • SmallSet<T>: Build on top of SmallVector but supports different operations.
  • SmallMap<K, V>: Similar to SmallSet.
  • SmallSetVector<T>: An vector that supports efficient membership testing.
  • Composition: Can be used in other objects to extend them dynamically. In my case I use it to have generic type and function objects that can be extended with backend specific information.
  • RefCounter<T>: Generic object that wraps another object and extends it with an atomic reference counter.
  • Shared<T>: Similar to std::shared_ptr but wraps a RefCounter object. Having it allows automatic shared ownership within C++, but still makes it possible to pass the RefCounter to C code.

Furthermore, I added a new node tree type, but it doesn't really do anything yet. I hope I'll get to that point next week.

Week 20: February 11 - 15

  • Make marker lines in sequencer and graph editor optional (D4348).
  • Tracked down some bugs I experienced when having references to node trees in a modifier. They were caused by user count problems of nodes (T61506, T61515). The bugs were fixed by Bastien.
  • Fix T61430: invoke_popup() does not respect ui scale.

I took two days off.