Then you could feed that back into an arrayMapper and connect the output to whatever you liked... Does this sound reasonable?
Yes but you could use the particle expression to do that with minimal overhead. And less work for the sampler info to calculate.
Yes it just so happens that this is the remade version of tutorial (the script you see above is a partial rewrite of a script i sent him when i suggested a faster solution he just reworked it into the tutorial). The original used color at point.
Isn't there any way to get to the color value directly using an arrayMapper without using particles?
Well see thing is the reason MRenderUtil::sampleShadingNetwork, becomes slow is that you call it once for everything in a normal node network. But see, the act of calling one MRenderUtil::sampleShadingNetwork is about as slow as calling a 100 separate calls in ONE call to MRenderUtil::sampleShadingNetwork. So the overhead iof initializing MRenderUtil::sampleShadingNetwork is pretty enormous. So you should get some speed gains by piping many outputs form one node.
particles are ordered as a data structure much more optimally for updating, so theres some net gain to this and the instancer drawing.
But theres no real reason why you can not use array mapper with normal objects
PS: ok i get thet you want to use aprojection but for your demo theres not much point as its just waste of time, you can do the same with the uv placement node and its heaps faster.