Using User Custom Data

Some other renderers don't have RenderMan style primvars, but allow some form of custom user data that can be looked up by shaders. With a little more work and suitable shaders these can be used to give similar results.

For instance, in 3Delight and Arnold, if you have shaders designed to look for user data that contain strings declaring the paths to textures, instead of the paths to the textures being direct parameters on the shaders, you can use user data to have a shared material on multiple objects and each object picks up its own individual textures.

Any string attribute called textures.xxx is automatically written out to the renderer as a piece of string user data called xxx, which can then be looked up inside shaders.

You can also do per-face assignment of textures using user data. If textures.xxx is set to an array of string values, with the number of elements matching the number of faces, that array is written out as a per-face array of user data so each face can pick up its own value.