Most definitely, you can do this the same way other custom attributes are handled. A new attribute in the groom can be painted called "instanceshader" or similar, you can either paint this in the region of 0.0 - 1.0 ( the default ) or if you increase the max paint level you can paint from 0.0 - 10.0 ( or however many steps you want ).


Prior to the instance node you insert an attribute node an create a new attribute name instanceshader and make sure you're sampling the groom ( and have it connected to the second input ) and use the same attribute name as painted.


Then in the instance node in the Objects tab make sure that you add instanceshader to the list of Inherited Attributes. All of the instances will now have this new attribute also ( along with parent_id, parent_s and parent_t ).


These attributes are automatically "mapped", which means they will be exported to the renderer. Each renderer can access these differently.


For VRay it's the VRayUserScalar ( or Color ) - you put the name of the attribute in and the value will come out of the outAlpha attribute which can then be used with a switch node or similar to change shading properties.


For Arnold it's the AiUserFloat ( or Vector ) - which can be used with a switch etc.


For PRMan these will end up in the Rib stream as parameters to the shader, so if you are exporting instanceshader your surface shader should have


surface myShader( float instanceshader = 0.0 )


as a parameter and Yeti will declare these to be usable at shading time.