It is possible to sample 2D textures efficiently using the API MRenderUtil::eval2dTexture and passing it a 2D texture node object as a parameter.
However, there is no equivalent API for 3D textures and we need to use MRenderUtil::sampleShadingNetwork, passing the name of the 3D texture node as parameter. In that case, sampling the texture is much slower, probably in part because Maya needs to search for the node using its name instead of having a direct reference to it.
Our plugin already support 2D textures, but many of our users would also like to use 3D textures with our plugin. However, it is difficult to offer such functionality because it is simply too slow.
If there was an API such as MRenderUtil::eval3dTexture to which we could pass a direct reference to a 3D texture node object, it would probably improve the performance and make it possible for us to offer that functionality.
Thanks!