# Cauldron3D.Net v0.3.3 - API Reference

## Modules

- [Cauldron3D.Net](Cauldron3D.Net.md): 3D scenes in the browser. A `Cauldron3D.Net.Scene` takes the same changes
`CauldronGPU.submit/2` does and broadcasts them as `CauldronGPU.Stream` bytes; browsers
joining a `Cauldron3D.Net.Channel` get the whole scene and then each tick, and draw it
with three.js (`priv/static/cauldron3d.js`, served by `Cauldron3D.Net.Page`).
- [Cauldron3D.Net.Channel](Cauldron3D.Net.Channel.md): The Phoenix channel a browser joins to watch a `Cauldron3D.Net.Scene`.
- [Cauldron3D.Net.Events](Cauldron3D.Net.Events.md): Browser input as `CauldronGPU` window events. The client (`cauldron3d.js`) sends maps
with a `"type"`; `decode/1` turns each into the event tuple a native window would send,
or `:error`. Key names are those `cauldron3d.js` reports (`"w"`, `"space"`,
`"left_shift"`, `"up"`, …); names outside that set arrive as strings.

- [Cauldron3D.Net.Page](Cauldron3D.Net.Page.md): A plug serving a page that shows one scene, filling the browser window, with the scripts
it loads: `GET /` the page, `GET /cauldron3d.js` the client, `GET /phoenix.min.js`
Phoenix's socket client. three.js comes from jsDelivr (version `three_version/0`).
- [Cauldron3D.Net.Scene](Cauldron3D.Net.Scene.md): A scene browsers watch: it keeps everything sent to it (`CauldronGPU.Host.Record`) so a
browser that joins later gets the whole scene, and broadcasts each batch to the
browsers already watching as `CauldronGPU.Stream` bytes.
- [Cauldron3D.Net.Socket](Cauldron3D.Net.Socket.md): The socket browsers watching scenes connect through, with the channel
`Cauldron3D.Net.Channel` defines.

