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.