Beginning with release 3.3.5, Arnold includes support for specification of nodes and attributes metadata using separate text files.
Each library implementing Arnold nodes could have an associated metadata file, with the same name of the library and the extension ".mtd". For example, a library called mtoa_shaders.dll would have a corresponding mtoa_shaders.mtd. This metadata files will be automatically loaded when the library is first loaded. As a special case, for built-in Arnold nodes, the name of the metadata file is arnold.mtd, as this library has different names on different platforms.
Also, there could be additional metadata files, which can be loaded on demand, by using the API function provided in ai_metadata.h (or ai_metadata.py for Python):
This files could be used for example to override values or add additional metadata to built-in nodes, such as MtoA and SItoA do for Arnold built-ins.
Finally, third party shader developers could include a metadata file with their library, in a file with the same name as the library, but ".mtd" extension. In this metadata file, they could include information for all plugins (SItoA, MtoA for now), so that the same file would work for all of them.
The format of the metadata files is like this:
There could be any number of nodes in the file. There can also be multiple node sections for the same node (metadata will be applied in the order they are found in the file).
As a convention, we are using metadata names starting with "maya." for Maya specific metadata, and "xsi." for XSI specific metadata. There are some other conventions for standard metadata elements that would be published on a separate document.
Maya needs a unique ID assigned to nodes to keep track of custom nodes.
Just add the "maya.id" integer metadata. hex formatting is supported in .mtd file as well.