# Cauldron3D v0.2.2 - 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.Frame.Pixels](Cauldron3D.Frame.Pixels.md): Whole runs of RGBA pixels, four bytes each. - [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.Native](Cauldron3D.Native.md): Where cauldron_3d's compiled native code is: `priv/native/`, the architecture as `:erlang.system_info(:system_architecture)` gives it, so builds for different machines sit side by side in one checkout. The Makefile writes to the same folder, which `mix.exs` passes it as `PRIV_DIR`. - [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.Paint.Spans](Cauldron3D.Paint.Spans.md): The RGBA pixels of one row's run of a textured polygon, for `Cauldron3D.Paint.Rgba`. - [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.