Commit Graph

4125 Commits

Author SHA1 Message Date
Falk David
f43426f0de GPv3: Rename layer domain to just "Layer"
We had a short discussion on this change. "Grease Pencil Layer" is
just a bit too long, especially in the UI. Even though "Layer" might be
ambiguous, it shouldn't be in the context of geometry nodes. There are
currently no other "Layers" and if there were, using the same domain
name could be fine (just like we reuse the point domain for e.g. vertices
in meshes and control points in curves).

This also renames the internal enum to `ATTR_DOMAIN_LAYER`

Pull Request: https://projects.blender.org/blender/blender/pulls/113589
2023-10-12 13:54:32 +02:00
Omar Emara
405ec79a0a Fix #112883: GPU compositor crops viewed image
The GPU compositor crops the viewed images to the render resolution.
While the original size and content of the input to the viewer should be
retained as is.

This patch fixes that by specializing compositors that can use composite
outputs to be able to view images of any arbitrary size. This is still
missing the translation offset of the viewer, but this shall be tackled
separately.
2023-10-12 14:03:12 +03:00
Falk David
8086293989 Cleanup: Missing BKE_grease_pencil.hh header 2023-10-12 12:53:00 +02:00
Dalai Felinto
8e5f1e3d9f Fix tag used for Grease Pencil Resample Curve
Issue introduced as part of 3f13471d65.
2023-10-12 12:47:59 +02:00
Dalai Felinto
64f1ee14d8 GPv3: Subdivide Curve node
Reviewed as part of !113581.
2023-10-12 12:25:39 +02:00
Dalai Felinto
3f13471d65 GPv3: Resample Curve node
Reviewed as part of !113581.
2023-10-12 12:25:39 +02:00
Dalai Felinto
87e03b3f97 GPv3: Set Curve Radius node
Reviewed as part of !113581.
2023-10-12 12:25:39 +02:00
Dalai Felinto
9e9fae7ec0 GPv3: Separate Components node
Reviewed as part of !113581.
2023-10-12 12:25:39 +02:00
Omar Emara
e592763940 Realtime Compositor: Immediately realize transformations
This patch immediately realizes the scale and rotation components of
transformations at the point of transform nodes. The translate component is
still delayed and only realized when really needed to avoid clipping.

Transformed results are always realized in an expanded domain that avoids
clipping due to rotation or scaling. The size of the transformed domain is
clipped to the GPU texture size limit for now until we have support for huge
textures, that limit is typically 16k.

A potential optimization is to join all consecutive transform and realize
operations into a single realize operation.

Fixes #112332.

Pull Request: https://projects.blender.org/blender/blender/pulls/112332
2023-10-12 11:04:50 +02:00
Sergey Sharybin
79dc2c7672 Merge branch 'blender-v4.0-release' 2023-10-11 19:12:12 +02:00
georgiy.m.markelov@gmail.com
782c9273cd Fix Hydra MaterialX error with default materials
Pull Request: https://projects.blender.org/blender/blender/pulls/113541
2023-10-11 19:10:16 +02:00
Hans Goudey
30574bd8a9 Merge branch 'blender-v4.0-release' 2023-10-11 16:51:50 +02:00
Hans Goudey
50ed14f228 Fix: Set selection node crashes with attributes on the wrong domain
Remove the selection attributes on the non-selected domains, since they
will be automatically filled by domain interopolation anyway. Arguably
this should be fixed in a more general way, either by ensuring they are
always on the expected domains or more gracefully handling the case
when they aren't at a lower level. But for this node, for now this is
a simpler approach.
2023-10-11 16:51:32 +02:00
Falk David
559c271a53 Clang-format 2023-10-10 16:59:56 +02:00
Falk David
3931a54e08 GPv3: Initial Geometry Nodes support
This implements the core changes for this design: https://devtalk.blender.org/t/grease-pencil-integration-into-geometry-nodes/31220

The changes include:
* Add `CustomData` for layer attributes
* Add attribute support for the `GreasePencilComponent` to read/write layer attributes. Also introduces a `Layer` domain.
* Implement a `GreasePencilLayerFieldContext` and make `GeometryFieldContext` work with grease pencil layers.
* Implement `Set Position` node for `Grease Pencil`.

Note: These changes are only accessible/visible with the `Grease Pencil 3.0` experimental flag enabled.
Co-authored-by: Jacques Lucke <jacques@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/112535
2023-10-10 16:49:30 +02:00
Jacques Lucke
d5d6da2b1c Cleanup: add comment for why lazy threading hint is send 2023-10-10 12:23:07 +02:00
Omar Emara
203559757a Compositor: Allow variable size Kuwahara
This patch changes the size property of the Kuwahara into a node socket
to allow variable size Kuwahara.

Pull Request: https://projects.blender.org/blender/blender/pulls/112946
2023-10-10 10:10:18 +02:00
Hans Goudey
8f27baf388 Merge branch 'blender-v4.0-release' 2023-10-09 23:54:43 +02:00
Hans Goudey
976eaae02f Cleanup: Move BKE_object.hh to C++
Simplifies the fix to #111120, where the object bounds functions
may return a C++ type instead of `BoundBox`.

Pull Request: https://projects.blender.org/blender/blender/pulls/113462
2023-10-09 23:41:53 +02:00
Miguel Pozo
2bafffd9f0 EEVEE Next: Expose Thickness output 2023-10-09 13:30:21 +02:00
Jacques Lucke
63b39c5aeb Merge branch 'blender-v4.0-release' 2023-10-09 11:46:45 +02:00
Jacques Lucke
fbfeb24588 Fix #113416: never show inspection index warning when set to zero 2023-10-09 11:45:25 +02:00
Jacques Lucke
5830316681 Nodes: use better default for color sockets
Using a fully transparent black is default never was an explicit decision.
Now the default is a light grey, that we use in many nodes already.
2023-10-08 15:25:07 +02:00
Jacques Lucke
1ecc315d34 Nodes: pass node declaration builder to dynamic declaration function
Generally, one should use the declaration builder instead of trying to
do it manually which is more error prone and verbose.
2023-10-08 14:38:28 +02:00
Jacques Lucke
0b3daea393 Geometry Nodes: use declaration builder for simulation zone 2023-10-08 14:14:22 +02:00
Jacques Lucke
b6a3ac5a12 Geometry Nodes: use declaration builder for repeat zone 2023-10-08 13:58:22 +02:00
Jacques Lucke
f3a1dd1eb5 Nodes: move socket declaration methods to base declaration builder
The goal here is to make it easier to use the socket declaration builder
for cases where the actual socket type is not known at compile time.
For that purpose, all the methods that are not dependent on the specific
socket type are moved to the base socket declaration builder.

A nice side effect of this is reduced templated boilerplate and that more
code can be moved out of the header.

With this patch, one is now forced to put type specific method calls before
generic method calls in a chain. For example `.default_value(...).supports_field()`
instead of `supports_field().default_value(...)`. In theory, we could keep
support for both orders but that would involve a lot of additional boilerplate
code. Enforcing this order is simple enough. Note that this limitation only
applies when chaining multiple method calls. This is still possible:
```
auto &decl = b.add_input<decl::Vector>("Value");
decl.supports_field();
decl.default_value(...);
```

Pull Request: https://projects.blender.org/blender/blender/pulls/113410
2023-10-08 13:30:31 +02:00
Jacques Lucke
29d4779bf9 Merge branch 'blender-v4.0-release' 2023-10-07 23:19:41 +02:00
Jacques Lucke
331247fcee Fix: don't set repeat zone output twice 2023-10-07 23:14:04 +02:00
Hans Goudey
36b88bc041 Merge branch 'blender-v4.0-release' 2023-10-07 09:08:37 -04:00
Hans Goudey
e59a2b9a21 Fix: Incorrect rotation from 3D cursor tool node
The 3D cursor's quaternion and euler storage are not always in sync.
The quaternion rotation should be retrieved by speciffic functions,
which I had previously missed.
2023-10-07 09:08:06 -04:00
Campbell Barton
cf7e0c205f Cleanup: sort CMake file lists 2023-10-07 18:29:46 +11:00
Jacques Lucke
144a5aa512 Cleanup: replace use of std::iota with more specific function
`iota` is name that has no meaning, it's not an acronym or initialism.
It's usually very cryptic when I come across it. Replacing it with a
specialized function makes the code more readible.
2023-10-06 23:01:16 +02:00
Jacques Lucke
bef0d6c067 Functions: extract remapped-params to make it reusable
This idea is of remapping parameters of lazy-functions is useful
not only for the repeat zone. For example, it could be used for the
for-each zone as well.

Also, moving it to a more general place indicates that there is no
repeat-zone specific stuff in it.
2023-10-06 22:32:51 +02:00
Jacques Lucke
d6f4a9a09b Merge branch 'blender-v4.0-release' 2023-10-06 18:38:07 +02:00
Jacques Lucke
b04f006a4c Fix: dynamic node declaration is not resetting update-skip flag 2023-10-06 18:37:46 +02:00
Jacques Lucke
57e914fc8a Cleanup: move join geometry functionality to separate file
This allows us to reuse the functionality more easily.
2023-10-06 18:31:44 +02:00
Jacques Lucke
6279be4157 Geometry Nodes: use socket name instead of identifier as debug names
This makes it easier to read generated lazy-function graphs, especially when
there are zones or group nodes, because the socket identifiers on those
are some generated internal name.
2023-10-06 18:31:44 +02:00
Miguel Pozo
c567f7ccae Merge branch 'blender-v4.0-release' 2023-10-06 15:36:37 +02:00
Iliya Katueshenock
1a30e0597b Fix #113095: deduplicate attributes in search
Pull Request: https://projects.blender.org/blender/blender/pulls/113097
2023-10-06 14:41:33 +02:00
Jacques Lucke
ac4fa638c1 Merge branch 'blender-v4.0-release' 2023-10-06 14:00:54 +02:00
Jacques Lucke
271f634a84 Fix #113319: crash with out of bounds index in curve sample node
This was broken in 5063f7a725.
2023-10-06 13:58:17 +02:00
Brecht Van Lommel
1849e192fa Merge branch 'blender-v4.0-release' into main 2023-10-05 22:03:29 +02:00
coyo_t
b0706a57ac Fix #106760: Cycles OSL boolean socket not working
Pull Request: https://projects.blender.org/blender/blender/pulls/109576
2023-10-05 21:55:10 +02:00
Brecht Van Lommel
3bbd4294d9 Merge branch 'blender-v4.0-release' into main 2023-10-04 21:32:58 +02:00
Jacques Lucke
beac6599fb Nodes: deduplicate code to create declarations for socket type 2023-10-04 13:01:45 +02:00
Jacques Lucke
eeb77f3d51 Cleanup: deduplicate more socket items code
This is a continuation of 012289b1e7.
2023-10-04 12:22:32 +02:00
Jacques Lucke
012289b1e7 Geometry Nodes: deduplicate code to deal with dynamic socket amounts
The goal of this refactor is to reduce the amount of boilerplate code that is
necessary to have a dynamic number of sockets on nodes. This is achieved
by making the code more reusable. Currently, only the simulation and repeat
zone nodes make use of this. However, even with just those two, the amount
of code is reduced already. The benefit of this refactor will become even more
significant as more nodes support a dynamic number of sockets. For example,
the bake node and for-each zone will also benefit from this.

We could probably make some of the utility functions non-templates using type
erasure. This could reduce the compilation overhead when the number of nodes
with item arrays increases. The main reason for why everything is templated
now is that it made this refactor easier. Without this patch, all the code was
essentially "manually templated". So the implementations look still similar to
before now, just that concrete types are replaced with template parameters.

No user-visible changes are expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/113114
2023-10-04 11:02:52 +02:00
Omar Emara
17bdf18397 Realtime Compositor: Implement Keying Screen node
This patch implements the Keying Screen node for the Realtime
Compositor. Draw data was introduced to the Movie Clip ID to allow
caching of the keying screen.

Pull Request: https://projects.blender.org/blender/blender/pulls/113055
2023-10-04 07:35:07 +02:00
Omar Emara
75c947a467 Compositor: Use RBF Interpolation in Keying Screen node
This patch changes the interpolation algorithm utilized by the Keying
Screen node to a Gaussian Radial Basis Function Interpolation. This is
proposed because the current Voronoi triangulation based interpolation
has the following properties:

- Not temporally stable since the triangulation can abruptly change as
  tracking markers change position.
- Not smooth in the mathematical sense, which is also readily visible in
  the artists sense.
- Computationally expensive due to the triangulation and naive
  rasterization algorithm.

On the other hand, the RBF interpolation method is temporally stable and
continuous, smooth and infinitely differentiable, and relatively simple
to compute assuming low number of markers, which is typically the case
for keying screen objects.

This breaks backward compatibility, but the keying screen is only used
as a secondary input for keying in typical compositor setups, so one
should expect minimal difference in outputs.

Pull Request: https://projects.blender.org/blender/blender/pulls/112480
2023-10-04 07:07:04 +02:00