Commit Graph

5511 Commits

Author SHA1 Message Date
Jacques Lucke
802addc180 Geometry Nodes: add initial links to new closure zone
This improves the user experience, because the data-flow is not interrupted
temporarily. The automatically inserted links are exactly the same that the
Evaluate Closure node uses when no closure is connected.

Pull Request: https://projects.blender.org/blender/blender/pulls/138125
2025-04-29 13:56:53 +02:00
Jacques Lucke
1f0eeea2b2 Fix #138084: closure and bundles show up in UI even if disabled 2025-04-29 11:40:23 +02:00
Omar Emara
682ab26994 Compositor: Remove Map UV node Alpha option
This patch removes the Alpha option in the Map UV node. That's because
it currently only has a marginal effect on the result of the node and is
unnoticeable to the user.

The alpha option was supposed to darken the edges of the object that has
the UVs by attenuating the result according to the Laplacian of UV
coordinates. But the attenuation factor was too small to be noticeable.
This option was probably added when UV passes had no anti-aliased alpha
and was therefore needed to smooth the transition at the edges probably.

We asked for user feedback and got feedback from the studio, and it seem
the option is mostly unused.

Pull Request: https://projects.blender.org/blender/blender/pulls/138116
2025-04-29 10:56:33 +02:00
Omar Emara
ddc0f9460d Compositor: Turn Lens Distortion options to inputs
This patch turns the options of the Lens Distortion node into inputs.

The Projector option was turned into an enum between two options.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/138113
2025-04-29 09:54:12 +02:00
илья _
c00cc2312b Cleanup: Geometry Nodes: Avoid copying of input arguments in some cases
There are two way to access input data in geometry nodes: `get_input` and `extract_input`.
They semantially the same as copy and move constructor. Since sometimes we can access
input multiple times in arbitrary context, we can not always use move constructor. But if
execution flow is trivial then `extract_input` should be preferred.

Pull Request: https://projects.blender.org/blender/blender/pulls/138057
2025-04-28 18:53:53 +02:00
YimingWu
b05b0f413c Grease Pencil: Add separate render pass
This PR adds a separate "Grease Pencil" render pass. Once
the "Grease Pencil" option is checked in the passes list, the
Grease Pencil engine will render to a new render pass for various
composition uses.

Notes:

- Occluded Grease Pencil geometry is not rendered.
- In most cases, using an "Alpha Over" with the rest will result
  in the same render as the "Combined" output. The exception is
  when there are Grease Pencil layers that use a blending mode
  that changes the chromaticity of the alpha channel.

Pull Request: https://projects.blender.org/blender/blender/pulls/137638
2025-04-28 12:59:54 +02:00
Omar Emara
39aa73628d Compositor: Turn Color Correction options to inputs
This patch turns the options of the Color Correction node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/138003
2025-04-28 12:19:42 +02:00
Guillermo Venegas
8e499caded Refactor: UI: Replace uiLayoutColumnWithHeading with class method uiLayout::column
This converts the public `uiLayoutColumnWithHeading` function to an
object oriented API (an `uiLayout::column` overloaded version), matching
the python API.

Like the original `uiLayout::column`, this overloaded version now also
returns an `uiLayout` reference instead of a pointer. New calls to this
method should use references too.

Part of: #117604

Pull Request: https://projects.blender.org/blender/blender/pulls/138056
2025-04-27 17:09:52 +02:00
Guillermo Venegas
2d896877d1 Refactor: UI: Replace uiLayoutColumn with class method uiLayout::column
This converts the public `uiLayoutColumn` function to an object oriented
API (`uiLayout::column`), matching the python API.
This reduces the difference between the C++ API with the python version,
its also helps while converting code from python to C++ code (or vice-versa),
making it almost seamless.

`uiLayout::column` now returns an `uiLayout` reference instead of a pointer.
New calls to this method should use references too.

Pull Request: https://projects.blender.org/blender/blender/pulls/138034
2025-04-26 21:07:34 +02:00
Campbell Barton
c90e8bae0b Cleanup: spelling in comments & replace some use of single quotes
Previously spell checker ignored text in single quotes however this
meant incorrect spelling was ignored in text where it shouldn't have
been.

In cases single quotes were used for literal strings
(such as variables, code & compiler flags),
replace these with back-ticks.

In cases they were used for UI labels,
replace these with double quotes.

In cases they were used to reference symbols,
replace them with doxygens symbol link syntax (leading hash).

Apply some spelling corrections & tweaks (for check_spelling_* targets).
2025-04-26 11:17:13 +00:00
Guillermo Venegas
90644b30b2 Refactor: UI: Replace uiLayoutRow with class method uiLayout::row
This converts the public `uiLayoutRow` function to an object oriented
API (`uiLayout::row`), matching the python API.
This reduces the difference between the C++ API with the python version,
its also helps while converting code from python to C++ code (or vice-versa),
making it almost seamless.

`uiLayout::row` now returns an `uiLayout` reference instead of a pointer.
New calls to this method should use references too.

Part of: #117604

Pull Request: https://projects.blender.org/blender/blender/pulls/137979
2025-04-25 19:45:25 +02:00
Bastien Montagne
6231267d86 Add missing header in compositing node code after recent change.
Recent clang compilers do not like types that are not fully defined in
the current unit...
2025-04-25 18:30:14 +02:00
Omar Emara
7066a8fdb8 Compositor: Support link search for Glare node
This patch supports link search the glare node types, such that users
can add specific effects like Bloom quickly.

Pull Request: https://projects.blender.org/blender/blender/pulls/137988
2025-04-25 17:20:45 +02:00
Hans Goudey
0f72fffac3 UI: Clarify Boolean solver descriptions/names and make consistent
Use the same solver names and descriptions for the geometry node,
the modifier, the sculpt trim tool, and the edit mesh intersect operator.
Also clarify the descriptions, some of which used to say that the float
solver had the best performance which isn't true anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/137922
2025-04-24 15:06:26 +02:00
Omar Emara
ad49181f90 Compositor: Turn Plane Track Deform options to inputs
This patch turns the options of the Plane Track Deform node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137949
2025-04-24 12:47:15 +02:00
Omar Emara
39b8d4b582 Cleanup: Mark NodeChroma members as deprecated 2025-04-24 10:08:43 +02:00
Omar Emara
290c015a75 Compositor: Turn Stabilize node options to inputs
This patch turns the options of the Stabilize node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137911
2025-04-24 09:34:30 +02:00
Hans Goudey
8db322f1f5 Fix #137902: Manifold boolean modifier solver doubles object transform
The object to world transform was applied to the result (which was
meant to be in world space), rather than the inverse. However, the
processing of transforms is more complicated than necessary. Instead
of passing around a separate "target transform" that's meant to be used
inverted after the boolean operation, just make the input transforms
transform the input meshes into the desired transform space of the
output (object-local space for the modifier).

Pull Request: https://projects.blender.org/blender/blender/pulls/137919
2025-04-23 20:37:53 +02:00
Omar Emara
f4e46b3fdd Compositor: Turn ID Mask node options to inputs
This patch turns the options of the ID Mask node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137905
2025-04-23 16:31:27 +02:00
Omar Emara
8c616a8a00 Compositor: Turn Keying node options to inputs
This patch turns the options of the Keying node into inputs.

In the process, some options were renamed for clarity and consistency
with other nodes.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137900
2025-04-23 15:33:22 +02:00
Hans Goudey
d2ee1224a3 Cleanup: Use slightly larger inline buffer for per-vertex stack array 2025-04-23 09:13:39 -04:00
Howard Trickey
dd559259d8 Modeling: Add a new boolean solver based on the Manifold library.
Adds the 'manifold' solver option to the Boolean geo node and to
the Boolean modifier. This solver is about as fast, or faster,
than the current float solver, and is robust against floating
point issues like the Exact solver. But currently it only
works on mesh arguments that are strictly manifold.

See https://projects.blender.org/blender/blender/issues/120182
for many more details.
2025-04-22 21:23:37 -04:00
Omar Emara
8bb1ebb5f7 Compositor: Turn Keying Screen options to inputs
This patch turns the options of the Keying Screen node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137851
2025-04-22 15:57:46 +02:00
Omar Emara
730cb40f4c Compositor: Turn Color Spill options to inputs
This patch turns the options of the Color Spill node into inputs.

In the process, the Ratio option was renamed to Limit Strength, the
unspill option was renamed to Spill Strength.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137848
2025-04-22 14:51:26 +02:00
Brecht Van Lommel
fb2ba20b67 Refactor: Use more typed MEM_calloc<> and MEM_malloc<>
Pull Request: https://projects.blender.org/blender/blender/pulls/137822
2025-04-22 11:22:18 +02:00
Omar Emara
5e93b6a2cd Compositor: Turn Luminance Key options to inputs
This patch turns the options of the Luminance Key node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137823
2025-04-22 09:09:51 +02:00
Omar Emara
d791ea7cc2 Compositor: Turn Distance Key options to inputs
This patch turns the options of the Distance Key node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137817
2025-04-21 19:28:57 +02:00
Brecht Van Lommel
388a21e260 Refactor: Eliminate various void pointers passed to MEM_freeN
It's safer to pass a type so that it can be checked if delete should be
used instead. Also changes a few void pointer casts to const_cast so that
if the data becomes typed it's an error.

Pull Request: https://projects.blender.org/blender/blender/pulls/137404
2025-04-21 17:59:41 +02:00
Brecht Van Lommel
637c6497e9 Refactor: Use more typed MEM_calloc<>, avoid unnecessary size_t cast
Handle some cases that were missed in previous refactor. And eliminate
unnecessary size_t casts as these could hide issues.

Pull Request: https://projects.blender.org/blender/blender/pulls/137404
2025-04-21 17:59:41 +02:00
Omar Emara
3c9f33ad07 Compositor: Turn Difference Key options to inputs
This patch turns the options of the Color Key node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137816
2025-04-21 17:59:24 +02:00
Omar Emara
615e7f079a Compositor: Use a more conservative execution preset
Use a SomeSpanOrSingle execution preset for recently adjusted nodes to
reduce binary size.
2025-04-21 17:15:08 +02:00
Omar Emara
fa7d58ab4c Compositor: Turn Color Key options to inputs
This patch turns the options of the Color Key node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137815
2025-04-21 16:40:17 +02:00
Omar Emara
4f3413ff80 Compositor: Turn Chroma Key options to inputs
This patch turns the options of the Chroma Key node into inputs.

In the process, the minimum and maximum angles were renamed to Minimum
and Maximum for consistency with other matte nodes.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137812
2025-04-21 15:28:37 +02:00
Omar Emara
89b268bf0c Compositor: Turn Channel Key options to inputs
This patch turns the options of the Channel Key node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137806
2025-04-21 14:02:15 +02:00
Hans Goudey
bffc3f824e Fix #137163: Curve to points can ignore instances in input
Mistake in 1f680c3859

Fix that by moving the grease pencil processing into the existing
`modify_geometry_sets` loops instead. And then make a few small
changes to reduce the amount of boilerplate lines that introduces.

Pull Request: https://projects.blender.org/blender/blender/pulls/137732
2025-04-18 19:27:36 +02:00
Omar Emara
e115467f8a Compositor: Turn Vector Blur node options to inputs
This patch turns the options of the Vector Blur node into inputs.

In the process, the factor input was renamed to Shutter and was remapped
to match the shutter in Cycles/EEVEE.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137725
2025-04-18 15:09:27 +02:00
Omar Emara
54a8ab9a97 Compositor: Turn Anti-Alias node options into inputs
This patch turns the options of the Anti-Alias node into inputs.

In the process, the [0, 1] limit of the Contrast Limit input was lifted
to allow normalized arbitrary positive limits.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137717
2025-04-18 12:48:08 +02:00
Falk David
69a722cee5 Geometry Nodes: Add Grease Pencil layer name search
This makes it possible to search layer names in the
`Named Layer Selection` node as well as boolean
modifier inputs that are marked as a `Layer Selection`.

The layer selection UI is slightly updated:
* Use a slightly larger default width for the
   `Named Layer Selection` node.
* Use the layer icon in the field that search for layer names.
* Use `Layer` placeholder string

Pull Request: https://projects.blender.org/blender/blender/pulls/137273
2025-04-18 12:35:49 +02:00
Jacques Lucke
826abf2ddc Geometry Nodes: support creating closure with correct interface using link-drag-search
This significantly simplifies creating closures a specific Evaluate Closure node,
because one does not have to create all the inputs and outputs manually.

Pull Request: https://projects.blender.org/blender/blender/pulls/137687
2025-04-18 11:10:45 +02:00
Jacques Lucke
b6342a7e94 Cleanup: simplify allocating buffers for a CPPType
This reduces verbosity when using `LinearAllocator` or `ResourceScope` to
allocate values for a `CPPType`. Now, this is simplified and one also does not
have to manually add a destructor call anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/137685
2025-04-17 22:01:07 +02:00
Jacques Lucke
82116aca2f Geometry Nodes: support adding zones with link-drag-search
Previously, it was not possible to add any of the existing zones using
link-drag-search, but only using normal search of the Add menu.

For most zones the intended behavior was fairly straight forward. Just for For
Each Element zone is a bit special, because it has two output geometries which
have different meaning.

I also had to update the link-drag-search a bit to remove the limitation that
only a single node can be added.

Pull Request: https://projects.blender.org/blender/blender/pulls/137684
2025-04-17 21:14:49 +02:00
Jacques Lucke
7988fc631b Cleanup: BLI: use IndexMask forward declaration in CPPType
This avoids recursive dependencies when we want to make it easier to
allocate `CPPType` values with e.g. `LinearAllocator` efficiently.

Pull Request: https://projects.blender.org/blender/blender/pulls/137678
2025-04-17 20:41:53 +02:00
Hans Goudey
f19f260ca8 Nodes: Align inputs and outputs on some function nodes
Adjust 9 rotation and matrix nodes.
In some cases this helps to clarify the node's purpose.

Pull Request: https://projects.blender.org/blender/blender/pulls/137672
2025-04-17 17:17:19 +02:00
Omar Emara
24379b8243 Compositor: Turn Denoise node options into inputs
This patch turns the options of the Denoise node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137669
2025-04-17 16:39:11 +02:00
Hans Goudey
134ba08bdf Geometry Nodes: Align inputs and outputs on three nodes
- Scale Elements
- Scale Instances
- Set Grease Pencil Color

These were missed in 7e4d50f1db
2025-04-17 10:11:03 -04:00
Hans Goudey
0852c7b5ee Fix #137600: Curve to points node anonymous attribute outputs broken
Mistake in fe52284be9.
The attribute filter created by the geoemtry nodes evaluation system
doesn't work in this case because the the conversion from curves to
points is internal to the node, just an implementation detail.

Pull Request: https://projects.blender.org/blender/blender/pulls/137614
2025-04-17 14:35:24 +02:00
Cartesian Caramel
3d1b6f53f3 Geometry Nodes: new Instance Bounds Node
This adds a new Instance Bounds nodes which provides an easy and
efficient way to get the bounding box of each instance.

Nested instances or not taken into account to compute the bounding
box. That would result in a major performance degredation because
one would have to basically realize all instances to do that.

Also see #135933 for some examples.

Pull Request: https://projects.blender.org/blender/blender/pulls/135933
2025-04-17 13:34:26 +02:00
Omar Emara
96761b8df2 Compositor: Turn Despeckle node options into inputs
This patch turns the options of the Despeckle node into inputs.

Reference #137223.

Pull Request: https://projects.blender.org/blender/blender/pulls/137656
2025-04-17 13:21:36 +02:00
Omar Emara
520afd8998 Fix #137654: Cryptomatte only works with first layer
The Cryptomatte node only works with the first view layer in a setup
where a view later is called ViewLayer and another called ViewLayer.001.
This is because the code used a prefix check to match the view layer to
the Cryptomatte type name, and since ViewLayer is a prefix of the other
ViewLayer.001, the check always matches the first ViewLayer.

To fix this, we just remove that guard condition and rely on later
checks.

Pull Request: https://projects.blender.org/blender/blender/pulls/137659
2025-04-17 13:15:34 +02:00
Jacques Lucke
f442c86197 Depsgraph: improve type safety when getting evaluated or original ID
The goal here is to avoid having to cast to and from `ID` when getting the
evaluated or original ID using the depsgraph API, which is often verbose and not
type safe. To solve this, there are now `DEG_get_original` and
`DEG_get_evaluated` methods which are templated on the type and use a new
`is_ID_v` static type check to make sure it's only used with valid types.

This allows removing quite some verbosity on all the call sites. I also removed
`DEG_get_original_object`, because that does not have to be a special case
anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/137629
2025-04-17 13:09:20 +02:00