In mantra, I can do this by setting up local variable overrides, and forcing the shader to pick up the desired file using a primitive string attribute that points to the file locations:
so in this case i just have six petals- each with a primitive id attribute. I feed this into a string attribute (see below)
s@disppath=sprintf(“/Users/PROJECTS/TREE_BLOOM/tex/disp_test_new/disp_test.%d.exr”,s@id);
and I now have a per polygon link to the textures i want
first two picks show how I set this up successfully.
Now arnold supposedly has this functionality as well— the arnold help docs say you can use the <attr:> token to call information from the object into the shader.
https://docs.arnoldrenderer.com/pages/viewpage.action?pageId=14354005 [docs.arnoldrenderer.com]
So I set up a similar workflow- the file locations I need are inside a string attribute called disppath, and then I simply input this into the filename
$JOB/tex/disp_tests/shader_multipletexture_setup_disp/<attr:disppath> for the shader itself.
I cant get it to render though……looking at the last six lines of the console it is telling me that the point attribute of class string is unspported (not sure why it has to be a point attribute?)
00:00:00 1262MB WARNING | skipping unsupported point attribute of class string (varying string user data) “disppath”
00:00:00 1262MB WARNING | skipping unsupported point attribute of class string (varying string user data) “_id”
As a note: I switched the attribute from prim to point when i saw the console indicated I needed a point attribute, and I have the attribute being passed through on the object itself as well. I had also tried to add a user data string attribute on the shader itself–but this also failed and gave me the same message.
Any thoughts on what I might be doing wrong? I wish there was more documentation on this
. If you need it I can try and make a small package with the textures and geo for you to take a look. Thank you!

