This is part of the short term roadmap goal of simplifying the
compositor workflow
(see https://projects.blender.org/blender/blender/issues/134214).
The problem is that many users don't know how to get started with
compositing in Blender, even when they have used Blender for other
areas, e.g. modeling.
Note: although the solution makes compositor node trees reusable
accross blend files, this is a nice side effect and not the main goal
of the PR.
This PR implements a "New" button that creates a new compositing node
tree, and manages trees as IDs. This has following advantages:
- Consistent with other node editors and other parts of Blender,
therefore making it easier to getting started with compositing if users
are familiar with shading or geometry nodes
- Give users the ability to reuse the compositing node tree by linking
or appending it.
Note: The parameter "Use Nodes" is still present in this PR, but will
be removed (in a backward compatible way) in a follow up PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/135223
It is generally expected that items within the same section in the Node
Add menu appear in alphabetical order.
However, certain handful of places in the different node editor menus
don't seem to follow this convention. This patch simply re-arranges the
items in some places to follow alphabetical order.
Pull Request: https://projects.blender.org/blender/blender/pulls/140070
Only the collection clearing was removed, adding an item
and assigning values to it was kept - breaking the preset.
Detect collections and removed all lines which add & manipulate items.
Based on the fix from !139309 with fewer changes.
Also include FBX operators when cleaning up presets.
Co-authored-by: Guillermo Venegas <guillermovcra@gmail.com>
Presets would write a property multiple times in the case both the class
and it's parent defined a property.
While not a bug, it looks like an error. Only write values once.
- Use a private, static method.
- Simplify the check for an empty sequence.
- Remove redundant "None" check.
- Use a "match" statement for the object type check.
This adds motion blur support for Grease Pencil.
We follow the same principle form EEVEE and use the existing
`antialiasing_accumulate` (SSAA) function to accumulate the
frames in range of the motion blur over time.
There is a new `motion_blur_steps` setting in the Grease
Pencil render settings to control the accuracy of the motion
blur. This will increase the render time.
Limitations:
* When Grease Pencil is composited into the scene, we only do
it for one the current frame and don't take the motion blur into
account. This will lead to hard edges currently.
* There is no viewport motion blur. This would need an entirely
new technique that can be computed in real-time.
Pull Request: https://projects.blender.org/blender/blender/pulls/139840
This allows to reduce the waiting time caused by
shader compilation on some GPU-driver combo.
A new settings in the User Preferences make it
possible to override the default amount of worker
threads and optionally use subprocesses.
We still use only one worker thread in cases where
there is no benefit with adding more workers
(like AMD pro driver and Intel windows).
It doesn't scale as much as subprocesses for material
shader compilation but that is for other reasons
explained in #139818.
Add some heuristic to avoid too much memory usage
and / or too many stalls.
Also add some heuristic to the default number of subprocess for
the platform that shows scalling.
Historically, multithreaded compilation was prevented by the
need of context per thread inside `DRWShader` module.
Also there was no good scaling at that time. But
nowadays numbers shows different results with
good scaling with reasonable amount of threads on many
platforms.
Even if we are going for vulkan in the next release
most of the legacy hardware will still use OpenGL for
a few other releases. So it is relevant to make this
easy improvement.
See pull request for measurements.
Pull Request: https://projects.blender.org/blender/blender/pulls/139821
Removes various image filtering/mipmapping leftovers from
pre-2.80 days.
Code: removes all mipmap handling from ImBuf (which is about half of
ImBuf struct size), removes now unused "sample procedural texture
with mipmaps" code, now-unused FELINE filter, etc. The osatex
parameter to various CPU texture sampling functions is never
actually used, which means none of the mipmap code was ever executing.
User visible part: there were settings on the legacy Texture data
block (as used by Brushes etc.), under Sampling section: "MIP Map",
"Gaussian Filter", "Filter Type", "Eccentricity", "Minimum Size" --
they had no effect anywhere, so they are gone, and what remains is
only "Interpolation" and "Size".
RNA / Python API part: removes the ImageTexture RNA properties
corresponding to the above: filter_type, use_mipmap, use_mipmap_gauss,
filter_lightprobes, filter_eccentricity, use_filter_size_min.
Pull Request: https://projects.blender.org/blender/blender/pulls/139978
This commit renames the python Brush properties that end with `_tool` to
`_brush_type` (e.g. `sculpt_tool` -> `sculpt_brush_type`) to better
distinguish the property from the concept of tools in a workspace
context.
Resolves#124201
Pull Request: https://projects.blender.org/blender/blender/pulls/139909
Currently, jump to next/previous strip use page up and page down,
respectively. This seems backwards, as up should go back and down
should go forward, same as in a text editor.
This commit swaps the shortcuts for Blender default and
industry-compatible keymaps.
-----
This behaviour was introduced at the same time as the operator in c2f9cfb40a.
Pull Request: https://projects.blender.org/blender/blender/pulls/138339
Shifting to Tree view will now allow drag-drop for shape-keys.
(And also possible to create nested shape keys if we want to include
support for them in future)
With !138979, multi-select support will be implemented for shape keys.
Part of #136838
See video in PR description
Pull Request: https://projects.blender.org/blender/blender/pulls/139323
Show Top Bar Workspace items as pills (rounded on all sides) rather
than tabs (connected to region edge). This change also raises them
slightly to vertically align with other content, and adds a vertical
bar to separate the sections.
Pull Request: https://projects.blender.org/blender/blender/pulls/137070
- Navigation modes has been redefined a bit and introduced in a form of
an enum so that new ones can me implemented in the future.
Additionally switching between modes shouldn't require any additional
configurations like inverting all the axes.
Currently there are only 2 modes implemented,
but 2 more are planned and will be proposed in follow-up PRs.
Implemented modes are:
- Object: works like "Orbit" option.
but has all axes implicitly inverted
- Fly: works the same as "Free".
- "Turntable" option has been turned into "Lock Horizon".
This single option works for both normal navigation and Fly/Walk
modes now.
- Pan and Rotation axes inversion has been removed from default
configuration.
- UI has been simplified following the design from #136880.
- Zoom Invert has been removed since it looks like a duplication of
`NDOF_PANZ_INVERT`.
Ref !139343
For linked grease pencil data, layer operators are accessible right
now. Grey out them in UI by adjusting poll functions. Also disabled
the individual layer row of tree-view.`
See images in PR description
Pull Request: https://projects.blender.org/blender/blender/pulls/137946
Adds a new operator in Grease Pencil edit mode to convert between curve
types. This acts as a replacment for the `Set Curve Type` operator as
the new operator better aligns with previous workflows and artist
expectations. Specifically using a threshold to adjust how well the
resulting curves fit to the original.
It can be found in the `Stroke` > `Convert Type` menu.
This operator aims at keeping visual fidelity between the curves. When
converting to a non-poly curve type, there's a `threshold` parameter
that dictates how closley the shapes will match (a value of zero meaning
an almost perfect match, and higher values will result in less accuracy
but lower control point count).
The conversion to `Catmull-Rom` does not do an actual curve fitting.
For now, this will resample the curves and then do an adaptive
simplification of the line (using the threshold parameter)
to simulate a curve fitting.
The `Set Curve Type` operator is no longer exposed in the
`Stroke` menu.
This also adds a new `geometry::fit_curves` function.
The function will fit a selection of curves to bézier curves. The
selected curves are treated as if they were poly curves.
The `thresholds` virtual array is the error threshold distance
for each curve that the fit should be within. The size of the virtual
array is assumed to have the same size as the total number of
input curves.
The `corners` virtual array allows specific input points to be treated
as sharp corners. The resulting bezier curve will have this point and
the handles will be set to "free".
There are two fitting methods:
* **Split**: Uses a least squares solver to find the control
points (faster, but less accurate).
* **Refit**: Iteratively removes knots with the least error starting
with a dense curve (slower, more accurate fit).
Co-authored-by: Casey Bianco-Davis <caseycasey739@gmail.com>
Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/137808
With 24d08e0bae, the ability to view UVs
in the Image Editor was introduced in all modes, not just Texture Paint
and Edit Mode. This introduced a new flag that was enabled by default,
causing UVs to be displayed in any of the Image Editor modes.
While this is helpful for some workflows, it is unnecessarily
distracting for many usecases when using the Image and Mask modes of the
Image Editor. To remedy this, this PR adds various polls to ensure
that these are only shown in the Paint Mode of the Image Editor and the
UV Editor. Further thought should be put into the potential separation
between the different usecases of this editor, but that is out of scope
for now.
Pull Request: https://projects.blender.org/blender/blender/pulls/139563
Deactivate the following buttons when no node tree exists:
- Overlays (all node editors)
- Snap (all node editors)
- Gizmos (compositor only)
- Backdrop (compositor only)
Note: a node tree can exist although compositing is deactivated
(e.g. "Use Nodes" is set to False), in which case the buttons are
active.
Pull Request: https://projects.blender.org/blender/blender/pulls/139526
This reduces the search weight of the frame node because it is rarely added
through the add menu. It's much easier to add it with the F key.
By reducing its search weight, the Frame output of the Scene Time node shows up
as first result, which is more desirable.
Pull Request: https://projects.blender.org/blender/blender/pulls/139709
Added WoA support status. Up to now there hasn't been a working stack
that allows Windows+ARM GPU+Blender work well together. There are render
glitches and occasional crashes. Currently we are investigating the
issues together with Qualcomm in order to improve the situation. However
for Blender 4.5 release Vulkan support should not be expected to work.
There have een some issues detected with core vulkan that are not
visible on other platforms.
Currently VR can have suboptimal performance when using the Vulkan
backend (#138977). Jereon has run various experiments and was unable
to resolve the issue. So in the meantime work on Vulkan VR performance
has been delayed until Blender 5.0.
Since Blender 4.5 is likely to release without a fix for the VR
performance issue. This commit adds an explicit note about it to the
user preferences.
Pull Request: https://projects.blender.org/blender/blender/pulls/139519
Add ability to randomize color of each stroke for or use perlin noise
randomization during the stroke. Works similarly to grease pencil stroke
color randomization. This feature is available for all mesh color
painting modes (Sculpt Paint brush, Texture Paint and Vertex Paint)
This setting is available both as a per-brush setting and a unified
setting on the scene level. Additionally, the equivalent Grease Pencil
options have been migrated to these more generic flags and values.
Based on this [1] RCS request.
[1]: https://blender.community/c/rightclickselect/mwgbbc/
Pull Request: https://projects.blender.org/blender/blender/pulls/128953