Info
Developers or artists interested in contributing are welcome to join at the links below.
- Workboard - plans, ongoing work, and community tasks
- Chat Channel - general development communication
- Video Call - dailies at 14:00 CEST
- Meeting Agendas and Notes - updated throughout the week
Week of 2021-11-29
- Discussion about LLVM compiling of sets of nodes.
- The idea is to have the latency optimization of the current implementation but also the speed of compiled nodes by compiling sets of nodes in a background thread.
- LLVM could also be used to generate SIMD optimized code.
-
T93268: Bezier Splines: Support different interpolation options
- Having a global option on the curve is fine.
- If we need the option per attribute at some point, we can just add it.
- Try to find someone who has used these options to double check that.
-
T93208: Auto Smooth and Geometry Nodes
- It would be best to find the ideal solution for handling automatic and custom normals.
- Some simplification of the way information related to normals is stored on meshes feels necessary.
- The face smooth option (
ME_SMOOTH
) seems redundant with sharp edges (ME_SHARP
). - Still need to figure out how custom normals are encoded exactly (they are stored as
short[2]
). - Auto smooth can become a node to set the edge sharpness flag, since auto smooth acted like a virtual modifier/node anyway.
- Exposing this sort of virtual task like other operations simplifies UX and code.
- The
Auto Smooth
option seems redundant with having or not having a custom normals layer.- When there is a custom normals layer, just use that.
- Otherwise, compute the normals based on the edge sharpness flag (which is set with nodes/operators).
- Versioning from
ME_SMOOTH
(on faces) toME_SHARP
(on edges):- An edge becomes sharp if it has at least one non-smooth face.
- For the “Set Shade Smooth” node, capture the selection on the face domain and set the edge sharp flag with that selection.
- Versioning to remove the
Auto Smooth
option and angle on mesh data blocks:- Expose the sharp edge flag as a builtin attribute.
- Add a geometry nodes modifier that sets the
ME_SHARP
flag on edges according to the auto-smooth angle. - Might have a performance impact when a mesh data block was shared between objects that didn’t have a modifier before.
- This is because now the final mesh is computed for every object separately.
- This can be worked around by instancing the object that has the correct smoothing applied already instead of sharing the mesh.
- Design task created: T93551: Mesh Auto Smooth and Normals Design Changes
- TBB implementation details discussion.
- Node versioning.
- Problem:
- Root problem: Versioning calls functions that are changing over time.
- Versioning code that adds new nodes typically assumes that there are specific sockets on the newly created node. However, if the node changes in a newer version of Blender, we also change the node that is created in old versioning code, possibly breaking assumptions.
- Versioning code assumes that all nodes are updated to the most recent state already.
- Two possible solutions:
- Copy/move all functions called by versioning code into versioning code so that it does not change over time.
- This would require adding sockets manually when creating new nodes in versioning.
- We already have a lot of code that is calling functions outside of versioning (like adding a data-block).
- Be much more careful when changing existing functions/node declarations that are called by versioning.
- Copy/move all functions called by versioning code into versioning code so that it does not change over time.
- Add a list of things to check in versioning code when changing an existing node
- Check that the versioning code doesn’t assume something that is now incorrect in the updated state of the node or outside code.
- Avoid making assumptions that might not hold up in the future in versioning code
- Document any assumptions that you make, like “I expect this node has four input sockets”
- Ideally don’t make assumptions like that in the first place.
- Problem: