This makes custom mesh attributes available in Cycles. Typically, these attributes are generated by geometry nodes, but they can also be created with a Python script.
Todos:
* Polygon and Corner domains are not handled correctly yet.
Possible todos:
* Potentially use different types for integer and bool attributes, currently they just become floats in cycles. This wastes memory in some cases,Support `subdivision`. but I'm not sure how Cycles handles other geometry types internally,Still have to investigate what that actually means exactly and how to test it. or if everything should just be floatsNot sure if it is acceptible to merge this without support for it.
* Investigate potential conflicts with sculpt vertex colors (which are a subset of custom attributes). Problem is I don't really know how to use sculpt vertex colors, also they are still an experimental feature, so maybe sculpt vertex colors should check how to interact with generic attributes instead of the other way around.
* (can be improved later) Potentially use different types for integer and bool attributes, currently they just become floats in cycles. This wastes memory in some cases, but I'm not sure how Cycles handles other geometry types internally, or if everything should just be floats.