Create a simple scene with a poly sphere and hook it up to lambert1. Set the lambert1 to get it's diffuse from a file. In the file node, select a texture. You get the texture wrapped on the sphere. If you delete history, you basically have three nodes. The place2dTexture node with multiple connections to the file node. The file node with either one or two connections to lambert1 (outColor and outTransparency with outColor being the important one).
The outColor attribute on the file node is a compound attribute with three floats: outColorR, outColorG, and outColorB. And if I do a getAttr on outColor, it's always been 0,0,0.
So, the basic question is: How does the lambert node get the all texture data?
While the texture has three channels, there's a ton more data than three floats. It seems like there's more going on here that data flowing across the outColor connection.
The next question is: if I was implementing the lambert shader in C++, how do I get access to all the texture data? It doesn't seem that I can just read it from outColor - or can I? Also remember that the 2dPlacement node can affect the data so I can't just read it from the file specified in the file node).