Commit Graph

4862 Commits

Author SHA1 Message Date
Pratik Borhade
d2c38d3fdc Fix #126535: Missing gamma socket subtype when grouped
When the gamma node is selected and grouped, the gamma socket has
missing float subtype, this is due to the wrong value in `node_declare`.

Pull Request: https://projects.blender.org/blender/blender/pulls/126679
2024-08-26 13:07:36 +02:00
Campbell Barton
bfd9b4dcc8 Cleanup: use "r_" prefixed return arguments 2024-08-23 13:09:20 +10:00
Campbell Barton
07b11206eb Cleanup: sort cmake file lists 2024-08-23 10:19:53 +10:00
Lleu Yang
166c921a44 UI: Add Frequency unit
This adds the unit of frequency Hertz (Hz) and Kilohertz (kHz) for
expressing pitch of a sound.

This will be used for the ongoing Sample Sound node in #122228.

Pull Request: https://projects.blender.org/blender/blender/pulls/125915
2024-08-22 17:05:48 +02:00
Omar Emara
997ab86906 Compositor: Add Composite node for new CPU compositor
This patch implements the Composite node for the new CPU compositor.
This is essentially equivalent to the Viewer node commit.
2024-08-22 14:48:52 +03:00
Alaska
16bf67cf37 Fix: Outdated tooltip on Principled BSDF
Ever since Blender 4.0 when the Principled BSDF was updated to
generally match the OpenPBR standard, it hadn't supported negative
specular ansiostropy.

Update the Principled BSDF tooltip to match this change.

Pull Request: https://projects.blender.org/blender/blender/pulls/126644
2024-08-22 13:00:24 +02:00
Iliya Katueshenock
93546768ba Fix #126595: Group ID in Fill Curve Evaluate inconsistantly
Fix typo from 90de0368cd.
The wrong field-specifier of the socket was used.

Pull Request: https://projects.blender.org/blender/blender/pulls/126611
2024-08-21 23:31:24 +02:00
Iliya Katueshenock
1b67be14c6 Cleanup: BKE: Nodes: Functions renaming
Use snake style naming for all the kernel nodes functions.
Omit kernel prefix in the names since of the using namespace.
Use full forms of the terms
('iter' -> 'iterator', 'ntree' -> 'node_tree', 'rem' -> 'remove', ...).

Pull Request: https://projects.blender.org/blender/blender/pulls/126416
2024-08-19 20:27:37 +02:00
Omar Emara
5930e0404a Compositor: Support Image node in new CPU compositor
This patch supports the Image node in the new CPU compositor.
2024-08-19 18:38:50 +03:00
Omar Emara
5e88a1466c Compositor: Support Viewer node in new CPU compositor
This patch supports the viewer node in the new CPU compositor. To do
that, the context viewer output mechanism was refactored to allow CPU
storage by utilizing the result class as opposed to a GPU texture.
2024-08-16 16:40:43 +03:00
Campbell Barton
b5e0b59736 Cleanup: remove space around identifiers in C-style comments 2024-08-15 20:46:00 +10:00
Hans Goudey
7d08d6be6a Fix #126013: Geometry nodes PLY import node skips attributes
Just turn on the option for geometry nodes where attributes are
generally expected to be used. We could expose this and other
options at some point too but that requires a bit more thought.
2024-08-14 08:43:06 -04:00
Omar Emara
94d3b764e7 Geometry Nodes: Implement Gabor noise node
This patch ports the Gabor noise shader texture node into Geometry
Nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/125718
2024-08-14 08:48:17 +02:00
Omar Emara
8504ab2070 Fix: Compile error when FFTW is disabled 2024-08-14 09:22:33 +03:00
Iliya Katueshenock
593e70dc53 Fix: Geometry Nodes: typo in node description
Pull Request: https://projects.blender.org/blender/blender/pulls/126165
2024-08-13 19:56:20 +02:00
Omar Emara
edc4d0d84a Compositor: Support CPU storage in result class
This patch adds support for CPU side buffers for the result class. A new
storage type member was added to identify the type of buffer storage,
and allocation will either allocate a GPU texture or a CPU buffer based
on the context's GPU usage.
2024-08-13 16:13:22 +03:00
Omar Emara
10f64edb3a Compositor: Allow non-pooled result allocation
This patch allows the result to be allocated using new textures as
opposed to using pooled texture. This is useful to allow the result
class to be used for persistent data like cached resources which can't
be pooled since it spans multiple evaluations.
2024-08-13 11:33:37 +03:00
Jacques Lucke
e842966c5e Nodes: add group node default width
This adds the ability to customize the default width of a group node that's
created for a node group. This feature works towards the goal of unifying the
features available to built-in nodes and node groups. We often customize the
width of built-in nodes from them to looks slightly better (e.g. to avoid
cut-off labels).

Pull Request: https://projects.blender.org/blender/blender/pulls/126054
2024-08-11 19:25:53 +02:00
Falk David
0e2ef7f6f1 Geometry Nodes: Default opacity value in "Curves to Grease Pencil" node
When a curve instance did not have a "opacity" attribute, the default would be 0.
This meant that when creating Grease Pencil layers from scratch, the user
would need to manually write a "opacity" attribute.

Now the default value is 1, so that this step is no longer necessary.
2024-08-08 17:58:26 +02:00
Jacques Lucke
5861b078f7 Core: rename ID.flag and ID.tag values
Previously, values for `ID.flag` and `ID.tag` used the prefixes `LIB_` and
`LIB_TAG` respectively. This was somewhat confusing because it's not really
related to libraries in general. This patch changes the prefix to `ID_FLAG_` and
`ID_TAG_`. This makes it more obvious what they correspond to, simplifying code.

Pull Request: https://projects.blender.org/blender/blender/pulls/125811
2024-08-07 12:12:17 +02:00
Omar Emara
885db0986c Refactor: Remove concept of temporary result
Temporary results are essentially results with a default reference count
of 1, so we default to 1 for all results and set the initial reference
count differently as need.
2024-08-06 19:37:18 +03:00
Devashish Lal
f6e6f2b2d2 Geometry Nodes: PLY import node
This commit adds a PLY format import node, part of the current Google
Summer of Code Project [0]. The importer is refactored to output a mesh,
and a node is added to wrap around the importer. The node supports error
messages from the importer. The node is hidden behind an experimental
option for now, like the others.

0: https://devtalk.blender.org/t/gsoc-2024-geometry-nodes-file-import-nodes/34482)

Pull Request: https://projects.blender.org/blender/blender/pulls/125587
2024-08-05 14:54:54 +02:00
Lukas Tönne
43b68132c0 Fix #125866: Crash when converting empty grease pencil to instances
The specialized code for converting grease pencil layer attributes to
instance attributes was accessing the instance component without check.
This _should_ work because the component is explicitly created, but
still fails for empty grease pencil data, because the
`get_component_ptr` function checks if the component is "empty" as well
(zero instances).

Pull Request: https://projects.blender.org/blender/blender/pulls/125887
2024-08-05 12:14:56 +02:00
Omar Emara
9c44349204 Fix #124023: File output always saves PNG in sRGB
The File Output node doesn't provide an option to save byte formats like
PNG in a space that is not sRGB. This is problematic for data images
like normal maps, which need to be saved as non-color.

This patch adds a Color Space option to the File Output node to allows
users to override the assumed color space. This also adds a new global
Save As Render option that is used if Use Node Format is enabled.

Pull Request: https://projects.blender.org/blender/blender/pulls/124238
2024-08-02 13:52:22 +02:00
Jacques Lucke
fe461903c1 Geometry Nodes: pass through in bake node if it is in a repeat zone
Bake nodes are not supported in a repeat zone. They used to just output
default values when used in a repeat zone, but now they just pass-through
the inputs like an unbaked bake node would.

This makes the behavior more like one would expect when using the same
node group in and outside of a repeat zone that happens to have a bake
node inside (which is not even used).
2024-08-01 12:39:08 +02:00
Jacques Lucke
1d37294d73 Fix #125504: crash when trying to create string socket in Capture Attribute node
String attributes are currently not supported in geometry nodes.
2024-08-01 11:38:52 +02:00
Jacques Lucke
0811cbbbc6 Fix #125758: deduplicate warnings shown in geometry nodes 2024-08-01 11:15:55 +02:00
Jacques Lucke
596cd6cd4a Refactor: Geometry Nodes: deduplicate drawing bake button 2024-07-31 13:11:19 +02:00
Jacques Lucke
de6f851a4b Refactor: Geometry Nodes: deduplicate drawing bake settings 2024-07-31 13:01:02 +02:00
Jacques Lucke
4e27ce7f42 Geometry Nodes: unify bake state string between simulations and bake nodes
Previously, they showed slightly different information (e.g. the bake node did
not show which frames would be baked).
2024-07-31 12:56:27 +02:00
Jacques Lucke
74d6a28bb1 Refactor: Geometry Nodes: deduplicate getting draw context for bake nodes
Simulation zones now also use `get_bake_draw_context` to get the bake context,
instead of implementing essentially the same thing again.
2024-07-31 12:47:13 +02:00
Jesse Yurkovich
69154a5e3b Fix #125402: Guard against missing OCIO data for realtime compositor
The newly added viewport compositor was missing a try-catch guard around
the OCIO `getProcessor` call. All prior call sites were protected except
this one.  Unhandled exceptions can occur if the user tries to use a
colorspace config that is not present in their OCIO configuration.

The surrounding code paths need some work in order to not crash at a
later point, which would also impact builds with no OCIO support at all.
In the case of no OCIO support at all, a warning label is placed on the
node as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/125526
2024-07-29 18:37:23 +02:00
Iliya Katueshenock
7903aa6faa Fix #125588: Revert: Fix #120592: File output node not showing up in search
In 095d37c186 being added
drag-and-drop support for the node which still have no dynamic declaration itself.
This revert previous change. Real support will be added with #108728

Pull Request: https://projects.blender.org/blender/blender/pulls/125596
2024-07-29 15:23:37 +02:00
Jacques Lucke
9e88ff1b4b Cleanup: use correct index when building group node lazy function
This shouldn't make any difference right now, because the main inputs
and outputs of a group always come first. But it's better to not rely on that
here if it can be avoided.
2024-07-28 14:21:56 +02:00
Jacques Lucke
1f026f7ac2 Cleanup: improve method names
These methods don't build separate nodes anymore, just the sockets.
2024-07-28 14:20:18 +02:00
Campbell Barton
111a40239a Cleanup: match argument names for function & declarations
Match function and declaration names, picking names based on
consistency with related code & clarity.

Also changes for old conventions, missed in previous cleanups:

- name -> filepath
- tname -> newname
- maxlen -> maxncpy
2024-07-27 13:32:51 +10:00
Campbell Barton
8418ec4952 CMake: include headers in source lists 2024-07-25 11:24:11 +10:00
Omar Emara
57ff2969b8 Compositor: Support multi-pass compositing for EEVEE
This patch adds support for multi-pass compositing for EEVEE. This is
done by copying the passes used by the compositor node tree to the DRW
view data, which can then be accessed by the viewport compositor.

The viewport compositor will fallback to the viewport texture or an
invalid output of the passes were not initialized, this is currently the
case for any render engine that is not EEVEE.

A future optimization that we can do is eliminate the film pass copy
shaders and only copy the data that EEVEE rendered, which can be a
subset of the viewport for border rendering. This is not done at the
moment because not all engines support passes at the moment, so the
compositor expects full viewport passes.

Depends on: #123685, #123817, #123815.

Pull Request: https://projects.blender.org/blender/blender/pulls/123378
2024-07-23 10:15:13 +02:00
Jacques Lucke
3c81984178 Geometry Nodes: add conversion nodes for Grease Pencil and Curves
This adds two new nodes:
* `Grease Pencil to Curves`: Converts each grease pencil layer into an instance
  that contains curves.
* `Curves to Grease Pencil`: Converts top-level curve instances into grease
  pencil layers.

This opens up many new opportunities:
* Use grease pencil as input to other procedural systems that don't necessarily
  output grease pencil.
* Generate grease pencil from scratch using geometry nodes.
* Temporarily convert grease pencil data to curves to use more powerful features
  for curves processing.

Some data on layers are not attributes yet unfortunately, so there is some
special case handling for the `opacity` attribute. This was previously discussed
at the geometry nodes workshop:
https://devtalk.blender.org/t/2024-05-13-geometry-nodes-workshop-notes/34760#grease-pencil-14

Pull Request: https://projects.blender.org/blender/blender/pulls/124279
2024-07-22 12:29:26 +02:00
Jesse Yurkovich
ec4fc2d34a CMake: Modernize the optional TBB dependency
This continues the cmake modernization effort and introduces support for
allowing our optional dependencies to integrate properly. TBB is added
here as it's proven troublesome to maintain correctly.

Currently the only Blender project which uses the TBB headers directly
is `blenlib`.  However, all downstream projects which require blenlib as
their dependency, and wish to properly make use of its threading
facilities, needed to define various TBB items in their CMake files. Not
only is this unnecessary and arcane, but several projects didn't do this
and ended up not using threading as well as producing ODR violations
along the way[1].

This PR makes TBB a modern dependency and exposes it PUBLIC'ly from
`blenlib`.  All downstream projects which depend on blenlib will now
receive everything they require from TBB automatically. This includes
the `WITH_TBB` define, the headers, and the library itself.

[1] blender/blender@05241f47f5

Pull Request: https://projects.blender.org/blender/blender/pulls/124916
2024-07-19 23:30:56 +02:00
Jacques Lucke
23eb662cb8 Cleanup: extract functions for evaluating function on single values or fields 2024-07-19 20:32:12 +02:00
Omar Emara
f0ec207e9c Fix #124298: Cryptomatte node makes UI very slow
The Cryptomatte node makes the UI very slow in Image mode. That's
because the node updates its available Cryptomatte layers on every
redraw, which is a blocking operation that is not very fast.

To fix this, we only update the layers when engine layers change for
the Scene mode, and when image settings change for Image mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/124738
2024-07-17 09:40:28 +02:00
Omar Emara
0e7f80b262 Refactor: Remove redundant Cryptomatte frame update
Cryptomatte layer initialization required the active scene to update the
image user frame, but the image user is already updated through other
mechanisms and is thus redundant to do at draw time, so we remove the
frame update call as well as the scene argument from the call chain. The
frame number of the image user is ignored at compositing time in any
case since it is set to the compositing scene frame.

This is needed for #124738.
2024-07-17 10:12:48 +03:00
Bastien Montagne
c607ead4b7 Refactor: Makesrna: move generated code further in C++.
This commit moves generated `RNA_blender.h`, `RNA_prototype.h` and
`RNA_blender_cpp.h` headers to become C++ header files.

It also removes the now useless `RNA_EXTERN_C` defines, and just
directly use the `extern` keyword. We do not need anymore `extern "C"`
declarations here.

Pull Request: https://projects.blender.org/blender/blender/pulls/124469
2024-07-15 16:39:45 +02:00
Lukas Stockner
021bce8b48 Compositor: Add White Point mode to the Color Balance node
This adds a new mode to the Color Balance node, which applies a white point
transformation similar to the one applied in the view transform.

Unlike the view transform, the compositor node allows specifying both the
source and the destination white point for more flexibility. Both default
to the D65 white point, so just leaving the destination alone achieves the
same behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/124110
2024-07-14 23:22:58 +02:00
Jacques Lucke
50e2ea82a7 Merge branch 'blender-v4.2-release' 2024-07-14 11:46:12 +02:00
Iliya Katueshenock
649fa05bcb Geometry Nodes: support link drag search for Bake node
Fixes #124625.

Pull Request: https://projects.blender.org/blender/blender/pulls/124659
2024-07-14 11:27:27 +02:00
Campbell Barton
8fdb190278 Cleanup: typos in comments (duplicate words) 2024-07-14 18:55:43 +10:00
Campbell Barton
9fb0d3c3ef Cleanup: spelling in comments 2024-07-13 16:56:57 +10:00
Campbell Barton
cc81eeff3b Unbreak build from missing include 2024-07-13 16:56:53 +10:00