# Cauldron3D v0.2.0 - Table of Contents

> A 3D software renderer and collision for terminals, in Elixir: cameras, polygons, meshes, BSP worlds and hull tracing.

## Pages

- [Cauldron3D](readme.md)
- [Changelog](changelog.md)

## Modules

- [Cauldron3D.Billboard](Cauldron3D.Billboard.md): A flat picture standing in the world, turned to face the camera.
- [Cauldron3D.Bsp](Cauldron3D.Bsp.md): A world cut into convex leaves by a binary space partition, with its faces, textures,
lightmaps, what each leaf can see, and its brush models.
- [Cauldron3D.Bsp.Draw](Cauldron3D.Bsp.Draw.md): The faces of a BSP world a view can see, as polygons for `Cauldron3D.Render`.
- [Cauldron3D.Bsp.Face](Cauldron3D.Bsp.Face.md): One face of a BSP world: a convex polygon on a plane, painted with a texture and lit
by a lightmap.
- [Cauldron3D.Bsp.Light](Cauldron3D.Bsp.Light.md): How brightly a world is lit at a point: the lightmap of the nearest upward-facing
solid face directly below it, within `:reach` units, each light style at its scale.
Models standing at the point are lit by it.
- [Cauldron3D.Bsp.Surfaces](Cauldron3D.Bsp.Surfaces.md): Faces' textures with their light worked in, made once and kept until the light changes.
- [Cauldron3D.Camera](Cauldron3D.Camera.md): Where a picture is taken from: a position, a facing, and a projection.
- [Cauldron3D.Frame](Cauldron3D.Frame.md): A rendered picture, rows top to bottom: indexed colour, one byte per pixel, or RGBA,
four.
- [Cauldron3D.Hull](Cauldron3D.Hull.md): A collision hull: a BSP tree of planes whose leaves are only contents, swept by a point.
- [Cauldron3D.Hull.Trace](Cauldron3D.Hull.Trace.md): What a traced move ran into.
- [Cauldron3D.Mesh](Cauldron3D.Mesh.md): A model made of textured triangles, posed by keyframes.
- [Cauldron3D.Move](Cauldron3D.Move.md): Moving a box through a world: sliding along what it hits, and stepping up ledges.
- [Cauldron3D.Paint](Cauldron3D.Paint.md): How a polygon's pixels get their colours.
- [Cauldron3D.Paint.Rgba](Cauldron3D.Paint.Rgba.md): The paints of `Cauldron3D.Paint` in RGBA, four bytes a pixel, for a picture drawn in
full colour (`Cauldron3D.Render.draw/3` with `:palette`).
- [Cauldron3D.Polygon](Cauldron3D.Polygon.md): A flat, convex polygon in the world, and how it is painted.
- [Cauldron3D.Quat](Cauldron3D.Quat.md): Rotations as unit quaternions `{x, y, z, w}`.
- [Cauldron3D.Raster](Cauldron3D.Raster.md): Draws prepared polygons (`Cauldron3D.Setup`) into rows of pixels.
- [Cauldron3D.Render](Cauldron3D.Render.md): Draws polygons seen through a view into a `Cauldron3D.Frame`.
- [Cauldron3D.Setup](Cauldron3D.Setup.md): A polygon made ready for drawing: clipped to the near plane, projected, and reduced to
the rows it covers, its edges, and a plane `{at_origin, per_x, per_y}` for each
attribute across the picture.
- [Cauldron3D.Skeleton](Cauldron3D.Skeleton.md): Bones posed into place: each bone's own position and rotation relative to its parent,
turned into a transform from the bone's space to the model's.
- [Cauldron3D.Texture](Cauldron3D.Texture.md): A picture, rows top to bottom: indexed colour, one byte per pixel and optionally its
own palette, or RGBA, four bytes per pixel.
- [Cauldron3D.Vec](Cauldron3D.Vec.md): Three-component vectors as `{x, y, z}` float tuples.
- [Cauldron3D.View](Cauldron3D.View.md): A camera fitted to a picture: the projection from the world to pixels.

