Commit Graph

1348 Commits

Author SHA1 Message Date
Hans Goudey
5deb4b66ed Cleanup: Avoid copying strings in compositor file output node
StringRef or StringRefNull should be used unless the string actually
needs to be copied.

Pull Request: https://projects.blender.org/blender/blender/pulls/144156
2025-08-08 13:36:41 +02:00
Campbell Barton
53cae68ee8 Cleanup: hyphenate the term data-blocks in strings/doc-strings 2025-08-08 08:47:13 +10:00
Campbell Barton
cccc2c77c5 Cleanup: consistent for C-style comment blocks 2025-08-08 07:37:33 +10:00
Omar Emara
68dc278fe5 Compositor: Redesign File Output node
This patch redesigns the File Output node to provide better UX and UI.
This is mainly achieved by allowing the user to create inputs by
dragging into an Extend socket and adjust existing inputs using the
familiar UI list design available in Blender. Additionally, various UI
changes were done:

- The Use Node Format option was renamed to Override Node Format for
  clarity.
- Socket types are now fixed and do not change as new links are made,
  allowing users to specify the exact output type and employ implicit
  conversion if needed.
- The distinction between images and Multi-Layer EXR was made clearer.
- Final output paths are drawn in the UI to remove guess work.
- The Base Path was split into a Directory and a File Name.
- Panels were added to group options, include a panel for the node
  format, items, and item formats.

Pull Request: https://projects.blender.org/blender/blender/pulls/141091
2025-08-07 14:46:34 +02:00
Omar Emara
d84d779661 Compositor: Improve unsupported passes warning
This patch improves warnings displayed when the user attempts to use
passes in render engines other than EEVEE with the viewport compositor.

Previously, an error icon was always displayed if the viewport
compositor was in use as well as a viewport overlay text. This error
existed even when the render engine was set to EEVEE and even if the
passes are not actually used, which was always confusing for users.

This patch improves this by only displaying the error when a pass is
actually used and when a non-EEVEE render engine is used.

This is implemented internally as an extra info callback for the node.
And the compositor_unsupported_message member hack was removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/144005
2025-08-07 12:18:06 +02:00
Omar Emara
74e23b1c36 Fix: Assert in Keying node with no input
The Keying node asserts if its input is single value or not connected.
This is due to a typo when getting the input, where the output was used
instead.
2025-08-07 12:14:36 +03:00
Omar Emara
28e59d3e36 Fix #144070: Keying morphology can not do erosion
The morphology operations in the Keying node in the compositor can no
longer do erosion by using negative Feather and Dilate inputs. Clamping
to positive values was accidentally done when porting options to inputs,
so this patch fixes this by removing the clamping.
2025-08-07 11:56:10 +03:00
Habib Gahbiche
0b77aec780 Compositor: remove preview for File Output node
Output nodes typically don't have a preview (see also ed13dad0). Also,
it is not clear what should be shown as a preview, especially when the
file output node can have an arbitrary number of inputs of different
types.

This commit removes the preview for the File Output node.

Pull Request: https://projects.blender.org/blender/blender/pulls/144029
2025-08-06 17:15:23 +02:00
Omar Emara
c3688f7bb7 Fix #136939: Translation is ignored in some nodes
The compositor ignores translation in certain nodes like Corner Pin.
Users find this unexpected as adjusting the translation of the input has
no effect on the output. The only alternative logical thing to do if
translation exists is to clip the image, which this patch do.

This affects the following nodes:

- File Output.
- Map UV (Image input).
- Corner Pin.
- Plane Track Deform.
- Bokeh Blur (Bokeh Kernel input).

Pull Request: https://projects.blender.org/blender/blender/pulls/144049
2025-08-06 13:46:34 +02:00
Omar Emara
77bb71d8da Fix: Wrong structure type for Transform node output
The output of the Transform node in the compositor has a single value
structure type, while it should be dynamic.
2025-08-06 12:33:44 +03:00
Omar Emara
32acd9dfa5 Fix #143925: File Output writes single values for Multi-Layer EXR
The File Output node writes single value images for Multi-Layer EXR,
while it should skip such cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/143990
2025-08-05 16:18:24 +02:00
Benjamin Beilharz
570f44a059 Compositor: Extension modes for corner pin mode
This commit introduces the extension modes to the corner pin node and
further streamlines the node properties by wrapping all props in the node
storage. Therefore, the interpolation mode has been removed from the
custom properties of the node and moved into the node storage.

Right now, the extension modes only work for non-anisotropic filtering.

Pull Request: https://projects.blender.org/blender/blender/pulls/141570
2025-08-05 11:12:54 +02:00
Omar Emara
264a316984 Fix #141173: Inpaint node inconsistent on GPU
The Inpaint node produces inconsistent results across different GPUs,
where it produces different results on Intel Windows GPU platforms. This
is due to a mismatch between the precision declared for the shader and
that of the allocated textures. To fix this, we make sure the shader
uses the same precision as the allocates results.

Pull Request: https://projects.blender.org/blender/blender/pulls/143793
2025-08-05 09:45:34 +02:00
Tenkai Raiko
de9b24abad Fix: Map UV node does not work with single values
The Map UV node does not work when the UV input is a single value, where
it is expected that the output will also be single value. This was
simply not implemented for GPU, so this patch does that.

Pull Request: https://projects.blender.org/blender/blender/pulls/143096
2025-08-05 08:09:25 +02:00
Benjamin Beilharz
53832755ae Compositor: Adds extension modes to map UV node
This commit introduces the extension modes for the map UV node. The
drop-down for the extension modes is only shown if the interpolation
mode is not set to anisotropic. This is due to extension modes currently
not being supported for the anisotropic filtering.

Pull Request: https://projects.blender.org/blender/blender/pulls/143415
2025-08-01 11:00:24 +02:00
Jacques Lucke
890ab23e0d Refactor: Nodes: return pointer instead of reference from in/output_by_identifier
This makes it possible to use these methods in cases where it's not guaranteed
that the identifier exists on a node.
2025-07-31 21:58:58 +02:00
Benjamin Beilharz
481c524734 Compositor: Add extension modes to displacement node
The node uses anisotropic sampling (which is currently not supported for the
extension mode), so extension modes are only rendered in the node if any
other interpolation method, but anisotropic is selected.

Pull Request: https://projects.blender.org/blender/blender/pulls/143367
2025-07-31 10:51:59 +02:00
Benjamin Beilharz
ea94c0be22 Compositor: Implements extension modes for rotate node
This commit introduces the `ExtensionMode` for the rotation node and
changes the node to use a node storage instead of node properties.

Pull Request: https://projects.blender.org/blender/blender/pulls/143357
2025-07-31 10:29:14 +02:00
Campbell Barton
f281f5a500 Cleanup: header grouping
Group includes, this is mostly being done already but had become mixed
up in some areas.
2025-07-30 14:22:06 +10:00
Kace
f955eae545 Compositor: Improve File Output node UI
Makes the File Output node panel similar to the Render Output node.
Instead of a dropdown, color management enum property expanded in UI.
Color management settings are now moved inside a panel.
Add/remove file subpapth buttons moved to the side of UIList.

Resolves #133501

See images in PR description for visual changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/133747
2025-07-29 09:55:48 +02:00
Benjamin Beilharz
fa2062ee96 Refactor: Renames the zero extension mode to clip
This commit renames the `ExtensionMode`'s `Zero` case to `Clip`.

Pull Request: https://projects.blender.org/blender/blender/pulls/143354
2025-07-28 10:45:12 +02:00
Omar Emara
6f426f498a Refactor: Move pass name aliasing to context implementation
This patch moves the rules that alias Image to Combined for pass names
to the context implementations. This is because this only makes sense
for contexts that deal with passes, while it wouldn't make much sense
for other possible contexts like VSE modifiers.

Pull Request: https://projects.blender.org/blender/blender/pulls/143419
2025-07-28 10:00:20 +02:00
Benjamin Beilharz
4bffd43adc Cleanup: Adds missing static casts
This commit adds missing static casts for the interpolation and
extension mode lookups.

Pull Request: https://projects.blender.org/blender/blender/pulls/143418
2025-07-28 09:11:21 +02:00
Campbell Barton
f6af0aae7c Cleanup: use UTF8 string functions for tracking members
Use UTF8 aware functions unless raw bytes are expected.
2025-07-27 16:39:57 +10:00
Campbell Barton
e93e9db6b7 Cleanup: UTF8 string functions for color-space & imbuf strings
Use UTF8 aware functions unless raw bytes are expected.
2025-07-27 04:34:04 +00:00
Campbell Barton
649b89781e Cleanup: ensure UTF8 string copy for DNA & screen data
Use `BLI_strncpy_utf8` & `BLI_snprintf_utf8` for fixed size buffers in
DNA and screen data structures such as panels, menus & operators.

This could be considered a fix as copying a UTF8 string into a smaller
buffer without proper truncation can create an invalid UTF8 sequence.
However identifying which of these users are likely to run into would
be time consuming and not especially useful.
2025-07-26 12:33:15 +00:00
Omar Emara
2582630702 Refactor: Use Bounds for compositing region
This patch uses the new C++ Bounds structure for the composition region
returned by the compositor context.

Pull Request: https://projects.blender.org/blender/blender/pulls/143199
2025-07-25 15:40:45 +02:00
Omar Emara
8cb7aafae2 Refactor: Use generic name for compositor context IO methods
This patch renames some IO methods in the compositor context to be more
generic. This is in preparation for more generic use of the compositor.

Pull Request: https://projects.blender.org/blender/blender/pulls/143193
2025-07-25 14:40:17 +02:00
Habib Gahbiche
c7421e197a Fix #143156: "RGB to BW" node not found in link drag search
The node is stil specific to the compositor and is not shared with its
Shader counterpart yet, so `ntype.gather_link_search_ops;` should not
be `nullptr`.

Pull Request: https://projects.blender.org/blender/blender/pulls/143174
2025-07-25 12:25:18 +02:00
Mohamed Hassan
c1f52b8e91 Compositor: Improve Fog Glow glare realism
This patch improves the realism of the Fog Glow mode of the Glare node
based on the Photopic model described in:

  Physically-Based Glare Effects for Digital Images" by G. Spencer, P.
  Shirley, K. Zimmerman, and D. P. Greenberg.

This is a breaking change that can't be versioned, but it is worth it
for the superior realism of the new model.

Pull Request: https://projects.blender.org/blender/blender/pulls/140646
2025-07-25 10:09:32 +02:00
Omar Emara
e34e6373b6 Compositor: Replace Composite node with Group Output node
This patch replaces the Composite node with the Group Output node as the
primary compositor output. The old node was removed and versioned. This
was done for consistency with Geometry Nodes and in preparation for more
generic use of the compositor in VSE modifiers, layered compositing, NPR
multi-stage compositing, and more.

The Group Output node relies on the node tree interface, so we now have
a default interface of a single input and a single output. For now, only
the first input is considered while the rest are ignored, just like the
Geometry Nodes design. Furthermore, the input is required to be of type
color. Warnings and errors are issues if any of those are not met, also
similar to Geometry Nodes.

This introduces a new limitation: Composite outputs can no longer exist
in node groups, since they obviously then act as their respective group
outputs.

A refactor for the compositor scheduler is needed to simplify the logic
after this change, but this will be done in a separate patch.

Pull Request: https://projects.blender.org/blender/blender/pulls/142232
2025-07-24 13:41:56 +02:00
Omar Emara
1ef8822342 Cleanup: Remove confusing statement from Alpha Over tooltip 2025-07-23 12:37:13 +03:00
Campbell Barton
72a88de9ef Cleanup: use colon after the doxygen params argument & doxygen comments 2025-07-22 23:25:02 +00:00
Tenkai Raiko
4ee4cd8451 Fix: Link dragging Falloff Size doesn't work
Link dragging the Falloff Size input from the Dilate node doesn't work
due to a missing make_available callback, which this patch implements.

Pull Request: https://projects.blender.org/blender/blender/pulls/142829
2025-07-22 15:09:56 +02:00
Guillermo Venegas
230813f2ab Cleanup: UI: Remove redundant namespace prefixes
A follow-up from recent UI refactors.

Pull Request: https://projects.blender.org/blender/blender/pulls/141920
2025-07-21 15:08:12 +02:00
Omar Emara
d18c9f38e0 Cleanup: Remove unused Viewer node ID member
The ID member of the Viewer node was assigned the viewer image ID. But
that member is not actually used by node execution code, so it can be
removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/142356
2025-07-18 16:18:53 +02:00
Omar Emara
a565e96f6c Compositor: Support Menu socket and Menu Switch node
This patch adds support for menu socket in the compositor as well as
the Menu Switch node from Geometry Nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/141792
2025-07-18 11:08:30 +02:00
Habib Gahbiche
67ffbcd0ee UI: Rename "Z" pass to "Depth"
This is a UI change only. The Python API still uses `use_pass_z` to
preserve forward and backward compatibility.

The compositor still uses "Z" to refer to depth in the Z-Combine Node.
This is addressed separately in
https://projects.blender.org/blender/blender/pulls/141676

Pull Request: https://projects.blender.org/blender/blender/pulls/141675
2025-07-18 10:27:29 +02:00
Omar Emara
a2cba25b14 Fix #141810: Cryptomatte crashes with image sequence
The Cryptomatte node crashes when the source is an image sequence with a
changing structure. That's because the code that identifies the EXR layer
where the Cryptomatte layers lives is not thread safe, as the render
result might change while looping over the layers. To fix this, we
acquire the render result while looping.

Pull Request: https://projects.blender.org/blender/blender/pulls/141898
2025-07-16 09:35:56 +02:00
Habib Gahbiche
4ca460d23b Compositor: increase default node size to improve readability
Increase the default width of some nodes by around 10% or less in order
to improve readability of the default parameters or labels under
default zoom level and default UI scale.

The following nodes are affected:
- Anti-aliasing
- Bokeh Blur
- Bokeh Image
- Chroma Key
- Color Key
- Color Spill
- Convert Colorspace
- Disatnace Key
- Double Edge Mask
- Image
- Keying
- Kuwahara
- Voronoi Texture
- Noise Texture
- Brick Texture

See PR for screenshot examples.

Pull Request: https://projects.blender.org/blender/blender/pulls/141662
2025-07-15 12:27:00 +02:00
Guillermo Venegas
1a247fbaa8 Refactor: WM: Make OperatorCallContext an enum class, move to namespace
This allows forward declaring `OpCallContext`, avoiding the
transitive include `WM_Types.hh` in `UI_interface_layout.hh`

Pull Request: https://projects.blender.org/blender/blender/pulls/141804
2025-07-15 03:08:04 +02:00
Habib Gahbiche
b35971ad08 Compositor: Rename "Z" to "Depth" in Z Combine Node
Node:
- Rename "Z Combine" node to "Depth Combine"

Sockets:
- First input "Image" -> "A"
- Second input "Image" -> "B"
- First Z -> "Depth A"
- Second Z -> "Depth B"
- Output Image -> "Result"
- Output Z -> "Depth"

This is a breaking change for the Python API

Pull Request: https://projects.blender.org/blender/blender/pulls/141676
2025-07-11 11:58:29 +02:00
Mohamed Hassan
148eb703e1 Compositor: Integrate Sun Beams node into Glare node
This patch integrate the Sun Beams node into the Glare node as a new
mode. This is done because the Sun Beams node is mostly useless on its
own because it does no thresholding or addition, making it very hard to
use. On the other hand, the Glare node already does thresholding and
addition, so Sun Beams fits perfectly in it.

Pull Request: https://projects.blender.org/blender/blender/pulls/141424
2025-07-10 10:43:05 +02:00
Campbell Barton
d3a8bfc83a Cleanup: resolve missing declaration warning 2025-07-09 15:58:29 +10:00
Omar Emara
0a152ddddf Compositor: Add Djsoint and Conjoint Over operations
This patch adds the Disjoint and Conjoint Over operations to the Alpha
Over node.

Pull Request: https://projects.blender.org/blender/blender/pulls/141439
2025-07-09 06:59:55 +02:00
Omar Emara
44f86dc7ed Merge branch 'blender-v4.5-release' 2025-07-08 12:47:15 +03:00
Omar Emara
1dbeeacc80 Fix: Kuwahara Size can be negative
The Kuwahara node allows negative size which this should not be the
case.
2025-07-08 12:45:28 +03:00
Benjamin Beilharz
b709984df6 Compositor: Add Extension Mode for Transform node
This commit introduces the extension modes to the transform node and
further streamlines the node properties by wrapping all props in a node
storage. Therefore, the interpolation mode has been removed from the
custom properties of the node and moved into the node storage.

Pull Request: https://projects.blender.org/blender/blender/pulls/141487
2025-07-08 11:34:29 +02:00
Benjamin Beilharz
00ed2030cb Compositor: Add Extension Mode for Scale node
This commit introduces Extension Mode for the Scale node.

Pull Request: https://projects.blender.org/blender/blender/pulls/141485
2025-07-08 11:07:28 +02:00
Bastien Montagne
a345b83f1a Merge branch 'blender-v4.5-release' 2025-07-07 15:53:53 +02:00