Developer Meeting Notes

6 February 2023
Notes for weekly communication of ongoing projects and modules.

Welcomes

  • Falk David joins Blender as fulltime developer and coordinator for grease pencil. His focus will be on the grease pencil 3.0 project.

Announcements

Modules & Projects

New Features and Changes

Geometry Nodes

  • Parallelize part of Duplicate Elements node (commit ) (Jacques Lucke)
  • Add support for eye dropper for object input in modifier (commit ) (Jacques Lucke)
  • Tweak menu location of sample nodes (commit ) (Hans Goudey)

Cycles

  • Add non-uniform scaling to spot light size (commit ) (Weizhen Huang)

User Interface

  • Various improvements to 3D viewport light/circle gizmos (commit , commit , commit ) (Weizhen Huang)
  • Harmonize UI for selection of axes in OBJ and Collada (commit ) (Aras Pranckevicius)
  • Add modal keymap for node link drag (commit ) (Erik Abrahamsson)
  • Group similar UI parameters in grease pencil offset modifier (commit) (Antonio Vazquez)
  • Improve translation of message when moving objects to collection (commit ) (Damien Picard)

Animation

  • Add “Select Linked Vertices” to Weight Paint mode (commit ) (Christoph Lendenfeld)
  • Add operator for adding FCurve modifiers to more menus (commit ) (Christoph Lendenfeld)
  • Enable Pin Icon in the Dope Sheet (commit ) (Christoph Lendenfeld)

Curves

  • Improve performance when using cached evaluated data (commit ) (Hans Goudey)

Mesh

  • Parallelize edit mesh to evaluated mesh conversion (commit ) (Hans Goudey)

Sculpt

  • Don’t invert in geodesic mask expand keymap (commit ) (Joseph Eagar)
  • Un-invert expand normal falloff (commit ) (Joseph Eagar)

Metal

  • Enable realtime compositor with addition of GPU Compute (commit , commit ) (Jason Fielder, Jeroen Bakker)
  • Optimize GLSL to MSL translation and improve cached compilation (commit ) (Jason Fielder)
  • Optimise shader local memory usage and texture cache usage and branch reduction via point sampling. (commit , commit ) (Jason Fielder)

Import/Export

  • Add scale and bias for normal maps (commit ) (Michael Kowalski)

Video Sequence Editor

  • Add Update scene frame range operator (commit ) (Richard Antalik)
  • Change default AV1 encoder for “slowest” (commit ) (Stephen Seo)

Weekly Reports

Summary
9 Likes

Notes for weekly communication of ongoing projects and modules.

Announcements

Modules & Projects

New Features and Changes

Geometry Nodes

  • Edges to Face Groups node (commit ) (Hans Goudey)
  • Viewport drag and drop for geometry nodes (commit ) (Hans Goudey)
  • Use smooth normals in Distribute Points on Faces node (commit ) (Jacques Lucke)
  • Add option to hide input in modifier (commit , (commit ) (Hans Goudey)
  • Performance
    • Improve parallelization in Delete/Separate Geometry node (commit ) (Jacques Lucke)

Curves

  • Initial surface collision for curves sculpt mode (commit ) (Jacques Lucke)
  • Edit mode
    • Add select pick operator (commit ) (Falk David)
    • Add lasso, circle, and box selection (commit , commit ) (Falk David)
    • Add select linked operator (commit ) (Falk David)

User Interface

  • Add default shortcut to toggle overlays in all space-types (commit ) (Campbell Barton)
  • Hide trackball gizmo while dragging (commit ) (Germano Cavalcante)
  • Make text wording and ordering consistent (commit ) (Josh Maros)

Cycles

  • Metal
    • Optimize subsurface intersection queries (commit ) (Michael Jones)
    • Use local atomics for faster shader sorting (commit ) (Michael Jones)
    • Enable MetalRT opt-in for AMD/Navi2 GPUs (commit ) (Michael Jones)

EEVEE Next

  • Initial implementation of virtual shadow maps (commit , commit ) (Clément Foucault)

Mesh

  • Performance
    • Fix a serious subdivision surface performance hit when mixing CPU & GPU. (commit ) (Alexander Gavrilov)
    • Avoid copying positions in object mode modifier stack (commit ) (Hans Goudey)

Python API

  • Measure modifier execution time and provide Python access (commit) (Jacques Lucke)
  • Add bpy.utils.manual_locale_code() (commit ) (Campbell Barton)

Weekly Reports

Summary
8 Likes

20 February 2023
Notes for weekly communication of ongoing projects and modules.

Announcements

Modules & Projects

New Features and Changes

Animation

  • Add “Frame Channel” operators (commit ) (Christoph Lendenfeld)

Curves

  • Sculpt mode
    • Add optional cage overlay (commit ) (Jacques Lucke)
    • Add Curve Parameter Falloff to comb brush (commit ) (Jacques Lucke)
    • Change collision radius for consistency with default radius (commit ) (Jun Mizutani)
  • Edit mode
    • Move edit mode out of experimental (commit ) (Jacques Lucke)
    • Add transform tools to toolbar (commit ) (Falk David)
    • Add delete operator to edit mode (commit ) (Hans Goudey)
    • Add select more/less operators (commit ) (Falk David)
    • Use deformed points in edit mode overlay (commit ) (Falk David)
    • Draw point overlay only in point selection mode (commit ) (Falk David)
  • Replace quick fur operator, add to add menu (commit ) (Hans Goudey)

Sculpt

  • Vector displacement for the sculpting draw brush (commit ) (Robin Hohnsbeen)
  • Add support for last operator panel to mesh filter operator (commit ) (Joseph Eagar)

Core

  • Bundle “Essentials” assets with Blender (commit ) (Jacques Lucke)

EEVEE

  • Optimize material node graphs with secondary optimized shaders (commit ) (Jason Fielder)

User Interface

  • Gizmos
    • Add shift key option to scale 2D cage gizmos uniformly (commit ) (Weizhen Huang)
    • Add gizmos for spot and point light radius (commit ) (Weizhen Huang)
    • Make cage gizmo follow the cursor exactly when scaling (commit ) (Weizhen Huang)
  • Asset Browser
    • Show all assets by default instead of current file (commit) (Jacques Lucke)
    • Add preference for default import method for an asset library (commit ) (Julian Eisel)
    • Use list for asset library preferences (commit ) (Julian Eisel)
    • Rename “Import Type” to “Import Method” (commit) (Julian Eisel)
    • Hide import method menu for essentials (commit) (Julian Eisel)
  • Node Editor
    • Add ‘Online Manual’ to context menu (commit ) (Erik Abrahamsson)
  • Spreadsheet
    • Add original indices to mesh debug information (commit ) (Hans Goudey)
  • Ignore edges when joining areas (commit ) (Harley Acheson)
  • Add camera passepartout color to theme (commit ) (Damien Picard)
  • Ensure menus with and wutgiyt icons align (commit) (Julian Eisel)
  • Use dimensionless units for contraint Maintain Volume (commit ) (Damien Picard)
  • Performance
    • Improve online manual lookup time time (commit ) (Erik Abrahamsson)

Mesh

  • Set active attribute values edit mode operator (commit ) (Hans Goudey)

Geometry Nodes

  • Add operator to wrap a modifier’s node group (commit ) (Hans Goudey)
  • Remove “normal” attribute from spreadsheet (commit ) (Hans Goudey)

Cycles

  • Replace resolution divider loop with an analytical formula (commit ) (Sergey Sharybin)
  • Disable AMD GPU rendering binaries due to compiler bugs (commit ) (Brecht Van Lommel)

Import/Export

  • OBJ: Support polylines with more than 2 vertices (commit ) (Martin Heistermann)
  • USD: USD Shapes support (commit ) (Charles Wardlaw)

Python API

  • Add option for clearing asset data to wmp.append operator (commit) (Hans Goudey)

Weekly Reports

Summary
7 Likes

Unable to select lights in viewport when “show overlays” is disabled.

Holding shift key has no effect while adjusting any of the light gizmos. It should slow things down for fine tuning like when interacting with the property sliders.

1 Like

file a bug report

1 Like

Finally! So glad that this was added! Thanks a lot, Mr. Picard! :heart::partying_face:

3 Likes

Just from watching Blender Today video covering this, please add a Ess. as an identifier to the nodegroup name as well as a GN identifier to show it’s a geometry node group. So “dothis” becomes “Ess.GN.dothis”. I have tons of functions already linked in to my startup file, although most are material node groups and a few comp node groups (i.e. that adds and scales company logo automatically).

3 Likes

Dont think someone will read that here but you might want to ask that on blender today.
Is it currently just reading in everything thats in the asset browser folder by default? and your problem can be solved by group naming? because that Ess.GN might not be clear to everyone from the start.

It’s more about learning from my own mistakes. I have tons of library math functions I use all the time; to list a few of them:
Mapping.ChannelSeparator
Util.Math.fInsideOutside (different outputs, so not same as a math node)
Util.Math.fIsBetween (similar to math.compare but using upper and lower bound instead)
Util.Math.vModContinous
Util.Shader.MicroRoughness
Light.Directionality
Light.LumenConverter
There is 99 in total, although some are legacy to not mess up my old projects, where actual functions have been added as default (stepfunctions, fLerp is now in the mix node etc). Some are also pure garbage or otherwise deprecated/useless.
In retrospect, I now know I should have used MyName.Group.Function instead. Also, my list appears a mangled mess and not properly sorted at all when looking at it. Ess.GN was just an attempt of keeping it short; sometimes in SW long names are cropped/truncated. Call it Default, Bundled, or Essentials, doesn’t matter. I haven’t tried the essential node groups yet, I don’t know if it’s possible to make them “local” to the project to make them editable for whatever reason. Or if we could assign subdirectories to the group listing, that would help too. A lot.
So the mangled and unsorted list, although I’m mixing categories as I don’t have much for geo-nodes myself yet:
Frizzle Hair
Util.Math.vModContinous
Light.Directionality
Comb Hair
Mapping.ChannelSeparator
Util.Math.fIsBetween
Light.LumensConverter
…could instead become organized and sorted, in the group menu:
Essentials/Comb Hair
Essentials/Frizzle Hair
MyName/Light/Directionality
MyName/Light/LumensConverter
MyName/Mapping/ChannelSeparator
MyName/UtilMath/fIsBetween
MyName/UtilMath/vModContinous

Solved by group naming? Since these are bundled, sounds like this would be required for every single Blender update? No thanks. The small amount that is bundled now will very likely grow significantly in size in the future.

Okay, but you cant punish everyone because you have that problem…
How is it solved? By naming your own assets correctly.

1 Like

I totally missed that. What a hero!
This evening I’ll update the Neutral Grey theme I had made to make use of this.

2 Likes

Now you can set it to pink…
Take the opportunity…

If you are going to have any custom groups you will hit that problem too.
Right now users are expected to micro-manage entire asset libraries, but there is no filtering for it in search.

I think the best way to solve this is to have two search ‘modes’. One (Shift + A) for everything default and second (Alt+Shift+A for example) for custom groups.

Yes, totally agree!
This will result in a huge mess without a proper naming convention.

Huh? I’m not talking about my own assets, those are my own responsibility.
I’m talking about having a solid naming convention for the built-in (essential) assets.
“Punish everyone”? For having a naming convention? For real?

1 Like

ESS.GN is not that catchy and self-explanatory as you think…

A simple solution is a grouping method. You can choose in the asset browser which asset can be used in the blendfile, just exclude the group you dont need (if the asset library is organized) and in the add menu its split in the blends files where the assets are included.
Then you dont get confused by the amount you already have because they are not just mixed with your assets and i dont have to see ESS.GN before every asset…

27 February 2023
Notes for weekly communication of ongoing projects and modules.

Welcomes

Let’s welcome two developers, starting fulltime this wednesday, March 1:

  • Lukas Tönne joins the Nodes & Physics module.
  • Harley Acheson joins the triaging team and will also help the UI module.

Announcements

Modules & Projects

Geometry Nodes

  • Blender 3.6 initial planning proposal
    • Simulation Nodes
    • Node Group Operators
    • Node Group Usability Tasks
    • Attribute Paint/Edit
  • Check the meeting notes for the targets breakdown.
  • The work will be carried over as the regular Nodes & Physics development.
    • The communication channels will all be incorporated into the Nodes & Physics.

New Features and Changes

Animation

  • Paste Keys in Graph Editor with value offset (commit ) (Christoph Lendenfeld)
  • Add Slider operators to hotkey menu (commit) (Christoph Lendenfeld)

EEVEE & Viewport

  • Metal
    • Improve AMD EEVEE Performance (commit ) (Jason Fielder)
    • Enable Metal as default gpu backend (commit ) (Jeroen Bakker)
    • Patch GPencil shader for metal support (commit ) (Jeroen Bakker)

USD

  • Add support for exporting to USDZ (commit , commit ) (Bastien Montagne, Charles Wardlaw, Sonny Campbell)

User Interface

  • Widen search boxes when necessary (commit ) (Harley Acheson)
  • Add color selector to Bone Groups list (commit) (Pablo Vazquez)
  • Add list hover highlighting (commit ) (Harley Acheson)
  • Properly cancel dragging on escape or right-click (commit) (Julian Eisel)
  • Gizmos: Support scaling of light gizmos with zero size (commit ) (Weizhen Huang)
  • Windows: Auto-Raise and -Focus Windows on Hover (commit ) (Harley Acheson)
  • Node editor
    • Allow adding multiple search items per type in add menu (commit ) (Hans Goudey)
  • Various fixes and improvements for translation (commit, commit, commit) (Damien Picard)

Video Sequence Editor

  • Add retiming tool (commit ) (Richard Antalik)

Geometry Nodes

  • Remove unnecessary position copying in delete node (commit ) (Hans Goudey)

Curves

  • Avoid unnecessary allocation when calculating offsets (commit ) (Hans Goudey)
  • Edit mode
    • Add cursor snapping support (commit) (Falk David)

Cycles

  • Add NanoVDB support for Metal on Apple Silicon (commit ) (Brecht Van Lommel)

Mesh

  • Slightly improve subdivision surface performance (commit ) (Hans Goudey)
  • Replace vertex merging algorithm used by mirror and array modifiers (commit ) (Germano Cavalcante)

Sculpt

  • Add trim orientation to sculpt box trim UI (commit ) (Joseph Eagar)
  • Implement mesh filter cancel (commit ) (Joseph Eagar)

Python API

  • Add scissor functions to gpu.state (commit ) (Jeroen Bakker)

Weekly Reports

Summary
7 Likes

Considering his previous work in the area of physics and simulation, the BF has picked perhaps the most qualified person they can find to make node-driven simulation a reality. It is good in general that the BF, when looking for new paid devs. first consider those who are veteran contributors to Blender in the past (as they already know the code to an extent).

10 Likes

Modules & Projects

New Features and Changes

Import / Export

  • New C++ PLY importer/exporter (commit ) (Arjan van Diest, Bas Hendriks, Lilith Houtjes, Nathan Rozendaal, Thomas Feijen, Yoran Huzen)
    • Add color space import option, slightly tweak UI (commit ) (Aras Pranckevicius)

Viewport

  • Add retopology overlay (commit ) (Jorijn de Graaf)
  • Add edge width option for viewport and UV editor (commit ) (Patrick Busch)

Core

  • Use hash for Collection object lookup, speed up object linking (commit ) (Campbell Barton)

Cycles

  • Reduce mesh memory usage by unflattening (commit ) (William Leeson)
  • Implement MaterialX OSL microfacet closures (commit ) (Lukas Stockner)
  • Make Fresnel term independent of microfacet closure type (commit ) (Lukas Stockner)
  • Use per-microfacet Fresnel term for Glass closures (commit ) (Lukas Stockner)

Mesh

  • Move edge UV seams to a generic attribute (commit ) (Hans Goudey)
  • Avoid recalculating bounds after some operations (commit ) (Hans Goudey)
  • Clear loose edges bitmap with count of zero (commit ) (Hans Goudey)

User Interface

  • Tweak/disambiguate translations (commit , commit) (Damien Picard, Bastien Montagne)
  • Outliner
    • New grease pencil filter (commit ) (Antonio Vazquez)

Sculpt

  • Add support for last operator panel to color filter operator (commit ) (Joseph Eagar)

Python API

  • Add range and instance drawing to GPUBatch (commit ) (Jeroen Bakker)
  • Change console banner color-style to info (commit ) (Léo Depoix)

Weekly Reports

Summary
11 Likes

13 March 2023
Notes for weekly communication of ongoing projects and modules.

Modules & Projects

New Features and Changes

Mesh

  • UV editing
    • Improve UV packer performance to operates on 100,000+ islands in seconds instead of hours (commit ) (Chris Blackbourn)
    • Support manual seam placement in UV Cylinder Projection and UV Sphere Projection (commit ) (Chris Blackbourn)
  • Edit mode
    • Improve undo storage performance to resolve a regression in Blender 3.4, improving on 3.3 over 2x (commit , commit , commit, commit ) (Campbell Barton)
    • Parallelize edit mesh to mesh conversion for leaving edit mode and undo steps (commit ) (Hans Goudey)
  • Avoid calculating bounding box for cube and grid primitive nodes (commit ) (Hans Goudey)
  • Move face shade smooth flag to a generic attribute (commit ) (Hans Goudey)
  • Avoid writing unnecessary attributes (commit ) (Hans Goudey)

Sculpt

  • Add Transform, Trim, and Mesh Filter operators to Sculpt menu (commit ) (Tarek Yasser)
  • Improve Edit face set operator (commit ) (Joseph Eagar)

Video Sequence Editor

  • Use the same sampling as rendering (commit ) (Jeroen Bakker)

Animation

  • Move Graph Editor settings to User Preferences (commit ) (Christoph Lendenfeld)
  • Drivers: Introduce context properties (commit ) (Sergey Sharybin)

Viewport

  • Draw light icons using the light colors (commit ) (Weizhen Huang)
  • Adjust the max value of “Edge Width” from 5 to 32 (commit ) (Patrick Busch)
  • Gizmos
    • Slightly increase cage2d corner margins (commit ) (Weizhen Huang)
    • Show hovering regions of cage2d gizmo to indicate constraint axis (commit ) (Weizhen Huang)

Assets

  • Add License and Copyright meta-data (commit ) (Harley Acheson)

Compositor

  • Implement bicubic interpolation for realtime compositor (commit ) (Omar Emara)

User Interface

  • Add parenting (Keep Transform Without Inverse) to menu (commit ) (Philipp Oeser)

Python API

  • Extend save/load handlers, optionally take a filepath argument (commit ) (Campbell Barton)

Weekly Reports

Summary
17 Likes