This patch implements the initial core framework for fields and anonymous attributes as described on devtalk.
It was developed by Hans and me.
The two core components of this patch allow the following:
- Building and evaluating fields at run-time (FN_fields.hh).
- Creating and accessing anonymous attributes on geometry (BKE_anonymous_attribute.h).
For evaluating fields we use a new so called multi-function procedure (FN_multi_function_procedure.hh).
It allows composing multi-functions in arbitrary ways and supports efficient evaluation as is required by fields.
See FN_multi_function_procedure_test.cc for more details on how this evaluation mechanism can be used.
A new AttributeIDRef has been added which allows handling named and anonymous attributes in the same way in many places.
On the user level, the following has changed:
- New Position node.
- New Index node.
- New Normal node.
- New Set Position node.
- New Attribute Capture node (same as Attribute Freeze in the prototype).
- Socket inspection for fields is not yet working.