What are layer and scene data types under the hood?

When say an oval layer outputs data, is it just co-ordintes under the hood? and then it gets turned into, say, a grid of layers with the Arrange Layers in Grid node, how is that different to a list of of Layers from a Build List node. And then some objects are truly 3D objects, they seem to need different handling again, what does is their data type look like in terms of the structure, and objects can, but don’t have to, go into shaders so they adjust the data type again I assume, how? So Scenes take objects in the Render Scene to Window node and Render Layers to Window node takes the you guessed it layers. I’m wondering if in the future for ease of learning those two node might be combined and they just work it out.

Anyhow, I guess main question is, are all these datatypes list in the documentation somewhere to compare, or do I need to look at the SDK documents for that?

Layers are secretly scene objects I saw mentioned somewhere in the source.

When say an oval layer outputs data, is it just co-ordintes under the hood?

As Magneson said, they’re scene objects under the hood. (If you’re curious, see node/vuo.layer/VuoLayer.h in the source code.)

and then it gets turned into, say, a grid of layers with the Arrange Layers in Grid node, how is that different to a list of of Layers from a Build List node

If you click on each of those ports to bring up a port popover, it says “Data type: Layer” for the Arrange Layers in Grid output and “Data type: List of VuoLayer elements” for the Build List output port. Arrange Layers in Grid outputs a single layer representing the entire group, the grid. Similar to Combine Layers.

Under the hood, a layer (scene object) can contain child layers (scene objects).

So Scenes take objects in the Render Scene to Window node and Render Layers to Window node takes the you guessed it layers. I’m wondering if in the future for ease of learning those two node might be combined and they just work it out.

That could make a good feature request. (Edit: What I have in mind is to keep the separate data types but add nodes to convert between layers and scenes.)

Anyhow, I guess main question is, are all these datatypes list in the documentation somewhere to compare, or do I need to look at the SDK documents for that?

From the point of view of someone making a composition, the data types are opaque/abstract: they’re essentially defined by the nodes that use them and documented by those nodes’ descriptions. For a full list of data types available, you can right-click on a generic port and go to Set Data Type.

From the point of view of a developer making C nodes, or just curious about the implementation of the data types, yeah, you can look at the SDK docs and source code.