How to customize a material without duplicating it? I know how to share a material among different objects, customizing it by using the ObjectInfo node. I want do something similar but replacing the ObjectInfo node with a custom property (different for each object, and animated with an F-Curve) that the material can automatically read as input.

How could I do this? Adding a custom property to the object? How would I access it from nodes? Could the ObjectInfo node be enhanced to support this custom property (as well as random, object index, location, material index)?
There are not that many options how to input unique data of each object into a shader node tree.

There are vertex colors, hacking UV coordinates as numerical input, and outputs of Object Info node. There is also an option of scripting a custom Cycles node.

Because you need float in range &lt;0, 1>, using the Object Index seems feasible. It's an integer with max value of 32767, which scaled into 0-1 range gives you 1/32767 of precision (0.00003), which is not bad. This is how you'd use it inside your material:



This is the property to animate for each object:



Just multiply your value with 32767 and round it.