User:JacquesLucke/Reports/2020

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.

Week 77: March 30 - 03

 * D7287: Add simulation node tree type.
 * D7301: Embed simulation node tree in simulation data block.
 * D7321: Blenloader API: lib linking and animdata read/write.
 * Fix T74224, T66383, T73404: Add missing depsgraph relations for boid particles (25b2b67).
 * Fluids: Improve subframe handling (1c3ded1).
 * Added 6 more function node UIs.

Next Week
 * Submit more particle nodes patches for code review.
 * Add noise node uis for particle nodes.

Week 78: April 06 - 10

 * D7347: New Object and Image socket types.
 * D7349: New emitters, events, forces and control flow socket types.
 * D7384: Core particle nodes (ui only).
 * Checked GSOC proposals.
 * Investigated the `expand` process in `readfile.c`.
 * Added noise node uis to simulation node tree in separate branch.

Next Week
 * Submit more particle nodes patches for code review.
 * Start checking how to integrate the simulation data block into the depsgraph.

Week 79: April 13 - 17

 * D7422: Use some shader nodes in simulation node trees.
 * D7424: Add Boolean Math, Switch and Float Compare nodes.
 * D7450: BLI: add float2, float3, float4x4, rgba_f and rgba_b.
 * Reviewed D7408: Fix T75629: Disallow dragging the collection instance into itself.
 * Reviewed D7407: Fix T75620: Lamp positioning manipulator flips direction for negatively scaled objects.
 * Reviewed D7418: Fix T75613: Make Object Properties "In Front" override Image Empty "Depth" setting.
 * Started discussion about C++ header extensions.
 * Started experimenting with the new point cloud data type and depsgraph integration of new data block types.

Next Week


 * Fix and merge patches I prepared in the last couple of weeks.
 * Investigate how to store the simulation state on Simulation data blocks and how to reference it from point clouds.

Week 80: April 20 - 24

 * Merged the patches I prepared in the last couple of weeks.
 * Reviewed D7141: Objects: add infrastructure for hair, pointcloud and volume modifiers.
 * Reviewed D7293: Add variability to Bounce interpolation.
 * Reviewed D7369: Fix color drag and drop in image editor.
 * Reviewed D7458: Fix incorrect f-string in previews.py.
 * Reviewed D7468: Add transparency to Rectangle Overlay in VSE.
 * Reviewed D7482: Add Reset operator to menu in uv editor.
 * Fixed T73680: Scene and fluid modifier gravity are scaled differently.
 * Fixed T76008: Fluid inflow with negative initial velocity is not working.
 * BLI: Use .hh extension for C++ headers in blenlib (3059353).
 * BLI: Add float2, float3, float4x4, Color4f and Color4b C++ data structures (0e52b91).
 * BLI: Expose InlineBufferCapacity parameter for Set and Map data structures (8f5a4a4).
 * BLI: Simplified naming for listbase wrapper (29e9506).
 * BLI: Added ScopedTimer utility (c7991bc).
 * BLI: Optimized VectorSet implementation (6146217).
 * BLI: Implement StringMap.add and StringMap.add_or_modify (62f6255).
 * BLI: Add BLI::DefaultHash specializations for StringRef and StringRefNull (ebe0d7c).
 * BLI: Add LinearAllocator (c5f4d5e).
 * Depsgraph: Use BLI::Set instead of std::unordered_set (69b6c89).
 * Depsgraph: Use BLI::Map instead of GHash for operations_map (47ae0af).
 * Prepared more usages of BLI::Map in depsgraph module: D7512, D7519, D7521.
 * D7494: Nodes: Two more function node UIs.
 * Started working on new modifier for particle nodes in `simulation-access-modifier` branch.
 * Investigated T75096: Crash baking dynamic paint using liquid simulation as brush.
 * Investigated T75755: Smoke simulation substeps not working with modifiers.

Next Week


 * Submit for review: initial version of simulation access modifier; temporary solution for shipping node groups with Blender.
 * Further investigate how to store the simulation state on Simulation data blocks.

Week 81: April 27 - 01

 * D7549: Add simulation access modifier and integrate with depsgraph.
 * D7556: Depsgraph: use BLI::Vector for Relations.
 * T76372: Blendloader Decentralization.
 * BLI: Added some convenience methods to Map, Set and VectorSet.
 * BLI: Added library to simplify writing dot graph exporters (1c7317a).
 * Reviewed D7567: Node Wrangler: Fix T76226.
 * Started discussion about C++ containers in Blenlib (devtalk).
 * Talked to Sebastian about the particle solver.

Next Week

Mostly the same as last week, except for the modifier bit...

Week 82: May 04 - 08

 * D7617: Builtin Node Groups.
 * D7628: Efficient node tree queries and inlining.
 * D7639: Search Menu: Invoke operators instead of execute.
 * D7650: Preference setting for default empty size for collection instances.
 * Investigated T75889: Mantaflow problem when baking via API.
 * Reviewed D7578: Task: Graph Flow Task Scheduling.
 * Reviewed D7671: Fix T76538: Prevent nodesocket creation on certain nodes.
 * Cleanup: Take includes out of 'extern "C"' blocks (6f98557).

Next Week

Bug tracker.

Week 83: May 11 - 15

 * Created T76783: C++ Version Upgrade.
 * Fixed T75889: Cannot bake mantaflow via Python API.
 * Fixed T75492: Only positive shrink factor values can be animated.
 * Fixed T76669: Crash when doing right click on channel.
 * Fixed T74818: Improve tooltip for initial fluid velocity.
 * Fixed T76665: Wrong files selected when using box select.
 * D7719: Fix T75521: Use after free error when using activate_init.
 * D7720: Fix T75292: File-select events not handled while modal handler is active.
 * Investigated T76075: Mantaflow replay length change doesn't take into account effectors.
 * Investigated T76553: Dragging in the timeline causes Blender to freeze.
 * Investigated T76544: Sculpt mode drawing leaks memory.
 * Reviewed D7703: Fix T76514: Invalid geometry in Alembic crashes Blender.
 * Preferences: Customize default empty size for collection instances (e0b5a20).
 * UI: Invoke operators in search menu instead of execute (07fc240).
 * Simulation: Add modifier to access simulation data (b55c78a).
 * BLI: Deduplicate address sanitizer code (461fee5).

Next Week

Bug tracker.

Week 84: May 18 - 22

 * Fixed T76795: Missing node tree update after remove-on-cancel.
 * Fixed T76694: Fluid cache is deleted when changing Upres Factor.
 * Fixed T76881: Changing "Use Speed Vectors" deletes all fixing fluid cache.
 * Fixed T75197: Eevee does not render instanced smoke.
 * Fixed T73979: Wrong location of fluid mesh when domain origin is not in center.
 * D7797: Cycles: Fix rendering instanced smoke domain.
 * D7779: Fix T76697: Incorrect bounds when using upscaling (turned out to be not entirely correct).
 * D7787: Fix build error due to missing definitions.
 * D7812: Python: Support for calling operators in timers (by scheduling operators). Needs more investigation.
 * Investigated T76858: Threading issue in sculpt mode.
 * Classified many reports in the Nodes & Physics module.

Next Week

Continue with simulation node tree parsing and try to get some particles moving.

Week 85: May 25 - 29

 * D7836: Simulations DNA cache structure (discussion). Needs more work.
 * D7848: Fix T76996: Don't allow baking when domain is not in object mode.
 * D7852: Fix T76690: Incorrect liquid particle count displayed.
 * D7853: Fix T75096: Crash when using liquid simulation as dynamic paint brush.
 * D7861: Fix T76900: Tri-lighting addon broken when there was no camera.
 * D7862: Fix T74457: Disable motion blur for fluid particles.
 * Reviewed D7856: Work in progress towards exact arithmetic Boolean.
 * Continued porting the function evaluation system to master branch.

Next Week

Use pointcache for simulation cache, bug tracker and code quality day.

Week 86: June 01 - 05

 * Updated D7836 to use existing `PointCache` and `CustomData` structures.
 * Fixed T76900: Tri-lighting addon broken when there was no camera.
 * Committed new blenloader api, updated most code in `writefile.c` and direct linking in `readfile.c` (T76372).
 * D7931: BLI: Generally improve C++ data structures.
 * Investigated and closed a couple of bug reports.



Next Week

Finish and commit D7836. Continue porting function evaluation system to master branch; probably make some first patch. Maybe decentralize .blend file writing/reading of modifiers. Maybe rename `ArrayRef` to `Span` in D7931.

Week 87: June 08 - 12

 * Updated and committed D7836: Initial simulation state and cache.
 * Updated and committed D7931: Generally improve C++ data structures in blenlib.
 * Committed D7628: Efficient node tree queries and inlining.
 * Prepared and committed D7957: Functions: Run-time type system and index mask.
 * Prepared D7979: Simulations: Store custom data in point cache.
 * Fixed T77603: OSL parser fails when script ends with comment without newline.
 * Fixed T77524: Don't try to write storage of undefined node.
 * Fixed T77735: Numinput of radial control operator behaved incorrectly.
 * Fixed T77715: Make addon code example less confusing.
 * Further improved C++ structures in blenlib. Put them in `blender` namespace and renamed `ArrayRef` to `Span`. Improved and extend interface of `Map` a bit. Changed depsgraph module to use native data structures.
 * General bug tracker work.

Next Week

Potentially update how custom data is stored in point cache (D7979). Prepare more patches to get the function system working in master, so that I can use it to simulate particles.

Week 88: June 15 - 19

 * Prepared and committed D8030: Multi Function.
 * Started moving some blenloader code into respective modifier files.
 * Started preparing D8049: Multi Function Network.
 * Fix unreported issues with variable names for fluids (D8065).
 * Looked into ways to write better unit tests. Ended up spending some time developing a vscode extension that allows me to visualize code coverage data: Gcov Viewer.

Next Week

Finish Multi Function Network patch. Remove `WITH_NEW_OBJECT_TYPES` and `WITH_NEW_SIMULATION_TYPE` cmake options, and introduce experimental feature options instead. Rewrite how custom data is stored in `PointCache` based on Brecht's feedback.

Week 89: June 22 - 26

 * Finished and Committed D8049: Multi Function Network.
 * Prepared and Committed D8096: New experimental settings for particle system and hair.
 * Updated D7979: Store particle data in point cache.
 * Updated all pretty much all remaining code in `readfile.c` and `writefile.c` to use the new api (T76372).
 * Fixed T78080: Nodegroups: incorrect sockets when changing group.
 * Fixed T77913: Incorrect handling of negative-scale bit in DRWResourceHandle.
 * Fixed T72214: Fluids: noise does not work with negative frame numbers.

Next Week

Hopefully commit a solution to storing all particle attributes in point cache. Generate multi function network from node tree. That includes introducing a new callback in `bNodeType` and `bNodeSocketType`.

Week 90: June 29 - 03

 * Removed `blender::Optional` and `blender::make_unique` because we use C++17 now.
 * Moved some blenkernel and depsgraph code into the `blender::bke` and `blender::deg` namespace.
 * Prepared D8169: Nodes: Generate multi-function network from node tree.
 * Learned more about exception safety and how to make our blenlib library more exception safe.
 * Did some clang-tidy cleanups.
 * Proposed and added some sections to our code style guide.

Next Week

Check new hair type proposal. Start using nodes to control the behavior of particles.

Week 91: July 06 - 10

 * Finished D8199: Clang Tidy: enable readability-non-const-parameter.
 * Reviewed D8200: Python API: add unified .attributes for meshes, hair and pointclouds.
 * Reviewed D8232: Search does not accept text fragments.
 * Functions: Added multi function network optimizations: dead node removal, constant folding and common subnetwork elimination (45004d8, d1f4546).
 * BLI: Added disjoint set data structure (ff133bb).
 * BLI: Added C++ random number generator (cbfedf2).
 * Created D8251: CustomData: add float2 and float3 data types.
 * Particles: Initial support for forces in simulation node trees (21b20ae).
 * Commented on hair type proposals (T78606, T78515).
 * Started with baby steps toward better exception safety in blenlib.

Next Week

Bug Sprint.

Week 92: July 13 - 17
Planned to do bug fixing/investigation. After two days I felt very unproductive and switched back to working on particle nodes...


 * Committed D8199: Clang-Tidy: Enable readability-non-const-parameter.
 * As an experiment, I tried to fix one of the issues I found in clang tidy (D83864). The gained knowledge might become useful at some point, when we want to implement custom clang tidy checks.
 * Started discussion about usage of integer types on devtalk.
 * Created D8281: Fix T77766: Support animated global gravity toggle.
 * Committed D7852: Fix T76690: Incorrect liquid particle count displayed.
 * Updated and committed D8251: CustomData: Add float2 and float3 data types.
 * BLI: Added `BLI_math_base_safe.h`. It contains functions like `safe_divide`, `safe_logf`, ...
 * Particles: Support for more (vector) math operations, Map Rrange node, Color Ramp node and Separate/Combine RGB node.
 * Particles: Support more implicit conversions between types.
 * Particles: Emit particles over time (5063820).
 * Renamed the `physics` directory to `simulation`.
 * Moved some code from `blenkernel` to `nodes` and `simulation`.
 * Prepared D8315: BLI: Move some tests into blenlib/tests.

Next Week

Make mesh emitter work in new particle system. Update C++ structures to use signed instead of unsigned integers. Support more nodes in the new particle system.

Week 93: July 20 - 24

 * Added guides for the usage of integer types to our code style guidelines.
 * DNA: Support fixed size integers (8d35dce).
 * Updated integer type in a lot of my own code and newboolean branch.
 * Particles: Support for removing particles.
 * Particles: Support object socket.
 * Particles: Initial mesh emitter node is working.
 * Particles: Initial Quick Particles operator (1e999c7).
 * Particles: Marked some nodes in the menu as mockups.
 * Simulation: Make simulation state handling a bit more generic.
 * Simulation: Improve integration with depsgraph.
 * Allocator: Make guardedalloc leak detection work with static variables (236ca8f).
 * BLI: Add MultiValueMap data structure (b53c46d).
 * BLI: Moved some tests into `blenlib/tests`.

Next Week

Make particle events and actions work.

Week 94: July 27 - 31

 * Particles: Support custom particle events and actions (38e6533, 7cd2c1f, 396d0b5).
 * Particles: Support Clamp node (9a53d4a).
 * Particles: Initial support for the Time Input node (3b9e16a).
 * Particles: Add Radius attribute.
 * Cleanup: Correct usage of extern-C blocks in various places (https://developer.blender.org/rBb274d18aec525621bcb0a2234fc65e09398616c2 b274d18]).
 * Fix T79117: Dependency cycle with passive rigid body objects.
 * Meeting with Dalai about particle nodes (Meeting Notes).
 * Reviewed code `soc-2020-fluid-tools` branch (P1556).

Next Week

General bug fixing.

Week 95: August 03 - 07

 * Fix T78932: Fix linking reroute nodes of different type.
 * Fix T79408: Ungroup operation updates animation data incorrectly.
 * Fix T77685: Object transforms from rigid body simulation are ignored by modifiers.
 * Depsgraph: Refactor dot exporter to use utility library from blenlib (95fb3dc).
 * Code Style: Use "#pragma once" in many headers (91694b9).
 * Cleanup: Use C++ style casts in various places (c50e5fc).
 * Cleanup: Convert some macros into functions (D8494).
 * Cleanup: Rename `SpaceType->new` to `SpaceType->create` (675fa2e).
 * Reviewed D8452: Fix T79453: Motion Tracking: marker does not remember 'enabled' state.

Next Week

Bug fixing. Investigate problems with using context in timers.

Week 96: August 10 - 14

 * Investigated problems with running Python code in timers (T79690).
 * Timers: Set first window as context in timer (6d88813).
 * Python: Don't remove existing context overrides when calling an operator (e11aa3e).
 * Fix T79653: Change soft min frame start of cache from 1 to 0.
 * Fix T79082: Softbody self-collision does not work on lattices.
 * D8573: Fix T77340: Nested nodes alpha issues.
 * BLI: Improved StringRef for C++17 (c521b69).
 * BLI: Add reverse iterators, iterator constructor and Vector.insert/prepend (cc6c527).
 * Reviewed D8518: Fix T79563: Compositor's Stabilize 2D in invert mode does not work correctly.
 * Triaged a couple more nodes and physics related bugs.

Next Week

Continue working on the bug tracker.

Week 97: August 17 - 21

 * Depsgraph: Refactor tagging after time changes (263148d).
 * Depsgraph: Various small cleanups and API improvements (D8605, D8611, D8613, D8614, 63998d3, 2922f9b).
 * BLI: Improve exception safety of Vector, Array and Stack (2aff451).
 * Tests: Use guarded allocator in gtest (48bd6e7).
 * Tests: Detect memory leaks in automated tests (D8665).
 * Blenloader: Moved IDProperty and AnimData read/write code to blenkernel (e.g. 79d678e).
 * D8670: Add .blend file io callbacks to IDTypeInfo.
 * Cleanup: Remove LodLevel which was left over from the game engine (71634d9).
 * Cleanup: Remove LISTBASE_FOREACH in writefile.c and readfile.c (4f0a749, 76689e8).
 * Reviewed D8576: UI: Only draw node menu search if categories exist.
 * Reviewed D8617: Allow particle lifetime to be 0.0.
 * Reviewed D8200, D8635: Geometry: Generic attributes for PointCloud and Hair.
 * Reviewed D8623: New boolean system.
 * Investigated T79697: Hair particle system misbehaving on rigged mesh.

Next Week

Taking two days off, so only two days of work. Might continue to work on blenloader decentralization, will do some BLI improvements and check on a couple of bugs from the bug tracker.

Week 98: August 24 - 28
Only two days of work this week.


 * Tests: Fail automated tests on memory leaks and other internal errors (8a9912e).
 * BLI: Improve exception safety of Set and Map (8e18a99).
 * BLI: Support removing multiple elements from a vector (0e50b65).
 * Fix T79915: Crash when changing to White Noise Texture.
 * Blenloader: Continued moving .blend I/O code out of blenloader (T76372).
 * Reviewed D8732: Fix depsgraph passive and constraint transform relations.

Next Week

I'm in Amsterdam for Particle Nodes discussions. Also there is code cleanup day.

Week 99: August 31 - 04

 * Particle/Dynamics/Geometry nodes discussions.
 * Many local cleanups (variable scope, ...).
 * Fixed T79941: Mantaflow cache does not work with ' character in path.
 * Prepared D8782: Python: Change type of deferred property definitions from tuple to type (will affect Python 3.10).
 * Started working on fuzzy text search.
 * Reviewed D8762: Make rigidbody simulation handle animated objects gracefully.
 * Reviewed D8705: Liquid Simulation Display Options (GSoC 2020).

Next Week

More node system design work. Finish an initial patch for the fuzzy text search.

Week 100: September 07 - 11

 * BLI: Improve exception safety of VectorSet (d291112).
 * BLI: New string search api that supports fuzzy and prefix matching (45bd8fd).
 * UI: Improve search results by using fuzzy and prefix matching (98eb89b).
 * Refactor: Moved .blend I/O code of many ID data blocks into IDTypeInfo callbacks (e.g. b8bcbb2).
 * Many local cleanups (variable scope, bool instead of int, ...).
 * Reviewed D8839: Fix T78823: Slash in custom property name does not work.
 * Participated in geometry/simulation nodes and hair discussion.

Next Week

Prepare a plan of attack for the nodes project, based on the discussions in the last two weeks. Work on the bug tracker to reduce the number of active Bugs in the Nodes & Physics module.

Week 101: September 14 - 18
Nodes development is still on hold until our development strategy (people and their roles) has been decided.


 * Wrote a short plan of attack for the upcoming weeks and months of the nodes project, but that is already obsolete now.
 * Fixed T80564: Flow particle size is too limiting.
 * Fixed T73590: Collection instance offset is not applied correctly.
 * Fixed T53073: Force destroys particles rotation.
 * Fixed T54293: Calculate mass does not take object scale into account.
 * Fixed T59272: Dead particles not included in render, but visible in viewport.
 * Fixed T80879: Add scatter objects operator to object menu.
 * Fix: Add versioning to fix incorrectly written custom data (f14995a).
 * Investigated T76107: Hair particle system instancing along paths gives initial shape pinch.
 * Investigated T80529: Mantaflow: Minimum timesteps affects dissolve rate.
 * Created D8908: DNA: Support int8_t type.
 * Created D8926: DNA: Use better type for SDNA->structs.
 * Created D8959: DNA: Optimize struct reconstruction by doing some preprocessing (improves file load time >10% in many cases).
 * Created T80827: Document how to use group nodes in custom node trees.
 * Created P1642: Reference implementation for supporting fuzzy search in property search.
 * Reclassified a couple of reports as Known Issue.
 * Reviewed D8941: Fix T80900: Crash lasso-selecting in particle editmode in certain situations.

Next Week

Same as last week: bug fixing and small improvements/cleanups here and there.

Week 102: September 21 - 25

 * Fixed T80943: Return early when field to visualize is NULL.
 * Investigated T80833: Fluid initial velocity incorrect when enabling inflow.
 * Investigated T63028: Constraints are not taken into account in rigid body simulation.
 * Generic cleanup (variable scopes, ...).
 * Cleanup: Remove smoke cache from point cache (e5c0d46).
 * Cleanup: Remove dead code in point cache and openvdb wrapper (4e8d312).
 * Modifiers: Add icon field to ModifierTypeInfo (d15e8bd).
 * Modifiers: Add StructRNA pointer field to ModifierTypeInfo (d587027).
 * Improved D8959: DNA: Optimize struct reconstruction by doing some preprocessing.
 * Created D9022: Volumes: Support selection and outlines in viewport.
 * Started implementing a new "Mesh to Volume" modifier in the `mesh-to-volume-modifier` branch.

Next Week

Finish DNA reconstruction patch. More work on volume object. Bug Tracker.

Week 103: September 28 - 02

 * Finished and committed D8959: DNA: Optimize struct reconstruction by doing some preprocessing.
 * Finished and committed D9032: Volumes: Initial Mesh to Volume modifier.
 * Finished and committed D9022: Volumes: Support selection and outlines in viewport.
 * Finished and committed D9040: Volumes: Support lower resolution in viewport.
 * Started working on D9075: Volumes: New Volume Displace modifier.
 * Cleanup: Remove foreachObjectLink callback (ec723ad).
 * Cleanup: DNA: Cleanup endian switching when loading file (D9089).
 * Cleanup: Volumes: Implement more generic way to handle different openvdb types (a4f8b2a).

Next Week

Continue working on Volume Displace modifier. We want to start "scrumming" this week, still need to figure out what that means for me exactly.

Week 104: October 05 - 09

 * Finished and committed D9075: Volumes: New Volume Displace modifier.
 * Finished and committed D9089: DNA: Cleanup endian switching when loading file.
 * Started working on D9141: Volumes: New Volume to Mesh modifier.
 * BLI: Escape double quotes in dot export (1b9de4f).
 * IDTypeInfo: Add flag to indicate that ID has no animation data (65a6caa).
 * BKE: Parallelize BKE_mesh_calc_edges (https://developer.blender.org/rB309c919ee97e272c08f88ebd8341fe962e71e64d 309c919]).
 * Reviewed D9145: Property Search: Use fuzzy string matching.
 * Created and investigated T81551: Cycles crash when updating volume.

Next Week

Bug Sprint. Improve new volume modifiers and finish Volume to Mesh modifier.

Week 105: October 12 - 16

 * Volumes: Use bounding box diagonal to compute adaptive voxel size (7ae7873).
 * Volumes: Reduce step and default strength in Volume Displace modifier (e8d0235).
 * Created D9176: Volumes: Simplify volumes in modifiers/on load.
 * Updated D9141: Volumes: New Volume to Mesh modifier.
 * Created D9236: Fix T81684: Node location node handled correctly.
 * Tried to improve the Blender debugging experience with gdb pretty printers (WIP code on Github) Also opened a related issue in the cpptools extension for vscode.
 * Cleanup: Reduce variables scopes, ...
 * Some bug triaging and classification.

Next Week

Finish volume to mesh modifier and volume simplification patch before bcon3. Sprint planning + first sprint week, let's see how it goes.

Week 106: October 19 - 23

 * Finished and committed D9141: New Volume to Mesh modifier.
 * Finished and committed D9176: Simplify volumes in modifiers/on load.
 * Reviewed and committed D9263: Avoid massive console messages with custom nodes.

Geometry Nodes

This week we started the first geometry nodes sprint. For now, the new features are in the geometry-nodes branch.


 * Removed particle nodes with outdated design (6ced026).
 * Separate feature flags for geometry nodes and point cloud type (8738a66).
 * Added geometry socket type.
 * Renamed Simulation to Nodes modifier.
 * Renamed Simulation to Geometry node tree.
 * Added initial support for evaluating geometry node groups.

Next Week

Second week of the first geometry nodes sprint.

Week 107: October 26 - 30
This was the second week for the first geometry nodes sprint. So I worked on that most of the time.


 * Improved geometry node tree evaluation in various ways.
 * Support multiple group inputs and display those inputs in the modifier.
 * Improved API for implementing geometry nodes.
 * Improved internal geometry data type.
 * Reviewed D9364: Add subdivision surface node.
 * Continued decentralizing blenloader code.

Next Week

Bug sprint and code quality day.

Week 108: November 02 - 06

 * Participated in the geometry nodes sprint demo and retrospective.
 * Triaged, classified and commented in a couple of bug reports.
 * Fixed T82074: Volume to Mesh normals are inverted.
 * Fixed T81756: Relinking multiple links to group input removes links.
 * Fixed T82393: Volume to mesh modifier with sequence fails during rendering.
 * D9472: Fix off-by-one error when creating bitmap for lasso gesture.
 * Investigated T81983: Volume displace modifiers results in blocky render.
 * Suggested fix for T81817: Heap use after free at clicking on splash screen's open button.
 * Wrote documentation for the new volume modifiers.
 * Finished moving .blend I/O of data blocks to IDTypeInfo callbacks (T76372).
 * Worked on an initial proposal for allowing instancing in node trees (T81853).

Next Week

First week of the second geometry nodes sprint. Will also look into T81983 again.

Week 109: November 09 - 13
We decided to do a one week geometry nodes sprint instead of two weeks.


 * Added support for the Nodes modifier on point cloud objects.
 * A point cloud object can now change its type within modifiers (e.g. it can become a mesh when rendered).
 * Added a geometry component for instances that can be controlled within modifiers and that is also rendered.
 * Added support for the object socket.
 * Added new Object Info node.
 * Improved the Point Distribution node.
 * Created D9557: Fix T81983: OpenVDB trees with tiles not rendered correctly in cycles.

Next Week

Third geometry nodes sprint + possibly some bug fixing for the release.

Week 110: November 16 - 20

 * Fixed T82769: Remove thread local data from PTCacheMem.
 * Simplified ownership handling in GeometrySet.
 * Did a couple of operations on a generic attributes api that can be used when implementing nodes.
 * Added support for rotation and scale in point instance node.
 * Combined the vertex and point domains.
 * Implemented the random attribute node.

Next Week

Second week of the current geometry node sprint.

Week 111: November 23 - 27

 * Geometry Nodes: Added a new Join Geometry node.
 * Geometry Nodes: Refactored Attribute Math and Math node so that they share more common code.
 * Geometry Nodes: Updated builtin attribute names (T82693).
 * Geometry Nodes: Fixed computing bounding box of evaluated point cloud.
 * Geometry Nodes: Extended Attribute API with "span access" for better performance and convenience.
 * Geometry Nodes: Support muted nodes.
 * Viewport: Fixed issue with selecting object by clicking on its instances (e922dd7).

Next Week

Merge geometry nodes branch to master. Next sprint.

Week 112: November 30 - 04

 * The merge of the geometry-nodes branch into master took longer than expected, but it is done now, with great help of Dalai.
 * Geometry Nodes: New Mix Attributes node (D9737).
 * Geometry Nodes: Support instancing collections (D9739).
 * Started looking into supporting to create instances on mesh objects with geometry nodes.
 * Started small discussion about enum usage as part of a cleanup (D9736).
 * Fixed T83293: Crash when selecting bone (own mistake).

Next Week

Hopefully get geometry nodes instancing on mesh objects working. Come to a conclusion on the usage of enums in (D9736) and document that somewhere. Start working on the Sample Texture node.

Week 113: December 07 - 11

 * Geometry Nodes: Finished prototyping geometry nodes instancing on mesh objects, wrote notes and started with the actual implementation (T83357).
 * Geometry Nodes: Fix recursive instance transforms (e795ba1).
 * Geometry Nodes: Renamed modifyPointCloud to modifyGeometrySet (efb741b).
 * Geometry Nodes: Started implementing Attribute Color Ramp node (T82585).
 * Geometry Nodes: Added collection socket and collection instancing (5ced167, f5dc34e).
 * Geometry Nodes: Finished Attribute Mix node implementation and wrote documentation for it (d72ec16).
 * Enums: Started devtalk thread "How to deal with enum incompatibilities between compilers?" (devtalk).
 * Python: Investigated how Python 3.10 breaks Blender due to postponed annotation evaluation (T83626).
 * Some patch review.

Next Week

Second week of geometry nodes sprint.

Week 114: December 14 - 18

 * Had a meeting with Bastien to discuss a code design issue (resulted in T83794).
 * Merged collection instancing support in Point Instancer node.
 * Merged mesh object support for geometry nodes modifier with instancing.
 * Started with the Sample Texture node.
 * Implemented an InplacePriorityQueue data structure for poisson disk distribution.
 * Implemented the Rotate Points node.

Next Week

Two weeks holidays and then bug sprint.