The official Blender project repository.
Go to file
Jacques Lucke 67c7485bfd Refactor: Geometry Nodes: improve lifetime analysis for anonymous attributes
This refactors the lifetime analysis of anonymous attributes in geometry nodes.
The refactor has a couple of goals:
* Use a better and simpler abstraction that can be used when building the
  lazy-function graph. We currently have a bunch of duplicate code to handle
  "field source" and "caller propagation" attributes. This is now unified so
  that one only has to worry about one kind of "reference sets".
* Make the abstraction compatible with handling bundles and closures in case we
  want to support them in the future. Both types can contain geometries and
  fields so they need to be taken into account when determining lifetimes.
* Make more parts independent of the concept of "anonymous attributes". In
  theory, there could be more kinds of referenced data whose lifetimes need to
  be managed. I don't have any concrete plans for adding any though.

At its core, deterministic anonymous attributes still work the same they have
been since they became deterministic [0]. Even the generated lazy-function graph
is still pretty much or even exactly the same as before.

The patch renames `AnonymousAttributeSet` to the more general
`GeometryNodesReferenceSet` which is more. This also makes more places
independent of the concept of anonymous attributes. Functionally, this still the
same though. It's only used in the internals of geometry nodes nowadays. Most
code just gets an `AttributeFilter` that is based on it.

[0]: https://archive.blender.org/developer/D16858

Pull Request: #128667
2024-10-07 12:59:39 +02:00
.gitea Issue template: Use bug label for Python API reports 2024-08-22 04:28:52 +02:00
.github Funding: Add FUNDING.yml to link to fund.blender.org on GitHub mirror 2024-07-31 10:03:57 +02:00
build_files Merge branch 'blender-v4.3-release' 2024-10-07 11:23:34 +02:00
doc Release cycle: Bump main to 4.4, alpha 2024-10-02 12:12:36 +02:00
extern Cycles: Linux Support for HIP-RT 2024-09-24 14:35:24 +02:00
intern Merge branch 'blender-v4.3-release' 2024-10-07 13:05:28 +11:00
lib Linux: update ShaderC (#2) 2024-09-25 12:38:39 +10:00
locale I18N: Update UI translations from git/weblate repository (84027d1374f1ae). 2024-10-07 11:38:46 +02:00
release Splash: Update artwork with proper colour space 2024-10-03 18:03:47 +02:00
scripts Merge branch 'blender-v4.3-release' 2024-10-05 17:54:01 +10:00
source Refactor: Geometry Nodes: improve lifetime analysis for anonymous attributes 2024-10-07 12:59:39 +02:00
tests USD: invoke the ComplianceChecker on all exported test files 2024-10-04 02:50:16 +02:00
tools GPv3: Rename mode enum names and python identifiers 2024-10-04 19:20:00 +02:00
.clang-format Clang-Format: Ensure single new line at the end of files 2024-02-22 14:42:10 +01:00
.clang-tidy Cleanup: match declaration names, avoid shadowing & clear trailing space 2024-10-03 12:12:08 +10:00
.editorconfig editorconfig: add HTML entry 2023-12-08 13:28:13 +11:00
.git-blame-ignore-revs Cleanup: add commit to .git-blame-ignore-revs 2023-05-03 20:31:11 +10:00
.gitignore Switch SVN to Git submodules using Git-LFS 2024-02-22 13:50:55 +01:00
.gitmodules Revert "Release cycle: Blender 4.3 Beta" 2024-10-02 12:35:26 +02:00
AUTHORS AUTHORS: add 29 new authors 2024-10-03 15:56:48 +10:00
CMakeLists.txt Refactor: Move BPY generic headers to proper C++ ones. 2024-09-25 18:04:27 +02:00
COPYING == docs == 2010-10-13 14:44:22 +00:00
GNUmakefile Build: Changes for make deps to work on Linux arm64 again 2024-09-24 15:54:47 +02:00
make.bat Cleanup: remove unused icon utilities and make convenience target 2024-06-27 18:28:32 +02:00
pyproject.toml Extensions: Support online extensions and move add-ons outside Blender 2024-05-15 19:26:29 +02:00
README.md Docs: Replace most wiki links with links to new developer docs 2024-01-18 16:49:38 +01:00

Blender

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages

Development

License

Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See blender.org/about/license for details.