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 developer.blender.org 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.
- Libs for Functions (quite experimental still): Small Stack, MemPool, Lazy Initialization Macro, ListBase Wrapper
- Functions: Type Inferencer Interface, Type Relations, Gather function dependencies
I took two days off.