Commit Graph

8 Commits

Author SHA1 Message Date
Hans Goudey
a774ebd5af Geometry Nodes: Field to Grid Node
The purpose of this node is to create a grid with new voxel values on
the same grid topology as an existing grid. The new values are the
result of field evaluation. Multiple grids can be created at the same
time, so that intermediate results used for multiple grids can be
efficiently reused during evaluation. This is more efficient than the
"Volume Cube" node, for instance, because the output grid shares the
sparseness of the input topology grid.

Pull Request: https://projects.blender.org/blender/blender/pulls/147074
2025-10-01 18:40:49 +02:00
Hans Goudey
b5863c401e Fix: Geometry Nodes: Function nodes crash for unsupported grid types
The multi-function node evaluation code correctly didn't create a grid
with an unsupported type, but then the code crashed in the logging
code when setting default for the outputs. Instead just use a common
utility for that goal. And also add support for executing a function node
if only outputs with supported types are required (for example when
creating a grid for the "Fac" output of the noise node, but not the
color output).

Pull Request: https://projects.blender.org/blender/blender/pulls/146937
2025-09-29 01:49:01 +02:00
илья _
9fcb41de5e Cleanup: unused type alias in release build
`volume_grid_function_eval.cc(635,15): warning: unused type alias 'ValueType' [-Wunused-local-typedef]`

Pull Request: https://projects.blender.org/blender/blender/pulls/140497
2025-06-17 17:49:21 +02:00
илья _
2818424102 Fix #139936: Geometry Nodes: background of Volume Grid is lost after math node
We have to execute math node both for real Grid tree nodes and for background
values. So internal logic of sharing background values will work in case such
values are used by some nodes.

A field input is evaluated on a tile with maximum bounds to get the background
value.

Pull Request: https://projects.blender.org/blender/blender/pulls/140410
2025-06-16 08:38:40 +02:00
илья _
3a8655a12b Fix: Geometry Nodes: corrupted grid after math node
There is the use-after-free of the tile value on the stack.

Pull Request: https://projects.blender.org/blender/blender/pulls/140405
2025-06-16 07:17:18 +02:00
Campbell Barton
e5deeafe92 Cleanup: spelling in comments (make check_spelling_*) 2025-05-22 11:11:48 +10:00
Hans Goudey
b038e35c2d Fix: Build failure without OpenVDB
Caused by 0837037d13.
2025-05-19 13:34:59 -04:00
Jacques Lucke
0837037d13 Geometry Nodes: initial support for volume grids in function nodes
This patch implements basic support for evaluating function nodes on volume
grids. Conceptually, a function node always creates a new grid for the output,
though the output is often a modified version of the input. The topology of the
output grid is a union of all the input grids.

All input grids have to have the same transform. Otherwise one has to use
resampling to make grids compatible.

Non-grid inputs are allowed to be single values or fields. The fields are
evaluated in a voxel/tile context, so they compute a value per voxel or per
tile.

One optimization is missing that will probably be key in the future: the ability
to merge multiple function nodes and execute them at the same time. Currently
the entire function evaluation is started and finished for every function node
that outputs a grid. This will add significant overhead in some situations.
Implementing this optimization requires some more changes outside of the scope
of this patch though. It's good to have something that works first.

Note: Not all function nodes are supported yet, because we don't have grid types
for all of them yet. Most notably, there are no color/float4 grids yet.
Implementing those properly is not super straight forward and may require some
more changes, because there isn't a 1-to-1 mapping between grid types and socket
types (a float4 grid may correspond to a color or vector socket later on).

Using grids with function nodes and fields can result in false positive warnings
in the UI currently. That's a limitation of our current socket type inferencing
and can be improved once we have better socket shape inferencing.

Pull Request: https://projects.blender.org/blender/blender/pulls/125110
2025-05-19 18:30:58 +02:00