Grease Pencil objects are not visible when using the viewport
compositor. That's because since the introduction of multi-pass
compositing, the compositor now access the combined pass written by
EEVEE, which does not include GP.
To fix this, we skip writing the EEVEE combined pass, then read the
viewport texture for the combined pass as a special case, which should
include GP.
The reported issue was that Texture Mask mapping behaves wrong (wrong
coordinates -- seemed as if it was always using `Tiled` mapping), but
the issue actually spawns to more brush features (the coordinates were
wrong not only for mask mapping but for the actual texture mapping, too,
next to randomness and offsets/angles being ignored, jitter was also not
working at all).
On the code side, for the reported issue, we can observe that
`BKE_brush_sample_masktex` relies on `UnifiedPaintSettings`
`mask_tex_mouse` to be set. Other stuff mentioned above also ends up in
`UnifiedPaintSettings`.
In regular painting (has its own modal), this gets updated in
`paint_brush_stroke_add_step` by calling `paint_brush_update` before
adding another step. This is not called when doing painting from python
(here the modal handling happens in py, usually
`bpy.ops.paint.image_paint`is executed immediately for each mousemove).
Jitter is also doing stuff in `paint_brush_stroke_add_step` -- equally
ignored from above py workflow.
So to resolve, now make sure we are calling the necessary stuff in
`paint_exec` as well.
NOTE: There was a similar case in
9aa20a0979, where we could simply move
part of the necessary code from `paint_brush_update` to
`paint_stroke_new`
NOTE: `Rake` is still ignored, depends on previous positions, cannot be
supported
Pull Request: https://projects.blender.org/blender/blender/pulls/124582
Support blocking extensions so there is a way for the maintainers of
the remote repository to notify the user if one of their installed
extensions blocked along with a reason for blocking.
Blocked extensions cannot be installed from the preferences or by
dropping a URL.
When an installed & blocked extension is found:
- An icon int the status bar shows an alert,
clicking on the icon shows the blocked extensions.
- The extensions preferences show a warning.
- The extensions & add-ons UI shows an alert icon
and "details" section shows the reason.
Details:
- Blocked & installed extensions are shown first in the installed
extensions panel.
- The internal "install" logic prevents downloading & installing
blocked extensions.
- Blocked extensions can still be downloaded & installed from disk.
- The "list" command includes an error message if any installed
extensions are blocked.
- The "server-generate" command can optionally take a configuration
file that includes the blocklist for the generated JSON.
See design #124954.
* Moves boundary initialization out of indices_init
* Change parameters for edit_data_init since all it needs is the index
* Revert change to queues to use PBVHVertRef again since the newly
refactored code will have to use int / SubdivCCGCoord / BMVert* for
neighbor processing anyways
* Reduce scope of some variables
* Reduce nested branching
Pull Request: https://projects.blender.org/blender/blender/pulls/125390
Move the shader cache to `BKE_appdir_folder_caches`, since the
temporary folder is reset on Linux on every system restart.
Manually delete shader cache files on Blender exit if they have not
been used for more than 30 days.
Pull Request: https://projects.blender.org/blender/blender/pulls/125010
Request one separate compilation batch for each GPUPass so users can
get a better sense of the compilation progress, and to better distribute
texture loading over time.
Pull Request: https://projects.blender.org/blender/blender/pulls/125012
This gives users the ability to control the size of tooltip text
separately from other text styles. This is an accessibility issue
in that users with low vision can choose to make these larger than
the working text.
Pull Request: https://projects.blender.org/blender/blender/pulls/125147
Convert an image to grease pencil strokes by tracing features.
Uses the Potrace library to generate curve on averaged b/w values of the image.
Ported from the GPv2 feature of the same name.
Pull Request: https://projects.blender.org/blender/blender/pulls/125328
Instead just compute the offsets as necessary. This avoids the need
to keep them in sync as the BMesh changes, though it requires passing
a few more arguments in the dynamic topology remeshing code.
This log is owned by SculptSession, it's a bit misleading
to store a pointer to it in the sculpt BVH tree, and having
multiple mutable pointers to objects should generally be
avoided anyway. Now just pass it to the remeshing function
which is the oinly place it was needed anyway.
VSE has three mouse cursors defined, WM_CURSOR_LEFT_HANDLE,
WM_CURSOR_RIGHT_HANDLE, and WM_CURSOR_BOTH_HANDLES that are currently
always using our default cursor format. This format works on all
platforms but does not support multiple sizes or antialiasing. This
PR makes these use custom cursors (created by Pablo Vazquez) on the
Windows platform.
Pull Request: https://projects.blender.org/blender/blender/pulls/125252
Replace the `BKE_scene_cursor` functions with member functions
of the `View3DCursor` DNA struct. This makes using the cursor's
transform simpler, especially in newer C++ code.
Pull Request: https://projects.blender.org/blender/blender/pulls/124903
When typing to search an asset and confirming with enter, the popup
should close.
Mistake in 2781725734.
Steps to reproduce:
- Enter sculpt mode with the default cube active
- Press Shift+Space to open the brush asset selector popup
- Type to search for a brush
- Press enter -- the popup didn't close as it was supposed to
Caused by parallel access to static clipboard storage: Multiple threads
could end up calling `ensure_grease_pencil_clipboard()` in parallel.
Here this resulted in a surprisingly reliable memory leak.
Use a simple mutex lock to prevent unsynchronized access.
Steps to reproduce were:
- Add Grease Pencil object
- Enter grease pencil Sculpt mode
- Select Clone brush asset
- Click in 3D Viewport
- Quit Blender (see console log for leak reports)
Pull Request: https://projects.blender.org/blender/blender/pulls/125428
The fill tool's stroke extension feature has a "radius" mode that was
implemented by just drawing filled circles at the end of strokes.
This should work by creating additional lines instead, the circles are
just indicators of the search range.
The radius mode now does a KDTree search for points inside the circles.
It generates extra extension lines and handles these in the usual way,
just like lines generated in "extension" mode.
GPv2 had an undocumented curvature feature that would also add lines to
interior points if their curvature was large enough. This is quite
obscure, not mentioned in the manual, and adds complexity. For now the
feature is not implemented, but some placeholder TODO comments have been
added.
Pull Request: https://projects.blender.org/blender/blender/pulls/125420
Add an Action Slot selector to the Action editor's header, next to the
Action selector. The selector shows all slots in the action that are
suitable for animating objects (as the Action editor itself is limited
to showing the Action of the active object).
This also considerably simplifies the 'Animation Debug' panel, as some
debugging code has been removed, as well as the display of any animation
layers. The latter can be reintroduced (if necessary) when multi-layer
animation support is added. Most importantly, it removes the
WindowManager property that was used as a hack to assign layered Actions
to objects.
API change: the RNA property `AnimData.slot` is now a pointer property
that reflects the actual slot (it used to be an enum property).
Some small changes to the UI code were necessary to make the selector
show the slot's display name (and not their internal name).
Pull Request: https://projects.blender.org/blender/blender/pulls/125416
Use actual enum types (`eAnimEdit_Context` etc) for enum values in the
`bAnimContext` struct.
This commit also splits the `mode` field into `dopesheet_mode` and
`grapheditor_mode`, so that their values are clearly differentiated.
Before you'd have to check `spacetype` to know how to interpret this
field (but that wasn't described either). You still have to check that
field to know which one of the two you need to look at, but at least
it's now clear what values can be expected there.
No functional changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/125423
Using the clone brush without previously having copied any stroke points
to clone would crash.
Steps to reproduce were:
- Add Grease Pencil object
- Enter grease pencil Sculpt mode
- Select Clone brush asset
- Click in 3D Viewport
Note that there's also a memory leak appearing now, will submit a
separate fix.
Pull Request: https://projects.blender.org/blender/blender/pulls/125425
The GPU compositor transforms are off by half a pixel in some cases.
That's because the realization shader was to perform transforms, and it
includes logic to move images by half a pixel if the domain and image
had different even/odd sizes. To fix this, we only move by half a pixel
if we are doing realization, while transforms are left as is.
Context menu operators to assign/change/remove shortcuts for brush
assets were missing. Reason being that the keymap to add them to and
look them up in was not detected correctly.
Part of #124418.
In the Action editor's channel list:
- always show the 'slot' icon on the left, to indicate the channel
represents a slot (icon design pending #123372), and
- show the slot's ID type icon on the right.
This should help reduce the confusion between "the ID name" and "the slot
name that animates the ID".
Pull Request: https://projects.blender.org/blender/blender/pulls/125314
This is only visible when text color has transparency or is fully
transparent. Desired behavior is that the outline would only be
"outside" the actual text.
Pull Request: https://projects.blender.org/blender/blender/pulls/125372