I'm currently "hacking" Cycles to fully understand how it works (right down to the source_code), so I can fully maximize its awesome rendering potential for my own future blender projects. Here's how I am currently progressing and where I get stuck.
Fig 1 - Default Blender Scene, (1 cube, sunlight, camera and wood-texture (jpg-file) on the Cube via the Cycles Node Editor)
In Fig.1 - Here you can literally see a visualization of what the yellow type of "Color" (input/output) information.
In order to fully understand which type of (internal) Shader data streams Cycles uses I've have analyzed all existing Cycles Nodes, their inputs and outputs and their data-stream types or "Shader sockets".
Why do I do this? - To understand which type-of-datastream/shader-socket is generated by any Cycles Node output. - To understand which type-of-datastream/shader-socket can be accepted by a given Cycles Node input. - What type of data a stream acutally holds (bits, bytes, floats, vectors, pixels, shader-data)
Where am I getting stuck and why? So far the official - Blender Wiki - Blender online end-user manual - Developer-level documentation over Cycles all fail to mention the different type of data which is contained in/ carried the Cycles Shader sockets.
So I went a step further and downloaded the entire Blender (2.79a) Source code package and started looking for the exact definition of those Cycles Shader data types ... and found this information (os far): Fig 6 - Blender Shader sockets information, located in various source code-files
So now my question is: Where must I look (further) to find the exact documentation / definitions of the Shader sockets, when it is not documented in any official Blender (developer, manual) source and its own source-code-files?
Thanks in advance for your hints, tips, and tricks to get me closer to demistifying the Cycles Sockets data_types.